PHP头条
热点:

更新 drupal6的 imagecache presets 到 Drupal7 的image styles


因为drupal6中的imagecache preset 已经整合到drupal7的核心中,接下来的这个解决方案是Vladimir提出的,你需要在你的drupal根目录下面创建一个php文件并将以下代码复制进去,执行这个文件.


[php]
<?php 
define('DRUPAL_ROOT', getcwd()); 
require_once 
 
DRUPAL_ROOT . '/includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
/////////////////////////////////////////////////  
function imagecache_preset_actions($preset, $reset = FALSE) { 
  $actions_cache = array(); 
    
 
$result = db_query('SELECT * FROM {imagecache_action} where presetid = '.$preset['presetid'].' order by weight' ); 
    foreach ($result as $row ) { 
    $row=(array)$row; 
      $row['data'] = unserialize($row['data']); 
      $actions_cache[$preset['presetid']][] = $row; 
    } 
  return isset( 
 
$actions_cache[$preset['presetid']]) ? $actions_cache[$preset['presetid']] : array(); 

/////////////////////////////////////////////////  
/////////////////////////////////////////////////  
 
function imagecache_presets() { 
  $presets = array(); 
    
 
$normal_presets = array(); 
    
 
$result = db_query('SELECT * FROM {imagecache_preset} ORDER BY presetname'); 
    
    foreach ($result as $preset) { 
      $preset=(array)$preset; 
      $presets[$preset['presetid']] = $preset; 
      $presets[$preset['presetid']]['actions'] = imagecache_preset_actions($preset); 
      $presets[$preset['presetid']]['storage'] = 0; 
      
 
// Collect normal preset names so we can skip defaults and mark overrides accordingly  
      $normal_presets[$preset['presetname']] = $preset['presetid']; 
    } 
  return 
 
$presets; 

/////////////////////////////////////////////////  
/////////////////////////////////////////////////  
 
$styles_cnt=0; 
$effects_new_cnt=0; 
$effects_ext_cnt=0; 
$presets=imagecache_presets(); 
foreach($presets as $preset) 
    { 
    $styles_cnt++;// inc styles  
    
    $style=image_style_load($preset['presetname']); 
    
    $style['name']=$preset['presetname']; 
    $style=image_style_save($style); 
    if(!isset($style['effects'])) 
        { 
        $style['effects']=array(); 
        } 
    foreach($preset['actions'] as $action) 
        { 
        $action['action']=str_replace('imagecache','image',$action['action']); 
        $action['module']=str_replace('imagecache','image',$action['module']); 
        
        $effect_ieid=FALSE;// effect not exists  
        foreach($style['effects'] as $effect) 
            { 
            if($effect['name'] == $action['action'] && 
                $effect['module'] == $action['module'] && 
                $effect['weight'] == $action['weight'] && 
                $effect['data'] == $action['data'] ) 
                { 
                $effect_ieid=$effect['ieid'];// effect exists  
                } 
            } 
        $effect=array();    
        if($effect_ieid) 
            { 
            $effects_ext_cnt++;// inc exists  
            $effect=image_effect_load($effect_ieid,$style['name']); 
            } 
        else 
            { 
            $effects_new_cnt++;// inc new  
            $effect=image_effect_definition_load($action['action']); 
            } 
        
        $effect['isid'] = $style['isid'];    
            
        $effect['name'] = $action['action']; 
        $effect['module'] == $action['module']; 
        $effect['weight'] = $action['weight']; 
        $effect['data'] = $action['data']; 
        $effect = image_effect_save($effect); 
        $style['effects'][$effect['ieid']] = $effect; 
        } 
    $style=image_style_save($style); 
    } 
print 
 
"Styles: $styles_cnt,    Effects new: $effects_new_cnt, Effects exists: $effects_ext_cnt \n"; 
?> 

<?php
define('DRUPAL_ROOT', getcwd());
require_once

DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
/////////////////////////////////////////////////
function imagecache_preset_actions($preset, $reset = FALSE) {
  $actions_cache = array();
  

$result = db_query('SELECT * FROM {imagecache_action} where presetid = '.$preset['presetid'].' order by weight' );
    foreach ($result as $row ) {
    $row=(array)$row;
      $row['data'] = unserialize($row['data']);
      $actions_cache[$preset['presetid']][] = $row;
    }
  return isset(

$actions_cache[$preset['presetid']]) ? $actions_cache[$preset['presetid']] : array();
}
/////////////////////////////////////////////////
/////////////////////////////////////////////////

function imagecache_presets() {
  $presets = array();
  

$normal_presets = array();
  

$result = db_query('SELECT * FROM {imagecache_preset} ORDER BY presetname');
  
    foreach ($result as $preset) {
      $preset=(array)$preset;
      $presets[$preset['presetid']] = $preset;
      $presets[$preset['presetid']]['actions'] = imagecache_preset_actions($preset);
      $presets[$preset['presetid']]['storage'] = 0;
    

// Collect normal preset names so we can skip defaults and mark overrides accordingly
      $normal_presets[$preset['presetname']] = $preset['presetid'];
    }
  return

$presets;
}
/////////////////////////////////////////////////
/////////////////////////////////////////////////

$styles_cnt=0;
$effects_new_cnt=0;
$effects_ext_cnt=0;
$presets=imagecache_presets();
foreach($presets as $preset)
    {
    $styles_cnt++;// inc styles
  
    $style=image_style_load($preset['presetname']);
  
    $style['name']=$preset['presetname'];
    $style=image_style_save($style);
    if(!isset($style['effects']))
        {
        $style['effects']=array();
        }
    foreach($preset['actions'] as $action)
        {
        $action['action']=str_replace('imagecache','image',$action['action']);
        $action['module']=str_replace('imagecache','image',$action['module']);
      
        $effect_ieid=FALSE;// effect not exists
        foreach($style['effects'] as $effect)
            {
            if($effect['name'] == $action['action'] &&
                $effect['module'] == $action['module'] &&
                $effect['weight'] == $action['weight'] &&
                $effect['data'] == $action['data'] )
                {
                $effect_ieid=$effect['ieid'];// effect exists
                }
            }
        $effect=array();  
        if($effect_ieid)
            {
            $effects_ext_cnt++;// inc exists
            $effect=image_effect_load($effect_ieid,$style['name']);
            }
        else
            {
            $effects_new_cnt++;// inc new
            $effect=image_effect_definition_load($action['action']);
            }
      
        $effect['isid'] = $style['isid'];  
          
        $effect['name'] = $action['action'];
        $effect['module'] == $action['module'];
        $effect['weight'] = $action['weight'];
        $effect['data'] = $action['data'];
        $effect = image_effect_save($effect);
        $style['effects'][$effect['ieid']] = $effect;
        }
    $style=image_style_save($style);
    }
print

"Styles: $styles_cnt,    Effects new: $effects_new_cnt, Effects exists: $effects_ext_cnt \n";
?>happy drupalling

 

www.phpzy.comtrue/phprm/6538.htmlTechArticle更新 drupal6的 imagecache presets 到 Drupal7 的image styles 因为drupal6中的imagecache preset 已经整合到drupal7的核心中,接下来的这个解决方案是Vladimir提出的,你需要在你的drupal根目录下面创建一个...

相关文章

    暂无相关文章
相关频道:

PHP之友评论

今天推荐