seo = new seo(); } /** * @desc GET AN ITEM * @param tablename, item_id/modrewrite, array where statement, limit (int,int) */ function getItem($item, $table='pages', $where=false, $sort=false, $limit=false){ $query = "SELECT t.*, COUNT(sub.`id`) AS c_subitems FROM `".$table."` AS t "; $query .= " LEFT JOIN ".$table." AS sub ON (sub.link_id = t.`id`) "; $filter = array(); if(is_numeric($item)) { $query .= "WHERE t.`id` = ?"; $filter[] = $item; } else { $query .= "WHERE `modrewrite` = ? "; $filter[] = $item; } if($where != false){ foreach($where as $statement=>$value){ $query .= "AND WHERE `".$statement."` = ? "; $filter[] = $value; } } if($sort !=false) $query .= "ORDER BY ".$sort." "; if($limit !=false) $query .= "LIMIT ".$limit." "; if( $item = $this->db->rawQuery($query, $filter) ){ $item = $item[0]; if($item){ $item['title'] = $this->c_content->get( $item['c_title_id'] ); $item['modrewrite'] = $this->c_content->get( $item['c_modrewrite_id'] ); $item['content'] = $this->c_content->get($item['c_content_id']); $item['intro'] = (!empty($item['c_intro_id'])) ? $this->c_content->get($item['c_intro_id']) : ''; $item['images'] = $this->getImages($item['id'], $table); $item['seo'] = $this->seo->get_seo( $table, $item['id']); $item['subitems'] = $this->getItems($item['id']); } return $item; } else { return FALSE; } } function getItems($iLink=false, $where=false, $sort='sort', $limit=false,$table='pages'){ $query = "SELECT t.id FROM `".$table."` AS t WHERE 1"; $data = NULL; if(is_numeric($iLink)){ $query .= " AND t.`link_id` = ?"; $data[] = $iLink; } if($where != false){ foreach($where as $statement=>$value){ $query .= " AND t.`".$statement."` = ? "; $data[] = $value; } } $query .= " GROUP BY t.`id` "; if($sort !=false) $query .= " ORDER BY t.".$sort." "; if($limit !=false) $query .= "LIMIT ".$limit." "; $items = $this->db->rawQuery($query, $data); for($i=0;$igetItem( (int)$items[$i]['id'], $table); } return $items; } function getImages($id,$module="pages"){ $query = "SELECT * FROM `images` WHERE `item_id` = ? AND `module` = ? ORDER BY `sort`"; if($result = $this->db->rawQuery($query, array($id, $module))){ foreach($result as $key=>$res){ $result[$key]['description'] = $this->c_content->get( $res['c_description_id'] ); } return $result; } else { return false; } } function getFiles($id,$module='pages'){ $query = "SELECT * FROM `files` WHERE `item_id` = ? AND `module` = ? ORDER BY `sort`"; if($result = $this->db->rawQuery($query, array($id, $module))){ foreach($result as $key=>$res){ $result[$key]['description'] = $this->c_content->get( $res['c_description_id'] ); } return $result; } else { return false; } } public function add( $title, $parent = 0, $table='pages' ) { // insert / get content ID $c_title_id = $this->c_content->add(array( $this->c_content->get_first_id() => $title)); // create slug $slug = slugify($title); $c_modrewrite_id = $this->c_content->add( array( $this->c_content->get_first_id() => $slug) ); // get last sort $query = 'SELECT `sort` FROM `'.$table.'` WHERE `link_id` = '.$parent.' ORDER BY `sort` DESC'; $result = $this->db->rawQuery($query); $sort = (!empty($result[0])) ? ($result[0]['sort']+1) : 0; // insert item $pages_id = $this->db->insert('`'.$table.'`', array( 'c_title_id' => $c_title_id, 'c_modrewrite_id' => $c_modrewrite_id, 'c_specs_id' => 0, 'new' => 0, 'link_id' => $parent, 'sort'=>$sort )); return $pages_id; } public function delete( $id, $module="pages" ){ if( $id < 1 ) return false; global $imageHandler; $item = $this->getItem($id, $module); if( empty($item) ) return FALSE; // delete content $this->c_content->delete($item['c_title_id']); $this->c_content->delete($item['c_modrewrite_id']); $this->c_content->delete($item['c_intro_id']); $this->c_content->delete($item['c_content_id']); // delete images $images = $this->getImages( $id, $module ); for($i=0; $idelete($images[$i]['images_id']); } // delete item $this->db->where( 'id', $id); return $this->db->delete( $module ); } /** * Save item */ public function save( $table = 'table', $id, $post ) { // get item $item = $this->getItem($post['id'], $table); $update = array(); // update title, slug, intro & content $update['c_title_id'] = $this->c_content->save( $item['c_title_id'], $post['title'] ); $update['c_modrewrite_id'] = $this->c_content->save( $item['c_modrewrite_id'], slugify($post['title']) ); if( !empty($post['intro']) ) $update['c_intro_id'] = $this->c_content->save( $item['c_intro_id'], $post['intro'] ); if( !empty($post['content']) ) $update['c_content_id'] = $this->c_content->save( $item['c_content_id'], $post['content'] ); if( !empty($post['url']) ) $update['c_url_id'] = $this->c_content->save( $item['c_url_id'], $post['url'] ); if( !empty($post['specs']) ) $update['c_specs_id'] = $this->c_content->save( $item['c_specs_id'], $post['specs'] ); // update basic info foreach( $post as $col=>$val ){ // check if field exists in DB if( $this->db->checkColumn($table, $col) === TRUE ){ $update[$col] = $val; } } $this->db->where( 'id', $id ); $this->db->update('`'.$table.'`', $update); // update image descriptions if( !empty($post['images']) ){ global $imageHandler; foreach($post['images'] as $images_id=>$data){ if( !empty($post['images_language_id'][$images_id]) ){ $imageHandler->update( $images_id, $post['images_language_id'][$images_id], $data ); } } } // update file descriptions if( !empty($post['files']) ){ global $fileHandler; foreach($post['files'] as $files_id=>$data){ if( isset($post['files_language_id'][$files_id]) ){ $fileHandler->update( $files_id, $post['files_language_id'][$files_id], $data ); } } } // update SEO if( !empty($post['seo']) ){ $this->seo->save( $table, $id, $post['seo'] ); } return TRUE; } /** * Rearange order items */ public function saveOrder( $table, $post ) { $updated = 0; if( is_array($post) ){ foreach($post as $order=>$id){ $id = preg_replace("/[^0-9]+/", "", $id); $this->db->where( 'id', $id ); $this->db->update('`'.$table.'`', array('sort'=>$order)); $updated++; } } return $updated; } } ?>_setTracker(); } public function getTracker( $index = null ){ if( is_numeric($index) ){ if( isset($this->trackback[$index]) ){ return $this->trackback[$index]; } else { return array(); } } return $this->trackback; } private function _setTracker(){ if( !empty($_REQUEST['slug']) ){ $this->trackback = explode('/', $_REQUEST['slug']); } else { $this->trackback = array(); } return $this->trackback; } } itemDAO = new items(); } function getPage($tracker){ if(!is_array($tracker)) $tracker = array(); $activeItem = end($tracker); $item = $this->itemDAO->getItem($activeItem); $item['sub'] = $this->itemDAO->getSubItems($item); $item['images'] = $this->itemDAO->getImages($item); $item['files'] = $this->itemDAO->getFiles($item); return $item; } } ?>