<?php
/**
* @author:  Bunzia Alexander <nifus@mail.ru> <http://www.weblancer.net/users/nifus/>
* @copyright: Copyright (c) 2010, Bunzia Alexander
* @version: 1.0
* @license: http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @package: HiLo CMS
*/


class admin_category{
	private $error = false;
	private $act = 'index';
	private $JsHttpRequest = false;
	
	public function __construct(){
	global $MAIN_PAGE;
		define('M_PATH',MAIN_SOURCE_PATH.'/modules/'.$MAIN_PAGE -> dirname() );
		define('M_URL',MAIN_SOURCE_URL.'/modules/'.$MAIN_PAGE -> dirname() );
		define('A_CHARSET', $MAIN_PAGE -> charset() );
		include_once(M_PATH.'/inc/url.php');
		//include_once(MAIN_SOURCE_PATH.'/inc/class.ns_tree.php');
		include_once(M_PATH.'/inc/class.category.php');
		include_once(M_PATH.'/inc/class.modules.php');
		include_once(MAIN_SOURCE_PATH.'/modules/admin/lang/'.MAIN_LANG.'/lang.php');
		include_once(MAIN_SOURCE_PATH.'/inc/class.html.php');
		include(MAIN_SOURCE_PATH.'/ext/ajax/JsHttpRequest.php');
		$this -> JsHttpRequest = new JsHttpRequest( A_CHARSET );
		$this -> act = !empty($_REQUEST['act']) ? $_REQUEST['act'] : $this -> act;
		$GLOBALS['_RESULT']['id_request'] = $_REQUEST['id_request'];
	}
	
	public function get(){
		//sleep(2);
		$func = $this -> act;
		if ( !method_exists($this ,$func) ){
			sys_error(ERROR_404);
		}
		return $this -> $func();
	}
	
	
	
		//	главная, формирует список категорий
	private function index(){
		$t = new PHPTAL( M_PATH.'/tmpl/control_category/main.html' );
		$c = new  ns_tree_q( MAIN_CATEGORY_TBL,'c');
		$c -> where_more('c_level',0);
		$c -> order_left('ASC');
		$c -> get('c.*',false);
		$blogs= array();
		while( $row = $c -> row() ){
			if ( $row['c_level']>1 ){
				$row['c_name']='---'.$row['c_name'];
			} 
			$blogs[]=($row);
		}		
		$t -> rows = $blogs;
		$t -> ADMIN_URL = sys_url(URL_ADMIN);
		upload_img::include_files();
		
		return $t -> execute();
		
	}
	

	
	
		/*		AJAX	*/
		
	
	
		//	перезагружаем таблицу со списком шаблонов
	private function ajax_reload(){
		sys_block_disable();
			//	макрос таблицы
		$t = new PHPTAL( M_PATH.'/tmpl/control_category/inc/row.html' );
			//	выполнять макрос
		$t -> execute = true;
			
			//	выбираем 
		
		$c = new  ns_tree_q( MAIN_CATEGORY_TBL,'c');
		$c -> where_more('c_level',0);
		$c -> order_left('ASC');
		$c -> get('c.*',false);
		$blogs= array();
		while( $row = $c -> row() ){
			if ( $row['c_level']>1 ){
				$row['c_name']='---'.$row['c_name'];
			} 
			$blogs[]=($row);
		}		
		$t -> rows = $blogs;
		$GLOBALS['_RESULT']['content'] = $t -> execute();
		exit();
	}
	
		
		
		
	
			//	удаляем модуль $_REQUEST['id']
	private function ajax_delete(){
		
		sys_block_disable();
		$m =  category::load_id($_REQUEST['id'],MAIN_CATEGORY_TBL,'c');
		if ( false===$m ){
			die( A_EMPTY_ID );
		}
		$m -> delete();
		exit();
	}
	
