First commit, version 0.1 beta base nibiru framework
This commit is contained in:
46
core/l/Dwoo/Plugins/Functions/PluginAssign.php
Normal file
46
core/l/Dwoo/Plugins/Functions/PluginAssign.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Assigns a value to a variable
|
||||
* <pre>
|
||||
* * value : the value that you want to save
|
||||
* * var : the variable name (without the leading $)
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginAssign extends Plugin implements ICompilable
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param mixed $value
|
||||
* @param mixed $var
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, $var)
|
||||
{
|
||||
return '$this->assignInScope(' . $value . ', ' . $var . ')';
|
||||
}
|
||||
}
|
||||
56
core/l/Dwoo/Plugins/Functions/PluginCapitalize.php
Normal file
56
core/l/Dwoo/Plugins/Functions/PluginCapitalize.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.4
|
||||
* @date 2017-03-01
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Capitalizes the first letter of each word
|
||||
* <pre>
|
||||
* * value : the string to capitalize
|
||||
* * numwords : if true, the words containing numbers are capitalized as well
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginCapitalize extends Plugin
|
||||
{
|
||||
/**
|
||||
* @param string $value
|
||||
* @param bool $numwords
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function process($value, $numwords = false)
|
||||
{
|
||||
if ($numwords || preg_match('#^[^0-9]+$#', $value)) {
|
||||
return mb_convert_case((string)$value, MB_CASE_TITLE, $this->core->getCharset());
|
||||
} else {
|
||||
$bits = explode(' ', (string)$value);
|
||||
$out = '';
|
||||
foreach ($bits as $k => $v){
|
||||
if (preg_match('#^[^0-9]+$#', $v)) {
|
||||
$out .= ' ' . mb_convert_case($v, MB_CASE_TITLE, $this->core->getCharset());
|
||||
} else {
|
||||
$out .= ' ' . $v;
|
||||
}
|
||||
}
|
||||
|
||||
return substr($out, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
44
core/l/Dwoo/Plugins/Functions/PluginCat.php
Normal file
44
core/l/Dwoo/Plugins/Functions/PluginCat.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Concatenates any number of variables or strings fed into it
|
||||
* <pre>
|
||||
* * rest : two or more strings that will be merged into one
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginCat extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
* @param array $rest
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, array $rest)
|
||||
{
|
||||
return '(' . $value . ').(' . implode(').(', $rest) . ')';
|
||||
}
|
||||
}
|
||||
49
core/l/Dwoo/Plugins/Functions/PluginCountCharacters.php
Normal file
49
core/l/Dwoo/Plugins/Functions/PluginCountCharacters.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Counts the characters in a string
|
||||
* <pre>
|
||||
* * value : the string to process
|
||||
* * count_spaces : if true, the white-space characters are counted as well
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginCountCharacters extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
* @param bool $count_spaces
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, $count_spaces = false)
|
||||
{
|
||||
if ($count_spaces === 'false') {
|
||||
return 'preg_match_all(\'#[^\s\pZ]#u\', ' . $value . ', $tmp)';
|
||||
}
|
||||
|
||||
return 'mb_strlen(' . $value . ', $this->charset)';
|
||||
}
|
||||
}
|
||||
43
core/l/Dwoo/Plugins/Functions/PluginCountParagraphs.php
Normal file
43
core/l/Dwoo/Plugins/Functions/PluginCountParagraphs.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Counts the paragraphs in a string
|
||||
* <pre>
|
||||
* * value : the string to process
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginCountParagraphs extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value)
|
||||
{
|
||||
return '(preg_match_all(\'#[\r\n]+#\', ' . $value . ', $tmp)+1)';
|
||||
}
|
||||
}
|
||||
43
core/l/Dwoo/Plugins/Functions/PluginCountSentences.php
Normal file
43
core/l/Dwoo/Plugins/Functions/PluginCountSentences.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Counts the sentences in a string
|
||||
* <pre>
|
||||
* * value : the string to process
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginCountSentences extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value)
|
||||
{
|
||||
return "preg_match_all('#[\\w\\pL]\\.(?![\\w\\pL])#u', $value, \$tmp)";
|
||||
}
|
||||
}
|
||||
37
core/l/Dwoo/Plugins/Functions/PluginCountWords.php
Normal file
37
core/l/Dwoo/Plugins/Functions/PluginCountWords.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Counts the words in a string
|
||||
* <pre>
|
||||
* * value : the string to process
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginCountWords extends Plugin implements ICompilable
|
||||
{
|
||||
public static function compile(Compiler $compiler, $value)
|
||||
{
|
||||
return 'preg_match_all(strcasecmp($this->charset, \'utf-8\')===0 ? \'#[\w\pL]+#u\' : \'#\w+#\', ' . $value . ', $tmp)';
|
||||
}
|
||||
}
|
||||
94
core/l/Dwoo/Plugins/Functions/PluginCounter.php
Normal file
94
core/l/Dwoo/Plugins/Functions/PluginCounter.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2016
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2016 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.0
|
||||
* @date 2016-09-19
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Initiates a counter that is incremented every time you call it
|
||||
* <pre>
|
||||
* * name : the counter name, define it if you want to have multiple concurrent counters
|
||||
* * start : the start value, if it's set, it will reset the counter to this value, defaults to 1
|
||||
* * skip : the value to add to the counter at each call, defaults to 1
|
||||
* * direction : "up" (default) or "down" to define whether the counter increments or decrements
|
||||
* * print : if false, the counter will not output the current count, defaults to true
|
||||
* * assign : if set, the counter is saved into the given variable and does not output anything, overriding the print
|
||||
* parameter
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginCounter extends Plugin
|
||||
{
|
||||
protected $counters = array();
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param null $start
|
||||
* @param null $skip
|
||||
* @param null $direction
|
||||
* @param null $print
|
||||
* @param null $assign
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function process($name = 'default', $start = null, $skip = null, $direction = null, $print = null, $assign = null)
|
||||
{
|
||||
// init counter
|
||||
if (!isset($this->counters[$name])) {
|
||||
$this->counters[$name] = array(
|
||||
'count' => $start === null ? 1 : (int)$start,
|
||||
'skip' => $skip === null ? 1 : (int)$skip,
|
||||
'print' => $print === null ? true : (bool)$print,
|
||||
'assign' => $assign === null ? null : (string)$assign,
|
||||
'direction' => strtolower($direction) === 'down' ? - 1 : 1,
|
||||
);
|
||||
} // increment
|
||||
else {
|
||||
// override setting if present
|
||||
if ($skip !== null) {
|
||||
$this->counters[$name]['skip'] = (int)$skip;
|
||||
}
|
||||
|
||||
if ($direction !== null) {
|
||||
$this->counters[$name]['direction'] = strtolower($direction) === 'down' ? - 1 : 1;
|
||||
}
|
||||
|
||||
if ($print !== null) {
|
||||
$this->counters[$name]['print'] = (bool)$print;
|
||||
}
|
||||
|
||||
if ($assign !== null) {
|
||||
$this->counters[$name]['assign'] = (string)$assign;
|
||||
}
|
||||
|
||||
if ($start !== null) {
|
||||
$this->counters[$name]['count'] = (int)$start;
|
||||
} else {
|
||||
$this->counters[$name]['count'] += ($this->counters[$name]['skip'] * $this->counters[$name]['direction']);
|
||||
}
|
||||
}
|
||||
|
||||
$out = $this->counters[$name]['count'];
|
||||
|
||||
if ($this->counters[$name]['assign'] !== null) {
|
||||
$this->core->assignInScope($out, $this->counters[$name]['assign']);
|
||||
} elseif ($this->counters[$name]['print'] === true) {
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
}
|
||||
91
core/l/Dwoo/Plugins/Functions/PluginCycle.php
Normal file
91
core/l/Dwoo/Plugins/Functions/PluginCycle.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Cycles between several values and returns one of them on each call
|
||||
* <pre>
|
||||
* * name : the cycler name, specify if you need to have multiple concurrent cycles running
|
||||
* * values : an array of values or a string of values delimited by $delimiter
|
||||
* * print : if false, the pointer will go to the next one but not print anything
|
||||
* * advance : if false, the pointer will not advance to the next value
|
||||
* * delimiter : the delimiter used to split values if they are provided as a string
|
||||
* * assign : if set, the value is saved in that variable instead of being output
|
||||
* * reset : if true, the pointer is reset to the first value
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginCycle extends Plugin
|
||||
{
|
||||
protected $cycles = array();
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param null $values
|
||||
* @param bool $print
|
||||
* @param bool $advance
|
||||
* @param string $delimiter
|
||||
* @param null $assign
|
||||
* @param bool $reset
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function process($name = 'default', $values = null, $print = true, $advance = true, $delimiter = ',', $assign = null, $reset = false)
|
||||
{
|
||||
if ($values !== null) {
|
||||
if (is_string($values)) {
|
||||
$values = explode($delimiter, $values);
|
||||
}
|
||||
|
||||
if (!isset($this->cycles[$name]) || $this->cycles[$name]['values'] !== $values) {
|
||||
$this->cycles[$name]['index'] = 0;
|
||||
}
|
||||
|
||||
$this->cycles[$name]['values'] = array_values($values);
|
||||
} elseif (isset($this->cycles[$name])) {
|
||||
$values = $this->cycles[$name]['values'];
|
||||
}
|
||||
|
||||
if ($reset) {
|
||||
$this->cycles[$name]['index'] = 0;
|
||||
}
|
||||
|
||||
if ($print) {
|
||||
$out = $values[$this->cycles[$name]['index']];
|
||||
} else {
|
||||
$out = null;
|
||||
}
|
||||
|
||||
if ($advance) {
|
||||
if ($this->cycles[$name]['index'] >= count($values) - 1) {
|
||||
$this->cycles[$name]['index'] = 0;
|
||||
} else {
|
||||
++ $this->cycles[$name]['index'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($assign === null) {
|
||||
return $out;
|
||||
}
|
||||
$this->core->assignInScope($out, $assign);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
92
core/l/Dwoo/Plugins/Functions/PluginDateFormat.php
Normal file
92
core/l/Dwoo/Plugins/Functions/PluginDateFormat.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Core;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Formats a date
|
||||
* <pre>
|
||||
* * value : the date, as a unix timestamp, mysql datetime or whatever strtotime() can parse
|
||||
* * format : output format, see {@link http://php.net/strftime} for details
|
||||
* * default : a default timestamp value, if the first one is empty
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginDateFormat extends Plugin
|
||||
{
|
||||
/**
|
||||
* @param mixed $value
|
||||
* @param string $format
|
||||
* @param null $default
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function process($value, $format = '%b %e, %Y', $default = null)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
// convert if it's not a valid unix timestamp
|
||||
if (preg_match('#^-?\d{1,10}$#', $value) === 0) {
|
||||
$value = strtotime($value);
|
||||
}
|
||||
} elseif (!empty($default)) {
|
||||
// convert if it's not a valid unix timestamp
|
||||
if (preg_match('#^-?\d{1,10}$#', $default) === 0) {
|
||||
$value = strtotime($default);
|
||||
} else {
|
||||
$value = $default;
|
||||
}
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
|
||||
// Credits for that windows compat block to Monte Ohrt who made smarty's date_format plugin
|
||||
if (DIRECTORY_SEPARATOR == '\\') {
|
||||
$_win_from = array(
|
||||
'%D',
|
||||
'%h',
|
||||
'%n',
|
||||
'%r',
|
||||
'%R',
|
||||
'%t',
|
||||
'%T'
|
||||
);
|
||||
$_win_to = array(
|
||||
'%m/%d/%y',
|
||||
'%b',
|
||||
"\n",
|
||||
'%I:%M:%S %p',
|
||||
'%H:%M',
|
||||
"\t",
|
||||
'%H:%M:%S'
|
||||
);
|
||||
if (strpos($format, '%e') !== false) {
|
||||
$_win_from[] = '%e';
|
||||
$_win_to[] = sprintf('%\' 2d', date('j', $value));
|
||||
}
|
||||
if (strpos($format, '%l') !== false) {
|
||||
$_win_from[] = '%l';
|
||||
$_win_to[] = sprintf('%\' 2d', date('h', $value));
|
||||
}
|
||||
$format = str_replace($_win_from, $_win_to, $format);
|
||||
}
|
||||
|
||||
return strftime($format, $value);
|
||||
}
|
||||
}
|
||||
45
core/l/Dwoo/Plugins/Functions/PluginDefault.php
Normal file
45
core/l/Dwoo/Plugins/Functions/PluginDefault.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Returns a variable or a default value if it's empty
|
||||
* <pre>
|
||||
* * value : the variable to check
|
||||
* * default : fallback value if the first one is empty
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginDefault extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param mixed $value
|
||||
* @param string $default
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, $default = '')
|
||||
{
|
||||
return '(($tmp = ' . $value . ')===null||$tmp===\'\' ? ' . $default . ' : $tmp)';
|
||||
}
|
||||
}
|
||||
210
core/l/Dwoo/Plugins/Functions/PluginDump.php
Normal file
210
core/l/Dwoo/Plugins/Functions/PluginDump.php
Normal file
@@ -0,0 +1,210 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Plugin;
|
||||
use Iterator;
|
||||
use ReflectionObject;
|
||||
|
||||
/**
|
||||
* Dumps values of the given variable, or the entire data if nothing provided
|
||||
* <pre>
|
||||
* * var : the variable to display
|
||||
* * show_methods : if set to true, the public methods of any object encountered are also displayed
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginDump extends Plugin
|
||||
{
|
||||
protected $outputObjects;
|
||||
protected $outputMethods;
|
||||
|
||||
/**
|
||||
* @param string $var
|
||||
* @param bool $show_methods
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function process($var = '$', $show_methods = false)
|
||||
{
|
||||
$this->outputMethods = $show_methods;
|
||||
if ($var === '$') {
|
||||
$var = $this->core->getData();
|
||||
$out = '<div style="background:#aaa; padding:5px; margin:5px; color:#000;">data';
|
||||
} else {
|
||||
$out = '<div style="background:#aaa; padding:5px; margin:5px; color:#000;">dump';
|
||||
}
|
||||
|
||||
$this->outputObjects = array();
|
||||
|
||||
if (!is_array($var)) {
|
||||
if (is_object($var)) {
|
||||
return $this->exportObj('', $var);
|
||||
} else {
|
||||
return $this->exportVar('', $var);
|
||||
}
|
||||
}
|
||||
|
||||
$scope = $this->core->getScope();
|
||||
|
||||
if ($var === $scope) {
|
||||
$out .= ' (current scope): <div style="background:#ccc;">';
|
||||
} else {
|
||||
$out .= ':<div style="padding-left:20px;">';
|
||||
}
|
||||
|
||||
$out .= $this->export($var, $scope);
|
||||
|
||||
return $out . '</div></div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $var
|
||||
* @param $scope
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function export($var, $scope)
|
||||
{
|
||||
$out = '';
|
||||
foreach ($var as $i => $v) {
|
||||
if (is_array($v) || (is_object($v) && $v instanceof Iterator)) {
|
||||
$out .= $i . ' (' . (is_array($v) ? 'array' : 'object: ' . get_class($v)) . ')';
|
||||
if ($v === $scope) {
|
||||
$out .= ' (current scope):<div style="background:#ccc;padding-left:20px;">' . $this->export($v, $scope) . '</div>';
|
||||
} else {
|
||||
$out .= ':<div style="padding-left:20px;">' . $this->export($v, $scope) . '</div>';
|
||||
}
|
||||
} elseif (is_object($v)) {
|
||||
$out .= $this->exportObj($i . ' (object: ' . get_class($v) . '):', $v);
|
||||
} else {
|
||||
$out .= $this->exportVar($i . ' = ', $v);
|
||||
}
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $i
|
||||
* @param $v
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function exportVar($i, $v)
|
||||
{
|
||||
if (is_string($v) || is_bool($v) || is_numeric($v)) {
|
||||
return $i . htmlentities(var_export($v, true)) . '<br />';
|
||||
} elseif (is_null($v)) {
|
||||
return $i . 'null<br />';
|
||||
} elseif (is_resource($v)) {
|
||||
return $i . 'resource(' . get_resource_type($v) . ')<br />';
|
||||
} else {
|
||||
return $i . htmlentities(var_export($v, true)) . '<br />';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $i
|
||||
* @param $obj
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function exportObj($i, $obj)
|
||||
{
|
||||
if (array_search($obj, $this->outputObjects, true) !== false) {
|
||||
return $i . ' [recursion, skipped]<br />';
|
||||
}
|
||||
|
||||
$this->outputObjects[] = $obj;
|
||||
|
||||
$list = (array)$obj;
|
||||
|
||||
$protectedLength = strlen(get_class($obj)) + 2;
|
||||
|
||||
$out = array();
|
||||
|
||||
if ($this->outputMethods) {
|
||||
$ref = new ReflectionObject($obj);
|
||||
|
||||
foreach ($ref->getMethods() as $method) {
|
||||
if (!$method->isPublic()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (empty($out['method'])) {
|
||||
$out['method'] = '';
|
||||
}
|
||||
|
||||
$params = array();
|
||||
foreach ($method->getParameters() as $param) {
|
||||
$params[] = ($param->isPassedByReference() ? '&' : '') . '$' . $param->getName() . ($param->isOptional() ? ' = ' . var_export($param->getDefaultValue(), true) : '');
|
||||
}
|
||||
|
||||
$out['method'] .= '(method) ' . $method->getName() . '(' . implode(', ', $params) . ')<br />';
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($list as $attributeName => $attributeValue) {
|
||||
if (property_exists($obj, $attributeName)) {
|
||||
$key = 'public';
|
||||
} elseif (substr($attributeName, 0, 3) === "\0*\0") {
|
||||
$key = 'protected';
|
||||
$attributeName = substr($attributeName, 3);
|
||||
} else {
|
||||
$key = 'private';
|
||||
$attributeName = substr($attributeName, $protectedLength);
|
||||
}
|
||||
|
||||
if (empty($out[$key])) {
|
||||
$out[$key] = '';
|
||||
}
|
||||
|
||||
$out[$key] .= '(' . $key . ') ';
|
||||
|
||||
if (is_array($attributeValue)) {
|
||||
$out[$key] .= $attributeName . ' (array):<br />
|
||||
<div style="padding-left:20px;">' . $this->export($attributeValue, false) . '</div>';
|
||||
} elseif (is_object($attributeValue)) {
|
||||
$out[$key] .= $this->exportObj($attributeName . ' (object: ' . get_class($attributeValue) . '):', $attributeValue);
|
||||
} else {
|
||||
$out[$key] .= $this->exportVar($attributeName . ' = ', $attributeValue);
|
||||
}
|
||||
}
|
||||
|
||||
$return = $i . '<br /><div style="padding-left:20px;">';
|
||||
|
||||
if (!empty($out['method'])) {
|
||||
$return .= $out['method'];
|
||||
}
|
||||
|
||||
if (!empty($out['public'])) {
|
||||
$return .= $out['public'];
|
||||
}
|
||||
|
||||
if (!empty($out['protected'])) {
|
||||
$return .= $out['protected'];
|
||||
}
|
||||
|
||||
if (!empty($out['private'])) {
|
||||
$return .= $out['private'];
|
||||
}
|
||||
|
||||
return $return . '</div>';
|
||||
}
|
||||
}
|
||||
39
core/l/Dwoo/Plugins/Functions/PluginEol.php
Normal file
39
core/l/Dwoo/Plugins/Functions/PluginEol.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Returns the correct end of line character(s) for the current operating system.
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginEol extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler)
|
||||
{
|
||||
return 'PHP_EOL';
|
||||
}
|
||||
}
|
||||
103
core/l/Dwoo/Plugins/Functions/PluginEscape.php
Normal file
103
core/l/Dwoo/Plugins/Functions/PluginEscape.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Applies various escaping schemes on the given string
|
||||
* <pre>
|
||||
* * value : the string to process
|
||||
* * format : escaping format to use, valid formats are : html, htmlall, url, urlpathinfo, quotes, hex, hexentity,
|
||||
* javascript and mail
|
||||
* * charset : character set to use for the conversion (applies to some formats only), defaults to the current Dwoo
|
||||
* charset
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*
|
||||
* @return mixed|string
|
||||
*/
|
||||
class PluginEscape extends Plugin
|
||||
{
|
||||
/**
|
||||
* @param string $value
|
||||
* @param string $format
|
||||
* @param null $charset
|
||||
*
|
||||
* @return mixed|string
|
||||
*/
|
||||
public function process($value = '', $format = 'html', $charset = null)
|
||||
{
|
||||
if ($charset === null) {
|
||||
$charset = $this->core->getCharset();
|
||||
}
|
||||
|
||||
switch ($format) {
|
||||
case 'html':
|
||||
return htmlspecialchars((string)$value, ENT_QUOTES, $charset);
|
||||
case 'htmlall':
|
||||
return htmlentities((string)$value, ENT_QUOTES, $charset);
|
||||
case 'url':
|
||||
return rawurlencode((string)$value);
|
||||
case 'urlpathinfo':
|
||||
return str_replace('%2F', '/', rawurlencode((string)$value));
|
||||
case 'quotes':
|
||||
return preg_replace("#(?<!\\\\)'#", "\\'", (string)$value);
|
||||
case 'hex':
|
||||
$out = '';
|
||||
$cnt = strlen((string)$value);
|
||||
for ($i = 0; $i < $cnt; ++ $i) {
|
||||
$out .= '%' . bin2hex((string)$value[$i]);
|
||||
}
|
||||
|
||||
return $out;
|
||||
case 'hexentity':
|
||||
$out = '';
|
||||
$cnt = strlen((string)$value);
|
||||
for ($i = 0; $i < $cnt; ++ $i) {
|
||||
$out .= '&#x' . bin2hex((string)$value[$i]) . ';';
|
||||
}
|
||||
|
||||
return $out;
|
||||
case 'javascript':
|
||||
case 'js':
|
||||
return strtr((string)$value,
|
||||
array(
|
||||
'\\' => '\\\\',
|
||||
"'" => "\\'",
|
||||
'"' => '\\"',
|
||||
"\r" => '\\r',
|
||||
"\n" => '\\n',
|
||||
'</' => '<\/'
|
||||
));
|
||||
case 'mail':
|
||||
return str_replace(array(
|
||||
'@',
|
||||
'.'
|
||||
),
|
||||
array(
|
||||
' (AT) ',
|
||||
' (DOT) '
|
||||
),
|
||||
(string)$value);
|
||||
default:
|
||||
$this->core->triggerError('Escape\'s format argument must be one of : html, htmlall, url, urlpathinfo, hex, hexentity, javascript, js or mail, "' . $format . '" given.',
|
||||
E_USER_WARNING);
|
||||
}
|
||||
}
|
||||
}
|
||||
62
core/l/Dwoo/Plugins/Functions/PluginEval.php
Normal file
62
core/l/Dwoo/Plugins/Functions/PluginEval.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Core;
|
||||
use Dwoo\Plugin;
|
||||
use Dwoo\Template\Str as TemplateString;
|
||||
|
||||
/**
|
||||
* Evaluates the given string as if it was a template.
|
||||
* Although this plugin is kind of optimized and will
|
||||
* not recompile your string each time, it is still not
|
||||
* a good practice to use it. If you want to have templates
|
||||
* stored in a database or something you should probably use
|
||||
* the Dwoo\Template\Str class or make another class that
|
||||
* extends it
|
||||
* <pre>
|
||||
* * var : the string to use as a template
|
||||
* * assign : if set, the output of the template will be saved in this variable instead of being output
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginEval extends Plugin
|
||||
{
|
||||
/**
|
||||
* @param string $var
|
||||
* @param null $assign
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function process($var, $assign = null)
|
||||
{
|
||||
if ($var == '') {
|
||||
return '';
|
||||
}
|
||||
|
||||
$tpl = new TemplateString($var);
|
||||
$clone = clone $this->core;
|
||||
$out = $clone->get($tpl, $this->core->readVar('_parent'));
|
||||
|
||||
if ($assign !== null) {
|
||||
$this->core->assignInScope($out, $assign);
|
||||
} else {
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
}
|
||||
206
core/l/Dwoo/Plugins/Functions/PluginExtends.php
Normal file
206
core/l/Dwoo/Plugins/Functions/PluginExtends.php
Normal file
@@ -0,0 +1,206 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE LGPLv3
|
||||
* @version 1.3.6
|
||||
* @date 2017-03-21
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
use Dwoo\Exception as Exception;
|
||||
use Dwoo\Security\Exception as SecurityException;
|
||||
use Dwoo\Compilation\Exception as CompilationException;
|
||||
|
||||
/**
|
||||
* Extends another template, read more about template inheritance at {@link
|
||||
* http://wiki.dwoo.org/index.php/TemplateInheritance}
|
||||
* <pre>
|
||||
* * file : the template to extend
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginExtends extends Plugin implements ICompilable
|
||||
{
|
||||
protected static $childSource;
|
||||
protected static $regex;
|
||||
protected static $l;
|
||||
protected static $r;
|
||||
protected static $lastReplacement;
|
||||
|
||||
public function process()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param $file
|
||||
*
|
||||
* @throws CompilationException
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $file)
|
||||
{
|
||||
list($l, $r) = $compiler->getDelimiters();
|
||||
self::$l = preg_quote($l, '/');
|
||||
self::$r = preg_quote($r, '/');
|
||||
self::$regex = '/
|
||||
' . self::$l . 'block\s(["\']?)(.+?)\1' . self::$r . '(?:\r?\n?)
|
||||
((?:
|
||||
(?R)
|
||||
|
|
||||
[^' . self::$l . ']*
|
||||
(?:
|
||||
(?! ' . self::$l . '\/?block\b )
|
||||
' . self::$l . '
|
||||
[^' . self::$l . ']*+
|
||||
)*
|
||||
)*)
|
||||
' . self::$l . '\/block' . self::$r . '
|
||||
/six';
|
||||
|
||||
if ($compiler->getLooseOpeningHandling()) {
|
||||
self::$l .= '\s*';
|
||||
self::$r = '\s*' . self::$r;
|
||||
}
|
||||
$inheritanceTree = array(array('source' => $compiler->getTemplateSource()));
|
||||
$curPath = dirname($compiler->getCore()->getTemplate()->getResourceIdentifier()) . DIRECTORY_SEPARATOR;
|
||||
$curTpl = $compiler->getCore()->getTemplate();
|
||||
|
||||
while (!empty($file)) {
|
||||
if ($file === '""' || $file === "''" || (substr($file, 0, 1) !== '"' && substr($file, 0, 1) !== '\'')) {
|
||||
throw new CompilationException($compiler, 'Extends : The file name must be a non-empty string');
|
||||
}
|
||||
|
||||
if (preg_match('#^["\']([a-z]{2,}):(.*?)["\']$#i', $file, $m)) {
|
||||
// resource:identifier given, extract them
|
||||
$resource = $m[1];
|
||||
$identifier = $m[2];
|
||||
} else {
|
||||
// get the current template's resource
|
||||
$resource = $curTpl->getResourceName();
|
||||
$identifier = substr($file, 1, - 1);
|
||||
}
|
||||
|
||||
try {
|
||||
$parent = $compiler->getCore()->templateFactory($resource, $identifier, null, null, null, $curTpl);
|
||||
}
|
||||
catch (SecurityException $e) {
|
||||
throw new CompilationException($compiler, 'Extends : Security restriction : ' . $e->getMessage());
|
||||
}
|
||||
catch (Exception $e) {
|
||||
throw new CompilationException($compiler, 'Extends : ' . $e->getMessage());
|
||||
}
|
||||
|
||||
if ($parent === null) {
|
||||
throw new CompilationException($compiler, 'Extends : Resource "' . $resource . ':' . $identifier . '" not found.');
|
||||
} elseif ($parent === false) {
|
||||
throw new CompilationException($compiler, 'Extends : Resource "' . $resource . '" does not support extends.');
|
||||
}
|
||||
|
||||
$curTpl = $parent;
|
||||
$newParent = array(
|
||||
'source' => $parent->getSource(),
|
||||
'resource' => $resource,
|
||||
'identifier' => $parent->getResourceIdentifier(),
|
||||
'uid' => $parent->getUid()
|
||||
);
|
||||
if (array_search($newParent, $inheritanceTree, true) !== false) {
|
||||
throw new CompilationException($compiler, 'Extends : Recursive template inheritance detected');
|
||||
}
|
||||
$inheritanceTree[] = $newParent;
|
||||
|
||||
if (preg_match('/^' . self::$l . 'extends(?:\(?\s*|\s+)(?:file=)?\s*((["\']).+?\2|\S+?)\s*\)?\s*?' . self::$r . '/i', $parent->getSource(), $match)) {
|
||||
$curPath = dirname($identifier) . DIRECTORY_SEPARATOR;
|
||||
if (isset($match[2]) && $match[2] == '"') {
|
||||
$file = '"' . str_replace('"', '\\"', substr($match[1], 1, - 1)) . '"';
|
||||
} elseif (isset($match[2]) && $match[2] == "'") {
|
||||
$file = '"' . substr($match[1], 1, - 1) . '"';
|
||||
} else {
|
||||
$file = '"' . $match[1] . '"';
|
||||
}
|
||||
} else {
|
||||
$file = false;
|
||||
}
|
||||
}
|
||||
|
||||
while (true) {
|
||||
$parent = array_pop($inheritanceTree);
|
||||
$child = end($inheritanceTree);
|
||||
self::$childSource = $child['source'];
|
||||
self::$lastReplacement = count($inheritanceTree) === 1;
|
||||
if (!isset($newSource)) {
|
||||
$newSource = $parent['source'];
|
||||
}
|
||||
$newSource = preg_replace_callback(self::$regex, array(
|
||||
'Dwoo\Plugins\Functions\PluginExtends',
|
||||
'replaceBlock'
|
||||
), $newSource);
|
||||
$newSource = $l . 'do extendsCheck(' . var_export($parent['resource'] . ':' . $parent['identifier'], true) . ')' . $r . $newSource;
|
||||
|
||||
if (self::$lastReplacement) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
$compiler->setTemplateSource($newSource);
|
||||
$compiler->recompile();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $matches
|
||||
*
|
||||
* @return mixed|string
|
||||
*/
|
||||
protected static function replaceBlock(array $matches)
|
||||
{
|
||||
$matches[3] = self::removeTrailingNewline($matches[3]);
|
||||
|
||||
if (preg_match_all(self::$regex, self::$childSource, $override) && in_array($matches[2], $override[2])) {
|
||||
$key = array_search($matches[2], $override[2]);
|
||||
$override = self::removeTrailingNewline($override[3][$key]);
|
||||
|
||||
$l = stripslashes(self::$l);
|
||||
$r = stripslashes(self::$r);
|
||||
|
||||
if (self::$lastReplacement) {
|
||||
return preg_replace('/' . self::$l . '\$dwoo\.parent' . self::$r . '/is', $matches[3], $override);
|
||||
}
|
||||
|
||||
return $l . 'block ' . $matches[1] . $matches[2] . $matches[1] . $r . preg_replace('/' . self::$l . '\$dwoo\.parent' . self::$r . '/is', $matches[3], $override) . $l . '/block' . $r;
|
||||
}
|
||||
|
||||
if (preg_match(self::$regex, $matches[3])) {
|
||||
return preg_replace_callback(self::$regex, array(
|
||||
'Dwoo\Plugins\Functions\PluginExtends',
|
||||
'replaceBlock'
|
||||
), $matches[3]);
|
||||
}
|
||||
|
||||
if (self::$lastReplacement) {
|
||||
return $matches[3];
|
||||
}
|
||||
|
||||
return $matches[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $text
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected static function removeTrailingNewline($text)
|
||||
{
|
||||
return substr($text, - 1) === "\n" ? substr($text, - 2, 1) === "\r" ? substr($text, 0, - 2) : substr($text, 0, - 1) : $text;
|
||||
}
|
||||
}
|
||||
75
core/l/Dwoo/Plugins/Functions/PluginExtendsCheck.php
Normal file
75
core/l/Dwoo/Plugins/Functions/PluginExtendsCheck.php
Normal file
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE LGPLv3
|
||||
* @version 1.3.6
|
||||
* @date 2017-03-21
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\Compilation\Exception as CompilationException;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Checks whether an extended file has been modified, and if so recompiles the current template. This is for internal
|
||||
* use only, do not use. This software is provided 'as-is', without any express or implied warranty. In no event will
|
||||
* the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginExtendsCheck extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param $file
|
||||
*
|
||||
* @return string
|
||||
* @throws CompilationException
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $file)
|
||||
{
|
||||
preg_match('#^["\']([a-z]{2,}):(.*?)["\']$#i', $file, $m);
|
||||
$resource = $m[1];
|
||||
$identifier = $m[2];
|
||||
|
||||
$tpl = $compiler->getCore()->templateFactory($resource, $identifier);
|
||||
|
||||
if ($tpl === null) {
|
||||
throw new CompilationException($compiler,
|
||||
'Load Templates : Resource "' . $resource . ':' . $identifier . '" not found.');
|
||||
} elseif ($tpl === false) {
|
||||
throw new CompilationException($compiler,
|
||||
'Load Templates : Resource "' . $resource . '" does not support includes.');
|
||||
}
|
||||
|
||||
$out = '\'\';// checking for modification in ' . $resource . ':' . $identifier . "\r\n";
|
||||
|
||||
$modCheck = $tpl->getIsModifiedCode();
|
||||
|
||||
if ($modCheck) {
|
||||
$out .= 'if (!(' . $modCheck . ')) { ob_end_clean(); return false; }';
|
||||
} else {
|
||||
$out .= 'try {
|
||||
$tpl = $this->templateFactory("' . $resource . '", "' . $identifier . '");
|
||||
} catch (Dwoo\Exception $e) {
|
||||
$this->triggerError(\'Load Templates : Resource <em>' . $resource . '</em> was not added to Dwoo, can not extend <em>' . $identifier . '</em>\', E_USER_WARNING);
|
||||
}
|
||||
if ($tpl === null)
|
||||
$this->triggerError(\'Load Templates : Resource "' . $resource . ':' . $identifier . '" was not found.\', E_USER_WARNING);
|
||||
elseif ($tpl === false)
|
||||
$this->triggerError(\'Load Templates : Resource "' . $resource . '" does not support extends.\', E_USER_WARNING);
|
||||
if ($tpl->getUid() != "' . $tpl->getUid() . '") { ob_end_clean(); return false; }';
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
82
core/l/Dwoo/Plugins/Functions/PluginFetch.php
Normal file
82
core/l/Dwoo/Plugins/Functions/PluginFetch.php
Normal file
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Reads a file
|
||||
* <pre>
|
||||
* * file : path or URI of the file to read (however reading from another website is not recommended for performance
|
||||
* reasons)
|
||||
* * assign : if set, the file will be saved in this variable instead of being output
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginFetch extends Plugin
|
||||
{
|
||||
/**
|
||||
* @param string $file
|
||||
* @param null $assign
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function process($file, $assign = null)
|
||||
{
|
||||
if ($file === '') {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ($policy = $this->core->getSecurityPolicy()) {
|
||||
while (true) {
|
||||
if (preg_match('{^([a-z]+?)://}i', $file)) {
|
||||
$this->core->triggerError('The security policy prevents you to read files from external sources.',
|
||||
E_USER_WARNING);
|
||||
}
|
||||
|
||||
$file = realpath($file);
|
||||
$dirs = $policy->getAllowedDirectories();
|
||||
foreach ($dirs as $dir => $dummy) {
|
||||
if (strpos($file, $dir) === 0) {
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
$this->core->triggerError('The security policy prevents you to read <em>' . $file . '</em>',
|
||||
E_USER_WARNING);
|
||||
}
|
||||
}
|
||||
$file = str_replace(array(
|
||||
"\t",
|
||||
"\n",
|
||||
"\r"
|
||||
),
|
||||
array(
|
||||
'\\t',
|
||||
'\\n',
|
||||
'\\r'
|
||||
),
|
||||
$file);
|
||||
|
||||
$out = file_get_contents($file);
|
||||
|
||||
if ($assign === null) {
|
||||
return $out;
|
||||
}
|
||||
$this->core->assignInScope($out, $assign);
|
||||
}
|
||||
}
|
||||
110
core/l/Dwoo/Plugins/Functions/PluginInclude.php
Normal file
110
core/l/Dwoo/Plugins/Functions/PluginInclude.php
Normal file
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Exception as Exception;
|
||||
use Dwoo\Plugin;
|
||||
use Dwoo\Security\Exception as SecurityException;
|
||||
|
||||
/**
|
||||
* Inserts another template into the current one
|
||||
* <pre>
|
||||
* * file : the resource name of the template
|
||||
* * cache_time : cache length in seconds
|
||||
* * cache_id : cache identifier for the included template
|
||||
* * compile_id : compilation identifier for the included template
|
||||
* * data : data to feed into the included template, it can be any array and will default to $_root (the current data)
|
||||
* * assign : if set, the output of the included template will be saved in this variable instead of being output
|
||||
* * rest : any additional parameter/value provided will be added to the data array
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginInclude extends Plugin
|
||||
{
|
||||
/**
|
||||
* @param $file
|
||||
* @param null $cache_time
|
||||
* @param null $cache_id
|
||||
* @param null $compile_id
|
||||
* @param string $data
|
||||
* @param null $assign
|
||||
* @param array $rest
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function process($file, $cache_time = null, $cache_id = null, $compile_id = null, $data = '_root', $assign = null, array $rest = array())
|
||||
{
|
||||
$include = null;
|
||||
if ($file === '') {
|
||||
return '';
|
||||
}
|
||||
|
||||
if (preg_match('#^([a-z]{2,}):(.*)$#i', $file, $m)) {
|
||||
// resource:identifier given, extract them
|
||||
$resource = $m[1];
|
||||
$identifier = $m[2];
|
||||
} else {
|
||||
// get the current template's resource
|
||||
$resource = $this->core->getTemplate()->getResourceName();
|
||||
$identifier = $file;
|
||||
}
|
||||
|
||||
try {
|
||||
$include = $this->core->templateFactory($resource, $identifier, $cache_time, $cache_id, $compile_id);
|
||||
}
|
||||
catch (SecurityException $e) {
|
||||
$this->core->triggerError('Include : Security restriction : ' . $e->getMessage(), E_USER_WARNING);
|
||||
}
|
||||
catch (Exception $e) {
|
||||
$this->core->triggerError('Include : ' . $e->getMessage(), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if ($include === null) {
|
||||
$this->core->triggerError('Include : Resource "' . $resource . ':' . $identifier . '" not found.',
|
||||
E_USER_WARNING);
|
||||
} elseif ($include === false) {
|
||||
$this->core->triggerError('Include : Resource "' . $resource . '" does not support includes.',
|
||||
E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (is_string($data)) {
|
||||
$vars = $this->core->readVar($data);
|
||||
} else {
|
||||
$vars = $data;
|
||||
}
|
||||
|
||||
if (count($rest)) {
|
||||
$vars = $rest + $vars;
|
||||
}
|
||||
|
||||
$clone = clone $this->core;
|
||||
$out = $clone->get($include, $vars);
|
||||
|
||||
if ($assign !== null) {
|
||||
$this->core->assignInScope($out, $assign);
|
||||
}
|
||||
|
||||
foreach ($clone->getReturnValues() as $name => $value) {
|
||||
$this->core->assignInScope($value, $name);
|
||||
}
|
||||
|
||||
if ($assign === null) {
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
}
|
||||
47
core/l/Dwoo/Plugins/Functions/PluginIndent.php
Normal file
47
core/l/Dwoo/Plugins/Functions/PluginIndent.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Indents every line of a text by the given amount of characters
|
||||
* <pre>
|
||||
* * value : the string to indent
|
||||
* * by : how many characters should be inserted before each line
|
||||
* * char : the character(s) to insert
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginIndent extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
* @param int $by
|
||||
* @param string $char
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, $by = 4, $char = ' ')
|
||||
{
|
||||
return "preg_replace('#^#m', '" . str_repeat(substr($char, 1, - 1), trim($by, '"\'')) . "', $value)";
|
||||
}
|
||||
}
|
||||
43
core/l/Dwoo/Plugins/Functions/PluginIsset.php
Normal file
43
core/l/Dwoo/Plugins/Functions/PluginIsset.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Checks whether a variable is not null
|
||||
* <pre>
|
||||
* * var : variable to check
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginIsset extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param mixed $var
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $var)
|
||||
{
|
||||
return '(' . $var . ' !== null)';
|
||||
}
|
||||
}
|
||||
99
core/l/Dwoo/Plugins/Functions/PluginLoadTemplates.php
Normal file
99
core/l/Dwoo/Plugins/Functions/PluginLoadTemplates.php
Normal file
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE LGPLv3
|
||||
* @version 1.3.6
|
||||
* @date 2017-03-21
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\Compilation\Exception as CompilationException;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Loads sub-templates contained in an external file
|
||||
* <pre>
|
||||
* * file : the resource name of the file to load
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginLoadTemplates extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $file
|
||||
*
|
||||
* @return string
|
||||
* @throws CompilationException
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $file)
|
||||
{
|
||||
$file = substr($file, 1, - 1);
|
||||
|
||||
if ($file === '') {
|
||||
return '';
|
||||
}
|
||||
|
||||
if (preg_match('#^([a-z]{2,}):(.*)$#i', $file, $m)) {
|
||||
// resource:identifier given, extract them
|
||||
$resource = $m[1];
|
||||
$identifier = $m[2];
|
||||
} else {
|
||||
// get the current template's resource
|
||||
$resource = $compiler->getCore()->getTemplate()->getResourceName();
|
||||
$identifier = $file;
|
||||
}
|
||||
|
||||
$tpl = $compiler->getCore()->templateFactory($resource, $identifier);
|
||||
|
||||
if ($tpl === null) {
|
||||
throw new CompilationException($compiler,
|
||||
'Load Templates : Resource "' . $resource . ':' . $identifier . '" not found.');
|
||||
} elseif ($tpl === false) {
|
||||
throw new CompilationException($compiler,
|
||||
'Load Templates : Resource "' . $resource . '" does not support includes.');
|
||||
}
|
||||
|
||||
$cmp = clone $compiler;
|
||||
$cmp->compile($compiler->getCore(), $tpl);
|
||||
foreach ($cmp->getTemplatePlugins() as $template => $args) {
|
||||
$compiler->addTemplatePlugin($template, $args['params'], $args['uuid'], $args['body']);
|
||||
}
|
||||
foreach ($cmp->getUsedPlugins() as $plugin => $type) {
|
||||
$compiler->addUsedPlugin($plugin, $type);
|
||||
}
|
||||
|
||||
$out = '\'\';// checking for modification in ' . $resource . ':' . $identifier . "\r\n";
|
||||
|
||||
$modCheck = $tpl->getIsModifiedCode();
|
||||
|
||||
if ($modCheck) {
|
||||
$out .= 'if (!(' . $modCheck . ')) { ob_end_clean(); return false; }';
|
||||
} else {
|
||||
$out .= 'try {
|
||||
$tpl = $this->templateFactory("' . $resource . '", "' . $identifier . '");
|
||||
} catch (Dwoo\Exception $e) {
|
||||
$this->triggerError(\'Load Templates : Resource <em>' . $resource . '</em> was not added to Dwoo, can not extend <em>' . $identifier . '</em>\', E_USER_WARNING);
|
||||
}
|
||||
if ($tpl === null)
|
||||
$this->triggerError(\'Load Templates : Resource "' . $resource . ':' . $identifier . '" was not found.\', E_USER_WARNING);
|
||||
elseif ($tpl === false)
|
||||
$this->triggerError(\'Load Templates : Resource "' . $resource . '" does not support extends.\', E_USER_WARNING);
|
||||
if ($tpl->getUid() != "' . $tpl->getUid() . '") { ob_end_clean(); return false; }';
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
43
core/l/Dwoo/Plugins/Functions/PluginLower.php
Normal file
43
core/l/Dwoo/Plugins/Functions/PluginLower.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Makes the input string lower cased
|
||||
* <pre>
|
||||
* * value : the string to process
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginLower extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value)
|
||||
{
|
||||
return 'mb_strtolower((string) ' . $value . ', $this->charset)';
|
||||
}
|
||||
}
|
||||
144
core/l/Dwoo/Plugins/Functions/PluginMailto.php
Normal file
144
core/l/Dwoo/Plugins/Functions/PluginMailto.php
Normal file
@@ -0,0 +1,144 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Outputs a mailto link with optional spam-proof (okay probably not) encoding
|
||||
* <pre>
|
||||
* * address : target email address
|
||||
* * text : display text to show for the link, defaults to the address if not provided
|
||||
* * subject : the email subject
|
||||
* * encode : one of the available encoding (none, js, jscharcode or hex)
|
||||
* * cc : address(es) to carbon copy, comma separated
|
||||
* * bcc : address(es) to blind carbon copy, comma separated
|
||||
* * newsgroups : newsgroup(s) to post to, comma separated
|
||||
* * followupto : address(es) to follow up, comma separated
|
||||
* * extra : additional attributes to add to the <a> tag
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginMailto extends Plugin
|
||||
{
|
||||
/**
|
||||
* @param $address
|
||||
* @param null $text
|
||||
* @param null $subject
|
||||
* @param null $encode
|
||||
* @param null $cc
|
||||
* @param null $bcc
|
||||
* @param null $newsgroups
|
||||
* @param null $followupto
|
||||
* @param null $extra
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function process($address, $text = null, $subject = null, $encode = null, $cc = null, $bcc = null, $newsgroups = null, $followupto = null, $extra = null)
|
||||
{
|
||||
if (empty($address)) {
|
||||
return '';
|
||||
}
|
||||
if (empty($text)) {
|
||||
$text = $address;
|
||||
}
|
||||
|
||||
// build address string
|
||||
$address .= '?';
|
||||
|
||||
if (!empty($subject)) {
|
||||
$address .= 'subject=' . rawurlencode($subject) . '&';
|
||||
}
|
||||
if (!empty($cc)) {
|
||||
$address .= 'cc=' . rawurlencode($cc) . '&';
|
||||
}
|
||||
if (!empty($bcc)) {
|
||||
$address .= 'bcc=' . rawurlencode($bcc) . '&';
|
||||
}
|
||||
if (!empty($newsgroups)) {
|
||||
$address .= 'newsgroups=' . rawurlencode($newsgroups) . '&';
|
||||
}
|
||||
if (!empty($followupto)) {
|
||||
$address .= 'followupto=' . rawurlencode($followupto) . '&';
|
||||
}
|
||||
|
||||
$address = rtrim($address, '?&');
|
||||
|
||||
// output
|
||||
switch ($encode) {
|
||||
|
||||
case 'none':
|
||||
case null:
|
||||
return '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
|
||||
|
||||
case 'js':
|
||||
case 'javascript':
|
||||
$str = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');';
|
||||
$len = strlen($str);
|
||||
|
||||
$out = '';
|
||||
for ($i = 0; $i < $len; ++ $i) {
|
||||
$out .= '%' . bin2hex($str[$i]);
|
||||
}
|
||||
|
||||
return '<script type="text/javascript">eval(unescape(\'' . $out . '\'));</script>';
|
||||
|
||||
break;
|
||||
case 'javascript_charcode':
|
||||
case 'js_charcode':
|
||||
case 'jscharcode':
|
||||
case 'jschar':
|
||||
$str = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
|
||||
$len = strlen($str);
|
||||
|
||||
$out = '<script type="text/javascript">' . "\n<!--\ndocument.write(Str.fromCharCode(";
|
||||
for ($i = 0; $i < $len; ++ $i) {
|
||||
$out .= ord($str[$i]) . ',';
|
||||
}
|
||||
|
||||
return rtrim($out, ',') . "));\n-->\n</script>\n";
|
||||
|
||||
break;
|
||||
|
||||
case 'hex':
|
||||
if (strpos($address, '?') !== false) {
|
||||
$this->core->triggerError('Mailto: Hex encoding is not possible with extra attributes, use one of : <em>js, jscharcode or none</em>.', E_USER_WARNING);
|
||||
}
|
||||
|
||||
$out = '<a href="mailto:';
|
||||
$len = strlen($address);
|
||||
for ($i = 0; $i < $len; ++ $i) {
|
||||
if (preg_match('#\w#', $address[$i])) {
|
||||
$out .= '%' . bin2hex($address[$i]);
|
||||
} else {
|
||||
$out .= $address[$i];
|
||||
}
|
||||
}
|
||||
$out .= '" ' . $extra . '>';
|
||||
$len = strlen($text);
|
||||
for ($i = 0; $i < $len; ++ $i) {
|
||||
$out .= '&#x' . bin2hex($text[$i]);
|
||||
}
|
||||
|
||||
return $out . '</a>';
|
||||
|
||||
default:
|
||||
$this->core->triggerError('Mailto: <em>encode</em> argument is invalid, it must be one of : <em>none (= no value), js, js_charcode or hex</em>', E_USER_WARNING);
|
||||
}
|
||||
}
|
||||
}
|
||||
199
core/l/Dwoo/Plugins/Functions/PluginMath.php
Normal file
199
core/l/Dwoo/Plugins/Functions/PluginMath.php
Normal file
@@ -0,0 +1,199 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\Compilation\Exception as CompilationException;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Computes a mathematical equation
|
||||
* <pre>
|
||||
* * equation : the equation to compute, it can include normal variables with $foo or special math variables without
|
||||
* the dollar sign
|
||||
* * format : output format, see {@link http://php.net/sprintf} for details
|
||||
* * assign : if set, the output is assigned into the given variable name instead of being output
|
||||
* * rest : all math specific variables that you use must be defined, see the example
|
||||
* </pre>
|
||||
* Example :.
|
||||
* <code>
|
||||
* {$c=2}
|
||||
* {math "(a+b)*$c/4" a=3 b=5}
|
||||
* output is : 4 ( = (3+5)*2/4)
|
||||
* </code>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginMath extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $equation
|
||||
* @param string $format
|
||||
* @param string $assign
|
||||
* @param array $rest
|
||||
*
|
||||
* @return string
|
||||
* @throws CompilationException
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $equation, $format = '', $assign = '', array $rest = array())
|
||||
{
|
||||
/*
|
||||
* Holds the allowed function, characters, operators and constants
|
||||
*/
|
||||
$allowed = array(
|
||||
'0',
|
||||
'1',
|
||||
'2',
|
||||
'3',
|
||||
'4',
|
||||
'5',
|
||||
'6',
|
||||
'7',
|
||||
'8',
|
||||
'9',
|
||||
'+',
|
||||
'-',
|
||||
'/',
|
||||
'*',
|
||||
'.',
|
||||
' ',
|
||||
'<<',
|
||||
'>>',
|
||||
'%',
|
||||
'&',
|
||||
'^',
|
||||
'|',
|
||||
'~',
|
||||
'abs(',
|
||||
'ceil(',
|
||||
'floor(',
|
||||
'exp(',
|
||||
'log10(',
|
||||
'cos(',
|
||||
'sin(',
|
||||
'sqrt(',
|
||||
'tan(',
|
||||
'M_PI',
|
||||
'INF',
|
||||
'M_E',
|
||||
);
|
||||
|
||||
/*
|
||||
* Holds the functions that can accept multiple arguments
|
||||
*/
|
||||
$funcs = array(
|
||||
'round(',
|
||||
'log(',
|
||||
'pow(',
|
||||
'max(',
|
||||
'min(',
|
||||
'rand(',
|
||||
);
|
||||
|
||||
$equation = $equationSrc = str_ireplace(array(
|
||||
'pi',
|
||||
'M_PI()',
|
||||
'inf',
|
||||
' e '
|
||||
),
|
||||
array(
|
||||
'M_PI',
|
||||
'M_PI',
|
||||
'INF',
|
||||
' M_E '
|
||||
),
|
||||
$equation);
|
||||
|
||||
$delim = $equation[0];
|
||||
$open = $delim . '.';
|
||||
$close = '.' . $delim;
|
||||
$equation = substr($equation, 1, - 1);
|
||||
$out = '';
|
||||
$ptr = 1;
|
||||
$allowcomma = 0;
|
||||
while (strlen($equation) > 0) {
|
||||
$substr = substr($equation, 0, $ptr);
|
||||
if (array_search($substr, $allowed) !== false) {
|
||||
// allowed string
|
||||
$out .= $substr;
|
||||
$equation = substr($equation, $ptr);
|
||||
$ptr = 0;
|
||||
} elseif (array_search($substr, $funcs) !== false) {
|
||||
// allowed func
|
||||
$out .= $substr;
|
||||
$equation = substr($equation, $ptr);
|
||||
$ptr = 0;
|
||||
++ $allowcomma;
|
||||
if ($allowcomma === 1) {
|
||||
$allowed[] = ',';
|
||||
}
|
||||
} elseif (isset($rest[$substr])) {
|
||||
// variable
|
||||
$out .= $rest[$substr];
|
||||
$equation = substr($equation, $ptr);
|
||||
$ptr = 0;
|
||||
} elseif ($substr === $open) {
|
||||
// pre-replaced variable
|
||||
preg_match('#.*\((?:[^()]*?|(?R))\)' . str_replace('.', '\\.', $close) . '#', substr($equation, 2), $m);
|
||||
if (empty($m)) {
|
||||
preg_match('#.*?' . str_replace('.', '\\.', $close) . '#', substr($equation, 2), $m);
|
||||
}
|
||||
$out .= substr($m[0], 0, - 2);
|
||||
$equation = substr($equation, strlen($m[0]) + 2);
|
||||
$ptr = 0;
|
||||
} elseif ($substr === '(') {
|
||||
// opening parenthesis
|
||||
if ($allowcomma > 0) {
|
||||
++ $allowcomma;
|
||||
}
|
||||
|
||||
$out .= $substr;
|
||||
$equation = substr($equation, $ptr);
|
||||
$ptr = 0;
|
||||
} elseif ($substr === ')') {
|
||||
// closing parenthesis
|
||||
if ($allowcomma > 0) {
|
||||
-- $allowcomma;
|
||||
if ($allowcomma === 0) {
|
||||
array_pop($allowed);
|
||||
}
|
||||
}
|
||||
|
||||
$out .= $substr;
|
||||
$equation = substr($equation, $ptr);
|
||||
$ptr = 0;
|
||||
} elseif ($ptr >= strlen($equation)) {
|
||||
// parse error if we've consumed the entire equation without finding anything valid
|
||||
throw new CompilationException($compiler,
|
||||
'Math : Syntax error or variable undefined in equation ' . $equationSrc . ' at ' . $substr);
|
||||
} else {
|
||||
// nothing special, advance
|
||||
++ $ptr;
|
||||
}
|
||||
}
|
||||
if ($format !== '\'\'') {
|
||||
$out = 'sprintf(' . $format . ', ' . $out . ')';
|
||||
}
|
||||
if ($assign !== '\'\'') {
|
||||
return '($this->assignInScope(' . $out . ', ' . $assign . '))';
|
||||
}
|
||||
|
||||
return '(' . $out . ')';
|
||||
}
|
||||
}
|
||||
43
core/l/Dwoo/Plugins/Functions/PluginNl2br.php
Normal file
43
core/l/Dwoo/Plugins/Functions/PluginNl2br.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Converts line breaks into <br /> tags
|
||||
* <pre>
|
||||
* * value : the string to process
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginNl2br extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value)
|
||||
{
|
||||
return 'nl2br((string) ' . $value . ')';
|
||||
}
|
||||
}
|
||||
43
core/l/Dwoo/Plugins/Functions/PluginOptional.php
Normal file
43
core/l/Dwoo/Plugins/Functions/PluginOptional.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Prints out a variable without any notice if it doesn't exist.
|
||||
* <pre>
|
||||
* * value : the variable to print
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginOptional extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value)
|
||||
{
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
63
core/l/Dwoo/Plugins/Functions/PluginRegexReplace.php
Normal file
63
core/l/Dwoo/Plugins/Functions/PluginRegexReplace.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Replaces the search string by the replace string using regular expressions
|
||||
* <pre>
|
||||
* * value : the string to search into
|
||||
* * search : the string to search for, must be a complete regular expression including delimiters
|
||||
* * replace : the string to use as a replacement, must be a complete regular expression including delimiters
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginRegexReplace extends Plugin
|
||||
{
|
||||
/**
|
||||
* @param string $value
|
||||
* @param string $search
|
||||
* @param string $replace
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function process($value, $search, $replace)
|
||||
{
|
||||
$search = (array)$search;
|
||||
$cnt = count($search);
|
||||
|
||||
for ($i = 0; $i < $cnt; ++ $i) {
|
||||
// Credits for this to Monte Ohrt who made smarty's regex_replace modifier
|
||||
if (($pos = strpos($search[$i], "\0")) !== false) {
|
||||
$search[$i] = substr($search[$i], 0, $pos);
|
||||
}
|
||||
|
||||
if (preg_match('#[a-z\s]+$#is', $search[$i], $m) && (strpos($m[0], 'e') !== false)) {
|
||||
$search[$i] = substr($search[$i], 0, - strlen($m[0])) . str_replace(array(
|
||||
'e',
|
||||
' '
|
||||
),
|
||||
'',
|
||||
$m[0]);
|
||||
}
|
||||
}
|
||||
|
||||
return preg_replace($search, $replace, $value);
|
||||
}
|
||||
}
|
||||
52
core/l/Dwoo/Plugins/Functions/PluginReplace.php
Normal file
52
core/l/Dwoo/Plugins/Functions/PluginReplace.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Replaces the search string by the replace string
|
||||
* <pre>
|
||||
* * value : the string to search into
|
||||
* * search : the string to search for
|
||||
* * replace : the string to use as a replacement
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginReplace extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
* @param string $search
|
||||
* @param string $replace
|
||||
* @param bool $case_sensitive
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, $search, $replace, $case_sensitive = true)
|
||||
{
|
||||
if ($case_sensitive == 'false' || (bool)$case_sensitive === false) {
|
||||
return 'str_ireplace(' . $search . ', ' . $replace . ', ' . $value . ')';
|
||||
} else {
|
||||
return 'str_replace(' . $search . ', ' . $replace . ', ' . $value . ')';
|
||||
}
|
||||
}
|
||||
}
|
||||
54
core/l/Dwoo/Plugins/Functions/PluginReturn.php
Normal file
54
core/l/Dwoo/Plugins/Functions/PluginReturn.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Inserts another template into the current one
|
||||
* <pre>
|
||||
* * file : the resource name of the template
|
||||
* * cache_time : cache length in seconds
|
||||
* * cache_id : cache identifier for the included template
|
||||
* * compile_id : compilation identifier for the included template
|
||||
* * data : data to feed into the included template, it can be any array and will default to $_root (the current data)
|
||||
* * assign : if set, the output of the included template will be saved in this variable instead of being output
|
||||
* * rest : any additional parameter/value provided will be added to the data array
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginReturn extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param array $rest
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, array $rest = array())
|
||||
{
|
||||
$out = array();
|
||||
foreach ($rest as $var => $val) {
|
||||
$out[] = '$this->setReturnValue(' . var_export($var, true) . ', ' . $val . ')';
|
||||
}
|
||||
|
||||
return '(' . implode('.', $out) . ')';
|
||||
}
|
||||
}
|
||||
54
core/l/Dwoo/Plugins/Functions/PluginReverse.php
Normal file
54
core/l/Dwoo/Plugins/Functions/PluginReverse.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Reverses a string or an array
|
||||
* <pre>
|
||||
* * value : the string or array to reverse
|
||||
* * preserve_keys : if value is an array and this is true, then the array keys are left intact
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginReverse extends Plugin
|
||||
{
|
||||
/**
|
||||
* @param string $value
|
||||
* @param bool $preserve_keys
|
||||
*
|
||||
* @return array|string
|
||||
*/
|
||||
public function process($value, $preserve_keys = false)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
return array_reverse($value, $preserve_keys);
|
||||
} elseif (($charset = $this->core->getCharset()) === 'iso-8859-1') {
|
||||
return strrev((string)$value);
|
||||
}
|
||||
|
||||
$strlen = mb_strlen($value);
|
||||
$out = '';
|
||||
while ($strlen --) {
|
||||
$out .= mb_substr($value, $strlen, 1, $charset);
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
46
core/l/Dwoo/Plugins/Functions/PluginSafe.php
Normal file
46
core/l/Dwoo/Plugins/Functions/PluginSafe.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Marks the variable as safe and removes the auto-escape function, only useful if you turned auto-escaping on
|
||||
* <pre>
|
||||
* * var : the variable to pass through untouched
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginSafe extends Plugin implements ICompilable
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param mixed $var
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $var)
|
||||
{
|
||||
return preg_replace('#\(is_string\(\$tmp=(.+)\) \? htmlspecialchars\(\$tmp, ENT_QUOTES, \$this->charset\) : \$tmp\)#',
|
||||
'$1',
|
||||
$var);
|
||||
}
|
||||
}
|
||||
45
core/l/Dwoo/Plugins/Functions/PluginSpacify.php
Normal file
45
core/l/Dwoo/Plugins/Functions/PluginSpacify.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Adds spaces (or the given character(s)) between every character of a string
|
||||
* <pre>
|
||||
* * value : the string to process
|
||||
* * space_char : the character(s) to insert between each character
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginSpacify extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
* @param string $space_char
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, $space_char = ' ')
|
||||
{
|
||||
return 'implode(' . $space_char . ', str_split(' . $value . ', 1))';
|
||||
}
|
||||
}
|
||||
45
core/l/Dwoo/Plugins/Functions/PluginStringFormat.php
Normal file
45
core/l/Dwoo/Plugins/Functions/PluginStringFormat.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Formats a string using the sprintf function
|
||||
* <pre>
|
||||
* * value : the string to format
|
||||
* * format : the format to use, see {@link http://php.net/sprintf} for details
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginStringFormat extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
* @param string $format
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, $format)
|
||||
{
|
||||
return 'sprintf(' . $format . ',' . $value . ')';
|
||||
}
|
||||
}
|
||||
55
core/l/Dwoo/Plugins/Functions/PluginStripTags.php
Normal file
55
core/l/Dwoo/Plugins/Functions/PluginStripTags.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.3
|
||||
* @date 2017-01-07
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Removes all html tags
|
||||
* <pre>
|
||||
* * value: the string to process
|
||||
* * addspace: if true, a space is added in place of every removed tag
|
||||
* * allowable_tags: specify tags which should not be stripped
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginStripTags extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
* @param bool $addspace
|
||||
* @param null|string $allowable_tags
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, $addspace = true, $allowable_tags = null)
|
||||
{
|
||||
if ($addspace === 'true') {
|
||||
if ("null" == $allowable_tags) {
|
||||
return "preg_replace('#<[^>]*>#', ' ', $value)";
|
||||
}
|
||||
|
||||
return "preg_replace('#<\\s*\\/?(" . $allowable_tags . ")\\s*[^>]*?>#im', ' ', $value)";
|
||||
}
|
||||
|
||||
return "strip_tags($value, $allowable_tags)";
|
||||
}
|
||||
}
|
||||
105
core/l/Dwoo/Plugins/Functions/PluginTif.php
Normal file
105
core/l/Dwoo/Plugins/Functions/PluginTif.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE LGPLv3
|
||||
* @version 1.3.6
|
||||
* @date 2017-03-21
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\Core;
|
||||
use Dwoo\Exception;
|
||||
use Dwoo\Compilation\Exception as CompilationException;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
use Dwoo\Plugins\Blocks\PluginIf;
|
||||
|
||||
/**
|
||||
* Ternary if operation.
|
||||
* It evaluates the first argument and returns the second if it's true, or the third if it's false
|
||||
* <pre>
|
||||
* * rest : you can not use named parameters to call this, use it either with three arguments in the correct order
|
||||
* (expression, true result, false result) or write it as in php (expression ? true result : false result)
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginTif extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param array $rest
|
||||
* @param array $tokens
|
||||
*
|
||||
* @return mixed|string
|
||||
* @throws CompilationException
|
||||
*/
|
||||
public static function compile(Compiler $compiler, array $rest, array $tokens)
|
||||
{
|
||||
// load if plugin
|
||||
if (!class_exists(Core::NAMESPACE_PLUGINS_BLOCKS . 'PluginIf')) {
|
||||
try {
|
||||
$compiler->getCore()->getLoader()->loadPlugin('if');
|
||||
}
|
||||
catch (Exception $e) {
|
||||
throw new CompilationException($compiler, 'Tif: the if plugin is required to use Tif');
|
||||
}
|
||||
}
|
||||
|
||||
if (count($rest) == 1) {
|
||||
return $rest[0];
|
||||
}
|
||||
|
||||
// fetch false result and remove the ":" if it was present
|
||||
$falseResult = array_pop($rest);
|
||||
|
||||
if (trim(end($rest), '"\'') === ':') {
|
||||
// remove the ':' if present
|
||||
array_pop($rest);
|
||||
} elseif (trim(end($rest), '"\'') === '?' || count($rest) === 1) {
|
||||
if ($falseResult === '?' || $falseResult === ':') {
|
||||
throw new CompilationException($compiler,
|
||||
'Tif: incomplete tif statement, value missing after ' . $falseResult);
|
||||
}
|
||||
// there was in fact no false result provided, so we move it to be the true result instead
|
||||
$trueResult = $falseResult;
|
||||
$falseResult = "''";
|
||||
}
|
||||
|
||||
// fetch true result if needed
|
||||
if (!isset($trueResult)) {
|
||||
$trueResult = array_pop($rest);
|
||||
// no true result provided so we use the expression arg
|
||||
if ($trueResult === '?') {
|
||||
$trueResult = true;
|
||||
}
|
||||
}
|
||||
|
||||
// remove the '?' if present
|
||||
if (trim(end($rest), '"\'') === '?') {
|
||||
array_pop($rest);
|
||||
}
|
||||
|
||||
// check params were correctly provided
|
||||
if (empty($rest) || $trueResult === null || $falseResult === null) {
|
||||
throw new CompilationException($compiler,
|
||||
'Tif: you must provide three parameters serving as <expression> ? <true value> : <false value>');
|
||||
}
|
||||
|
||||
// parse condition
|
||||
$condition = PluginIf::replaceKeywords($rest, $tokens, $compiler);
|
||||
|
||||
return '((' . implode(' ', $condition) . ') ? ' . ($trueResult === true ? implode(' ',
|
||||
$condition) : $trueResult) . ' : ' . $falseResult . ')';
|
||||
}
|
||||
}
|
||||
69
core/l/Dwoo/Plugins/Functions/PluginTruncate.php
Normal file
69
core/l/Dwoo/Plugins/Functions/PluginTruncate.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Truncates a string at the given length
|
||||
* <pre>
|
||||
* * value : text to truncate
|
||||
* * length : the maximum length for the string
|
||||
* * etc : the characters that are added to show that the string was cut off
|
||||
* * break : if true, the string will be cut off at the exact length, instead of cutting at the nearest space
|
||||
* * middle : if true, the string will contain the beginning and the end, and the extra characters will be removed
|
||||
* from the middle
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginTruncate extends Plugin
|
||||
{
|
||||
/**
|
||||
* @param string $value
|
||||
* @param int $length
|
||||
* @param string $etc
|
||||
* @param bool $break
|
||||
* @param bool $middle
|
||||
*
|
||||
* @return mixed|string
|
||||
*/
|
||||
public function process($value, $length = 80, $etc = '...', $break = false, $middle = false)
|
||||
{
|
||||
if ($length == 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$value = (string)$value;
|
||||
$etc = (string)$etc;
|
||||
$length = (int)$length;
|
||||
|
||||
if (strlen($value) < $length) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
$length = max($length - strlen($etc), 0);
|
||||
if ($break === false && $middle === false) {
|
||||
$value = preg_replace('#\s+(\S*)?$#', '', substr($value, 0, $length + 1));
|
||||
}
|
||||
if ($middle === false) {
|
||||
return substr($value, 0, $length) . $etc;
|
||||
}
|
||||
|
||||
return substr($value, 0, ceil($length / 2)) . $etc . substr($value, - floor($length / 2));
|
||||
}
|
||||
}
|
||||
43
core/l/Dwoo/Plugins/Functions/PluginUpper.php
Normal file
43
core/l/Dwoo/Plugins/Functions/PluginUpper.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Makes a string uppercased
|
||||
* <pre>
|
||||
* * value : the text to uppercase
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginUpper extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value)
|
||||
{
|
||||
return 'mb_strtoupper((string) ' . $value . ', $this->charset)';
|
||||
}
|
||||
}
|
||||
53
core/l/Dwoo/Plugins/Functions/PluginWhitespace.php
Normal file
53
core/l/Dwoo/Plugins/Functions/PluginWhitespace.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Block\Plugin;
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
|
||||
/**
|
||||
* Replaces all white-space characters with the given string
|
||||
* <pre>
|
||||
* * value : the text to process
|
||||
* * with : the replacement string, note that any number of consecutive white-space characters will be replaced by a
|
||||
* single replacement string
|
||||
* </pre>
|
||||
* Example :.
|
||||
* <code>
|
||||
* {"a b c d
|
||||
*
|
||||
* e"|whitespace}
|
||||
* results in : a b c d e
|
||||
* </code>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginWhitespace extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
* @param string $with
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, $with = ' ')
|
||||
{
|
||||
return "preg_replace('#\s+#'.(strcasecmp(\$this->charset, 'utf-8')===0?'u':''), $with, $value)";
|
||||
}
|
||||
}
|
||||
49
core/l/Dwoo/Plugins/Functions/PluginWordwrap.php
Normal file
49
core/l/Dwoo/Plugins/Functions/PluginWordwrap.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013-2017
|
||||
*
|
||||
* @category Library
|
||||
* @package Dwoo\Plugins\Functions
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @author David Sanchez <david38sanchez@gmail.com>
|
||||
* @copyright 2008-2013 Jordi Boggiano
|
||||
* @copyright 2013-2017 David Sanchez
|
||||
* @license http://dwoo.org/LICENSE Modified BSD License
|
||||
* @version 1.3.2
|
||||
* @date 2017-01-06
|
||||
* @link http://dwoo.org/
|
||||
*/
|
||||
|
||||
namespace Dwoo\Plugins\Functions;
|
||||
|
||||
use Dwoo\Compiler;
|
||||
use Dwoo\ICompilable;
|
||||
use Dwoo\Plugin;
|
||||
|
||||
/**
|
||||
* Wraps a text at the given line length
|
||||
* <pre>
|
||||
* * value : the text to wrap
|
||||
* * length : maximum line length
|
||||
* * break : the character(s) to use to break the line
|
||||
* * cut : if true, the line is cut at the exact length instead of breaking at the nearest space
|
||||
* </pre>
|
||||
* This software is provided 'as-is', without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
*/
|
||||
class PluginWordwrap extends Plugin implements ICompilable
|
||||
{
|
||||
/**
|
||||
* @param Compiler $compiler
|
||||
* @param string $value
|
||||
* @param int $length
|
||||
* @param string $break
|
||||
* @param bool $cut
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function compile(Compiler $compiler, $value, $length = 80, $break = "\n", $cut = false)
|
||||
{
|
||||
return 'wordwrap(' . $value . ',' . $length . ',' . $break . ',' . $cut . ')';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user