/** * main action */ public function mainAction() { /** * initialise */ require_once 'models/common/common_node.php'; $Node = new common_node(); switch ($this->GET['relation']) { case 'product': require_once 'models/ecommerce/ecommerce_product_taxonomy.php'; $Taxonomy = new ecommerce_product_taxonomy(); break; case 'variety': require_once 'models/ecommerce/ecommerce_product_variety_taxonomy.php'; $Taxonomy = new ecommerce_product_variety_taxonomy(); break; case 'recipe': require_once 'models/ecommerce/ecommerce_recipe_taxonomy.php'; $Taxonomy = new ecommerce_recipe_taxonomy(); break; case 'store': require_once 'models/ecommerce/ecommerce_store_taxonomy.php'; $Taxonomy = new ecommerce_store_taxonomy(); break; case 'customer': require_once 'models/client/client_customer_taxonomy.php'; $Taxonomy = new client_customer_taxonomy(); break; case 'node': default: require_once 'models/common/common_node_taxonomy.php'; $Taxonomy = new common_node_taxonomy(); break; } /** * input variables */ $node_id = $this->GET['id']; /** * saving */ if (is_array($_POST['relation_taxonomy']) && is_numeric($node_id)) { $current = array(); $submitted = array(); // prepare list of ids currently in the database $current_raw = $Taxonomy->listing("node_id = " . $node_id); if (is_array($current_raw)) { foreach ($current_raw as $c) { $current[$c['taxonomy_tree_id']] = $c['id']; } } // prepare list if ids submitted by client foreach ($_POST['relation_taxonomy'] as $taxonomy_tree_id) { if (is_numeric($taxonomy_tree_id)) { $submitted[] = $taxonomy_tree_id; } } // delete items which were not submitted foreach ($current as $taxonomy_tree_id => $id) { if (!in_array($taxonomy_tree_id, $submitted)) { $Taxonomy->delete($id); msg("Relation to the category {$taxonomy_tree_id} has been removed.", 'ok', 1); } } // insert items which were submitted and not in the database yet foreach ($submitted as $taxonomy_tree_id) { if (!isset($current[$taxonomy_tree_id])) { if ($Taxonomy->insert(array('node_id' => $node_id, 'taxonomy_tree_id' => $taxonomy_tree_id))) { msg("Relation to the category {$taxonomy_tree_id} has been added.", 'ok', 1); } } } } /** * listing */ if (is_numeric($node_id)) { $current = $Taxonomy->listing("node_id = " . $node_id); if (is_array($current)) { foreach ($current as $c) { $taxonomy_data = $Taxonomy->getLabel($c['taxonomy_tree_id']); //print_r($taxonomy_data); //check, if there is product_list_container ?? $this->tpl->assign("CURRENT", $taxonomy_data); $_Onxshop_Request = new Onxshop_Request("component/breadcrumb_taxonomy~id={$taxonomy_data['id']}~"); $this->tpl->assign('BREADCRUMB', $_Onxshop_Request->getContent()); $this->tpl->parse("content.ptn"); } } } return true; }
/** * getRelatedTaxonomy */ public function getRelatedTaxonomy($node_id) { if (!is_numeric($node_id)) { return false; } require_once 'models/common/common_node_taxonomy.php'; $Taxonomy = new common_node_taxonomy(); $related_taxonomy_ids = $Taxonomy->getRelationsToNode($node_id); $related_taxonomy = array(); if (is_array($related_taxonomy_ids)) { foreach ($related_taxonomy_ids as $item_id) { $related_taxonomy[] = $Taxonomy->getLabel($item_id); } } return $related_taxonomy; }