Dragonfly CMS logo Server sponsored and hosted by
DedicatedNOW
CVS logo  
.:: Home :: Dev. Resources :: Forums ::.
Dragonfly CMS CVS Repository
 Location: / cvs / html / includes / classes / blocks.php
This is a web interface to the Dragonfly CMS CVS tree. You can browse the file hierarchy by picking directories. If you pick a file, you will see the revision history for that file.
Selecting a revision number will show that revision of the file. There are links at each revision to display diffs, annotate and download.
Note: Info about CVS and our commits can be found at our CVS Info Forum
File name: html/includes/classes/blocks.php
Revision : 10.4 (2 years 5 months 1 weeks 2 days 3 hours 48 minutes 58 seconds ago) by nanocaiordo
Changed : +3 -3 lines
Comment: Using BBCode::decodeAll instead of decode_bbcode.


# Author Rev Line
1 nanocaio 1.1 <?php
2 nanocaio 1.1 /*********************************************
3 nanocaio 1.10 CPG Dragonfly™ CMS
4 nanocaio 1.1 ********************************************
5 nanocaio 1.10 Copyright © 2004 - 2007 by CPG-Nuke Dev Team
6 nanocaio 1.1 http://dragonflycms.org
7 nanocaio 1.1  
8 nanocaio 1.1 Dragonfly is released under the terms and conditions
9 nanocaio 1.1 of the GNU GPL version 2 or any later version
10 nanocaio 1.1  
11 nanocaio 1.2 $Source: /cvs/html/includes/classes/blocks.php,v $
12 nanocaio 10.4 $Revision: 10.3 $
13 nanocaio 10.2 $Author: nanocaiordo $
14 nanocaio 10.4 $Date: 2011/10/15 23:33:45 $
15 nanocaio 1.1 **********************************************/
16 nanocaio 1.1 class Blocks
17 nanocaio 1.1 {
18 nanocaio 1.1  
19 nanocaio 10.1 /* settings */
20 nanocaio 10.1 // const ALL_MODULES; /* all modules otherwsie active only */
21 nanocaio 10.1 // const ALL_BLOCKS; /* all blocks otherwise active only */
22 nanocaio 10.1 // const PREVIEW;
23 nanocaio 10.1 // const HIDEALL;
24 nanocaio 10.1  
25 nanocaio 10.1 public static $preview = false;
26 nanocaio 10.1 public static $showblocks = null;
27 nanocaio 10.1 /* end settings */
28 nanocaio 10.1  
29 nanocaio 10.2 const NONE = 0;
30 nanocaio 10.1 const LEFT = 1;
31 nanocaio 10.1 const RIGHT = 2;
32 nanocaio 10.1 const CENTER = 4;
33 nanocaio 10.1 const DOWN = 8;
34 nanocaio 10.2 const ALL = 15;
35 nanocaio 10.1  
36 nanocaio 10.1 public $list = array();
37 nanocaio 10.1  
38 nanocaio 10.1 private $data = array();
39 nanocaio 10.1 private static $custom = array();
40 nanocaio 10.1 private $active = false;
41 nanocaio 10.1  
42 nanocaio 10.1 public function __construct($mid=0)
43 nanocaio 10.1 {
44 nanocaio 10.1 if (isset($_GET['hideallblocks']) || self::$preview || self::$showblocks === 0 || $mid === 0) {
45 nanocaio 10.1 self::$showblocks = 0;
46 nanocaio 1.1 return;
47 nanocaio 1.1 }
48 nanocaio 10.1  
49 nanocaio 10.1 $mid = intval($mid);
50 nanocaio 10.1 global $db, $prefix, $MAIN_CFG, $Module, $currentlang;
51 nanocaio 10.1 //$db->sql_query("DELETE FROM {$prefix}_blocks_custom WHERE mid NOT IN (SELECT mid FROM {$prefix}_modules) AND mid < 0");
52 nanocaio 10.1 $querylang = ($MAIN_CFG['global']['multilingual']) ? " AND (blanguage='$currentlang' OR blanguage='')" : '';
53 nanocaio 10.1 $result = $db->query("SELECT b.bid, b.bkey, b.title, b.content, b.url, b.blockfile, b.view, b.refresh, b.time, bc.mid, bc.side
54 nanocaio 10.1 FROM {$prefix}_blocks_custom as bc LEFT JOIN {$prefix}_blocks as b USING(bid) WHERE b.active=1 AND bc.mid={$mid}{$querylang}");
55 nanocaio 10.1 while($row = $result->fetch_assoc()) {
56 nanocaio 10.1 // temporary table data needs upgrade
57 nanocaio 10.1 if ($row['side'] === 'l') $row['side'] = self::LEFT;
58 nanocaio 10.1 else if ($row['side'] === 'c') $row['side'] = self::CENTER;
59 nanocaio 10.1 else if ($row['side'] === 'r') $row['side'] = self::RIGHT;
60 nanocaio 10.1 else if ($row['side'] === 'd') $row['side'] = self::DOWN;
61 nanocaio 10.1 if (self::$showblocks & $row['side'] && self::allowed($row['view'])) {
62 nanocaio 10.1 $row['bid'] = intval($row['bid']);
63 nanocaio 10.1 $row['time'] = intval($row['time']);
64 nanocaio 10.1 $row['refresh'] = intval($row['refresh']);
65 nanocaio 10.1 $this->data[$row['side']][] = $row;
66 nanocaio 10.1 }
67 nanocaio 10.1 }
68 nanocaio 10.1 $db->sql_freeresult($result);
69 nanocaio 10.1 }
70 nanocaio 10.1  
71 nanocaio 10.1 public function list_all($module=null)
72 nanocaio 10.1 {
73 nanocaio 10.1 global $prefix, $db, $blocks_save;
74 nanocaio 10.1 static $blocks_save;
75 nanocaio 10.1 if (is_array($blocks_save)) {
76 nanocaio 10.1 if ($module && isset($blocks_save[$module])) return $blocks_save[$module];
77 nanocaio 10.1 else return $blocks_save;
78 nanocaio 10.1 }
79 nanocaio 10.1 // we want to get even NULL values in case of modules with no blocks
80 nanocaio 10.1 $blocks_list = array();
81 nanocaio 10.1 $blocks_list['Admin']['mid'] = -1;
82 nanocaio 10.1 $blocks_list['Admin']['title'] = _ADMINISTRATION;
83 nanocaio 10.1 $blocks_list['Admin']['blocks'] = 15;
84 nanocaio 10.1 $module[-1] = 'Admin';
85 nanocaio 10.1  
86 nanocaio 10.1 $result = $db->sql_uquery('SELECT mid, title, blocks FROM '.$prefix.'_modules');
87 nanocaio 10.1 while ($row = $db->sql_fetchrow($result, SQL_ASSOC)) {
88 nanocaio 10.1 $title = defined('_'.$row['title'].'LANG') ? '_'.$row['title'].'LANG' : (defined('_'.strtoupper($row['title'])) ? '_'.strtoupper($row['title']) : $row['title']);
89 nanocaio 10.1 $blocks_list[$row['title']]['mid'] = (int)$row['mid'];
90 nanocaio 10.1 $blocks_list[$row['title']]['title'] = $title;
91 nanocaio 10.1 $blocks_list[$row['title']]['blocks'] = (int)$row['blocks'];
92 nanocaio 10.1 $module[$row['mid']] = $row['title'];
93 nanocaio 10.1 }
94 nanocaio 10.1 $db->sql_freeresult($result);
95 nanocaio 10.1 $result = $db->sql_query('SELECT bid, mid, side FROM '.$prefix.'_blocks_custom ORDER BY mid, weight');
96 nanocaio 10.1 while ($row = $db->sql_fetchrow($result, SQL_ASSOC)) {
97 nanocaio 10.1 if (!isset($module[$row['mid']])) {
98 nanocaio 10.1 $db->sql_query('DELETE FROM '.$prefix."_blocks_custom WHERE bid='$row[bid]' AND mid='$row[mid]'");
99 nanocaio 10.1 continue;
100 nanocaio 10.1 }
101 nanocaio 10.1 $blocks_list[$module[$row['mid']]][$row['bid']] = $row['side'];
102 nanocaio 10.1 }
103 nanocaio 10.1 ksort($blocks_list);
104 nanocaio 10.1 $db->sql_freeresult($result);
105 nanocaio 10.1 $blocks_save = $blocks_list;
106 nanocaio 10.1 if (is_array($blocks_save)) return $blocks_save;
107 nanocaio 10.1 return;
108 nanocaio 10.1 }
109 nanocaio 10.1  
110 nanocaio 10.1 public static function custom(&$data)
111 nanocaio 10.1 {
112 nanocaio 10.1 if (is_array($data) && self::allowed($data['view'])) {
113 nanocaio 10.1 if ('l' === $data['side']) $data['side'] = self::LEFT;
114 nanocaio 10.1 else if ('c' === $data['side']) $data['side'] = self::CENTER;
115 nanocaio 10.1 else if ('r' === $data['side']) $data['side'] = self::RIGHT;
116 nanocaio 10.1 else if ('d' === $data['side']) $data['side'] = self::DOWN;
117 nanocaio 1.1 $data['bkey'] = 'custom';
118 nanocaio 10.1 self::$custom[$data['side']][] = $data;
119 nanocaio 1.1 }
120 nanocaio 1.9 $data = null;
121 nanocaio 1.1 }
122 nanocaio 1.1  
123 nanocaio 1.13 public function preview(&$block)
124 nanocaio 1.1 {
125 nanocaio 10.1 if (!self::$preview) { return trigger_error('Use "Blocks::$preview=TRUE;" before including header.php', E_USER_WARNING); }
126 nanocaio 10.1 self::$showblocks = 0;
127 nanocaio 10.1 $this->data = array();
128 nanocaio 10.1 $this->data[self::CENTER][] = $block;
129 nanocaio 10.1 $this->display(self::CENTER);
130 nanocaio 1.1 }
131 nanocaio 1.1  
132 nanocaio 1.13 public function display($side)
133 nanocaio 1.1 {
134 nanocaio 10.1 if ('l' === $side) $side = self::LEFT;
135 nanocaio 10.1 else if ('c' === $side) $side = self::CENTER;
136 nanocaio 10.1 else if ('r' === $side) $side = self::RIGHT;
137 nanocaio 10.1 else if ('d' === $side) $side = self::DOWN;
138 nanocaio 10.1  
139 nanocaio 10.1 if (!empty(self::$custom[$side])) {
140 nanocaio 10.1 if (!isset($this->data[$side])) $this->data[$side] = array();
141 nanocaio 10.1 while ($c = array_pop(self::$custom[$side])) {
142 nanocaio 10.1 array_unshift($this->data[$side], $c);
143 nanocaio 10.1 }
144 nanocaio 10.1 self::$custom[$side] = null;
145 nanocaio 1.7 }
146 nanocaio 10.1 if (!isset($this->data[$side])) return;
147 nanocaio 10.1  
148 nanocaio 1.1 require_once(CORE_PATH.'nbbcode.php');
149 nanocaio 10.1 while ($block = array_shift($this->data[$side])) {
150 nanocaio 1.1 $block['title'] = (defined($block['title']) ? constant($block['title']) : $block['title']);
151 nanocaio 1.1 switch ($block['bkey']) {
152 nanocaio 1.1 case 'admin':
153 nanocaio 10.1 if (is_admin()) {
154 nanocaio 1.5 if ($content = adminblock($block['bid'], $block['title'], $block['content'])) {
155 nanocaio 1.5 $this->assign($side, $content);
156 nanocaio 1.5 }
157 nanocaio 1.5 }
158 nanocaio 1.1 break;
159 nanocaio 1.1 case 'userbox':
160 nanocaio 1.1 global $userinfo;
161 nanocaio 1.1 if (is_user() && $userinfo['ublockon']) {
162 nanocaio 1.1 $block['title'] = _MENUFOR." $userinfo[username]";
163 nanocaio 10.4 $block['content'] = BBCode::decodeAll($userinfo['ublock'], 1, true);
164 nanocaio 1.5 $this->assign($side, $block);
165 nanocaio 1.1 }
166 nanocaio 1.1 break;
167 nanocaio 1.1 case 'rss':
168 nanocaio 1.5 $this->rss($side, $block);
169 nanocaio 1.1 break;
170 nanocaio 1.1 case 'custom':
171 nanocaio 10.3 $block['content'] = BBCode::decodeAll($block['content'], 1, true);
172 nanocaio 1.5 $this->assign($side, $block);
173 nanocaio 1.1 break;
174 nanocaio 1.1 case 'file':
175 nanocaio 1.5 $this->blockfile($side, $block);
176 nanocaio 10.1 break;
177 nanocaio 1.1 default:
178 nanocaio 1.1 trigger_error('Undefined bkey for '.$block['title'], E_USER_WARNING);
179 nanocaio 10.1 }
180 nanocaio 1.1 }
181 nanocaio 1.1 }
182 nanocaio 1.1  
183 nanocaio 1.13 public function hideblock($id) {
184 nanocaio 1.1 static $hiddenblocks;
185 nanocaio 1.1 if (!isset($hiddenblocks)) {
186 nanocaio 1.1 $hiddenblocks = array();
187 nanocaio 1.1 if (isset($_COOKIE['hiddenblocks'])) {
188 nanocaio 1.1 $tmphidden = explode(':', $_COOKIE['hiddenblocks']);
189 nanocaio 10.1 for($i=0; $i<count($tmphidden); ++$i) { $hiddenblocks[$tmphidden[$i]] = true; }
190 nanocaio 1.1 }
191 nanocaio 1.1 }
192 nanocaio 1.1 return (isset($hiddenblocks[$id]) ? true : false);
193 nanocaio 1.1 }
194 nanocaio 10.1  
195 nanocaio 10.1 # __get' slows down each call made to the class, performance wide? set property as public, strict coding? likes it this way
196 nanocaio 10.1 public function __get($p)
197 nanocaio 10.1 {
198 nanocaio 10.1 switch ($p) {
199 nanocaio 10.1 case 'data': return $this->data;
200 nanocaio 10.1 }
201 nanocaio 10.1 }
202 nanocaio 1.1  
203 nanocaio 1.13 private function blockfile($side, &$block)
204 nanocaio 1.1 {
205 nanocaio 1.1 if (is_file('blocks/'.$block['blockfile'])) {
206 nanocaio 1.1 include('blocks/'.$block['blockfile']);
207 nanocaio 1.4 if ($content == 'ERROR') return;
208 nanocaio 1.4 if (!empty($content)) {
209 nanocaio 1.1 $block['content'] =& $content;
210 nanocaio 1.5 $this->assign($side, $block);
211 nanocaio 1.1 return;
212 nanocaio 1.1 }
213 nanocaio 1.1 }
214 nanocaio 1.1 trigger_error($block['blockfile']._BLOCKPROBLEM, E_USER_WARNING);
215 nanocaio 1.1 }
216 nanocaio 1.1  
217 nanocaio 1.13 private function rss($side, &$block)
218 nanocaio 1.1 {
219 nanocaio 1.1 global $db, $prefix;
220 nanocaio 1.15 if ($block['time'] < (time()-$block['refresh'])) {
221 nanocaio 1.1 require_once(CORE_PATH.'classes/rss.php');
222 nanocaio 1.1 if (!($block['content'] = CPG_RSS::format(CPG_RSS::read($block['url'])))) {
223 nanocaio 1.1 return trigger_error(_RSSPROBLEM.' ('.$block['title'].')', E_USER_WARNING);
224 nanocaio 1.1 }
225 nanocaio 1.15 $db->sql_query('UPDATE '.$prefix.'_blocks SET content=\''.Fix_Quotes($block['content']).'\', time=\''.time().'\' WHERE bid=\''.$block['bid'].'\'');
226 nanocaio 1.1 }
227 nanocaio 1.5 $this->assign($side, $block);
228 nanocaio 1.1 }
229 nanocaio 1.1  
230 nanocaio 1.13 private function assign($side, &$block)
231 nanocaio 1.1 {
232 nanocaio 1.1 global $cpgtpl, $CPG_SESS;
233 nanocaio 10.1 if (self::LEFT === $side) $side = 'l';
234 nanocaio 10.1 else if (self::CENTER === $side) $side = 'c';
235 nanocaio 10.1 else if (self::RIGHT === $side) $side = 'r';
236 nanocaio 10.1 else if (self::DOWN === $side) $side = 'd';
237 nanocaio 10.1 if (!self::$preview) {
238 nanocaio 1.2 $sides = array('l' => 'left', 'c' => 'center', 'r' => 'right', 'd' => 'bottom');
239 nanocaio 1.1 $side = $sides[$side];
240 nanocaio 1.1 } else {
241 nanocaio 1.1 $side = '';
242 nanocaio 1.1 }
243 nanocaio 1.1 $cpgtpl->assign_block_vars($side.'block', array(
244 nanocaio 1.1 'S_TITLE' => $block['title'],
245 nanocaio 1.1 'S_CONTENT' => $block['content'],
246 nanocaio 1.1 'S_BID' => $block['bid'],
247 nanocaio 1.5 'S_VISIBLE' => $this->hideblock($block['bid']) ? 'style="display:none"' : '',
248 nanocaio 1.5 'S_HIDDEN' => $this->hideblock($block['bid']) ? '' : 'style="display:none"',
249 nanocaio 1.5 'S_IMAGE' => 'themes/'.$CPG_SESS['theme'].'/images/'.($this->hideblock($block['bid']) ? 'plus' : 'minus')
250 nanocaio 1.1 ));
251 nanocaio 10.1 if (self::$preview) {
252 nanocaio 1.1 $cpgtpl->set_filenames(array('block' => 'block.html'));
253 nanocaio 1.1 $cpgtpl->display('block');
254 nanocaio 1.1 }
255 nanocaio 1.1 }
256 nanocaio 1.1  
257 nanocaio 10.1 private static function allowed($view)
258 nanocaio 1.1 {
259 nanocaio 1.12 $view = intval($view);
260 nanocaio 1.1 if (is_admin() || ($view === 0)
261 nanocaio 1.1 || ($view === 1 && is_user())
262 nanocaio 1.1 || ($view === 3 && !is_user())
263 nanocaio 1.1 || ($view > 3 && in_group($view-3)))
264 nanocaio 1.1 {
265 nanocaio 1.1 return true;
266 nanocaio 1.1 }
267 nanocaio 1.1 return;
268 nanocaio 1.1 }
269 nanocaio 1.1 }


Code Credits - Privacy Policy