/**
  * 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);
     }
 }
Example #2
0
 /**
  * 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));
                 }
             }
         }
     }
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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;
 }