<?
function get_ext_by_page_dir($dir,&$options)
{    // все директории в старом формате. Новых в таком формате более не будет

	$arr_aspmo_dir=array('aspmo',
	'aspmo_accessControl',
	'aspmo_authorization',
	'aspmo_bill',
	'aspmo_check',
	'aspmo_client',
	'aspmo_debug',
	'aspmo_driverinfo',
	'aspmo_hr',
	'aspmo_manager',
	'aspmo_mo',
	'aspmo_monitor',
	'aspmo_personal',
	'aspmo_pp',
	'aspmo_print',
	'aspmo_reports',
	'aspmo_rml',
	'aspmo_rmv',
	'aspmo_server',
	'aspmo_setting',
	'aspmo_setup',
	'aspmo_signature',
	'aspmo_slave',
	'aspmo_stats',
	'aspmo_sv',
	'aspmo_tabel',
	'aspmo_term',
	'aspmo_ticket') ;


	$arr=explode('/',$dir) ; $ext='aspmo' ;    // $ext временно по умолчаниб = aspmo, но потом убрать
	if (in_array('aspmo_'.$arr[2],$arr_aspmo_dir)) $options['ext']='aspmo_'.$arr[2] ;
	else
	{	// проверяем расположение расширения - в основной class или в local class
		$ext_name1=$arr[2] ;
		if (isset($arr[3])) $ext_name2=$arr[2].'_'.$arr[3] ;
		if (isset($arr[4])) $ext_name3=$arr[2].'_'.$arr[3].'_'.$arr[4] ;
		// проверяем наличие расширения в локальной версии - оно должно быть обозначено явно в ini.yaml
		//damp_array($GLOBALS['_SETTING']['ext_local'],1,-1) ;
		if (isset($GLOBALS['_SETTING']['ext_local'][$ext_name1]) and $GLOBALS['_SETTING']['ext_local'][$ext_name1]==1) $options['ext_local']=$ext_name1 ;
		if (isset($GLOBALS['_SETTING']['ext_local'][$ext_name2]) and $GLOBALS['_SETTING']['ext_local'][$ext_name2]==1) $options['ext_local']=$ext_name2 ;
		if (isset($GLOBALS['_SETTING']['ext_local'][$ext_name3]) and $GLOBALS['_SETTING']['ext_local'][$ext_name3]==1) $options['ext_local']=$ext_name3 ;

		$check_dir=_DIR_EXT.'/'.$ext_name1.'/' ;                if ($GLOBALS['debug_page']) echo 'Проверяем директорию <strong>'.$check_dir.'</strong><br>' ;
		if (is_dir($check_dir))  { $ext=$ext_name1 ;            if ($GLOBALS['debug_page']) echo 'Директория <strong>'.$check_dir.'</strong> найдена<br>' ; }
		else if (isset($arr[3]))
			{ $check_dir=_DIR_EXT.'/'.$ext_name2.'/' ;         if ($GLOBALS['debug_page']) echo 'Проверяем директорию <strong>'.$check_dir.'</strong><br>' ;
		       if (is_dir($check_dir)){ $ext=$ext_name2 ;       if ($GLOBALS['debug_page']) echo 'Директория <strong>'.$check_dir.'</strong> найдена<br>' ; }
		       else if (isset($arr[4]))
		       	    { $check_dir=_DIR_EXT.'/'.$ext_name3.'/' ;  if ($GLOBALS['debug_page']) echo 'Проверяем директорию <strong>'.$check_dir.'</strong><br>' ;
		              if (is_dir($check_dir)){$ext=$ext_name3 ; if ($GLOBALS['debug_page']) echo 'Директория <strong>'.$check_dir.'</strong> найдена<br>' ; }
	                                 }
	              	          }
		if ($ext) $options['ext']=$ext ;
		else if ($GLOBALS['debug_page']) echo '<div style="color:red;">Не найдена директория EXT для входного URL <strong>'.$dir.'</strong></div>' ;
	              }

	        }

