/** * Create a new result list sorter. * * @param string id Optional sorter id. * @param string name Optional sorter name. * @param string sortId Optional sort id. */ public function __construct($id = null, $name = '', $sortId = null) { parent::__construct(); $this->id = $id; $this->sortId = $sortId; $this->descending = Toolbox::endsWith($this->sortId, '_d'); if (Toolbox::endsWith($this->sortId, '_a') || $this->descending) { $this->sortId = substr($this->sortId, 0, strlen($this->sortId) - 2); } }
/** * Load rules * * @param mixed resource yaml data or filename * @param boolean override Optional flag to control whether to override existing mappings or to merge; * default is <code>true</code> to override. * * @todo use a real loader */ public function load($resource, $override = true) { if (Toolbox::endsWith($resource, '.php') && file_exists($resource)) { include $resource; return; } if (null != ($rules = Yaml::parse($resource)) && is_array($rules)) { foreach ($rules as $id => $fieldRules) { foreach ($fieldRules as $field => $rules) { foreach ($rules as $rule => $params) { $this->addRule($id, array_merge(array($rule, $field), $params)); } } } } }
/** * Execute function renaming patch. * * @param array fktFilesCfg The file / function name / function suffix mapping(s). * @return boolean <code>true</code> if patching was successful, <code>false</code> if not. */ public function patchFilesFkt($fktFilesCfg) { $patchOk = true; foreach ($fktFilesCfg as $file => $fktCfgs) { // for each file... $lines = $this->getFileLines($file); $fileNeedsPatch = false; foreach ($fktCfgs as $fktCfg) { // for each function mapping foreach ($lines as $ii => $line) { if (false !== strpos($line, "function ") && false !== strpos($line, $fktCfg[0] . "(") && false === strpos($line, $fktCfg[1]) && Toolbox::endsWith(trim($line), "{")) { // modify $lines[$ii] = str_replace($fktCfg[0], $fktCfg[0] . $fktCfg[1], $line); $lines[$ii] = trim($lines[$ii]) . " /* modified by ZenMagick installation patcher */"; $fileNeedsPatch = true; break; } } } if ($fileNeedsPatch) { if (is_writeable($file)) { $this->putFileLines($file, $lines); } else { $this->container->get('logger')->err("** ZenMagick: no permission to patch " . basename($file)); $patchOk = false; } } } return $patchOk; }
/** * Look up additional product images. * * @param string image The image to look up. * @return array An array of <code>ZMImageInfo</code> instances. */ public static function getAdditionalImages($image) { $comp = ZMImageInfo::splitImageName($image); $subdir = $comp[0]; $ext = $comp[1]; $realImageBase = basename($comp[2]); // directory to scan $dirname = Runtime::getContainer()->getParameter('zencart.root_dir') . '/images/' . $subdir; $imageList = array(); if (is_dir($dirname) && ($dir = dir($dirname))) { while ($file = $dir->read()) { if (!is_dir($dirname . $file)) { if (Toolbox::endsWith($file, $ext)) { if (1 == preg_match("/" . $realImageBase . "/i", $file)) { if ($file != basename($image)) { if ($realImageBase . preg_replace('/' . $realImageBase . '/', '', $file) == $file) { array_push($imageList, $file); } } } } } } $dir->close(); sort($imageList); } // create ZMImageInfo list... $imageInfoList = array(); foreach ($imageList as $aimg) { $imageInfo = Beans::getBean('ZMImageInfo'); $imageInfo->setDefaultImage($subdir . $aimg); $imageInfoList[] = $imageInfo; } return $imageInfoList; }
/** * Builds a list of all ZenMagick theme sideboxes that do not have zen-cart sidebox dummies. * * return array List of sideboxes that need zen-cart dummies. */ protected function getMissingZCSideboxes() { // list of boxes dirs to process $boxPathList = array(); $rootDir = $this->container->getParameter('zenmagick.root_dir'); $boxPathList[] = $rootDir . '/src/ZenMagick/StorefrontBundle/Resources/views/boxes'; // 1) themes foreach ($this->container->get('themeService')->getAvailableThemes() as $theme) { $boxPathList[] = $theme->getBoxesDir(); } // 2) plugins foreach ($this->container->get('pluginService')->getPluginsForContext() as $plugin) { $dir = $plugin->getPluginDirectory() . '/templates/boxes'; $boxPathList[] = $dir; } $missingBoxes = array(); foreach ($boxPathList as $boxPath) { if (file_exists($boxPath) && is_readable($boxPath)) { // make list of all theme boxes $handle = opendir($boxPath); $zmBoxes = array(); while (false !== ($file = readdir($handle))) { if (is_file($boxPath . '/' . $file) && false === strpos($file, '.in.')) { $zmBoxes[$file] = $file; } } closedir($handle); $zcBoxes = array(); $handle = opendir($this->sideBoxPath); while (false !== ($file = readdir($handle))) { $zcBoxes[$file] = $file; } closedir($handle); foreach ($zmBoxes as $box) { if (!array_key_exists($box, $zcBoxes) && '.' != $box && '..' != $box && Toolbox::endsWith($box, '.php')) { $missingBoxes[$box] = $box; } } } } return $missingBoxes; }