/**
  * 
  * @return Aitoc_Aitsys_Model_Rewriter_MageConfig
  */
 public static function get()
 {
     if (!self::$_instance) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
 /**
  * Get base magento class name for alias (with no rewrites)
  * 
  * @param string $groupType
  * @param string $classId
  * @return string
  */
 public function getBaseClass($groupType, $classId)
 {
     return $this->_getGroupedClassName(Aitoc_Aitsys_Model_Rewriter_MageConfig::get()->getConfig()->getNode(), $groupType, $classId);
 }
Example #3
0
 /**
  * Creates inheritance array
  * 
  * @param array $rewriteClasses
  * @param array $baseClass
  */
 public function build($rewriteClasses, $baseClass, $useOrdering = true)
 {
     $inheritedClasses = array();
     $orderedInheritance = array();
     krsort($rewriteClasses);
     $rewriteClasses = array_values($rewriteClasses);
     $i = 0;
     while ($i < count($rewriteClasses)) {
         $inheritedClasses[$rewriteClasses[$i]] = isset($rewriteClasses[++$i]) ? $rewriteClasses[$i] : $baseClass;
     }
     // reversing to make it read classed in order of existence
     $inheritedClasses = array_reverse($inheritedClasses, true);
     // sorting in desired order
     $order = $this->loadOrderConfig();
     if (!$order) {
         $order = array();
     }
     if (!isset($order[$baseClass]) || !$this->_aithelper('Rewriter')->validateSavedClassConfig($order[$baseClass], $rewriteClasses)) {
         $config = Aitoc_Aitsys_Model_Rewriter_MageConfig::get()->getConfig();
         $tmp = array();
         foreach ($rewriteClasses as $class) {
             list($vendor, $name) = explode('_', $class, 3);
             $priority = (string) $config->getNode('modules/' . $vendor . '_' . $name . '/priority');
             $priority = $priority ? $priority : 1;
             while (isset($tmp[$priority])) {
                 ++$priority;
             }
             $tmp[$priority] = $class;
         }
         krsort($tmp);
         $i = 0;
         $order[$baseClass] = array();
         foreach ($tmp as $class) {
             $order[$baseClass][$class] = ++$i;
         }
     }
     /* Check encoded files */
     $encoded = array();
     if (isset($order[$baseClass])) {
         $classes = array_flip($order[$baseClass]);
         ksort($classes);
         $classes = array_values($classes);
         $classModel = new Aitoc_Aitsys_Model_Rewriter_Class();
         foreach ($classes as $k => $class) {
             if ($classModel->isEncodedClassFile($class)) {
                 $encoded[] = $class;
                 unset($classes[$k]);
             }
         }
         $classes = array_merge($classes, $encoded);
         $i = 0;
         $order[$baseClass] = array();
         foreach ($classes as $class) {
             $order[$baseClass][$class] = ++$i;
         }
     }
     if ($useOrdering && isset($order[$baseClass])) {
         $orderedClasses = array_flip($order[$baseClass]);
         ksort($orderedClasses);
         $orderedClasses = array_values($orderedClasses);
         $i = 0;
         $replaceClass = array();
         while ($i < count($orderedClasses)) {
             $contentsFromClass = $orderedClasses[$i];
             if (0 == $i && $orderedClasses[$i] != $rewriteClasses[$i]) {
                 $parentClass = $rewriteClasses[$i];
                 $replaceClass[$rewriteClasses[$i]] = $orderedClasses[$i];
             } else {
                 $parentClass = $orderedClasses[$i];
                 if (isset($replaceClass[$parentClass])) {
                     $parentClass = $replaceClass[$parentClass];
                 }
             }
             if (isset($orderedClasses[$i + 1])) {
                 $childClass = $orderedClasses[$i + 1];
                 if (isset($replaceClass[$childClass])) {
                     $childClass = $replaceClass[$childClass];
                 }
             } else {
                 $childClass = $baseClass;
             }
             $orderedInheritance[] = array('contents' => $contentsFromClass, 'parent' => $parentClass, 'child' => $childClass, 'encoded' => in_array($contentsFromClass, $encoded));
             $i++;
         }
         if ($orderedInheritance) {
             krsort($orderedInheritance);
             $inheritedClasses = $orderedInheritance;
         }
     }
     return $inheritedClasses;
 }