/** CREATE or UPDATE catalogue node * @param $data - product\category data * @return bool */ public function updateCatalogue($data) { // rename item_type (client vars conflict) $data["type"] = $data["item_type"]; unset($data["item_type"]); // // parent_id $validation = PageUtils::validatePageParam($data["parent_id"], "parent_id"); if (!$validation["result"]) { G::fatalError("PARENT_ID is not valid"); } unset($data["parent_id"]); $parent_id = $validation["value"]; // // images //G::logMessage("IMAGES: " . "small=" . $data["img_small"] . "&medium=" . $data["img_medium"] . "&large=" . $data["img_large"]); $data["image"] = "small=" . $data["img_small"] . "&medium=" . $data["img_medium"] . "&large=" . $data["img_large"]; unset($data["img_small"], $data["img_medium"], $data["img_large"]); // $data = $this->validatePageData($data, P_TYPE_CATALOGUE); //check if label already exists if (!$this->checkNewLabel($data["id"], $data["label"])) { $this->errors[] = "Label already exists in another product"; } $result = false; if (count($this->errors) == 0) { if (isset($data["id"])) { // UPDATE PAGE $result = CatalogueUtils::updateCatalogueNode($data["id"], $data); $parents = CatalogueUtils::findParentsOf($data["id"]); $parentAlreadyHasIt = false; foreach ($parents as $parent) { if ($parent["id"] != $parent_id) { CatalogueUtils::deleteChildFromParent($data["id"], $parent["id"]); } else { $parentAlreadyHasIt = true; } } if (!$parentAlreadyHasIt && $parent_id) { CatalogueUtils::addChildToParent($data["id"], $parent_id); } } else { // CREATE NEW NODE $result = CatalogueUtils::createCatalogueNode($data, $parent_id); } // check db errors if (intval(G::$db->errorCode()) != 0) { $error_info = G::$db->errorInfo(); $text_error = " DB >> " . $error_info[1] . " > " . $error_info[2]; $this->errors[] = RenderUtils::renderError($text_error); } if (count($this->errors) == 0 && $result) { //reinit $this->init("catalogue/" . $data["label"]); $this->load(); } } return $result; }