Exemplo n.º 1
0
 private function validatePageData($data, $type = "")
 {
     $errors = array();
     if ($type == "") {
         $type = $this->address["type"];
     }
     switch ($type) {
         default:
         case P_TYPE_PAGE:
         case P_TYPE_TECH:
             $t_data = TABLE_PAGES;
             $requiredFields = array("access", "blocks_id", "label", "title", "content");
             break;
         case P_TYPE_CATALOGUE:
             $t_data = TABLE_CATALOGUE;
             $requiredFields = array("label", "title");
             break;
         case P_TYPE_ARTICLE:
             $t_data = TABLE_ARTICLES;
             $requiredFields = array("label", "title");
             break;
     }
     $t_meta = TABLE_META;
     //G::logMessage("PageData::validatePageData() > tablename=$t_data type=" . $type);
     $keys = PageUtils::getTableKeys($t_data);
     // get keys
     $keys = array_merge($keys, PageUtils::getTableKeys($t_meta));
     // get meta keys
     $keys = array_unique($keys);
     // remove same
     ### array_unique() leave EMPTY KEYs in array with EMPTY value such as ''=>''
     for ($i = count($keys) - 1; $i >= 0; $i--) {
         if (trim($keys[$i]) == '') {
             unset($keys[$i]);
             // DO NOT use splice, $i <> iterator !!!
         }
     }
     # BLOCK_ID serialized from $_POST["block_%"] values
     $arr = array();
     foreach ($data as $key => $value) {
         if (preg_match("/^block_[\\d]+\$/", $key) && $value == "true") {
             $id = preg_replace("/^block_/", "", $key);
             $arr[] = $id;
             unset($data[$key]);
         }
     }
     $data["blocks_id"] = implode(",", $arr);
     // clean from other keys
     foreach ($data as $key => $value) {
         if (!in_array($key, $keys)) {
             unset($data[$key]);
         }
     }
     // if id==0 remove it as unset. means create new NODE
     if ($data["id"] == "0") {
         unset($data["id"]);
         unset($data["meta_id"]);
     } else {
         $requiredFields[] = "meta_id";
     }
     for ($i = count($keys) - 1; $i >= 0; $i--) {
         $key = $keys[$i];
         if (!isset($data[$key])) {
             continue;
         }
         $data[$key] = trim($data[$key]);
         // empty parameter
         if ($data[$key] == "") {
             if (in_array($key, $requiredFields)) {
                 $errors[] = RenderUtils::renderError("{$key} field is required");
             }
             continue;
         }
         // validation result
         $validation = PageUtils::validatePageParam($data[$key], $key);
         if ($validation["result"]) {
             $data[$key] = $validation["value"];
         } else {
             $errors[] = RenderUtils::renderError($validation["value"]);
             unset($data[$key]);
         }
     }
     if (!isset($data["id"]) && PageUtils::labelExists($data["label"], $t_data)) {
         $errors[] = RenderUtils::renderError("Label exists!");
     }
     $this->errors = $errors;
     return $data;
 }
Exemplo n.º 2
0
 /** FORMATS data to string for MYSQL INSERT
  * @param $data = all key=>values
  * @param $tables - array( "table_name", ... )
  * @return array( table_name => serialized_data )
  */
 public static function serializeInsert($data, $table_name)
 {
     $table_keys = PageUtils::getTableKeys($table_name);
     $keys = array();
     $values = array();
     foreach ($data as $key => $value) {
         // ATTENTION! bullshit happens when $value=1 -> $value == "null" return true!
         //if(in_array($key, $table_keys) && $value != null &&  $value."" != "null") Just live it here. Don't delete. ELIJAH
         if (in_array($key, $table_keys)) {
             $keys[] = $key;
             $values[] = $value;
         }
     }
     return "(" . implode(",", $keys) . ") VALUES ('" . implode("','", $values) . "')";
 }