| 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'); |
| 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'])) { |
| 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 |
} |
} |