Spoiler - Código clase PostSystem
".mysql_error(); exit; } } # /Funciones privadas # Constructor function __construct($dblink) { $this->dblink= $dblink; $this->checkDB(); } # /Constructor # Funciones públicas function insert( $data ) { $pvtdata= $this->pvt_req_data; if( !is_array($data) || (count(array_intersect_key($data, $pvtdata)) < count($pvtdata)) ) { $this->last_error= "No hay matriz de datos o faltan datos. Parametro1 En insert()."; return false; } if( !$data[date_created] ) { $data[date_created]= date("Y-m-d H:i:s"); } if( !$data[date_modified] ) { $data[date_modified]= "0000-00-00 00:00:00"; } $qdata= $this->joinKeyValue($data); if( !isset($data[id]) ) { $qdata.= ", id= default "; } if( !isset($data[parent_id]) ) { $data[parent_id]= ""; $qdata.= ", parent_id=default "; } $q= mysql_query("INSERT INTO tb_posts SET $qdata", $this->dblink); if( !$q ) { $this->last_error= "Error en la primera consulta. En insert().
".mysql_error(); return false; } $q= mysql_query("SELECT max(id) FROM tb_posts", $this->dblink); if( !$q ) { $this->last_error= "Error en la última consulta en insert().
".mysql_error(); return false; } $data[id]= mysql_result($q, 0); $this->last_post= $data; return true; } function select( $id_or_type, $config= "" ) { if( !$config ) { $config= $this->pvt_config_select; } if( !is_string($id_or_type) && !is_int($id_or_type) ) { $this->last_error= "El indentificador es incorrecto o no hay. Parametro1 en select()."; return false; } if( count(array_intersect_key($config, $this->pvt_config_select)) != count($this->pvt_config_select) ) { $this->last_error= "La configuración es incorrecta, faltan datos en select()."; return false; } if ( $config[limit] && !($config[limit]>0) || $config[limit_children] && !($config[limit_children]>0) ) { $this->last_error= "El limite de posts padres/hijos establecido es incorrecto en select()."; return false; } switch($config[mode]) { case 0: $q_mode= " WHERE id='$id_or_type'";break; case 1: $q_mode= " WHERE parent_id='$id_or_type'";break; case 2: $q_mode= " WHERE type='$id_or_type'";break; } $config[q_limit]= $config[limit]? "LIMIT ".$config[limit] : ""; $config[q2_limit]= $config[limit_children]? "LIMIT ".$config[limit_children] : ""; $q= mysql_query(" SELECT ".$config[fields]." FROM tb_posts $q_mode ".$config[q_limit]." ORDER BY date_created "); if( !$q ) { $this->last_error= "Error en la consulta. En select().
".mysql_error(); return false; } if( !mysql_num_rows($q) ) { return false; } $post_data= $this->recursive_select($q, $config); return $post_data; } function foreachPost($post_data, $user_func= "", $user_var= "") { if( !function_exists($user_func) ) { $this->last_error= "La función para recibir los datos no es válida, debe pasarse como cadena. Parametro2 en foreachPost()."; return false; } if( !is_array($post_data) ) { $this->last_error= "No hay matriz de datos. Parametro 1 en foreachPost()."; return false; } if( count(array_intersect_key($post_data, $this->pvt_tbposts_info[fields])) == 0 ) { $this->last_error= "La matriz de datos es incorrecta. Parametro1 En foreachPost()."; return false; } $this->recursive_foreachPost($post_data, $user_func, &$user_var); return true; } function delete($id, $delete_children= false) { $q= mysql_query(" DELETE FROM tb_posts WHERE id='$id' ", $this->dblink); if( !$delete_children ) { return true; } $this->recursive_delete($id); return true; } function update($id, $data) { $pvtdata= $this->pvt_req_data; $pvtdata[id]=""; if( !is_array($data) ) { $this->last_error= "No hay matriz o faltan datos. Parametro1 En update()."; return false; } if( !$data[date_modified] ) { $data[date_modified]= date("Y-m-d H:i:s"); } $result= $this->joinKeyValue($data); $q= mysql_query("UPDATE tb_posts SET".$result." WHERE id='".$id."'", $this->dblink); if( !$q ) { $this->last_error= "Error en la primera consulta de update().
".mysql_error(); return false; } if( !$data[id] ) { return true; } $q= mysql_query("UPDATE tb_posts SET parent_id='".$data[id]."' WHERE parent_id='".$id."'", $this->dblink); if( !$q ) { $this->last_error= "Error en la segunda consulta de update().
".mysql_error(); return false; } return true; } function selectParent($parent_id, $parent_type, $fields="*") { if ( empty($parent_id) || !is_int($parent_id) && !is_string($parent_id) ) { $this->last_error= "Parámetro1 incorrecto, debe ser un número o cadena. En selectParent()."; return false; } $q= mysql_query("SELECT type, id, parent_id FROM tb_posts WHERE id='".$parent_id."'", $this->dblink); if( !q ) { return ""; } $post= mysql_fetch_array($q); if( $post[type]==$parent_type ) { $q= mysql_query("SELECT ".$fields." FROM tb_posts WHERE id='".$parent_id."'", $this->dblink); if( !$q ) { $this->last_error("Error en consulta2 en selectParent().
".mysql_error()); return false; } $parent_post= mysql_fetch_array($q); return $parent_post; } else { return $this->selectParent($post[parent_id], $parent_type, $fields); } } # /Funciones públicas } ?>
No hay comentarios:
Publicar un comentario