/[drupal]/contributions/modules/flexifilter/flexifilter.module
ViewVC logotype

Diff of /contributions/modules/flexifilter/flexifilter.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.16.2.5, Tue Jun 17 01:44:26 2008 UTC revision 1.16.2.6, Tue Jun 17 03:03:54 2008 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id: flexifilter.module,v 1.16.2.4 2008/06/16 23:51:45 cwgordon7 Exp $  // $Id: flexifilter.module,v 1.16.2.5 2008/06/17 01:44:26 cwgordon7 Exp $
3    
4  $path = drupal_get_path('module', 'flexifilter');  $path = drupal_get_path('module', 'flexifilter');
5  include_once ($path .'/flexifilter.components.inc');  include_once ($path .'/flexifilter.components.inc');
# Line 591  function flexifilter_save_filter($filter Line 591  function flexifilter_save_filter($filter
591    }    }
592    else {    else {
593      db_query("UPDATE {flexifilters} SET label = '%s', description = '%s', enabled = %d, delta = %d, advanced = %d, cache = %d WHERE fid = %d", $label, $description, $enabled, $delta, $advanced, $cache, $fid);      db_query("UPDATE {flexifilters} SET label = '%s', description = '%s', enabled = %d, delta = %d, advanced = %d, cache = %d WHERE fid = %d", $label, $description, $enabled, $delta, $advanced, $cache, $fid);
594      _flexifilter_save_filter_components($filter['components'], $fid, $pids_to_reuse);      _flexifilter_save_filter_components($filter['components'], $fid);
595    }    }
596    return $fid;    return $fid;
597  }  }
598    
599  function _flexifilter_save_filter_components($components, $fid, $parent = FALSE) {  function _flexifilter_save_filter_components($components, $fid, $parent = FALSE) {
   if ($parent === FALSE) {  
     if ($reuse_pid = array_shift($pids_to_reuse)) {  
       db_query("UPDATE {flexifilters_parts} SET fid = %d, parent_pid = 0, type = %d, class_name = '', settings = '' WHERE pid = %d",  
         $fid, FLEXIFILTER_PART_TYPE_ROOT, $reuse_pid);  
       $parent = $reuse_pid;  
     }  
     else {  
       db_query("INSERT INTO {flexifilters_parts} (fid, parent_pid, type, class_name, settings) VALUES (%d, 0, %d, '', '')",  
         $fid, FLEXIFILTER_PART_TYPE_ROOT);  
       $parent = db_last_insert_id('flexifilters_parts', 'pid');  
     }  
   }  
600    foreach ($components as $key => $child) {    foreach ($components as $key => $child) {
601      if (is_numeric($key)) {      if (is_numeric($key)) {
602        if (isset($child['settings']['components'])) {        if (isset($child['settings']['components'])) {
# Line 619  function _flexifilter_save_filter_compon Line 607  function _flexifilter_save_filter_compon
607          $child_condition = $child['settings']['condition'];          $child_condition = $child['settings']['condition'];
608          unset($child['settings']['condition']);          unset($child['settings']['condition']);
609        }        }
610        if ($child_cid = array_shift($pids_to_reuse)) {        if (isset($child['settings']['conditions'])) {
611          db_query("UPDATE {flexifilters_parts} SET fid = %d, parent_pid = %d, type = %d, class_name = '%s', settings = '%s' WHERE pid = %d",          $child_conditions = $child['settings']['conditions'];
612            $fid, $parent, FLEXIFILTER_PART_TYPE_COMPONENT, $child['class'], serialize($child['settings']), $child_cid);          unset($child['settings']['conditions']);
613          }
614          if ($child['pid'] !== 'new') {
615            db_query("UPDATE {flexifilters_parts} SET fid = %d, parent_pid = %d, type = %d, class_name = '%s', settings = '%s' WHERE pid = %d", $fid, $parent, $child['type'], $child['class'], serialize($child['settings']), $child['pid']);
616            $pid = $child['pid'];
617        }        }
618        else {        else {
619          db_query("INSERT INTO {flexifilters_parts} (fid, parent_pid, type, class_name, settings) VALUES (%d, %d, %d, '%s', '%s')",          db_query("INSERT INTO {flexifilters_parts} (fid, parent_pid, type, class_name, settings) VALUES (%d, %d, %d, '%s', '%s')", $fid, $parent, $child['type'], $child['class'], serialize($child['settings']));
620            $fid, $parent, FLEXIFILTER_PART_TYPE_COMPONENT, $child['class'], serialize($child['settings']));          $pid = db_last_insert_id('flexifilters_parts', 'pid');
         $child_cid = db_last_insert_id('flexifilters_parts', 'pid');  
621        }        }
622        if (isset($child_components)) {        if (isset($child_components)) {
623          _flexifilter_save_filter_components($child_components, $fid, $pids_to_reuse, $child_cid);          _flexifilter_save_filter_components($child_components, $fid, $pid);
624        }        }
625        if (isset($child_condition)) {        if (isset($child_condition)) {
626          _flexifilter_save_filter_condition($child_condition, $fid, $pids_to_reuse, $child_cid);          _flexifilter_save_filter_components($child_condition, $fid, $pid);
627          }
628          if (isset($child_conditions)) {
629            _flexifilter_save_filter_components($child_conditions, $fid, $pid);
630        }        }
     }  
   }  
   return $parent;  
 }  
   
 function _flexifilter_save_filter_condition($condition, $fid, &$pids_to_reuse, $parent) {  
   if (isset($condition['settings']['conditions'])) {  
     $condition_conditions = $condition['settings']['conditions'];  
     unset($condition['settings']['conditions']);  
   }  
   if ($our_pid = array_shift($pids_to_reuse)) {  
     db_query("UPDATE {flexifilters_parts} SET fid = %d, parent_pid = %d, type = %d, class_name = '%s', settings = '%s' WHERE pid = %d",  
       $fid, $parent, FLEXIFILTER_PART_TYPE_CONDITION, $condition['class'], serialize($condition['settings']), $our_pid);  
   }  
   else {  
     db_query("INSERT INTO {flexifilters_parts} (fid, parent_pid, type, class_name, settings) VALUES (%d, %d, %d, '%s', '%s')",  
       $fid, $parent, FLEXIFILTER_PART_TYPE_CONDITION, $condition['class'], serialize($condition['settings']));  
     $our_pid = db_last_insert_id('flexifilters_parts', 'pid');  
   }  
   if (isset($condition_conditions)) {  
     foreach ($condition_conditions as $sub_condition) {  
       _flexifilter_save_filter_condition($sub_condition, $fid, $pids_to_reuse, $our_pid);  
631      }      }
632    }    }
633  }  }

Legend:
Removed from v.1.16.2.5  
changed lines
  Added in v.1.16.2.6

  ViewVC Help
Powered by ViewVC 1.1.2