		//	форма редактирвоания странички $_REQUEST['id']
	private function ajax_edit(){
		sys_block_disable();
		//include_once(M_PATH.'/inc/class.modules.php');
		
		$row = array();
			//	получаем из базы страницу $_REQUEST['id']
		if ( !empty($_REQUEST['id']) ){
			
			$c = new  category_q( MAIN_CATEGORY_TBL,'c');
			$c -> where_id($_REQUEST['id']);
			if ( !$c -> get('*, c.c_image as upl_img',false) ){
				die( $c -> get_error() );
			}
			$row = $c ->  row();
		}
			
		
			//	формируем списки категорий
  		$s = new select_box();
  		$s -> empty_record(true,1,M_ADMIN_IN_ROOT);
  		$s -> selected_id( $row['c_parent_id'] );
  		
  		
  		$c = new  category_q( MAIN_CATEGORY_TBL,'c');
		$c -> where_level(1);
		$c -> order_left('ASC');
		$c -> get('c.c_id,c.c_name',false);
		while( $c_row = $c -> row() ){
			$s -> set($c_row['c_id'],$c_row['c_name']);
		}
   	 	$row['cid_list'] = $s -> get(); 

		
			
			//	формируем страницу
		$t = new PHPTAL( M_PATH.'/tmpl/control_category/edit.html' );
		$t -> row = ($row );
		$GLOBALS['_RESULT']['content'] =  $t -> execute();
		$GLOBALS['_RESULT']['title'] = M_ADMIN_CATEGORY_TITLE;
		exit();
	}
	
	
	

	


	
			//	сохранение формы редактирования странички $_REQUEST['id']
	private function ajax_save(){
		sys_block_disable();
			
			//	загружаем или создаём объкт для работы с таблицей категорий
		$p = category::load_id($_POST['id'],MAIN_CATEGORY_TBL,'c');
		if ( false===$p ){
			$p = category::create(MAIN_CATEGORY_TBL,'c' );
			$p -> set('c_alias',$_POST['c_name']);

		}
			//	заносим обновлённые поля
		$p -> set('c_name',$_POST['c_name']);
		$p -> set('c_parent_id',$_POST['c_parent_id']);
		$p -> set('c_image',$_POST['c_image']);
		$p -> set('c_desc',$_POST['c_desc']);	
			//	обвноялем или добавляем новую запись
		if ( empty($_POST['id']) ){
			$id = $p -> insert();
		}else{
			$id = $p -> update();
		}
		
		if ( false===$id ){
			echo $p -> error();
			exit();
		}
		
		$GLOBALS['_RESULT']['msg'] = 'Изменения сохранены';
		exit();
	}
	
		
	
		private function ajax_up(){
		sys_block_disable();
		  //  получим данные id на который кликнули
	  $m = new  category_q( MAIN_CATEGORY_TBL,'c');
		//$m = new menu_q('n');
		$m -> where_id($_REQUEST['id']);
		$m -> get('c_left,c_right,c_level');
		list($c_left,$c_right,$c_level) = $m -> row();
		  //  получим данные id который находится выше
		$m = new  category_q( MAIN_CATEGORY_TBL,'c');
		//$m = new menu_q('n');
	//	$m -> set_debug(1);
		$m -> where_less('c_left',$c_left);
		$m -> where_less('c_right',$c_right);
		$m -> where_level($c_level);
		$m -> set_page(1);
		$m -> set_count_rows(1);
		$m -> order_left('DESC');
		$m -> get('c_id');
		list($c_id) = $m -> row();
		
		  //  поменяем местами
    $menu = category::create(MAIN_CATEGORY_TBL,'c');
    $menu-> order_tree($c_id,$_REQUEST['id']);
    
		exit();
	}
	
		private function ajax_down(){
		
					  //  получим данные id на который кликнули
		$m = new  category_q( MAIN_CATEGORY_TBL,'c');
		//$m = new menu_q('n');
		$m -> where_id($_REQUEST['id']);
		$m -> get('c_left,c_right,c_level');
		list($c_left,$c_right,$c_level) = $m -> row();
		  //  получим данные id который находится ниже
		$m = new  category_q( MAIN_CATEGORY_TBL,'c');
		//$m = new menu_q('n');
		//$m -> set_debug(1);
		$m -> where_more('c_left',$c_left);
		$m -> where_more('c_right',$c_right);
		$m ->where_level($c_level);
		$m -> set_page(1);
		$m -> set_count_rows(1);
		$m -> order_left('ASC');
		$m -> get('c_id');
		list($c_id) = $m -> row();
		
		  //  поменяем местами
    $menu = category::create(MAIN_CATEGORY_TBL,'c');
    $menu->  order_tree($_REQUEST['id'],$c_id);
		  

	  	exit();
	}
	
	
	
	
	
	
}

?>
