/** * Component initialization */ function init() { Yii::import('application.vendors.*'); // need this since Yii autoload handler raises an error if class is not found spl_autoload_unregister(array('YiiBase', 'autoload')); // registering Dwoo autoload handler require_once 'Dwoo/dwooAutoload.php'; // adding back Yii autoload handler spl_autoload_register(array('YiiBase', 'autoload')); // compiled templates directory $compileDir = Yii::app()->getRuntimePath() . '/dwoo/compiled/'; // create compiled directory if not exists if (!file_exists($compileDir)) { mkdir($compileDir, $this->filePermission, true); } // cached templates directory $cacheDir = Yii::app()->getRuntimePath() . '/dwoo/cache/'; // create compiled directory if not exists if (!file_exists($cacheDir)) { mkdir($cacheDir, $this->filePermission, true); } $this->dwoo = new Dwoo($compileDir, $cacheDir); $loader = $this->dwoo->getLoader(); // adding extension plugin directory $loader->addDirectory(Yii::getPathOfAlias('application.extensions.Dwoo.plugins')); // adding config plugin directory if specified if (!empty($this->pluginsDir)) { $loader->addDirectory(Yii::getPathOfAlias($this->pluginsDir)); } }
public function testLoaderGetSet() { $dwoo = new Dwoo(DWOO_COMPILE_DIR, DWOO_CACHE_DIR); $loader = new Dwoo_Loader(TEST_DIRECTORY . '/temp/cache'); $dwoo->setLoader($loader); $this->assertEquals($loader, $dwoo->getLoader()); }
/** * {@inheritdoc} */ public function render($viewName, Model $model, NotificationCenter $notificationCenter, $output = true) { Profile::start('Renderer', 'Generate HTML'); $templateName = $viewName . '.' . static::$templateFileExtension; $dwoo = new Dwoo($this->compiledPath, $this->cachePath); $dwoo->getLoader()->addDirectory($this->functionsPath); Profile::start('Renderer', 'Create template file.'); $template = new Dwoo_Template_File($templateName); $template->setIncludePath($this->getTemplatesPath()); Profile::stop(); Profile::start('Renderer', 'Render'); $dwooData = new Dwoo_Data(); $dwooData->setData($model->getData()); $dwooData->assign('errorMessages', $notificationCenter->getErrors()); $dwooData->assign('successMessages', $notificationCenter->getSuccesses()); $this->setHeader('Content-type: text/html', $output); // I do never output directly from dwoo to have the possibility to show an error page if there was a render error. $result = $rendered = $dwoo->get($template, $dwooData, null, false); if ($output) { echo $result; } Profile::stop(); Profile::stop(); return $output ? null : $rendered; }
function Dwoo_Plugin_format_text(Dwoo $dwoo, $text, $format = 'plain', $mode = 'format') { switch ($format) { case 'html': if ($mode == 'strip') { return strip_tags($text); } else { return $text; } case 'micstext': // load plugin if (function_exists('Dwoo_Plugin_micstext') === false) { $dwoo->getLoader()->loadPlugin('micstext'); } return Dwoo_Plugin_micstext($dwoo, $text, $mode); default: case 'plain': return nl2br(htmlspecialchars($text)); } }
/** * returns the plugin type of a plugin and adds it to the used plugins array if required * * @param string $name plugin name, as found in the template * @return int type as a multi bit flag composed of the Dwoo plugin types constants */ protected function getPluginType($name) { $pluginType = -1; if ($this->securityPolicy === null && (function_exists($name) || strtolower($name) === 'isset' || strtolower($name) === 'empty') || $this->securityPolicy !== null && in_array(strtolower($name), $this->securityPolicy->getAllowedPhpFunctions()) !== false) { $phpFunc = true; } while ($pluginType <= 0) { if (isset($this->customPlugins[$name])) { $pluginType = $this->customPlugins[$name]['type'] | Dwoo::CUSTOM_PLUGIN; } elseif (class_exists('Dwoo_Plugin_' . $name, false) !== false) { if (is_subclass_of('Dwoo_Plugin_' . $name, 'Dwoo_Block_Plugin')) { $pluginType = Dwoo::BLOCK_PLUGIN; } else { $pluginType = Dwoo::CLASS_PLUGIN; } $interfaces = class_implements('Dwoo_Plugin_' . $name, false); if (in_array('Dwoo_ICompilable', $interfaces) !== false || in_array('Dwoo_ICompilable_Block', $interfaces) !== false) { $pluginType |= Dwoo::COMPILABLE_PLUGIN; } } elseif (function_exists('Dwoo_Plugin_' . $name) !== false) { $pluginType = Dwoo::FUNC_PLUGIN; } elseif (function_exists('Dwoo_Plugin_' . $name . '_compile')) { $pluginType = Dwoo::FUNC_PLUGIN | Dwoo::COMPILABLE_PLUGIN; } elseif (function_exists('smarty_modifier_' . $name) !== false) { $pluginType = Dwoo::SMARTY_MODIFIER; } elseif (function_exists('smarty_function_' . $name) !== false) { $pluginType = Dwoo::SMARTY_FUNCTION; } elseif (function_exists('smarty_block_' . $name) !== false) { $pluginType = Dwoo::SMARTY_BLOCK; } else { if ($pluginType === -1) { try { $this->dwoo->getLoader()->loadPlugin($name, isset($phpFunc) === false); } catch (Exception $e) { if (isset($phpFunc)) { $pluginType = Dwoo::NATIVE_PLUGIN; } elseif (is_object($this->dwoo->getPluginProxy()) && $this->dwoo->getPluginProxy()->handles($name)) { $pluginType = Dwoo::PROXY_PLUGIN; break; } else { throw $e; } } } else { throw new Dwoo_Exception('Plugin "' . $name . '" could not be found'); } $pluginType++; } } if (($pluginType & Dwoo::COMPILABLE_PLUGIN) === 0 && ($pluginType & Dwoo::NATIVE_PLUGIN) === 0 && ($pluginType & Dwoo::PROXY_PLUGIN) === 0) { $this->usedPlugins[$name] = $pluginType; } return $pluginType; }