本文整理汇总了PHP中modX::getParser方法的典型用法代码示例。如果您正苦于以下问题:PHP modX::getParser方法的具体用法?PHP modX::getParser怎么用?PHP modX::getParser使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类modX
的用法示例。
在下文中一共展示了modX::getParser方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getParser
/**
* Loads pdoTools parser
*
* @return pdoParser
*/
protected function getParser()
{
$this->parser = $this->modx->getParser();
if (!$this->parser instanceof pdoParser) {
if (!class_exists('pdoParser')) {
require_once dirname(__FILE__) . '/pdoparser.class.php';
}
$this->parser = new pdoParser($this->modx);
}
return $this->parser;
}
示例2: findTags
/**
* @param string $content
* @param array $tags
*/
public function findTags($content, &$tags)
{
$parser = $this->modx->getParser();
$collectedTags = array();
$parser->collectElementTags($content, $collectedTags);
foreach ($collectedTags as $tag) {
$tagName = $tag[1];
if (substr($tagName, 0, 1) == '!') {
$tagName = substr($tagName, 1);
}
$token = substr($tagName, 0, 1);
$tagParts = xPDO::escSplit('?', $tagName, '`', 2);
$tagName = trim($tagParts[0]);
$tagPropString = null;
$tagName = trim($this->modx->stripTags($tagName));
if (in_array($token, array('$', '+', '~', '#', '%', '-', '*'))) {
$tagName = substr($tagName, 1);
}
switch ($token) {
case '$':
$class = 'modChunk';
break;
case '+':
case '~':
case '#':
case '%':
case '-':
case '*':
continue 2;
break;
default:
$class = 'modSnippet';
break;
}
if (isset($tagParts[1])) {
$tagPropString = trim($tagParts[1]);
$this->findTags($tagPropString, $tags);
$element = $parser->getElement($class, $tagName);
if ($element) {
$properties = $element->getProperties($tagPropString);
} else {
$properties = array();
}
} else {
$properties = array();
}
$this->debug('Found ' . $class . ' ' . $tagName . ' with properties ' . print_r($properties, 1));
$tagName = $parser->realname($tagName);
if (empty($tagName)) {
continue;
}
$tags[$tagName] = array('name' => $tagName, 'class' => $class);
foreach ($properties as $property) {
$prop = trim($property);
if (!empty($prop) && !is_numeric($prop) && is_string($prop)) {
$tags[$prop] = array('name' => $prop, 'class' => 'modChunk', 'isProperty' => true);
}
}
}
}
示例3: processTags
/**
* Collects and processes any set of tags
*
* @param mixed $html Source code for parse
* @param integer $maxIterations
*
* @return mixed $html Parsed html
*/
public function processTags($html, $maxIterations = 10)
{
if (strpos($html, '[[') !== false) {
$this->modx->getParser()->processElementTags('', $html, false, false, '[[', ']]', array(), $maxIterations);
$this->modx->getParser()->processElementTags('', $html, true, true, '[[', ']]', array(), $maxIterations);
}
return $html;
}
示例4: _getConnection
/**
* Grab a persistent instance of the xPDO class to share connection data
* across multiple tests and test suites.
*
* @param array $options An array of configuration parameters.
* @return xPDO An xPDO object instance.
*/
public static function _getConnection($options = array())
{
$modx = FiTestHarness::$modx;
if (is_object($modx)) {
if (!$modx->request) {
$modx->getRequest();
}
if (!$modx->error) {
$modx->request->loadErrorHandler();
}
$modx->error->reset();
FiTestHarness::$modx = $modx;
return FiTestHarness::$modx;
}
/* include config.core.php */
$properties = array();
$config = array();
include strtr(realpath(dirname(__FILE__)) . '/config.inc.php', '\\', '/');
require_once $config['modx_base_path'] . 'config.core.php';
require_once MODX_CORE_PATH . 'config/' . MODX_CONFIG_KEY . '.inc.php';
require_once MODX_CORE_PATH . 'model/modx/modx.class.php';
include_once strtr(realpath(dirname(__FILE__)) . '/properties.inc.php', '\\', '/');
if (!defined('MODX_REQP')) {
define('MODX_REQP', false);
}
$modx = new modX(null, $properties);
$ctx = !empty($options['ctx']) ? $options['ctx'] : 'web';
$modx->initialize($ctx);
$debug = !empty($options['debug']);
$modx->setDebug($debug);
if (!empty($properties['logTarget'])) {
$modx->setLogTarget($properties['logTarget']);
}
if (!empty($properties['logLevel'])) {
$modx->setLogLevel($properties['logLevel']);
}
$modx->user = $modx->newObject('modUser');
$modx->user->set('id', $modx->getOption('modx.test.user.id', null, 1));
$modx->user->set('username', $modx->getOption('modx.test.user.username', null, 'test'));
$modx->getRequest();
$modx->getParser();
$modx->request->loadErrorHandler();
@error_reporting(E_ALL);
@ini_set('display_errors', true);
FiTestHarness::$modx = $modx;
return $modx;
}
示例5: runSnippet
/**
* @param $snippetName
* @param array $params
*
* @return string
*/
public function runSnippet($snippetName, array $params = array())
{
$output = '';
$cacheable = true;
if (strpos($snippetName, '!') === 0) {
$snippetName = substr($snippetName, 1);
$cacheable = false;
}
if ($this->modx->getParser()) {
$snippet = $this->modx->parser->getElement('modSnippet', $snippetName);
if ($snippet instanceof modSnippet) {
$snippet->setCacheable($cacheable);
$output = $snippet->process($params);
}
}
return $output;
}
示例6: array
/**
* Create or grab a reference to a static xPDO/modX instance.
*
* The instances can be reused by multiple tests and test suites.
*
* @param string $class A fixture class to get an instance of.
* @param string $name A unique identifier for the fixture.
* @param boolean $new
* @param array $options An array of configuration options for the fixture.
* @return object|null An instance of the specified fixture class or null on failure.
*/
public static function &getFixture($class, $name, $new = false, array $options = array())
{
if (!$new && array_key_exists($name, self::$fixtures) && self::$fixtures[$name] instanceof $class) {
$fixture =& self::$fixtures[$name];
} else {
$properties = array();
include_once dirname(dirname(dirname(__FILE__))) . '/core/model/modx/modx.class.php';
include dirname(__FILE__) . '/properties.inc.php';
self::$properties = $properties;
if (array_key_exists('debug', self::$properties)) {
self::$debug = (bool) self::$properties['debug'];
}
$fixture = null;
$driver = self::$properties['xpdo_driver'];
switch ($class) {
case 'modX':
if (!defined('MODX_REQP')) {
define('MODX_REQP', false);
}
if (!defined('MODX_CONFIG_KEY')) {
define('MODX_CONFIG_KEY', array_key_exists('config_key', self::$properties) ? self::$properties['config_key'] : 'test');
}
$fixture = new modX(null, self::$properties["{$driver}_array_options"]);
if ($fixture instanceof modX) {
$logLevel = array_key_exists('logLevel', self::$properties) ? self::$properties['logLevel'] : modX::LOG_LEVEL_WARN;
$logTarget = array_key_exists('logTarget', self::$properties) ? self::$properties['logTarget'] : (XPDO_CLI_MODE ? 'ECHO' : 'HTML');
$fixture->setLogLevel($logLevel);
$fixture->setLogTarget($logTarget);
if (!empty(self::$debug)) {
$fixture->setDebug(self::$properties['debug']);
}
$fixture->initialize(self::$properties['context']);
$fixture->user = $fixture->newObject('modUser');
$fixture->user->set('id', $fixture->getOption('modx.test.user.id', null, 1));
$fixture->user->set('username', $fixture->getOption('modx.test.user.username', null, 'test'));
$fixture->getRequest();
$fixture->getParser();
$fixture->request->loadErrorHandler();
}
break;
case 'xPDO':
$fixture = new xPDO(self::$properties["{$driver}_string_dsn_test"], self::$properties["{$driver}_string_username"], self::$properties["{$driver}_string_password"], self::$properties["{$driver}_array_options"], self::$properties["{$driver}_array_driverOptions"]);
if ($fixture instanceof xPDO) {
$logLevel = array_key_exists('logLevel', self::$properties) ? self::$properties['logLevel'] : xPDO::LOG_LEVEL_WARN;
$logTarget = array_key_exists('logTarget', self::$properties) ? self::$properties['logTarget'] : (XPDO_CLI_MODE ? 'ECHO' : 'HTML');
$fixture->setLogLevel($logLevel);
$fixture->setLogTarget($logTarget);
if (!empty(self::$debug)) {
$fixture->setDebug(self::$properties['debug']);
}
}
break;
default:
$fixture = new $class($options);
break;
}
if ($fixture !== null && $fixture instanceof $class) {
self::$fixtures[$name] = $fixture;
} else {
die("Error setting fixture {$name} of expected class {$class}.");
}
}
return $fixture;
}
示例7: parseProperties
/**
* Parse any tags in the properties
* @param array $properties
* @return array
*/
public function parseProperties(array $properties)
{
$properties = $this->getProperties();
$this->xpdo->getParser();
if ($this->xpdo->parser) {
foreach ($properties as &$property) {
$this->xpdo->parser->processElementTags('', $property['value'], true, true);
}
}
return $properties;
}
示例8: modX
<?php
/* JUST FOR TESTING THE TEXTILE IMPLEMENTATION */
/* Instantiate constants and variables for later use.
***/
dirname(dirname(dirname(dirname(__FILE__)))) . 'core.config.php';
require_once 'C:/wamp/www/revolution/core/model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('mgr');
$modx->getParser();
$modx->getService('lexicon', 'modLexicon');
define('HANDYMAN', true);
$hmo = '';
/* Include the main HandyMan class.
* This class takes care of authentification and provides the extension
* with functions to execute the requests.
*
* After inclusion, set up the $hm variable as the main object.
**/
include_once dirname(dirname(dirname(dirname(__FILE__)))) . '/core/components/handyman/classes/handyman.class.php';
$hm = new HandyMan($modx);
$hm->initialize();
$hm->modx->getService('h2t', 'html2textile', $hm->config['corePath'] . 'classes/textile/');
$hm->modx->getService('t2h', 'Textile', $hm->config['corePath'] . 'classes/textile/');
$case = !empty($_REQUEST['case']) ? $_REQUEST['case'] : 1;
$original = file_get_contents('data/' . $case . '.html');
$textiled = $hm->modx->h2t->detextile($original);
$html = $hm->modx->t2h->TextileThis($textiled);
$amts = 25;
$i = 0;
$recursingTextile = $textiled;
示例9: process
/**
* Process the tag and return the result.
*
* @see modElement::process()
* @param array|string $properties An array of properties or a formatted
* property string.
* @param string $content Optional content to use for the element
* processing.
* @return mixed The result of processing the tag.
*/
public function process($properties = null, $content = null)
{
$this->modx->getParser();
$this->getProperties($properties);
$this->getTag();
$this->filterInput();
if ($this->modx->getDebug() === true) {
$this->modx->log(xPDO::LOG_LEVEL_DEBUG, "Processing Element: " . $this->get('name') . ($this->_tag ? "\nTag: {$this->_tag}" : "\n") . "\nProperties: " . print_r($this->_properties, true));
}
if ($this->isCacheable() && isset($this->modx->elementCache[$this->_tag])) {
$this->_output = $this->modx->elementCache[$this->_tag];
$this->_processed = true;
} else {
$this->getContent(is_string($content) ? array('content' => $content) : array());
}
return $this->_result;
}
示例10: getTVValue
/**
* Gets the value of a TV for the Resource.
*
* @access public
* @param mixed $pk Either the ID of the TV, or the name of the TV.
* @return null/mixed The value of the TV for the Resource, or null if the
* TV is not found.
*/
public function getTVValue($pk)
{
$byName = false;
if (is_string($pk)) {
$byName = true;
}
/** @var modTemplateVar $tv */
if ($byName && $this->xpdo instanceof modX) {
$tv = $this->xpdo->getParser()->getElement('modTemplateVar', $pk);
} else {
$tv = $this->xpdo->getObject('modTemplateVar', $byName ? array('name' => $pk) : $pk);
}
return $tv == null ? null : $tv->renderOutput($this->get('id'));
}
示例11: outputContent
/**
* Prepare the final response after the resource has been processed.
*
* @param array $options Various options that can be set.
*/
public function outputContent(array $options = array())
{
if (!($this->contentType = $this->modx->resource->getOne('ContentType'))) {
if ($this->modx->getDebug() === true) {
$this->modx->log(modX::LOG_LEVEL_DEBUG, "No valid content type for RESOURCE: " . print_r($this->modx->resource->toArray(), true));
}
$this->modx->log(modX::LOG_LEVEL_FATAL, "The requested resource has no valid content type specified.");
}
if (!$this->contentType->get('binary')) {
$this->modx->resource->_output = $this->modx->resource->process();
$this->modx->resource->_jscripts = $this->modx->jscripts;
$this->modx->resource->_sjscripts = $this->modx->sjscripts;
$this->modx->resource->_loadedjscripts = $this->modx->loadedjscripts;
/* collect any uncached element tags in the content and process them */
$this->modx->getParser();
$maxIterations = intval($this->modx->getOption('parser_max_iterations', $options, 10));
$this->modx->parser->processElementTags('', $this->modx->resource->_output, true, false, '[[', ']]', array(), $maxIterations);
$this->modx->parser->processElementTags('', $this->modx->resource->_output, true, true, '[[', ']]', array(), $maxIterations);
/*FIXME: only do this for HTML content ?*/
if (strpos($this->contentType->get('mime_type'), 'text/html') !== false) {
/* Insert Startup jscripts & CSS scripts into template - template must have a </head> tag */
if (($js = $this->modx->getRegisteredClientStartupScripts()) && strpos($this->modx->resource->_output, '</head>') !== false) {
/* change to just before closing </head> */
$this->modx->resource->_output = preg_replace("/(<\\/head>)/i", $js . "\n\\1", $this->modx->resource->_output, 1);
}
/* Insert jscripts & html block into template - template must have a </body> tag */
if (strpos($this->modx->resource->_output, '</body>') !== false && ($js = $this->modx->getRegisteredClientScripts())) {
$this->modx->resource->_output = preg_replace("/(<\\/body>)/i", $js . "\n\\1", $this->modx->resource->_output, 1);
}
}
$this->modx->beforeRender();
/* invoke OnWebPagePrerender event */
if (!isset($options['noEvent']) || empty($options['noEvent'])) {
$this->modx->invokeEvent('OnWebPagePrerender');
}
$totalTime = $this->modx->getMicroTime() - $this->modx->startTime;
$queryTime = $this->modx->queryTime;
$queryTime = sprintf("%2.4f s", $queryTime);
$queries = isset($this->modx->executedQueries) ? $this->modx->executedQueries : 0;
$totalTime = sprintf("%2.4f s", $totalTime);
$phpTime = $totalTime - $queryTime;
$phpTime = sprintf("%2.4f s", $phpTime);
$source = $this->modx->resourceGenerated ? "database" : "cache";
$this->modx->resource->_output = str_replace("[^q^]", $queries, $this->modx->resource->_output);
$this->modx->resource->_output = str_replace("[^qt^]", $queryTime, $this->modx->resource->_output);
$this->modx->resource->_output = str_replace("[^p^]", $phpTime, $this->modx->resource->_output);
$this->modx->resource->_output = str_replace("[^t^]", $totalTime, $this->modx->resource->_output);
$this->modx->resource->_output = str_replace("[^s^]", $source, $this->modx->resource->_output);
} else {
$this->modx->beforeRender();
/* invoke OnWebPagePrerender event */
if (!isset($options['noEvent']) || empty($options['noEvent'])) {
$this->modx->invokeEvent("OnWebPagePrerender");
}
}
/* send out content-type, content-disposition, and custom headers from the content type */
if ($this->modx->getOption('set_header')) {
$type = $this->contentType->get('mime_type') ? $this->contentType->get('mime_type') : 'text/html';
$header = 'Content-Type: ' . $type;
if (!$this->contentType->get('binary')) {
$charset = $this->modx->getOption('modx_charset', null, 'UTF-8');
$header .= '; charset=' . $charset;
}
header($header);
if (!$this->checkPreview()) {
$dispositionSet = false;
if ($customHeaders = $this->contentType->get('headers')) {
foreach ($customHeaders as $headerKey => $headerString) {
header($headerString);
if (strpos($headerString, 'Content-Disposition:') !== false) {
$dispositionSet = true;
}
}
}
if (!$dispositionSet && $this->modx->resource->get('content_dispo')) {
if ($alias = array_search($this->modx->resourceIdentifier, $this->modx->aliasMap)) {
$name = basename($alias);
} elseif ($this->modx->resource->get('alias')) {
$name = $this->modx->resource->get('alias');
if ($ext = $this->contentType->getExtension()) {
$name .= ".{$ext}";
}
} elseif ($name = $this->modx->resource->get('pagetitle')) {
$name = $this->modx->resource->cleanAlias($name);
if ($ext = $this->contentType->getExtension()) {
$name .= ".{$ext}";
}
} else {
$name = 'download';
if ($ext = $this->contentType->getExtension()) {
$name .= ".{$ext}";
}
}
$header = 'Cache-Control: public';
header($header);
//.........这里部分代码省略.........
示例12: createPDF
/**
* Create a PDF with the options set in the class
*
* @param modResource $resource
* @param string|boolean $aliasPath
* @return string
*/
public function createPDF($resource, $aliasPath)
{
// Create folders
if (!@is_dir($this->getOption('pdfPath'))) {
if (!@mkdir($this->getOption('pdfPath'), $this->modx->getOption('new_folder_permissions', null, 0775))) {
$this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not create the pdf output path: ' . $this->getOption('pdfPath'), '', 'PDFResource');
return '';
}
}
if ($aliasPath && !@is_dir($this->getOption('pdfPath') . $aliasPath)) {
if (!@mkdir($this->getOption('pdfPath') . $aliasPath, $this->modx->getOption('new_folder_permissions', null, 0775))) {
$this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not create the pdf alias path: ' . $this->getOption('pdfPath') . $aliasPath, '', 'PDFResource');
return '';
}
}
// Get options
$id = $resource->get('id');
$pdfTpl = $this->getOption('pdfTpl', null, 'tplPDF');
$cssTpl = $this->getOption('cssTpl', null, 'tplCSS');
$optionsTV = $this->getOption('pdfTvOptions', null, 'pdf_options');
$processTVs = $this->getOption('processTVs', null, false);
$tvPrefix = $this->getOption('tvPrefix', null, 'tv.');
$placeholder = $resource->toArray();
// Prepare template variables and resource based options
$pdfOptions = null;
$tvs = $this->modx->getCollection('modTemplateVar');
foreach ($tvs as $tv) {
/** @var modTemplateVar $tv */
$placeholder[$tvPrefix . $tv->get('name')] = $processTVs ? $tv->renderOutput($id) : $tv->getValue($id);
if ($tv->get('name') == $optionsTV && $tv->getValue($id) != '') {
$pdfOptions = json_decode($tv->getValue($id), true);
if ($pdfOptions) {
$pdfTpl = $this->modx->getOption('pdfTpl', $pdfOptions, $pdfTpl);
$cssTpl = $this->modx->getOption('cssTpl', $pdfOptions, $cssTpl);
}
}
}
// Parse template chunks
$placeholder['tplPath'] = $this->modx->getOption('assets_path');
$html = $this->getChunk($pdfTpl, $placeholder);
$this->modx->getParser()->processElementTags('', $html, false, false, '[[', ']]', array(), $this->modx->getOption('max_iterations'));
$this->modx->getParser()->processElementTags('', $html, true, true, '[[', ']]', array(), $this->modx->getOption('max_iterations'));
$css = $this->getChunk($cssTpl, $placeholder);
unset($placeholder);
// Generate PDF file
$this->initPDF(array('mode' => $this->getOption('mode', $pdfOptions, 'utf-8'), 'format' => $this->getOption('format', $pdfOptions, 'A4'), 'defaultFontSize' => intval($this->getOption('defaultFontSize', $pdfOptions, 8)), 'defaultFont' => $this->getOption('defaultFont', $pdfOptions, ''), 'mgl' => intval($this->getOption('mgl', $pdfOptions, 10)), 'mgr' => intval($this->getOption('mgr', $pdfOptions, 10)), 'mgt' => intval($this->getOption('mgt', $pdfOptions, 7)), 'mgb' => intval($this->getOption('mgb', $pdfOptions, 7)), 'mgh' => intval($this->getOption('mgh', $pdfOptions, 10)), 'mgf' => intval($this->getOption('mgf', $pdfOptions, 10)), 'orientation' => $this->getOption('orientation', $pdfOptions, 'P'), 'customFonts' => $this->getOption('customFonts', $pdfOptions, '[]')));
$this->pdf->SetTitle($resource->get('pagetitle'));
$this->pdf->SetAuthor($this->getOption('author', $pdfOptions, $this->modx->getOption('site_name')));
$this->pdf->SetCreator($this->getOption('creator', $pdfOptions, $this->modx->getOption('site_url') . ' powered by PDFResource/mPDF'));
// Password protection
$userPassword = $this->getOption('userPassword', $pdfOptions, '');
$ownerPassword = $this->getOption('ownerPassword', $pdfOptions, '');
$permissions = json_decode($this->getOption('permissions', $pdfOptions, ''), true);
if ($userPassword || $ownerPassword) {
// Set default permissions if needed
$permissions = $permissions ? $permissions : array();
// Random owner password if needed
$ownerPassword = $ownerPassword ? $ownerPassword : null;
$this->pdf->SetProtection($permissions, $userPassword, $ownerPassword, 128);
}
// Call additional mPDF methods
$mpdfMethods = json_decode($this->getOption('mPDFMethods', $pdfOptions, ''), true);
$mpdfMethods = is_array($mpdfMethods) ? $mpdfMethods : array();
foreach ($mpdfMethods as $methodName) {
$value = $this->getOption($methodName, $pdfOptions, '');
$value = is_array($value) ? $value : json_decode($value, true);
if ($value && method_exists($this->pdf, $methodName)) {
call_user_func_array(array($this->pdf, $methodName), $value);
}
}
$this->pdf->WriteHTML($css, 1);
$this->pdf->WriteHTML($html, 2);
if ($aliasPath) {
return $this->pdf->Output($this->getOption('pdfPath') . $aliasPath . $resource->get('alias') . '.pdf', 'F');
} else {
return $this->pdf->Output('', 'S');
}
}