XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
block.php
Go to the documentation of this file.
1 <?php
19 defined('XOOPS_ROOT_PATH') or die('Restricted access');
20 
28 class XoopsBlock extends XoopsObject
29 {
35  function XoopsBlock($id = null)
36  {
37  $this->initVar('bid', XOBJ_DTYPE_INT, null, false);
38  $this->initVar('mid', XOBJ_DTYPE_INT, 0, false);
39  $this->initVar('func_num', XOBJ_DTYPE_INT, 0, false);
40  $this->initVar('options', XOBJ_DTYPE_TXTBOX, null, false, 255);
41  $this->initVar('name', XOBJ_DTYPE_TXTBOX, null, true, 150);
42  //$this->initVar('position', XOBJ_DTYPE_INT, 0, false);
43  $this->initVar('title', XOBJ_DTYPE_TXTBOX, null, false, 150);
44  $this->initVar('content', XOBJ_DTYPE_TXTAREA, null, false);
45  $this->initVar('side', XOBJ_DTYPE_INT, 0, false);
46  $this->initVar('weight', XOBJ_DTYPE_INT, 0, false);
47  $this->initVar('visible', XOBJ_DTYPE_INT, 0, false);
48  $this->initVar('block_type', XOBJ_DTYPE_OTHER, null, false);
49  $this->initVar('c_type', XOBJ_DTYPE_OTHER, null, false);
50  $this->initVar('isactive', XOBJ_DTYPE_INT, null, false);
51  $this->initVar('dirname', XOBJ_DTYPE_TXTBOX, null, false, 50);
52  $this->initVar('func_file', XOBJ_DTYPE_TXTBOX, null, false, 50);
53  $this->initVar('show_func', XOBJ_DTYPE_TXTBOX, null, false, 50);
54  $this->initVar('edit_func', XOBJ_DTYPE_TXTBOX, null, false, 50);
55  $this->initVar('template', XOBJ_DTYPE_OTHER, null, false);
56  $this->initVar('bcachetime', XOBJ_DTYPE_INT, 0, false);
57  $this->initVar('last_modified', XOBJ_DTYPE_INT, 0, false);
58 
59  // for backward compatibility
60  if (isset($id)) {
61  if (is_array($id)) {
62  $this->assignVars($id);
63  } else {
64  $blkhandler =& xoops_gethandler('block');
65  $obj =& $blkhandler->get($id);
66  foreach(array_keys($obj->getVars()) as $i) {
67  $this->assignVar($i, $obj->getVar($i, 'n'));
68  }
69  }
70  }
71  }
72 
73 
77  function id($format = 'n')
78  {
79  return $this->getVar('bid', $format);
80  }
81 
85  function bid($format = '')
86  {
87  return $this->getVar('bid', $format);
88  }
89 
93  function mid($format = '')
94  {
95  return $this->getVar('mid', $format);
96  }
97 
101  function func_num($format = '')
102  {
103  return $this->getVar('func_num', $format);
104  }
105 
109  function options($format = '')
110  {
111  return $this->getVar('options', $format);
112  }
113 
117  function name($format = '')
118  {
119  return $this->getVar('name', $format);
120  }
121 
125  function title($format = ''){
126  return $this->getVar('title', $format);
127  }
128 
132  function content($format = '')
133  {
134  return $this->getVar('content', $format);
135  }
136 
140  function side($format = '')
141  {
142  return $this->getVar('side', $format);
143  }
144 
148  function weight($format = '')
149  {
150  return $this->getVar('weight', $format);
151  }
152 
156  function visible($format = '')
157  {
158  return $this->getVar('visible', $format);
159  }
160 
164  function block_type($format = '')
165  {
166  return $this->getVar('block_type', $format);
167  }
168 
172  function c_type($format = '')
173  {
174  return $this->getVar('c_type', $format);
175  }
176 
180  function isactive($format = '')
181  {
182  return $this->getVar('isactive', $format);
183  }
184 
188  function dirname($format = '')
189  {
190  return $this->getVar('dirname', $format);
191  }
192 
196  function func_file($format = '')
197  {
198  return $this->getVar('func_file', $format);
199  }
200 
204  function show_func($format = '')
205  {
206  return $this->getVar('show_func', $format);
207  }
208 
212  function edit_func($format = '')
213  {
214  return $this->getVar('edit_func', $format);
215  }
216 
220  function template($format = '')
221  {
222  return $this->getVar('template', $format);
223  }
224 
228  function bcachetime($format = '')
229  {
230  return $this->getVar('bcachetime', $format);
231  }
232 
236  function last_modified($format = '')
237  {
238  return $this->getVar('last_modified', $format);
239  }
240 
253  function getContent($format = 's', $c_type = 'T')
254  {
255  $format = strtolower($format);
256  $c_type = strtoupper($c_type);
257  switch ($format) {
258  case 's':
259  if ($c_type == 'H') {
260  return str_replace('{X_SITEURL}', XOOPS_URL . '/', $this->getVar('content', 'n'));
261  } else if ($c_type == 'P') {
262  ob_start();
263  echo eval($this->getVar('content', 'n'));
264  $content = ob_get_contents();
265  ob_end_clean();
266  return str_replace('{X_SITEURL}', XOOPS_URL . '/', $content);
267  } else if ($c_type == 'S') {
269  $content = str_replace('{X_SITEURL}', XOOPS_URL . '/', $this->getVar('content', 'n'));
270  return $myts->displayTarea($content, 0, 1);
271  } else {
273  $content = str_replace('{X_SITEURL}', XOOPS_URL . '/', $this->getVar('content', 'n'));
274  return $myts->displayTarea($content, 0, 0);
275  }
276  break;
277  case 'e':
278  return $this->getVar('content', 'e');
279  break;
280  default:
281  return $this->getVar('content', 'n');
282  break;
283  }
284  }
285 
291  function getOptions()
292  {
293  if (!$this->isCustom()) {
294  $edit_func = $this->getVar('edit_func');
295  if (!$edit_func) {
296  return false;
297  }
298  if (file_exists(XOOPS_ROOT_PATH . '/modules/' . $this->getVar('dirname') . '/blocks/' . $this->getVar('func_file'))) {
299  if (file_exists(XOOPS_ROOT_PATH . '/modules/' . $this->getVar('dirname') . '/language/' . $GLOBALS['xoopsConfig']['language'] . '/blocks.php')) {
300  include_once XOOPS_ROOT_PATH . '/modules/' . $this->getVar('dirname') . '/language/' . $GLOBALS['xoopsConfig']['language'] . '/blocks.php';
301  } else if (file_exists(XOOPS_ROOT_PATH . '/modules/' . $this->getVar('dirname') . '/language/english/blocks.php')) {
302  include_once XOOPS_ROOT_PATH . '/modules/' . $this->getVar('dirname') . '/language/english/blocks.php';
303  }
304  include_once XOOPS_ROOT_PATH . '/modules/' . $this->getVar('dirname') . '/blocks/' . $this->getVar('func_file');
305  $options = explode('|', $this->getVar('options'));
306  $edit_form = $edit_func($options);
307  if (!$edit_form) {
308  return false;
309  }
310  return $edit_form;
311  } else {
312  return false;
313  }
314  } else {
315  return false;
316  }
317  }
318 
319  function isCustom()
320  {
321  return in_array($this->getVar("block_type"), array(
322  'C' ,
323  'E'));
324  }
325 }
326 
339 {
347  function &create($isNew = true)
348  {
349  $block = new XoopsBlock();
350  if ($isNew) {
351  $block->setNew();
352  }
353  return $block;
354  }
355 
363  function &get($id)
364  {
365  $block = false;
366  $id = intval($id);
367  if ($id > 0) {
368  $sql = 'SELECT * FROM ' . $this->db->prefix('newblocks') . ' WHERE bid=' . $id;
369  if ($result = $this->db->query($sql)) {
370  $numrows = $this->db->getRowsNum($result);
371  if ($numrows == 1) {
372  $block = new XoopsBlock();
373  $block->assignVars($this->db->fetchArray($result));
374  }
375  }
376  }
377  return $block;
378  }
379 
386  function insert(&$block)
387  {
391  if (!is_a($block, 'xoopsblock')) {
392  return false;
393  }
394  if (!$block->isDirty()) {
395  return true;
396  }
397  if (!$block->cleanVars()) {
398  return false;
399  }
400  foreach ($block->cleanVars as $k => $v) {
401  ${$k} = $v;
402  }
403  if ($block->isNew()) {
404  $bid = $this->db->genId('newblocks_bid_seq');
405  $sql = sprintf("INSERT INTO %s (bid, mid, func_num, options, name, title, content, side, weight, visible, block_type, c_type, isactive, dirname, func_file, show_func, edit_func, template, bcachetime, last_modified) VALUES (%u, %u, %u, '%s', '%s', '%s', '%s', %u, %u, %u, '%s', '%s', %u, '%s', '%s', '%s', '%s', '%s', %u, %u)", $this->db->prefix('newblocks'), $bid, $mid, $func_num, $options, $name, $title, $content, $side, $weight, $visible, $block_type, $c_type, 1, $dirname, $func_file, $show_func, $edit_func, $template, $bcachetime, time());
406  } else {
407  $sql = sprintf("UPDATE %s SET func_num = %u, options = '%s', name = '%s', title = '%s', content = '%s', side = %u, weight = %u, visible = %u, c_type = '%s', isactive = %u, func_file = '%s', show_func = '%s', edit_func = '%s', template = '%s', bcachetime = %u, last_modified = %u WHERE bid = %u", $this->db->prefix('newblocks'), $func_num, $options, $name, $title, $content, $side, $weight, $visible, $c_type, $isactive, $func_file, $show_func, $edit_func, $template, $bcachetime, time(), $bid);
408  }
409  if (!$result = $this->db->query($sql)) {
410  return false;
411  }
412  if (empty($bid)) {
413  $bid = $this->db->getInsertId();
414  }
415  $block->assignVar('bid', $bid);
416  return true;
417  }
418 
425  function delete(&$block)
426  {
430  if (!is_a($block, 'xoopsblock')) {
431  return false;
432  }
433  $id = $block->getVar('bid');
434  $sql = sprintf("DELETE FROM %s WHERE bid = %u", $this->db->prefix('newblocks'), $id);
435  if (!$result = $this->db->query($sql)) {
436  return false;
437  }
438  $sql = sprintf("DELETE FROM %s WHERE block_id = %u", $this->db->prefix('block_module_link'), $id);
439  $this->db->query($sql);
440  return true;
441  }
442 
449  function getObjects($criteria = null, $id_as_key = false)
450  {
451  $ret = array();
452  $limit = $start = 0;
453  $sql = 'SELECT DISTINCT(b.bid), b.* FROM ' . $this->db->prefix('newblocks') . ' b LEFT JOIN ' . $this->db->prefix('block_module_link') . ' l ON b.bid=l.block_id';
454  if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
455  $sql .= ' ' . $criteria->renderWhere();
456  $limit = $criteria->getLimit();
457  $start = $criteria->getStart();
458  }
459  $result = $this->db->query($sql, $limit, $start);
460  if (!$result) {
461  return $ret;
462  }
463  while ($myrow = $this->db->fetchArray($result)) {
464  $block = new XoopsBlock();
465  $block->assignVars($myrow);
466  if (!$id_as_key) {
467  $ret[] =& $block;
468  } else {
469  $ret[$myrow['bid']] = & $block;
470  }
471  unset($block);
472  }
473  return $ret;
474  }
475 
482  function getList($criteria = null)
483  {
484  $blocks = $this->getObjects($criteria, true);
485  $ret = array();
486  foreach(array_keys($blocks) as $i) {
487  $name = (!$blocks[$i]->isCustom()) ? $blocks[$i]->getVar('name') : $blocks[$i]->getVar('title');
488  $ret[$i] = $name;
489  }
490  return $ret;
491  }
492 
493  ##################### Deprecated Methods ######################
494 
498  function getByModule($moduleid, $asobject = true, $id_as_key = false)
499  {
500  trigger_error(__CLASS__ . "::" . __FUNCTION__ . ' is deprecated', E_USER_WARNING);
501  return false;
502  }
503 
504  function getAllByGroupModule($groupid, $module_id = 0, $toponlyblock = false, $visible = null, $orderby = 'i.weight,i.instanceid', $isactive = 1)
505  {
506  trigger_error(__CLASS__ . "::" . __FUNCTION__ . ' is deprecated', E_USER_WARNING);
507  return false;
508  }
509 
510  function getAdminBlocks($groupid, $orderby='i.weight,i.instanceid')
511  {
512  trigger_error(__CLASS__ . "::" . __FUNCTION__ . ' is deprecated', E_USER_WARNING);
513  return false;
514  }
515 
516  function assignBlocks()
517  {
518  trigger_error(__CLASS__ . "::" . __FUNCTION__ . ' is deprecated', E_USER_WARNING);
519  return false;
520  }
522 }
523 ?>