Beispiel #1
0
 /**
  * Modify class source
  *
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node
  *
  * @return void
  */
 protected function writeCallToSourceFile(\Includes\Decorator\DataStructure\Graph\Classes $node)
 {
     $path = \Includes\Decorator\ADecorator::getCacheClassesDir() . $node->getPath();
     $content = \Includes\Utils\FileManager::read($path);
     $content .= PHP_EOL . '// Call static constructor' . PHP_EOL;
     $content .= '\\' . $node->getClass() . '::' . static::STATIC_CONSTRUCTOR_METHOD . '();';
     \Includes\Utils\FileManager::write($path, $content);
 }
Beispiel #2
0
 /**
  * Callback to search annotated PHP classes
  *
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node
  *
  * @return void
  */
 public function checkClassForListChildTag(\Includes\Decorator\DataStructure\Graph\Classes $node)
 {
     if (!$node->isLowLevelNode() && ($lists = $node->getTag(static::TAG_LIST_CHILD))) {
         $data = array('child' => $node->getTopLevelNode()->getClass());
         foreach ($lists as $tags) {
             $this->annotatedPHPCLasses[] = $data + $tags;
         }
     }
 }
Beispiel #3
0
 /**
  * Condition to check for rewrite
  *
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node
  *
  * @return boolean
  */
 protected function isEntityDecorator(\Includes\Decorator\DataStructure\Graph\Classes $node)
 {
     $result = false;
     $parent = static::getClassesTree()->find($node->getParentClass());
     while ($parent) {
         if ($parent->getTag('Entity')) {
             $result = true;
             break;
         }
         $parent = static::getClassesTree()->find($parent->getParentClass());
     }
     return $result;
 }
Beispiel #4
0
 /**
  * Return DocBlock tags
  *
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node
  *
  * @return array
  */
 protected function getTagsToAdd(\Includes\Decorator\DataStructure\Graph\Classes $node)
 {
     $result = array();
     if ($node->getTag('HasLifecycleCallbacks')) {
         $result[] = 'HasLifecycleCallbacks';
     }
     return array($result, false);
 }
Beispiel #5
0
 /**
  * Returns repository class for model class of current node
  *
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node
  *
  * @return string
  */
 protected function getRepositoryClass(\Includes\Decorator\DataStructure\Graph\Classes $node)
 {
     $repositoryClass = null;
     if (!($node->isLowLevelNode() || $node->isTopLevelNode() || !$node->isDecorator())) {
         $children = $node->getChildren();
         $repositoryClass = isset($children[0]) ? $this->getRepositoryClass($children[0]) : $this->getDefaultRepositoryClass('');
     } else {
         $repositoryClass = \Includes\Utils\Converter::getPureClassName($node->getClass());
         $repositoryClass = \Includes\Utils\Converter::prepareClassName(str_replace('\\Model\\', '\\Model\\Repo\\', $repositoryClass), false);
         if (!\XLite\Core\Operator::isClassExists($repositoryClass)) {
             $repositoryClass = $this->getDefaultRepositoryClass($repositoryClass);
         }
     }
     return $repositoryClass;
 }
Beispiel #6
0
 /**
  * Write PHP class to the files
  *
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node   Current class node
  * @param \Includes\Decorator\DataStructure\Graph\Classes $parent Parent class node
  *
  * @return void
  */
 public static function writeClassFile(\Includes\Decorator\DataStructure\Graph\Classes $node, \Includes\Decorator\DataStructure\Graph\Classes $parent = null)
 {
     \Includes\Utils\FileManager::write(LC_DIR_CACHE_CLASSES . $node->getPath(), $node->getSource($parent));
 }
Beispiel #7
0
 /**
  * Return all dependencies listed in LC_Dependencies annotation
  *
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node Node
  *
  * @return array
  */
 protected static function getDependencies(\Includes\Decorator\DataStructure\Graph\Classes $node)
 {
     return $node->getTag('lc_dependencies', true);
 }
Beispiel #8
0
 /**
  * Callback to collect patchers
  *
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node
  *
  * @return void
  */
 public function checkClassForPatcherInterface(\Includes\Decorator\DataStructure\Graph\Classes $node)
 {
     if ($node->isImplements(static::INTERFACE_PATCHER) && !$node->getReflection()->isAbstract) {
         $this->patchers[] = $node;
     }
 }
Beispiel #9
0
 /**
  * Return actual parent class name
  *
  * @param self $parent Node to get class name OPTIONAL
  *
  * @return string
  */
 protected function getActualParentClassName(self $parent = null)
 {
     return $parent && ($class = $parent->getClass()) ? '\\' . $this->prepareClassName($class) : null;
 }
Beispiel #10
0
 /**
  * Add to index 
  * 
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node Class node
  *  
  * @return void
  */
 public function addToIndex(\Includes\Decorator\DataStructure\Graph\Classes $node)
 {
     $this->index[$node->getKey()] = $node;
 }
Beispiel #11
0
 /**
  * Callback to search annotated PHP classes
  *
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node
  *
  * @return void
  */
 public function checkClassForListChildTag(\Includes\Decorator\DataStructure\Graph\Classes $node)
 {
     if (!$node->isLowLevelNode() && preg_match('/^XLite(?:\\\\Module\\\\[A-Za-z0-9]+\\\\[A-Za-z0-9]+)?\\\\View\\\\/Ss', $node->getClass())) {
         $lists = $node->getTag(static::TAG_LIST_CHILD);
         if ($lists) {
             $data = array('child' => $node->getTopLevelNode()->getClass());
             foreach ($lists as $tags) {
                 $this->annotatedPHPCLasses[] = $data + $tags;
             }
         }
     }
 }
Beispiel #12
0
 /**
  * Remove the module-related part from module controller class
  *
  * @param \Includes\Decorator\DataStructure\Graph\Classes $node Node to get and prepare class
  *
  * @return void
  */
 protected function prepareModuleControllerClass(\Includes\Decorator\DataStructure\Graph\Classes $node)
 {
     return preg_replace(static::PATTERN, 'XLite\\\\Controller$2', $node->getClass());
 }