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; }
/** 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) . "')"; }