コード例 #1
0
ファイル: PageData.php プロジェクト: elijahGraff/stoma-dental
 /** 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;
 }