<?
// для формирования URL будет использоваться только первый, второй и третий уровень директории пути
//    [1] => services
//    [2] => esmo_aldan
//    [3] => upload_personals_from_xls
//    [4] => 3e9ee9a572e49d4deb7b92c50a8f34e2

// используемые варианты URL для работы через /services/
// /services/esmo_aldan/upload_personals_from_xls/3e9ee9a572e49d4deb7b92c50a8f34e2/ =>   c_services_esmo_aldan_upload_personals_from_xls.php::c_services_esmo_aldan_upload_personals_from_xls
// qrcode
// crontab
// /services/esmo_gateway/demo/demo_persons.xml


 $debug_service=0 ;
 ob_start() ;

 echo 'Получаем директории пути '._CUR_PAGE_DIR.'<br>'."\n" ;
 $arr=explode('/',_CUR_PAGE_DIR) ;
 print_r($arr) ;
 echo "\n<br>----------------------------------<br>\n" ;


 // проверяем расположение расширения - в основной class или в local class
 $ext_name1=$arr[2] ;
 $ext_name2=$arr[2].'_'.$arr[3] ;
 $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])) $options['ext_local']=$ext_name1 ;
 if (isset($GLOBALS['_SETTING']['ext_local'][$ext_name2])) $options['ext_local']=$ext_name2 ;
 if (isset($GLOBALS['_SETTING']['ext_local'][$ext_name3])) $options['ext_local']=$ext_name3 ;

  $check_dir=_DIR_EXT.'/'.$arr[2].'/' ;

  echo 'Проверяем директорию '.$check_dir.'<br>'."\n" ;

  if (is_dir($check_dir))  { $options['ext']=$arr[2] ;  /*unset($arr[2]); */}
  else                     { $options['ext']='services' ;  $parse_from=2 ; }

  if ($options['ext']=='qrcode') { define('_CUR_ID',$arr[3]) ; unset($arr[3]); }

  $cnt1=0 ; $cnt2=0 ; $cnt3=0 ; $cnt_uid=0 ; $parse_to=3 ;
  $arr2=$arr ; // _CUR_REPORT_DIR должны получить с учетом _CUR_ID в пути
  echo "\n<br>----------------------------------<br>\n" ;

  echo 'Удаляем первый элемент массива<br>' ;
  unset($arr[0]) ;

  print_r($arr) ;
  echo "\n<br>----------------------------------<br>\n" ;

  // для формирования имени скрипта используются только 1,2,3 директории пути. Все что далее - параметры, которые будут переданы скрипту
  echo 'Получаем директрии скрипта и директрии параметров<br>' ;
  $arr_params=array() ; $arr_script=array() ;
  if (_sizeof($arr)) foreach($arr as $i=>$dir) if (trim($dir))
  { if ($i>3)   $arr_params[]=$dir ;
    else        $arr_script[]=$dir ;
  }

  echo 'Массив $arr_script<br>'."\n" ;
  print_r($arr_script) ;
  echo 'Массив $arr_params<br>'."\n" ;
  print_r($arr_params) ;
  echo "\n<br>----------------------------------<br>\n" ;

  if (_sizeof($arr_params)) foreach($arr_params as $i=>$value)
  { if (is_numeric($value))         {  define('_CUR_ID',$value) ;  $GLOBALS['URL_PARAMS'][$arr[$i-1]]=$value ; $cnt1++ ; }
    if (strlen($value)==32)         {   define('_CUR_UID',$value) ;  $GLOBALS['URL_PARAMS']['UID']=$value ; $cnt_uid++ ; }
    if (strpos($value,'[')!==false) {  define('_CUR_FILTER',$value) ; $cnt2++ ; }
    //if ($value=='json') {  unset($arr[$i]) ; unset($arr2[$i]) ;  define('_CUR_FORMAT',$value) ; $cnt2++ ; }
    //if ($value=='xml') {  unset($arr[$i]) ; unset($arr2[$i]) ;  define('_CUR_FORMAT',$value) ; $cnt2++ ; }
    //if ($value=='get') {  unset($arr[$i+1]) ; unset($arr2[$i+1]) ;  unset($arr[$i+2]) ; unset($arr2[$i+2]) ;   ; $cnt2++ ; }
  }


  define('_CUR_ID',0) ;
  define('_CUR_FILTER','') ;
  define('_CUR_UID',0) ;

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

  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]) ;
 //$debug_page=1 ;
 if ($debug_service)
  { 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 '$GLOBALS[URL_PARAMS]='.print_r($GLOBALS['URL_PARAMS'],true).'<br>' ;
    //return ;
  }
  //if ($arr[])
  //http://dev.kvzrm.ru/services/esmo_gateway/demo/demo_persons.xml => должно отдать файл /class_v.esmo/ext/esmo_gateway/demo/demo_persons.xml
  $content='' ; $errors=array() ;
  if (_CUR_PAGE_NAME and !_CUR_PAGE_IS_PAGINATOR)
  {   unset($arr_script[0]) ;
  	  $dir=_DIR_EXT.'/'.implode('/',$arr_script).'/'._CUR_PAGE_NAME ;
      if (file_exists($dir)) $content=file_get_contents($dir) ;
      else $errors[]='file "'.hide_server_dir($dir).'" not found<br>' ;
      $options=array() ; // при пустом массиве в $options не будет инициироваться обработка страницы
  }
  elseif (_sizeof($arr_script))
  {   $suff=implode('_',$arr_script) ;
      $options['class_file']='c_'.$suff.'.php' ;
      $options['class_name']='c_'.$suff ;
  }
  print_r($options) ;

  $text=ob_get_clean() ;
  if ($debug_service) echo $text ;
  if (_sizeof($errors)) echo implode('<br>',$errors) ; else echo $content ;
?>
