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.12 (2 years 4 months 2 weeks 2 days 14 hours 5 minutes 35 seconds ago) by nanocaiordo
Changed : +4 -3 lines
Comment: Poodle.js, modified extendNode, value was not added when using $A or others.


# 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.12 $Revision: 10.11 $
13 nanocaio 10.2 $Author: nanocaiordo $
14 nanocaio 10.12 $Date: 2011/12/02 12:56:49 $
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 public static $preview = false;
21 nanocaio 10.1 public static $showblocks = null;
22 nanocaio 10.1 /* end settings */
23 nanocaio 10.1  
24 nanocaio 10.2 const NONE = 0;
25 nanocaio 10.1 const LEFT = 1;
26 nanocaio 10.1 const RIGHT = 2;
27 nanocaio 10.1 const CENTER = 4;
28 nanocaio 10.1 const DOWN = 8;
29 nanocaio 10.2 const ALL = 15;
30 nanocaio 10.1  
31 nanocaio 10.1 public $list = array();
32 nanocaio 10.1  
33 nanocaio 10.1 private $data = array();
34 nanocaio 10.1 private static $custom = array();
35 nanocaio 10.1 private $active = false;
36 nanocaio 10.1  
37 nanocaio 10.5 # __get' slows down each call made to the class, performance wide? set property as public, strict coding? likes it this way
38 nanocaio 10.5 public function __get($p)
39 nanocaio 10.5 {
40 nanocaio 10.5 switch ($p) {
41 nanocaio 10.5 case 'data': return $this->data;
42 nanocaio 10.5 }
43 nanocaio 10.5 }
44 nanocaio 10.5  
45 nanocaio 10.1 public function __construct($mid=0)
46 nanocaio 10.1 {
47 nanocaio 10.5 $mid = intval($mid);
48 nanocaio 10.8 global $Module;
49 nanocaio 10.11 if (isset($_GET['hideallblocks']) || self::$preview || $mid === 0) {
50 nanocaio 10.1 self::$showblocks = 0;
51 nanocaio 1.1 return;
52 nanocaio 1.1 }
53 nanocaio 10.1  
54 nanocaio 10.8 global $db, $prefix, $MAIN_CFG, $currentlang;
55 nanocaio 10.12 //$db->sql_query("DELETE FROM {$prefix}_blocks_custom WHERE mid NOT IN (SELECT mid FROM {$prefix}_modules) AND mid > 0");
56 nanocaio 10.12 //$db->sql_query("DELETE FROM {$prefix}_blocks_custom WHERE bid NOT IN (SELECT bid FROM {$prefix}_blocks)");
57 nanocaio 10.1 $querylang = ($MAIN_CFG['global']['multilingual']) ? " AND (blanguage='$currentlang' OR blanguage='')" : '';
58 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
59 nanocaio 10.7 FROM {$prefix}_blocks_custom as bc LEFT JOIN {$prefix}_blocks as b USING(bid) WHERE b.active=1 AND bc.mid={$mid}{$querylang} ORDER BY bc.weight");
60 nanocaio 10.1 while($row = $result->fetch_assoc()) {
61 nanocaio 10.1 // temporary table data needs upgrade
62 nanocaio 10.1 if ($row['side'] === 'l') $row['side'] = self::LEFT;
63 nanocaio 10.1 else if ($row['side'] === 'c') $row['side'] = self::CENTER;
64 nanocaio 10.1 else if ($row['side'] === 'r') $row['side'] = self::RIGHT;
65 nanocaio 10.1 else if ($row['side'] === 'd') $row['side'] = self::DOWN;
66 nanocaio 10.5 if ($Module->sides & $row['side'] && self::allow($row['view'])) {
67 nanocaio 10.1 $row['bid'] = intval($row['bid']);
68 nanocaio 10.1 $row['time'] = intval($row['time']);
69 nanocaio 10.1 $row['refresh'] = intval($row['refresh']);
70 nanocaio 10.1 $this->data[$row['side']][] = $row;
71 nanocaio 10.1 }
72 nanocaio 10.1 }
73 nanocaio 10.1 $db->sql_freeresult($result);
74 nanocaio 10.1 }
75 nanocaio 10.1  
76 nanocaio 10.5 public static function list_all()
77 nanocaio 10.1 {
78 nanocaio 10.1 global $prefix, $db, $blocks_save;
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.5 return $blocks_list;
106 nanocaio 10.1 }
107 nanocaio 10.1  
108 nanocaio 10.1 public static function custom(&$data)
109 nanocaio 10.1 {
110 nanocaio 10.5 if (is_array($data) && self::allow($data['view'])) {
111 nanocaio 10.1 if ('l' === $data['side']) $data['side'] = self::LEFT;
112 nanocaio 10.1 else if ('c' === $data['side']) $data['side'] = self::CENTER;
113 nanocaio 10.1 else if ('r' === $data['side']) $data['side'] = self::RIGHT;
114 nanocaio 10.1 else if ('d' === $data['side']) $data['side'] = self::DOWN;
115 nanocaio 1.1 $data['bkey'] = 'custom';
116 nanocaio 10.1 self::$custom[$data['side']][] = $data;
117 nanocaio 1.1 }
118 nanocaio 1.9 $data = null;
119 nanocaio 1.1 }
120 nanocaio 1.1  
121 nanocaio 10.8 public function preview($block)
122 nanocaio 1.1 {
123 nanocaio 10.8 global $Module;
124 nanocaio 10.8 $Module->sides = 0;
125 nanocaio 10.8 self::$preview = true;
126 nanocaio 10.1 self::$showblocks = 0;
127 nanocaio 10.8 $this->data = array(self::CENTER => array($block));
128 nanocaio 10.5 $this->prepare(self::CENTER);
129 nanocaio 1.1 }
130 nanocaio 1.1  
131 nanocaio 10.6 public function display($side)
132 nanocaio 10.6 {
133 nanocaio 10.6 trigger_error('$Blocks->display() is no longer needed, you can safely delete the call to this function.', E_USER_DEPRECATED);
134 nanocaio 10.6 return $this->prepare($side);
135 nanocaio 10.6 }
136 nanocaio 10.6  
137 nanocaio 10.5 public function prepare($side)
138 nanocaio 1.1 {
139 nanocaio 10.11 if (0 === self::$showblocks || !$side) return;
140 nanocaio 10.1 if ('l' === $side) $side = self::LEFT;
141 nanocaio 10.1 else if ('c' === $side) $side = self::CENTER;
142 nanocaio 10.1 else if ('r' === $side) $side = self::RIGHT;
143 nanocaio 10.1 else if ('d' === $side) $side = self::DOWN;
144 nanocaio 10.1  
145 nanocaio 10.1 if (!empty(self::$custom[$side])) {
146 nanocaio 10.1 if (!isset($this->data[$side])) $this->data[$side] = array();
147 nanocaio 10.1 while ($c = array_pop(self::$custom[$side])) {
148 nanocaio 10.1 array_unshift($this->data[$side], $c);
149 nanocaio 10.1 }
150 nanocaio 1.7 }
151 nanocaio 10.8 if (!isset($this->data[$side]) && !self::$preview) {
152 nanocaio 10.5 global $Module;
153 nanocaio 10.5 $Module->sides = $Module->sides &~ $side;
154 nanocaio 10.5 return false;
155 nanocaio 10.5 }
156 nanocaio 10.1  
157 nanocaio 1.1 require_once(CORE_PATH.'nbbcode.php');
158 nanocaio 10.1 while ($block = array_shift($this->data[$side])) {
159 nanocaio 1.1 $block['title'] = (defined($block['title']) ? constant($block['title']) : $block['title']);
160 nanocaio 1.1 switch ($block['bkey']) {
161 nanocaio 1.1 case 'admin':
162 nanocaio 10.1 if (is_admin()) {
163 nanocaio 1.5 if ($content = adminblock($block['bid'], $block['title'], $block['content'])) {
164 nanocaio 1.5 $this->assign($side, $content);
165 nanocaio 1.5 }
166 nanocaio 1.5 }
167 nanocaio 1.1 break;
168 nanocaio 1.1 case 'userbox':
169 nanocaio 1.1 global $userinfo;
170 nanocaio 1.1 if (is_user() && $userinfo['ublockon']) {
171 nanocaio 1.1 $block['title'] = _MENUFOR." $userinfo[username]";
172 nanocaio 10.4 $block['content'] = BBCode::decodeAll($userinfo['ublock'], 1, true);
173 nanocaio 1.5 $this->assign($side, $block);
174 nanocaio 1.1 }
175 nanocaio 1.1 break;
176 nanocaio 1.1 case 'rss':
177 nanocaio 1.5 $this->rss($side, $block);
178 nanocaio 1.1 break;
179 nanocaio 1.1 case 'custom':
180 nanocaio 10.3 $block['content'] = BBCode::decodeAll($block['content'], 1, true);
181 nanocaio 1.5 $this->assign($side, $block);
182 nanocaio 1.1 break;
183 nanocaio 1.1 case 'file':
184 nanocaio 1.5 $this->blockfile($side, $block);
185 nanocaio 10.1 break;
186 nanocaio 1.1 default:
187 nanocaio 1.1 trigger_error('Undefined bkey for '.$block['title'], E_USER_WARNING);
188 nanocaio 10.1 }
189 nanocaio 1.1 }
190 nanocaio 10.5 return true;
191 nanocaio 1.1 }
192 nanocaio 1.1  
193 nanocaio 1.13 public function hideblock($id) {
194 nanocaio 1.1 static $hiddenblocks;
195 nanocaio 1.1 if (!isset($hiddenblocks)) {
196 nanocaio 1.1 $hiddenblocks = array();
197 nanocaio 1.1 if (isset($_COOKIE['hiddenblocks'])) {
198 nanocaio 1.1 $tmphidden = explode(':', $_COOKIE['hiddenblocks']);
199 nanocaio 10.1 for($i=0; $i<count($tmphidden); ++$i) { $hiddenblocks[$tmphidden[$i]] = true; }
200 nanocaio 1.1 }
201 nanocaio 1.1 }
202 nanocaio 1.1 return (isset($hiddenblocks[$id]) ? true : false);
203 nanocaio 1.1 }
204 nanocaio 1.1  
205 nanocaio 1.13 private function blockfile($side, &$block)
206 nanocaio 1.1 {
207 nanocaio 1.1 if (is_file('blocks/'.$block['blockfile'])) {
208 nanocaio 1.1 include('blocks/'.$block['blockfile']);
209 nanocaio 10.5 if ($content == 'ERROR') {
210 nanocaio 10.5 trigger_error($block['blockfile']._BLOCKPROBLEM, E_USER_WARNING);
211 nanocaio 10.5 return;
212 nanocaio 10.5 }
213 nanocaio 1.4 if (!empty($content)) {
214 nanocaio 1.1 $block['content'] =& $content;
215 nanocaio 1.5 $this->assign($side, $block);
216 nanocaio 1.1 }
217 nanocaio 1.1 }
218 nanocaio 1.1 }
219 nanocaio 1.1  
220 nanocaio 1.13 private function rss($side, &$block)
221 nanocaio 1.1 {
222 nanocaio 1.1 global $db, $prefix;
223 nanocaio 1.15 if ($block['time'] < (time()-$block['refresh'])) {
224 nanocaio 1.1 require_once(CORE_PATH.'classes/rss.php');
225 nanocaio 1.1 if (!($block['content'] = CPG_RSS::format(CPG_RSS::read($block['url'])))) {
226 nanocaio 1.1 return trigger_error(_RSSPROBLEM.' ('.$block['title'].')', E_USER_WARNING);
227 nanocaio 1.1 }
228 nanocaio 1.15 $db->sql_query('UPDATE '.$prefix.'_blocks SET content=\''.Fix_Quotes($block['content']).'\', time=\''.time().'\' WHERE bid=\''.$block['bid'].'\'');
229 nanocaio 1.1 }
230 nanocaio 10.10 $block['content'] = str_replace('_HREADMORE', _HREADMORE, $block['content']);
231 nanocaio 1.5 $this->assign($side, $block);
232 nanocaio 1.1 }
233 nanocaio 1.1  
234 nanocaio 1.13 private function assign($side, &$block)
235 nanocaio 1.1 {
236 nanocaio 1.1 global $cpgtpl, $CPG_SESS;
237 nanocaio 10.1 if (self::LEFT === $side) $side = 'l';
238 nanocaio 10.1 else if (self::CENTER === $side) $side = 'c';
239 nanocaio 10.1 else if (self::RIGHT === $side) $side = 'r';
240 nanocaio 10.1 else if (self::DOWN === $side) $side = 'd';
241 nanocaio 10.1 if (!self::$preview) {
242 nanocaio 1.2 $sides = array('l' => 'left', 'c' => 'center', 'r' => 'right', 'd' => 'bottom');
243 nanocaio 1.1 $side = $sides[$side];
244 nanocaio 1.1 } else {
245 nanocaio 1.1 $side = '';
246 nanocaio 1.1 }
247 nanocaio 1.1 $cpgtpl->assign_block_vars($side.'block', array(
248 nanocaio 1.1 'S_TITLE' => $block['title'],
249 nanocaio 1.1 'S_CONTENT' => $block['content'],
250 nanocaio 1.1 'S_BID' => $block['bid'],
251 nanocaio 1.5 'S_VISIBLE' => $this->hideblock($block['bid']) ? 'style="display:none"' : '',
252 nanocaio 1.5 'S_HIDDEN' => $this->hideblock($block['bid']) ? '' : 'style="display:none"',
253 nanocaio 1.5 'S_IMAGE' => 'themes/'.$CPG_SESS['theme'].'/images/'.($this->hideblock($block['bid']) ? 'plus' : 'minus')
254 nanocaio 1.1 ));
255 nanocaio 10.1 if (self::$preview) {
256 nanocaio 1.1 $cpgtpl->set_filenames(array('block' => 'block.html'));
257 nanocaio 10.8 $cpgtpl->display('block');
258 nanocaio 1.1 }
259 nanocaio 1.1 }
260 nanocaio 1.1  
261 nanocaio 10.5 private static function allow($view)
262 nanocaio 1.1 {
263 nanocaio 1.12 $view = intval($view);
264 nanocaio 1.1 if (is_admin() || ($view === 0)
265 nanocaio 1.1 || ($view === 1 && is_user())
266 nanocaio 1.1 || ($view === 3 && !is_user())
267 nanocaio 1.1 || ($view > 3 && in_group($view-3)))
268 nanocaio 1.1 {
269 nanocaio 1.1 return true;
270 nanocaio 1.1 }
271 nanocaio 10.5 return false;
272 nanocaio 1.1 }
273 nanocaio 1.1 }


Code Credits - Privacy Policy