/** * Возвращает массив файлов изображений из папки */ function getImageFiles($dir = '.', $exclude) { $files = array(); $a = scandir($dir); foreach ($a as $k => $v) { if ($v == '.' || $v == '..') { continue; } if (is_dir(HFile::addSlashPath($dir) . $v)) { $files = array_merge($files, getImageFiles(HFile::addSlashPath($dir) . $v, $exclude)); } else { if (isImage(HFile::getExtension($v))) { $files[] = str_replace($exclude, '', HFile::addSlashPath($dir) . $v); } } } return $files; }
protected function getCopyFileName($filePath) { $path = HFile::getDir($filePath); $files = file_exists($path) ? HFile::findFiles($path) : array(); $files = array_flip($files); $ext = HFile::getExtension($this->fileName); $file = HFile::getFileNameByPath($this->fileName, true); $i = 0; $copyFileName = ''; do { $copyFileName = $file . '(' . ++$i . ').' . $ext; } while (array_key_exists($copyFileName, $files)); return $copyFileName; }
public function getWidgetOverrideData($path) { $result = array(); $path = HFile::addSlashPath($path); $widgets = $this->getWidgets($path); if (!($dir = @opendir($path))) { return array(); } $assets = array(); $views = array(); while (($file = readdir($dir)) !== false) { if ($file == "." || $file == "..") { continue; } if (is_dir($path . $file)) { if ($file == 'assets') { $assets = $this->getFiles($path . $file); } elseif ($file == 'views') { $views = $this->getFiles($path . $file); } } } //Если виджет один в папке то собираем его ресурсы по упрощенной схеме if (count($widgets) == 1) { $result[] = $widgets[0]; $item = new OverrideDataItem(); $item->name = 'assets'; $item->path = $path . 'assets'; $item->items = $assets; $widgets[0]->addItem($item); $item = new OverrideDataItem(); $item->name = 'views'; $item->path = $path . 'views'; $item->items = $views; $widgets[0]->addItem($item); } else { //иначе пытаемся определить принадлежность ресурсов foreach ($widgets as $wKey => $widgetItem) { $wContent = file_get_contents($widgetItem->path); foreach ($views as $vKey => $viewItem) { $viewName = basename($viewItem->path); $viewName = mb_substr($viewName, 0, mb_strlen($viewName) - 4); //проверяем принадлежность представления виджету if (preg_match('~render\\((\'|")/?' . $viewName . '(\'|")~su', $wContent)) { $widgetViewsItem = null; if (!($widgetViewsItem = $widgetItem->getByName('views'))) { $widgetViewsItem = new OverrideDataItem(); $widgetViewsItem->name = 'views'; $widgetViewsItem->path = $path . 'views'; $widgetItem->addItem($widgetViewsItem); } $widgetViewsItem->addItem($viewItem); } } } foreach ($assets as $aKey => $assetsItem) { $assetsName = basename($assetsItem->path); $pattern = ''; if (HFile::getExtension($assetsName, true) == 'css') { $pattern = '~registerCssFile\\(("|\')' . $assetsName . '("|\')~su'; } elseif (HFile::getExtension($assetsName, true) == 'js') { $pattern = '~registerJsFile\\(("|\')' . $assetsName . '("|\')~su'; } else { $pattern = '~' . basename($assetsName) . '~su'; } foreach ($widgets as $wKey => $widgetItem) { $wContent = file_get_contents($widgetItem->path); //Возможно ресурс публикуется из виджета $addAssets = (bool) preg_match($pattern, $wContent); if ($widgetItem->getByName('views') != null && !$addAssets) { //проверяем принадлежность ресурса представлению foreach ($widgetItem->getByName('views') as $vKey => $viewItem) { $vContent = file_get_contents($viewItem->path); if (preg_match($pattern, $vContent)) { $addAssets = true; break; } } } if ($addAssets) { $widgetAssetsItem = null; if (!($widgetAssetsItem = $widgetItem->getByName('assets'))) { $widgetAssetsItem = new OverrideDataItem(); $widgetAssetsItem->name = 'assets'; $widgetAssetsItem->path = $path . 'assets'; $widgetItem->addItem($widgetAssetsItem); } $widgetAssetsItem->addItem(clone $assetsItem); //clone так, как ассет может принадлежать разным виджетам } } } //end foreach $result = $widgets; } //end else //Собираем виджеты по вложенным папкам rewinddir($dir); while (($file = readdir($dir)) !== false) { if ($file == "." || $file == "..") { continue; } if (is_dir($path . $file)) { if ($file != 'assets' && $file != 'views') { $result = array_merge($result, $this->getWidgetOverrideData($path . $file)); } } } closedir($dir); return $result; }
public function isFlash() { $file = $this->bannerFile->file_path; return HFile::getExtension($file) == 'swf'; }
public function getExtension() { return HFile::getExtension($this->file_path); }