public function prepare() { $this->_merge = new Aitoc_Aitsys_Model_Rewriter_Merge(); $this->_rewriterConfig = new Aitoc_Aitsys_Model_Rewriter_Config(); // first clearing current class rewrites Aitoc_Aitsys_Model_Rewriter_Autoload::instance()->clearConfig(); $this->_merge->clear(); $rewriteHelper = Mage::helper('aitsys/rewriter'); $result = array(); if ($rewriteHelper->analysisInheritedClasses($this, 'mergeFilesFromClass', $result)) { $this->_rewriterConfig->commit(); } Aitoc_Aitsys_Model_Rewriter_Autoload::instance()->setupConfig(); }
private static function _initSource($file, $key) { if (!Mage::registry('aitoc_test_marker')) { $module = self::get()->platform()->getModule($key)->initSource(); $filename = pathinfo($file, PATHINFO_FILENAME); if ($files = Aitoc_Aitsys_Model_Rewriter_Autoload::instance()->getFileConfig($filename)) { $match = str_replace('_', '/', $key); foreach ($files as $file) { $file = str_replace('\\', '/', $file); if (strstr($file, $match)) { break; } } } $file = str_replace('\\', '/', $file); if (($tmp = strstr($file, 'Aitoc/')) || ($tmp = strstr($file, 'AdjustWare/'))) { $file = $tmp; } else { $file = strstr($file, 'app/'); } Mage::register('aitoc_file:' . md5($file), array($file, $module)); Mage::register('aitoc_block_marker', array($file, $module)); return true; } Mage::unregister('aitoc_test_marker'); return false; }
public function prepare() { $merge = new Aitoc_Aitsys_Model_Rewriter_Merge(); $rewriterConfig = new Aitoc_Aitsys_Model_Rewriter_Config(); // first clearing current class rewrites Aitoc_Aitsys_Model_Rewriter_Autoload::instance()->clearConfig(); $merge->clear(); $conflict = new Aitoc_Aitsys_Model_Rewriter_Conflict(); list($conflicts, $rewritesAbstract) = $conflict->getConflictList(); /** * FOR NORMAL REWRITES */ // will combine rewrites by alias groups if (!empty($conflicts)) { foreach ($conflicts as $groupType => $modules) { $groupType = substr($groupType, 0, -1); foreach ($modules as $moduleName => $moduleRewrites) { foreach ($moduleRewrites['rewrite'] as $moduleClass => $rewriteClasses) { /* * $rewriteClasses is an array of class names for one rewrite alias * for example: * Array * ( * [0] => AdjustWare_Deliverydate_Model_Rewrite_AdminhtmlSalesOrderCreate * [4] => Aitoc_Aitcheckoutfields_Model_Rewrite_AdminSalesOrderCreate * [10] => Aitoc_Aitorderedit_Model_Rewrite_AdminSalesOrderCreate * ) */ // building inheritance tree $alias = $moduleName . '/' . $moduleClass; $classModel = new Aitoc_Aitsys_Model_Rewriter_Class(); $inheritanceModel = new Aitoc_Aitsys_Model_Rewriter_Inheritance(); $baseClass = $classModel->getBaseClass($groupType, $alias); $inheritedClasses = $inheritanceModel->build($rewriteClasses, $baseClass); // don't create rewrites for excluded Magento base classes if (in_array($baseClass, $this->tool()->db()->getConfigValue('aitsys_rewriter_exclude_classes', array()))) { continue; } $mergedFilename = $merge->merge($inheritedClasses); if ($mergedFilename) { $rewriterConfig->add($mergedFilename, $rewriteClasses); $rewriterConfig->add(serialize($merge->getLatestMergedFiles()), 'file:' . $mergedFilename); } } } } } /** * FOR ABSTRACT REWRITES (AITOC REALIZATION) */ if (!empty($rewritesAbstract)) { foreach ($rewritesAbstract as $groupType => $modules) { $groupType = substr($groupType, 0, -1); foreach ($modules as $moduleName => $moduleRewrites) { foreach ($moduleRewrites['rewriteabstract'] as $moduleClass => $rewriteClass) { // building inheritance tree $alias = $moduleName . '/' . $moduleClass; $classModel = new Aitoc_Aitsys_Model_Rewriter_Class(); $inheritanceModel = new Aitoc_Aitsys_Model_Rewriter_Inheritance(); $baseClass = $classModel->getBaseClass($groupType, $alias); $inheritedClasses = $inheritanceModel->buildAbstract($rewriteClass, $baseClass); $mergedFilename = $merge->merge($inheritedClasses); if ($mergedFilename) { $rewriterConfig->add($mergedFilename, array($rewriteClass, $baseClass)); } } } } } $rewriterConfig->commit(); Aitoc_Aitsys_Model_Rewriter_Autoload::instance()->setupConfig(); }
protected function _copy($source, $target, $firstIteration = true) { parent::_copy($source, $target, $firstIteration); if (is_file($target) && file_exists($target)) { $platform = Aitoc_Aitsys_Abstract_Service::get()->platform(); $dirs = $platform->getModuleDirs(); foreach ($dirs as $dir) { if ($item = strstr($source, $dir)) { if ($item != $dir) { file_put_contents($target, '<?php class_exists("Mage_Adminhtml_Controller_Action"); require_once "' . $source . '";?>'); return $this; } } } $name = pathinfo($target, PATHINFO_FILENAME); $loader = Aitoc_Aitsys_Model_Rewriter_Autoload::instance(); if ($loader->hasClass($name)) { $path = $loader->getRewriteDir(); $source = <<<SOURCE <?php class_exists("Mage_Adminhtml_Controller_Action"); function _{$name}_autoloader( \$class ) { foreach (glob('{$path}*') as \$path) { require_once \$path; } } if (defined('AITSYS_REWRITED')) return; spl_autoload_register('_{$name}_autoloader'); _{$name}_autoloader(null); spl_autoload_unregister('_{$name}_autoloader'); define('AITSYS_REWRITED',true); SOURCE; file_put_contents($target, ''); } } return $this; }