1 | <?php |
||||
2 | |||||
3 | // Author: Trabis |
||||
4 | // URL: http://www.xuups.com |
||||
5 | // E-Mail: [email protected] |
||||
6 | // Plugin version: 1.1 |
||||
7 | // Release date: 06-04-2009 |
||||
8 | // Usage : just place <{xoBlock id=1}> inside any template or theme, replace '1' with the id of the block you want to show |
||||
9 | // |
||||
10 | // Other options: |
||||
11 | // display = 'title' -> shows just title |
||||
12 | // display = 'none' -> renders the block but does not display it |
||||
13 | // options = 'enter|block|options' -> overwrites block default options |
||||
14 | // groups = 'enter|allowed|groups' -> overwrites block default group view permissions |
||||
15 | // cache = 3600 -> overwrite cache time(in seconds) |
||||
16 | // |
||||
17 | // Examples: |
||||
18 | // <{xoBlock id=1 display="title"}> displays just the block title |
||||
19 | // <{xoBlock id=1}> displays just the block content |
||||
20 | // <{xoBlock id=7 display="none"}> does not display nothing but executes the block, this can go for online block or to trigger some cron block |
||||
21 | // <{xoBlock id=600 groups="0|1" cache=20}> display block just for this 2 groups and sets a cache of 20 seconds |
||||
22 | // <{xoBlock id=600 options="100|100|s_poweredby.gif|0"}> displays block with diferent options |
||||
23 | |||||
24 | /** |
||||
25 | * @param string[] $params |
||||
26 | * @param Smarty $smarty |
||||
27 | * |
||||
28 | * @return mixed |
||||
29 | */ |
||||
30 | function smarty_function_xoBlock($params, $smarty) |
||||
0 ignored issues
–
show
|
|||||
31 | { |
||||
32 | if (!isset($params['id'])) { |
||||
33 | return null; |
||||
34 | } |
||||
35 | |||||
36 | $display_title = (isset($params['display']) && $params['display'] === 'title'); |
||||
37 | $display_none = (isset($params['display']) && $params['display'] === 'none'); |
||||
38 | $options = isset($params['options']) ? $params['options'] : false; |
||||
39 | $groups = isset($params['groups']) ? explode('|', $params['groups']) : false; |
||||
40 | $cache = isset($params['cache']) ? (int)$params['cache'] : false; |
||||
41 | |||||
42 | $block_id = (int)$params['id']; |
||||
43 | |||||
44 | static $block_objs; |
||||
45 | if (!isset($block_objs[$block_id])) { |
||||
46 | /** @var XoopsBlockHandler $blkhandler */ |
||||
47 | $blkhandler = xoops_getHandler('block'); |
||||
48 | $blockObj = $blkhandler->get($block_id); |
||||
49 | |||||
50 | if (!is_object($blockObj)) { |
||||
51 | return null; |
||||
52 | } |
||||
53 | |||||
54 | $block_objs[$block_id] = $blockObj; |
||||
55 | } else { |
||||
56 | $blockObj = $block_objs[$block_id]; |
||||
57 | } |
||||
58 | |||||
59 | $user_groups = $GLOBALS['xoopsUser'] ? $GLOBALS['xoopsUser']->getGroups() : array(XOOPS_GROUP_ANONYMOUS); |
||||
60 | |||||
61 | static $allowed_blocks; |
||||
62 | if (!is_array(@$allowed_blocks) || count($allowed_blocks) == 0) { |
||||
63 | $allowed_blocks = XoopsBlock::getAllBlocksByGroup($user_groups, false); |
||||
0 ignored issues
–
show
The function
XoopsBlock::getAllBlocksByGroup() has been deprecated.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||
64 | } |
||||
65 | |||||
66 | if ($groups) { |
||||
67 | if (!array_intersect($user_groups, $groups)) { |
||||
68 | return null; |
||||
69 | } |
||||
70 | } else { |
||||
71 | if (!in_array($block_id, $allowed_blocks)) { |
||||
72 | return null; |
||||
73 | } |
||||
74 | } |
||||
75 | |||||
76 | if ($options) { |
||||
77 | $blockObj->setVar('options', $options); |
||||
78 | } |
||||
79 | |||||
80 | if ($cache) { |
||||
0 ignored issues
–
show
The expression
$cache of type false|integer is loosely compared to true ; this is ambiguous if the integer can be 0. You might want to explicitly use !== false instead.
In PHP, under loose comparison (like For 0 == false // true
0 == null // true
123 == false // false
123 == null // false
// It is often better to use strict comparison
0 === false // false
0 === null // false
Loading history...
|
|||||
81 | $blockObj->setVar('bcachetime', $cache); |
||||
82 | } |
||||
83 | |||||
84 | if ($display_title) { |
||||
85 | return $blockObj->getVar('title'); |
||||
86 | } |
||||
87 | |||||
88 | $xoopsLogger = XoopsLogger::getInstance(); |
||||
89 | $template =& $GLOBALS['xoopsTpl']; |
||||
90 | |||||
91 | $bcachetime = (int)$blockObj->getVar('bcachetime'); |
||||
92 | if (empty($bcachetime)) { |
||||
93 | $template->caching = 0; |
||||
94 | } else { |
||||
95 | $template->caching = 2; |
||||
96 | $template->cache_lifetime = $bcachetime; |
||||
97 | } |
||||
98 | |||||
99 | $template->setCompileId($blockObj->getVar('dirname', 'n')); |
||||
100 | $tplName = ($tplName = $blockObj->getVar('template')) ? "db:{$tplName}" : 'db:system_block_dummy.tpl'; |
||||
101 | $cacheid = 'blk_' . $block_id; |
||||
102 | |||||
103 | if (!$bcachetime || !$template->isCached($tplName, $cacheid)) { |
||||
104 | $xoopsLogger->addBlock($blockObj->getVar('name')); |
||||
105 | if (!($bresult = $blockObj->buildBlock())) { |
||||
106 | return null; |
||||
107 | } |
||||
108 | if (!$display_none) { |
||||
109 | $template->assign('block', $bresult); |
||||
110 | $template->display($tplName, $cacheid); |
||||
111 | } |
||||
112 | } else { |
||||
113 | $xoopsLogger->addBlock($blockObj->getVar('name'), true, $bcachetime); |
||||
114 | if (!$display_none) { |
||||
115 | $template->display($tplName, $cacheid); |
||||
116 | } |
||||
117 | } |
||||
118 | $template->setCompileId($blockObj->getVar('dirname', 'n')); |
||||
119 | |||||
120 | return null; |
||||
121 | } |
||||
122 |
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.