XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
tplfile.php
Go to the documentation of this file.
1 <?php
20 defined('XOOPS_ROOT_PATH') or die('Restricted access');
21 
31 {
37  function XoopsTplfile()
38  {
39  $this->XoopsObject();
40  $this->initVar('tpl_id', XOBJ_DTYPE_INT, null, false);
41  $this->initVar('tpl_refid', XOBJ_DTYPE_INT, 0, false);
42  $this->initVar('tpl_tplset', XOBJ_DTYPE_OTHER, null, false);
43  $this->initVar('tpl_file', XOBJ_DTYPE_TXTBOX, null, true, 100);
44  $this->initVar('tpl_desc', XOBJ_DTYPE_TXTBOX, null, false, 100);
45  $this->initVar('tpl_lastmodified', XOBJ_DTYPE_INT, 0, false);
46  $this->initVar('tpl_lastimported', XOBJ_DTYPE_INT, 0, false);
47  $this->initVar('tpl_module', XOBJ_DTYPE_OTHER, null, false);
48  $this->initVar('tpl_type', XOBJ_DTYPE_OTHER, null, false);
49  $this->initVar('tpl_source', XOBJ_DTYPE_SOURCE, null, false);
50  }
51 
55  function id($format = 'N')
56  {
57  return $this->getVar('tpl_id', $format);
58  }
59 
63  function tpl_id($format = '')
64  {
65  return $this->getVar('tpl_id', $format);
66  }
67 
71  function tpl_refid($format = '')
72  {
73  return $this->getVar('tpl_refid', $format);
74  }
75 
79  function tpl_tplset($format = '')
80  {
81  return $this->getVar('tpl_tplset', $format);
82  }
83 
87  function tpl_file($format = '')
88  {
89  return $this->getVar('tpl_file', $format);
90  }
91 
95  function tpl_desc($format = '')
96  {
97  return $this->getVar('tpl_desc', $format);
98  }
99 
103  function tpl_lastmodified($format = '')
104  {
105  return $this->getVar('tpl_lastmodified', $format);
106  }
107 
111  function tpl_lastimported($format = '')
112  {
113  return $this->getVar('tpl_lastimported', $format);
114  }
115 
119  function tpl_module($format = '')
120  {
121  return $this->getVar('tpl_module', $format);
122  }
123 
127  function tpl_type($format = '')
128  {
129  return $this->getVar('tpl_type', $format);
130  }
131 
135  function tpl_source($format = '')
136  {
137  return $this->getVar('tpl_source', $format);
138  }
139 
140 
146  function getSource()
147  {
148  return $this->getVar('tpl_source');
149  }
150 
156  function getLastModified()
157  {
158  return $this->getVar('tpl_lastmodified');
159  }
160 }
161 
171 {
179  function &create($isNew = true)
180  {
181  $tplfile = new XoopsTplfile();
182  if ($isNew) {
183  $tplfile->setNew();
184  }
185  return $tplfile;
186  }
187 
195  function &get($id, $getsource = false)
196  {
197  $tplfile = false;
198  $id = intval($id);
199  if ($id > 0) {
200  if (!$getsource) {
201  $sql = 'SELECT * FROM ' . $this->db->prefix('tplfile') . ' WHERE tpl_id=' . $id;
202  } else {
203  $sql = 'SELECT f.*, s.tpl_source FROM ' . $this->db->prefix('tplfile') . ' f LEFT JOIN ' . $this->db->prefix('tplsource') . ' s ON s.tpl_id=f.tpl_id WHERE f.tpl_id=' . $id;
204  }
205  if (! $result = $this->db->query($sql)) {
206  return $tplfile;
207  }
208  $numrows = $this->db->getRowsNum($result);
209  if ($numrows == 1) {
210  $tplfile = new XoopsTplfile();
211  $tplfile->assignVars($this->db->fetchArray($result));
212  }
213  }
214  return $tplfile;
215  }
216 
223  function loadSource(&$tplfile)
224  {
228  if (!is_a($tplfile, 'xoopstplfile')) {
229  return false;
230  }
231 
232  if (!$tplfile->getVar('tpl_source')) {
233  $sql = 'SELECT tpl_source FROM ' . $this->db->prefix('tplsource') . ' WHERE tpl_id=' . $tplfile->getVar('tpl_id');
234  if (!$result = $this->db->query($sql)) {
235  return false;
236  }
237  $myrow = $this->db->fetchArray($result);
238  $tplfile->assignVar('tpl_source', $myrow['tpl_source']);
239  }
240  return true;
241  }
242 
249  function insert(&$tplfile)
250  {
254  if (!is_a($tplfile, 'xoopstplfile')) {
255  return false;
256  }
257  if (!$tplfile->isDirty()) {
258  return true;
259  }
260  if (!$tplfile->cleanVars()) {
261  return false;
262  }
263  foreach ($tplfile->cleanVars as $k => $v) {
264  ${$k} = $v;
265  }
266  if ($tplfile->isNew()) {
267  $tpl_id = $this->db->genId('tpltpl_file_id_seq');
268  $sql = sprintf("INSERT INTO %s (tpl_id, tpl_module, tpl_refid, tpl_tplset, tpl_file, tpl_desc, tpl_lastmodified, tpl_lastimported, tpl_type) VALUES (%u, %s, %u, %s, %s, %s, %u, %u, %s)", $this->db->prefix('tplfile'), $tpl_id, $this->db->quoteString($tpl_module), $tpl_refid, $this->db->quoteString($tpl_tplset), $this->db->quoteString($tpl_file), $this->db->quoteString($tpl_desc), $tpl_lastmodified, $tpl_lastimported, $this->db->quoteString($tpl_type));
269  if (!$result = $this->db->query($sql)) {
270  return false;
271  }
272  if (empty($tpl_id)) {
273  $tpl_id = $this->db->getInsertId();
274  }
275  if (isset($tpl_source) && $tpl_source != '') {
276  $sql = sprintf("INSERT INTO %s (tpl_id, tpl_source) VALUES (%u, %s)", $this->db->prefix('tplsource'), $tpl_id, $this->db->quoteString($tpl_source));
277  if (!$result = $this->db->query($sql)) {
278  $this->db->query(sprintf("DELETE FROM %s WHERE tpl_id = %u", $this->db->prefix('tplfile'), $tpl_id));
279  return false;
280  }
281  }
282  $tplfile->assignVar('tpl_id', $tpl_id);
283  } else {
284  $sql = sprintf("UPDATE %s SET tpl_tplset = %s, tpl_file = %s, tpl_desc = %s, tpl_lastimported = %u, tpl_lastmodified = %u WHERE tpl_id = %u", $this->db->prefix('tplfile'), $this->db->quoteString($tpl_tplset), $this->db->quoteString($tpl_file), $this->db->quoteString($tpl_desc), $tpl_lastimported, $tpl_lastmodified, $tpl_id);
285  if (!$result = $this->db->query($sql)) {
286  return false;
287  }
288  if (isset($tpl_source) && $tpl_source != '') {
289  $sql = sprintf("UPDATE %s SET tpl_source = %s WHERE tpl_id = %u", $this->db->prefix('tplsource'), $this->db->quoteString($tpl_source), $tpl_id);
290  if (!$result = $this->db->query($sql)) {
291  return false;
292  }
293  }
294  }
295  return true;
296  }
297 
304  function forceUpdate(&$tplfile)
305  {
309  if (!is_a($tplfile, 'xoopstplfile')) {
310  return false;
311  }
312  if (!$tplfile->isDirty()) {
313  return true;
314  }
315  if (!$tplfile->cleanVars()) {
316  return false;
317  }
318  foreach ($tplfile->cleanVars as $k => $v) {
319  ${$k} = $v;
320  }
321  if (!$tplfile->isNew()) {
322  $sql = sprintf("UPDATE %s SET tpl_tplset = %s, tpl_file = %s, tpl_desc = %s, tpl_lastimported = %u, tpl_lastmodified = %u WHERE tpl_id = %u", $this->db->prefix('tplfile'), $this->db->quoteString($tpl_tplset), $this->db->quoteString($tpl_file), $this->db->quoteString($tpl_desc), $tpl_lastimported, $tpl_lastmodified, $tpl_id);
323  if (!$result = $this->db->queryF($sql)) {
324  return false;
325  }
326  if (isset($tpl_source) && $tpl_source != '') {
327  $sql = sprintf("UPDATE %s SET tpl_source = %s WHERE tpl_id = %u", $this->db->prefix('tplsource'), $this->db->quoteString($tpl_source), $tpl_id);
328  if (!$result = $this->db->queryF($sql)) {
329  return false;
330  }
331  }
332  return true;
333  } else {
334  return false;
335  }
336  }
337 
344  function delete(&$tplfile)
345  {
349  if (!is_a($tplfile, 'xoopstplfile')) {
350  return false;
351  }
352  $id = $tplfile->getVar('tpl_id');
353  $sql = sprintf("DELETE FROM %s WHERE tpl_id = %u", $this->db->prefix('tplfile'), $id);
354  if (!$result = $this->db->query($sql)) {
355  return false;
356  }
357  $sql = sprintf("DELETE FROM %s WHERE tpl_id = %u", $this->db->prefix('tplsource'), $id);
358  $this->db->query($sql);
359  return true;
360  }
361 
368  function getObjects($criteria = null, $getsource = false, $id_as_key = false)
369  {
370  $ret = array();
371  $limit = $start = 0;
372  if ($getsource) {
373  $sql = 'SELECT f.*, s.tpl_source FROM ' . $this->db->prefix('tplfile') . ' f LEFT JOIN ' . $this->db->prefix('tplsource') . ' s ON s.tpl_id=f.tpl_id';
374  } else {
375  $sql = 'SELECT * FROM ' . $this->db->prefix('tplfile');
376  }
377  if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
378  $sql .= ' ' . $criteria->renderWhere() . ' ORDER BY tpl_refid';
379  $limit = $criteria->getLimit();
380  $start = $criteria->getStart();
381  }
382  $result = $this->db->query($sql, $limit, $start);
383  if (!$result) {
384  return $ret;
385  }
386  while ($myrow = $this->db->fetchArray($result)) {
387  $tplfile = new XoopsTplfile();
388  $tplfile->assignVars($myrow);
389  if (!$id_as_key) {
390  $ret[] =& $tplfile;
391  } else {
392  $ret[$myrow['tpl_id']] =& $tplfile;
393  }
394  unset($tplfile);
395  }
396  return $ret;
397  }
398 
405  function getCount($criteria = null)
406  {
407  $sql = 'SELECT COUNT(*) FROM ' . $this->db->prefix('tplfile');
408  if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
409  $sql .= ' ' . $criteria->renderWhere();
410  }
411  if (!$result =& $this->db->query($sql)) {
412  return 0;
413  }
414  list ($count) = $this->db->fetchRow($result);
415  return $count;
416  }
417 
424  function getModuleTplCount($tplset)
425  {
426  $ret = array();
427  $sql = "SELECT tpl_module, COUNT(tpl_id) AS count FROM " . $this->db->prefix('tplfile') . " WHERE tpl_tplset='" . $tplset . "' GROUP BY tpl_module";
428  $result = $this->db->query($sql);
429  if (!$result) {
430  return $ret;
431  }
432  while ($myrow = $this->db->fetchArray($result)) {
433  if ($myrow['tpl_module'] != '') {
434  $ret[$myrow['tpl_module']] = $myrow['count'];
435  }
436  }
437  return $ret;
438  }
439 
451  function find($tplset = null, $type = null, $refid = null, $module = null, $file = null, $getsource = false)
452  {
453  $criteria = new CriteriaCompo();
454  if (isset($tplset)) {
455  $criteria->add(new Criteria('tpl_tplset', $tplset));
456  }
457  if (isset($module)) {
458  $criteria->add(new Criteria('tpl_module', $module));
459  }
460  if (isset($refid)) {
461  $criteria->add(new Criteria('tpl_refid', $refid));
462  }
463  if (isset($file)) {
464  $criteria->add(new Criteria('tpl_file', $file));
465  }
466  if (isset($type)) {
467  if (is_array($type)) {
468  $criteria2 = new CriteriaCompo();
469  foreach ($type as $t) {
470  $criteria2->add(new Criteria('tpl_type', $t), 'OR');
471  }
472  $criteria->add($criteria2);
473  } else {
474  $criteria->add(new Criteria('tpl_type', $type));
475  }
476  }
477  return $this->getObjects($criteria, $getsource, false);
478  }
479 
487  function templateExists($tplname, $tplset_name)
488  {
489  $criteria = new CriteriaCompo(new Criteria('tpl_file', trim($tplname)));
490  $criteria->add(new Criteria('tpl_tplset', trim($tplset_name)));
491  if ($this->getCount($criteria) > 0) {
492  return true;
493  }
494  return false;
495  }
496 }
497 ?>