function cab_page_prepare($CUR_PAGE_DIR='')
{  ob_start() ;
   if (!$CUR_PAGE_DIR) $CUR_PAGE_DIR=_CUR_PAGE_DIR ;
   $arr=explode('/',$CUR_PAGE_DIR) ;
   //$options['ext']='aspmo' ;
   $this_doc_view=0 ;
   if (strpos($CUR_PAGE_DIR,'/cab/setting/')!==false) $options['reboot_all']=1 ;
   if (strpos($CUR_PAGE_DIR,'/cab/rmv/')!==false) $options['reboot_all']=1 ;
   if (strpos($CUR_PAGE_DIR,'/cab/db/')!==false) $options['reboot_all']=1 ;
   // разбор URL для документов
   // 3-я позиция - ext
   // 4-я позиция - file name
   if (strpos($CUR_PAGE_DIR,'/cab/doc/')!==false)
   {  define('_CUR_DOC_EXT',$arr[3]) ;
      define('_CUR_DOC_CODE',$arr[4]) ;
      unset($arr[3],$arr[4]) ;
   }
   else
   {  define('_CUR_DOC_EXT','') ;
      define('_CUR_DOC_FILE','') ;
   }

   get_ext_by_page_dir($CUR_PAGE_DIR,$options) ;

   $cnt1=0 ; $cnt2=0 ; $cnt3=0 ;
   $arr2=$arr ; // _CUR_REPORT_DIR должны получить с учетом _CUR_ID в пути
   if (_sizeof($arr)) foreach($arr as $i=>$value)
   { if (is_numeric($value))         {  unset($arr[$i]) ;  if (!defined('_CUR_ID')) define('_CUR_ID',$value) ; else define('_CUR_ID2',$value) ;  $GLOBALS['URL_PARAMS'][$arr[$i-1]]=$value ; $cnt1++ ; }
     if (strpos($value,'[')!==false) {  unset($arr[$i]) ; unset($arr2[$i]) ;  define('_CUR_FILTER',$value) ; $cnt2++ ; }
     if ($i>1 and $arr[$i-1]=='reports' and $value) {  unset($arr[$i]) ; unset($arr2[$i]) ;  define('_CUR_REPORT',$value) ; $cnt3++ ; }
   }
   $arr=array_values($arr) ;
   define('_CUR_ID',0) ;
   define('_CUR_FILTER','') ;
   define('_CUR_REPORT','') ;

   define('_CUR_CAB_DIR',implode('/',$arr)) ;

   if (_CUR_REPORT)   define('_CUR_REPORT_DIR',implode('/',$arr2)._CUR_REPORT.'/') ;
   else               define('_CUR_REPORT_DIR',implode('/',$arr2)) ;

   unset($arr[_sizeof($arr)-1]) ;
   unset($arr[0]) ;
   unset($arr[1]) ;

   if (_IS_SYSTEM_IP and 0)
   { echo '_CUR_ID='._CUR_ID.'<br>' ;
     echo '_CUR_REPORT='._CUR_REPORT.'<br>' ;
     echo '_CUR_FILTER='._CUR_FILTER.'<br>' ;
     echo '_CUR_REPORT_DIR='._CUR_REPORT_DIR.'<br>' ;
     echo '_CUR_CAB_DIR='._CUR_CAB_DIR.'<br>' ;
     echo '$arr='.print_r($arr,true).'<br>' ;
     echo '$options='.print_r($options,true).'<br>' ;
     //return ;
   }
   //if ($arr[])
   if (_sizeof($arr))
   {   $suff=implode('_',$arr) ;
       $options['class_file']='c_'.$suff.'.php' ;
       $options['class_name']='c_page_cab_'.$suff ;
   }
   else
   { $options['class_file']='c_index.php' ;
     $options['class_name']='c_page_cab' ;
   }
   $GLOBALS['_debug_page_trace'].=ob_get_clean() ;
   return($options) ;
}
?>
