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.'/modules/admin/inc/class.modules.php'); include_once(MAIN_SOURCE_PATH.'/inc/class.comments.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_comments/main.html' ); $t -> URL_ADMIN_COMMENTS = sys_url(URL_ADMIN_COMMENTS); $t -> ADMIN_URL = sys_url(URL_ADMIN); $t -> id = $_REQUEST['filter_id']; $t -> filter_module = !empty($_REQUEST['filter_module']) ? $_REQUEST['filter_module'] : false; $t -> filter_object = !empty($_REQUEST['filter_object']) ? $_REQUEST['filter_object'] : false; $c_modules = array(); $m = new modulesQuery('m'); $m -> get('m.m_path,m.m_name',false); while( $row = $m -> row() ){ $c_modules[]=$row['m_path']; } $sql = array(); $first = true; $end = false; $sb = new select_box(); $sb -> empty_record(true,0,SHOW_ALL); $sb -> selected_id( $_REQUEST['filter_module'] ); foreach( $c_modules as $m ){ $mod = modules::load_path($m); // модуль загрузить не удалось if (false===$mod){ continue; } // модуль не поддерживает работу с комментариями if ( false===$mod -> exists_comments() ){ continue; } // заносим имя в выпадающий список $sb -> set($m,$mod -> name()); // фильтр по модулю if ( !empty($_REQUEST['filter_module']) && $_REQUEST['filter_module']!=$m ){ continue; } // подключаем класс модуля include_once(MAIN_SOURCE_PATH.'/modules/'.$m.'/inc/class.comments.php'); eval( '$s = '.$m.'_comments_q::create();' ); // фильтр по id $s -> where_id( $_REQUEST['filter_id'] ); // фильтр по активности if ( !empty($_REQUEST['filter_active']) ){ $s -> where_active( 0 ); } // фильтр объекта $s -> where_obj( $_REQUEST['filter_object'] ); $s -> where_login( $_REQUEST['filter_login'] ); // сортировка и постраничка if ( end($c_modules)==$m ){ $s -> orderby_time_add('DESC',false); $s -> set_page(1); $s -> set_count_rows(10); } // генерируем sql $sql[] = $s -> make_sql(' n_id, c_id,c_comment, c_active,c_time_add,u_login, c_time_add AS time_add, u_login AS profile_url, c_active AS row_class, "'.$mod -> name().'" as module_name , "'.$m.'" as module , c_id AS comment_url ', $first ); if ( true===$first ){ $first = false; } unset($s); } // отправляем в шаблон список модулей работающих с комментариями $t -> modules_box = $sb -> get(); unset($sb); $sql = implode(' UNION ALL ',$sql); $s = new comments_q('comments','c'); $s -> set_sql($sql); //$s -> set_debug(1); $s -> get(false,true); $count = $s -> get_count_rows(); $rows= array(); while( $row = $s -> row() ){ $rows[] = arr_to_obj($row); } // постраничка if ( !empty($count) ){ include_once(MAIN_SOURCE_PATH.'/inc/class.pagenav.php'); $pn = new page_nav( $count); $pn -> set_limit(10); $pn -> set_url_tmpl(URL_PAGE_NAV); $t -> page_nav = $pn -> get(1); } $t -> rows = $rows; return $t -> execute(); } /* AJAX */ // перезагружаем таблицу со списком шаблонов private function ajax_reload(){ sys_block_disable(); // макрос таблицы $t = new PHPTAL( M_PATH.'/tmpl/control_comments/inc/row.html' ); // список модулей $c_modules = array(); $m = new modulesQuery('m'); $m -> get('m.m_path,m.m_name',false); while( $row = $m -> row() ){ $c_modules[]=$row['m_path']; } unset($m); $sql = array(); $first = true; $end = false; foreach( $c_modules as $m ){ if ( !empty($_REQUEST['filter_module']) && $_REQUEST['filter_module']!=$m ){ continue; } $mod = modules::load_path($m); // модуль загрузить не удалось if (false===$mod){ continue; //$path = $mod -> path(); } // модуль не поддерживает работу с комментариями if ( false===$mod -> exists_comments() ){ continue; } /*if ( !empty($_REQUEST['modules']) && $_REQUEST['modules']!=$m ){ continue; }*/ // подключаем класс include_once(MAIN_SOURCE_PATH.'/modules/'.$m.'/inc/class.comments.php'); eval( '$s = '.$m.'_comments_q::create();' ); // фильтры $s -> where_id( $_REQUEST['filter_id'] ); if ( !empty($_REQUEST['filter_active']) ){ $s -> where_active( 0 ); } // фильтр объекта $s -> where_obj( $_REQUEST['filter_object'] ); // задаём сортировку только последнему классу if ( end($c_modules)==$m || !empty($_REQUEST['filter_module']) ){ // сортировка указанная пользователем if ( !empty($_REQUEST['orderby_key']) ){ $s -> $_REQUEST['orderby_key']( $_REQUEST['orderby_value'],false); }else{ $s -> orderby_time_add('DESC',false); } } // задаём постраничку только последнему классу // получаем все запросы $sql[] = $s -> make_sql(' n_id, c_id,c_comment, c_active,c_time_add,u_login, c_time_add AS time_add, u_login AS profile_url, c_active AS row_class, "'.$mod -> name().'" as module_name , "'.$m.'" as module , c_id AS comment_url ',$first ); if ( true===$first ){ $first = false; } unset($s); } // объединяем и выполняем их $sql = implode(' UNION ALL ',$sql)." LIMIT ".intval(($_REQUEST['page']-1)*10).',10'; $s = new comments_q('comments','c'); //$s -> set_debug(1); $s -> set_sql($sql); $s -> get(false,true); $count = $s -> get_count_rows(); $rows= array(); while( $row = $s -> row() ){ $rows[] = ($row); } // постраничка if ( !empty($count) ){ include_once(MAIN_SOURCE_PATH.'/inc/class.pagenav.php'); $pn = new page_nav($count); $pn -> set_limit(10); $pn -> set_url_tmpl(URL_PAGE_NAV); $t -> page_nav = $pn -> get($_REQUEST['page']); } // выполнять макрос $t -> execute = true; $t -> rows = $rows; $GLOBALS['_RESULT']['content'] = $t -> execute(); exit(); } // удаляем модуль $_REQUEST['id'] private function ajax_delete(){ sys_block_disable(); $m = modules::load_path($_REQUEST['module']); if ( false===$m ){ die( A_EMPTY_ID ); } include_once(MAIN_SOURCE_PATH.'/modules/'.$_REQUEST['module'].'/inc/class.comments.php'); eval( '$s = '.$_REQUEST['module'].'_comments::load_id('.$_REQUEST['id'].');' ); if ( false===$s ){ die( A_EMPTY_ID ); } $s -> delete(); exit(); } // форма редактирвоания private function ajax_edit(){ sys_block_disable(); // получаем из базы $_REQUEST['id'] $m = modules::load_path($_REQUEST['module']); if ( false===$m ){ die( A_EMPTY_ID ); } include_once(MAIN_SOURCE_PATH.'/modules/'.$_REQUEST['module'].'/inc/class.comments.php'); eval( '$s = '.$_REQUEST['module'].'_comments_q::create();' ); $s -> where_id($_REQUEST['id']); if ( !$s -> get('*,c_id AS id,"'.$_REQUEST['module'].'" AS module ') ){ die( $s -> error() ); } $row = $s -> row(); // формируем страницу $t = new PHPTAL( M_PATH.'/tmpl/control_comments/form.html' ); $t -> row = arr_to_obj($row ); $t -> editor = ''; $GLOBALS['_RESULT']['content'] = $t -> execute(); $GLOBALS['_RESULT']['title'] = EDIT; exit(); } // сохранение формы редактирования $_REQUEST['id'] private function ajax_save(){ sys_block_disable(); // загружаем из базы страничку $_REQUEST['id'] $m = modules::load_path($_REQUEST['module']); if ( false===$m ){ die( A_EMPTY_ID ); } include_once(MAIN_SOURCE_PATH.'/modules/'.$_REQUEST['module'].'/inc/class.comments.php'); eval( '$s = '.$_REQUEST['module'].'_comments::load_id('.$_REQUEST['id'].');' ); if ( false===$s ){ die( A_EMPTY_ID ); } // обновляем $s -> set('c_comment',$_REQUEST['c_comment']); $s -> set('c_active',$_REQUEST['c_active']); //$s -> set_debug(1); $id = $s -> update(); if ( false===$id ){ die( $s -> get_error() ); } // обновляем морду $GLOBALS['_RESULT']['msg'] = MOD_SAVE; exit(); } } ?>