/** * Default run method * TODO: Needs more work * @return void */ public function run() { $this->printMessage('Generating code event listener...'); $config = XDT_CLI_Application::getConfig(); $namespace = $config['namespace'] . '_'; $className = $namespace . 'Listener'; if (!$namespace) { $namespace = ''; } if (!XDT_CLI_Helper::classExists($className, false)) { //$extendName = 'XenForo_Controller' . XfCli_Helpers::camelcaseString($type, false) . '_Abstract'; $class = new Zend_CodeGenerator_Php_Class(); $class->setName($className); //$class->setExtendedClass($extendName); XDT_CLI_ClassGenerator::create($className, $class); $this->printMessage('ok'); } else { $this->printMessage('skipped (already exists)'); } $this->printMessage($namespace); if (!empty($config['name'])) { $this->printMessage($this->colorText('Active Add-on: ', XDT_CLI_Abstract::BROWN), false); $this->printMessage($config['name']); } else { $this->printMessage($this->colorText('No add-on selected.', XDT_CLI_Abstract::RED)); } }
/** * Create (or modify) given class * * @param string $className * @param Zend_CodeGenerator_Php_Class $class * * @return Zend_CodeGenerator_Php_Class */ public static function create($className, Zend_CodeGenerator_Php_Class $class = null) { // If no class data is given and the class already exists there's no point in "creating" it if ($class == null and XDT_CLI_Helper::classExists($className)) { return self::get($className); } // Only create class if the file is available or we have class data $filePath = self::getClassPath($className); $fileContents = file_exists($filePath) ? file_get_contents($filePath) : false; if (empty($fileContents) or $class != null) { // Load blank CodeGenerator file $file = new Zend_CodeGenerator_Php_File(); // Create CodeGenerato Class if it wasn't provided as a parm if ($class == null) { $class = new Zend_CodeGenerator_Php_Class(); $class->setName($className); } // Append class to file $file->setClass($class); // Write to file XDT_CLI_Helper::writeToFile($filePath, $file->generate(), true); XDT_CLI_Abstract::getInstance()->printMessage("File: " . $filePath); } else { XDT_CLI_Abstract::getInstance()->bail("File already exists: " . $filePath); } return self::get($className); }
/** * Check if given class exists and creates dummy XFCP class to prevent errors if necessary * * @param string $className * @param bool $createXfcp * @param bool $alias * * @return bool */ public static function classExists($className, $createXfcp = true, $alias = true) { if ($createXfcp) { $xfcpClass = 'XFCP_' . $className; if (!XDT_CLI_Helper::classExists($xfcpClass, false, false)) { eval("class {$xfcpClass} {}"); } } if ($alias) { $className = XDT_CLI_Helper::loadClassAliased($className); } try { return class_exists($className); } catch (Exception $e) { } return false; }