* @copyright: Copyright (c) 2010, Bunzia Alexander * @version: 1.0 * @license: http://www.gnu.org/copyleft/gpl.html GNU/GPL * @package: HiLi CMS */ if ( !defined("event_admin_htaccess") ){ define("event_admin_htaccess", 1); /** * Заменяет файл htaccess. Выполняется на событии on_request и перезаписывает глобальные массив * REQUEST и GET основываясь на правилах, которые задали модули * */ function admin_event_htaccess(){ if ( MAIN_CACHE_MODE==1 ){ include_once(MAIN_PATH.'/tmp/config/htaccess.php'); }else{ // собираем статистика $urls = array(); include_once(MAIN_SOURCE_PATH.'/modules/admin/inc/class.modules.php'); $m = new modulesQuery('m'); $m -> where_active(1); //$m -> set_debug(1); $m -> get('m_path'); while( list($m_path) = $m -> row() ){ if ( !file_exists(MAIN_SOURCE_PATH.'/modules/'.$m_path.'/inc/system.php') ){ continue; } include_once( MAIN_SOURCE_PATH.'/modules/'.$m_path.'/inc/system.php'); if ( !function_exists($m_path.'_htaccess') ){ continue; } $f = $m_path.'_htaccess'; $r = $f(); if ( is_array($r) ){ $urls = array_merge($urls, $r ); } } sys_write_file(MAIN_PATH.'/tmp/config/htaccess.php', '"); } if ( sizeof($urls)==0){ return false; } $_SERVER['REQUEST_URI'] = ($_SERVER['REQUEST_URI']=='/') ? '/index.html' : $_SERVER['REQUEST_URI'] ; foreach( $urls as $k=>$v ){ if ( empty($k) || empty($v) ){ sys_error(ERROR_500); } // ошибка регулярного выражения if ( false===preg_match($k,$_SERVER['REQUEST_URI'],$res) ){ sys_error(ERROR_500,'Ошибка регулярного выражения "'.sys_in_html($k).'"'); } // ничего не найдено if ( sizeof($res)==0 ){ continue; } // выражение подходит, раскидаем результаты работы foreach( $v as $key =>$value ){ if( $value[0]=='$' ){ $value = $res[ $value[1] ]; } $_REQUEST[$key] = empty($_POST[$key]) ? $value : $_POST[$key]; $_GET[$key] = $value; } return true; } return false; } } ?>