aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ItemObject.php2
-rw-r--r--include/iquery.php4
-rw-r--r--include/template_processor.php51
3 files changed, 47 insertions, 10 deletions
diff --git a/include/ItemObject.php b/include/ItemObject.php
index 09f5d1298..45ea6860a 100644
--- a/include/ItemObject.php
+++ b/include/ItemObject.php
@@ -209,7 +209,7 @@ class Item extends BaseObject {
'type' => implode("",array_slice(explode("/",$item['verb']),-1)),
'tags' => $tags,
- 'body' => template_escape($body),
+ 'body' => $body,
'text' => strip_tags(template_escape($body)),
'id' => $this->get_id(),
'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])),
diff --git a/include/iquery.php b/include/iquery.php
index 03264de28..0d51134a4 100644
--- a/include/iquery.php
+++ b/include/iquery.php
@@ -9,8 +9,8 @@ function network_query($a,$arr) {
$ordering = (($arr['order'] === 'post') ? "`created`" : "`commented`") . " DESC ";
- $itemspage = get_pconfig($arr['uid'],'system','itemspage_network');
- $a->set_pager_itemspage(((intval($itemspage_network)) ? $itemspage_network : 40));
+ $itemspage = get_pconfig($arr['uid'],'system','itemspage');
+ $a->set_pager_itemspage(((intval($itemspage)) ? $itemspage : 40));
$pager_sql = ((intval($arr['update'])) ? '' : sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage'])));
diff --git a/include/template_processor.php b/include/template_processor.php
index 89f03dfe0..61526e570 100644
--- a/include/template_processor.php
+++ b/include/template_processor.php
@@ -46,7 +46,7 @@
foreach($keys as $k) {
$val = (isset($val[$k]) ? $val[$k] : null);
}
- return $val;
+ return template_escape($val);
}
/**
@@ -196,12 +196,49 @@
* (subgrup 1), match close bracket
*/
if (preg_match_all('/\$(\[)?([a-zA-Z0-9-_]+\.?)+(?(1)\])/', $s,$m)){
-
- foreach($m[0] as $var){
- $varn = str_replace(array("[","]"), array("",""), $var);
- $val = $this->_get_var($varn, true);
- if ($val!=KEY_NOT_EXISTS)
- $s = str_replace($var, $val, $s);
+ foreach($m[0] as $var){
+
+ $exp = str_replace(array("[", "]"), array("", ""), $var);
+ $exptks = explode("|", $exp);
+
+ $varn = $exptks[0];
+ unset($exptks[0]);
+ $val = $this->_get_var($varn, true);
+ if ($val != KEY_NOT_EXISTS) {
+ /* run filters */
+ /*
+ * Filter are in form of:
+ * filtername:arg:arg:arg
+ *
+ * "filtername" is function name
+ * "arg"s are optional, var value is appended to the end
+ * if one "arg"==='x' , is replaced with var value
+ *
+ * examples:
+ * $item.body|htmlspecialchars // escape html chars
+ * $item.body|htmlspecialchars|strtoupper // escape html and uppercase result
+ * $item.created|date:%Y %M %j // format date (created is a timestamp)
+ * $item.body|str_replace:cat:dog // replace all "cat" with "dog"
+ * $item.body|str_replace:cat:dog:x:1 // replace one "cat" with "dog"
+
+ */
+ foreach ($exptks as $filterstr) {
+ $filter = explode(":", $filterstr);
+ $filtername = $filter[0];
+ unset($filter[0]);
+ $valkey = array_search("x", $filter);
+ if ($valkey === false) {
+ $filter[] = $val;
+ } else {
+ $filter[$valkey] = $val;
+ }
+ if (function_exists($filtername)) {
+ $val = call_user_func_array($filtername, $filter);
+ }
+ }
+ $s = str_replace($var, $val, $s);
+
+ }
}
}