예제 #1
0
 /** @return DirItem */
 public static function inst($path, $name = null, $ext = null)
 {
     $absPath = normalize_path(file_path($path, $name, $ext));
     if (!$absPath || DIR_SEPARATOR == $absPath || PATH_BASE_DIR == $absPath || PATH_BASE_DIR == $absPath . DIR_SEPARATOR) {
         $absPath = PATH_BASE_DIR;
     } else {
         if (!starts_with($absPath, PATH_BASE_DIR)) {
             $absPath = next_level_dir(PATH_BASE_DIR, $absPath);
         }
     }
     if (array_key_exists($absPath, self::$items)) {
         return self::$items[$absPath];
     }
     $relPath = cut_string_start($absPath, PATH_BASE_DIR);
     $relPath = ensure_dir_startswith_dir_separator($relPath);
     return self::$items[$absPath] = new DirItem($relPath, $absPath);
 }
예제 #2
0
 /**
  * $notCkeckDirs - директории, существование которых проверяться не будет
  * $dirs - директории, существование которых будет проверено при создании менеджера
  * 
  * @return DirManager 
  */
 public static function inst($notCkeckDirs = null, $dirs = null)
 {
     $absPathNotCheck = next_level_dir($notCkeckDirs, DIR_SEPARATOR);
     if (DIR_SEPARATOR == $absPathNotCheck || PATH_BASE_DIR == $absPathNotCheck) {
         $absPathNotCheck = PATH_BASE_DIR;
     } else {
         if (!starts_with($absPathNotCheck, PATH_BASE_DIR)) {
             $absPathNotCheck = next_level_dir(PATH_BASE_DIR, $absPathNotCheck);
         }
     }
     $absPath = next_level_dir($absPathNotCheck, $dirs, DIR_SEPARATOR);
     //Проверим, нужно ли создать структуру директорий
     if ($absPathNotCheck != $absPath && !is_dir($absPath)) {
         @mkdir($absPath, 0777, true);
     }
     if (array_key_exists($absPath, self::$insts)) {
         return self::$insts[$absPath];
     }
     $relPath = cut_string_start($absPath, PATH_BASE_DIR);
     $relPath = ensure_dir_startswith_dir_separator($relPath);
     return self::$insts[$absPath] = new DirManager($relPath, $absPath);
 }
예제 #3
0
 /**
  * Метод возвращат путь относительно директории информационных шаблонов данного фолдинга:
  * /resources/folded/stocks/mosaic/tpl/stock1.tpl -> /stock1.tpl
  * 
  * Пример вызова:
  * StockManager::inst()->getInfoTplRelPath('/resources/folded/stocks/mosaic/tpl/stock1.tpl');
  */
 public function getInfoTplRelPath($infoTpl)
 {
     $infoTpl = $infoTpl instanceof DirItem ? $infoTpl->getRelPath() : $infoTpl;
     $infoTpl = $infoTpl instanceof FoldedInfoTpl ? $infoTpl->getDirItem()->getRelPath() : $infoTpl;
     $rel2foldDm = cut_string_start($infoTpl, $this->getResourcesDm()->relDirPath());
     check_condition($rel2foldDm != $infoTpl, "Путь [{$infoTpl}] не принадлежит фолдингу {$this}.");
     $ident = array_get_value(0, explode(DIR_SEPARATOR, $rel2foldDm));
     check_condition($this->existsEntity($ident), "Не удалось определить сущность фолдинга для информационного шаблона [{$infoTpl}].");
     $rel2infoDm = cut_string_start($infoTpl, $this->getInfoDm($ident)->relDirPath());
     check_condition($rel2infoDm != $infoTpl, "Путь [{$infoTpl}] не является путём к информационному шаблону.");
     return ensure_dir_startswith_dir_separator($rel2infoDm);
 }
예제 #4
0
 /** @return DirManager */
 public static function inst($notCkeckDirs = null, $dirs = null)
 {
     $dirPath = next_level_dir($notCkeckDirs);
     $corePath = normalize_path(PATH_BASE_DIR);
     $isAbs = starts_with($dirPath, $corePath);
     $absPathNotCheck = $isAbs ? $dirPath : next_level_dir($corePath, $dirPath);
     $absPathNotCheck = ensure_dir_endswith_dir_separator($absPathNotCheck);
     $absPath = next_level_dir($absPathNotCheck, $dirs);
     $absPath = ensure_dir_endswith_dir_separator($absPath);
     //Проверим, нужно ли создать структуру директорий
     if ($absPathNotCheck != $absPath && !is_dir($absPath)) {
         @mkdir($absPath, 0777, true);
     }
     if (array_key_exists($absPath, self::$insts)) {
         return self::$insts[$absPath];
     }
     $relPath = cut_string_start($absPath, $corePath);
     $relPath = ensure_dir_startswith_dir_separator($relPath);
     return self::$insts[$absPath] = new DirManager($relPath, $absPath);
 }