public function renderForms($themeName) { $themeDir = FilesHelper::normalizePath(getThemeDir($themeName)); $form = array(); $this->_renderTemplatesForm($form, $themeDir, $themeName); $this->_renderSlidersForms($form, $themeDir, $themeName); return $form; }
public function getThemeTemplates($themeName) { $path = FilesHelper::normalizePath(getThemeDir($themeName . _PREVIEW_SUFFIX_)) . '/templates/templates.php'; if (file_exists($path)) { // TODO: Maybe we have to store all html and parse them after each update or export operation for backward require_once $path; } else { $templates = getTemplates(); // backward with old themes which do not have templates.php file but plugin is already updated } $context = Context::getContext(); $link = $context->link; $controllers = getTemplateControllers(); $previewParam = 'theme_name=' . $themeName; $result = array(); foreach ($templates as $type => $template) { $controller = $controllers[$type]; $method = 'get' . $controller . 'Link'; if (method_exists($link, $method)) { $lower = strtolower($controller); $item = Designer::getFirstItem($lower); if ($item > 0) { $baseUrl = $link->{$method}($item); $pos = strpos($baseUrl, '?'); if ($pos !== FALSE) { // HACK: preview parameter must be first in URL in Debug mode $mainPart = substr($baseUrl, 0, $pos); $params = substr($baseUrl, $pos + 1); $templateUrl = $mainPart . '?' . $previewParam . '&' . $params; } else { $templateUrl = $baseUrl . '?' . $previewParam; } } else { $templateUrl = $link->getPageLink('index') . '?' . $previewParam . '&missingContent=' . $lower; } } else { $templateUrl = $link->getPageLink($controller); if (strpos($templateUrl, $previewParam) === FALSE) { // can be set in some case from Dispatcher.php $templateUrl .= (strpos($templateUrl, '?') !== FALSE ? '&' : '?') . $previewParam; } } if (is_array($template)) { // updated theme with templates.php file foreach ($template as $t) { $result[$t['name']] = $templateUrl . '&template=' . $type . '_' . $t['id']; // format as {templateName_id.tpl} } } else { // backward with old themes which do not have templates.php file but plugin is already updated $result[$type] = $templateUrl; } } return $result; }
function add_files_to_archive_root(&$archive, $base_upload_dir, $user_template_dir, $base_preview_dir, $user_theme_name) { save_config($base_preview_dir, $base_upload_dir, $user_theme_name); $paths = array('Readme.txt' => FilesHelper::normalizePath($user_template_dir . '/Readme.txt'), 'Config.xml' => FilesHelper::normalizePath($base_upload_dir . '/designer/Export/Config.xml')); foreach ($paths as $name => $path) { if (!file_exists($path)) { continue; } $dir = dirname($path); addToArchive($archive, $path, $dir); } }
private function _getKey($path) { $file = FilesHelper::normalizePath($path); if (substr($file, 0, strlen($this->_themeDir . '_preview')) == $this->_themeDir . '_preview') { $file = substr($file, strlen($this->_themeDir . '_preview')); } if (substr($file, 0, strlen($this->_themeDir)) == $this->_themeDir) { $file = substr($file, strlen($this->_themeDir)); } return $file; }
function checkThemeName($themeName) { $toCheck = FilesHelper::normalizePath(_PS_ALL_THEMES_DIR_) . '/' . $themeName; while (file_exists($toCheck)) { preg_match('#(.*?)(\\d*)$#', $themeName, $m); $themeName = $m[1]; $suffix = (int) $m[2]; $suffix++; $themeName .= $suffix; $toCheck = FilesHelper::normalizePath(_PS_ALL_THEMES_DIR_) . '/' . $themeName; } return $themeName; }
private function _processFile($root, $inner_folder_path, $file_name, $content, &$changed_files, &$replaceInfo, $hasReplace) { // correct inner path to folder without version $folders = correct_version_path($inner_folder_path); foreach ($folders as $folder) { $path = FilesHelper::normalizePath($root . '/' . $folder); FilesHelper::createDir($path); $path .= '/' . $file_name; $info = pathinfo($path); $fileName = $info['basename']; $fileExt = isset($info['extension']) && $info['extension'] ? $info['extension'] : ''; $isTemplateFile = preg_match('#[\\\\/]' . $this->_previewThemeName . '[\\\\/](.*?)templates[\\\\/]#', $path, $m); if ($content === '[DELETED]') { FilesHelper::deleteFile($path); } elseif (in_array($fileExt, array('js')) && !strpos($path, 'designer/')) { $path = strpos($path, '/js/') || strpos($path, 'CloudZoom.js') ? $path : $root . '/js/' . $fileName; FilesHelper::writeFile($path, $content); } elseif (in_array($fileExt, array('css')) && !strpos($path, 'designer/')) { if ($fileName === 'style.css') { $fileName = 'global.css'; } $path = strpos($path, '/css/') ? $path : $root . '/css/' . $fileName; if ($hasReplace) { $content = str_replace($replaceInfo['ids'], $replaceInfo['paths'], $content); } FilesHelper::writeFile($path, $content); } elseif (in_array($fileExt, array('tpl'))) { $result = $this->_replaceImageIdToUrl($content, $replaceInfo, $hasReplace); FilesHelper::writeFile($path, $result); } else { FilesHelper::writeFile($path, $content); } $changed_files[] = $path; // save changed file - source or modified } }
public function __construct() { ProviderLog::start('Chunk save'); $this->UPLOAD_PATH = FilesHelper::normalizePath(_PS_UPLOAD_DIR_) . '/chunks/'; $this->_chunkFolder = $this->UPLOAD_PATH . 'default'; }
private function _checkPermissions($themeName) { $themeDir = FilesHelper::normalizePath(getThemeDir($themeName)); $previewDir = $themeDir . _PREVIEW_SUFFIX_; $dirs = array(_PS_OVERRIDE_DIR_, _PS_DOWNLOAD_DIR_, _PS_MODULE_DIR_, _PS_UPLOAD_DIR_, $themeDir, $previewDir); foreach ($dirs as $dir) { $rootOnly = strpos($dir, '/themes/') === FALSE; // check themes subdirectories only $check = FilesHelper::checkFiles($dir, true, true, $rootOnly); } return true; }