PageRenderTime 42ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 1ms

/lib/classes/class.templateoperations.inc.php

https://github.com/tedkulp/cmsmadesimple-2-0
PHP | 387 lines | 284 code | 78 blank | 25 comment | 38 complexity | 664f72030d3acffc894092a0557db64d MD5 | raw file
  1. <?php
  2. #CMS - CMS Made Simple
  3. #(c)2004-6 by Ted Kulp (ted@cmsmadesimple.org)
  4. #This project's homepage is: http://cmsmadesimple.org
  5. #
  6. #This program is free software; you can redistribute it and/or modify
  7. #it under the terms of the GNU General Public License as published by
  8. #the Free Software Foundation; either version 2 of the License, or
  9. #(at your option) any later version.
  10. #
  11. #This program is distributed in the hope that it will be useful,
  12. #BUT withOUT ANY WARRANTY; without even the implied warranty of
  13. #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. #GNU General Public License for more details.
  15. #You should have received a copy of the GNU General Public License
  16. #along with this program; if not, write to the Free Software
  17. #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  18. #
  19. #$Id$
  20. /**
  21. * Class for doing template related functions. Many of the Template object functions are just wrappers around these.
  22. *
  23. * @since 0.6
  24. * @package CMS
  25. */
  26. include_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'class.template.inc.php');
  27. class TemplateOperations
  28. {
  29. function LoadTemplates()
  30. {
  31. $gCms = cmsms();
  32. $db = cms_db();
  33. $result = array();
  34. $query = "SELECT template_id, template_name, template_content, stylesheet, encoding, active, default_template, modified_date FROM ".cms_db_prefix()."templates ORDER BY template_name";
  35. $dbresult = $db->Execute($query);
  36. while ($dbresult && !$dbresult->EOF)
  37. {
  38. $onetemplate = new Template();
  39. $onetemplate->id = $dbresult->fields['template_id'];
  40. $onetemplate->name = $dbresult->fields['template_name'];
  41. $onetemplate->active = $dbresult->fields['active'];
  42. $onetemplate->default = $dbresult->fields['default_template'];
  43. $onetemplate->content = $dbresult->fields['template_content'];
  44. $onetemplate->encoding = $dbresult->fields['encoding'];
  45. $onetemplate->stylesheet = $dbresult->fields['stylesheet'];
  46. $onetemplate->modified_date = $db->UnixTimeStamp($dbresult->fields['modified_date']);
  47. $result[] = $onetemplate;
  48. $dbresult->MoveNext();
  49. }
  50. if ($dbresult) $dbresult->Close();
  51. return $result;
  52. }
  53. function & LoadTemplateByID($id)
  54. {
  55. $result = false;
  56. $gCms = cmsms();
  57. $db = cms_db();
  58. $cache = &$gCms->TemplateCache;
  59. if (isset($cache[$id]))
  60. {
  61. return $cache[$id];
  62. }
  63. $query = "SELECT template_id, template_name, template_content, stylesheet, encoding, active, default_template, modified_date FROM ".cms_db_prefix()."templates WHERE template_id = ?";
  64. $row = $db->GetRow($query, array($id));
  65. if($row)
  66. {
  67. $onetemplate = new Template();
  68. $onetemplate->id = $row['template_id'];
  69. $onetemplate->name = $row['template_name'];
  70. $onetemplate->content = $row['template_content'];
  71. $onetemplate->stylesheet = $row['stylesheet'];
  72. $onetemplate->encoding = $row['encoding'];
  73. $onetemplate->default = $row['default_template'];
  74. $onetemplate->active = $row['active'];
  75. $onetemplate->modified_date = $db->UnixTimeStamp($row['modified_date']);
  76. $result =& $onetemplate;
  77. if (!isset($cache[$onetemplate->id]))
  78. {
  79. $cache[$onetemplate->id] =& $onetemplate;
  80. }
  81. }
  82. return $result;
  83. }
  84. function LoadTemplateByContentAlias($alias)
  85. {
  86. $result = false;
  87. $gCms = cmsms();
  88. $db = cms_db();
  89. $query = "SELECT t.template_id, t.template_name, t.template_content, t.stylesheet, t.encoding, t.active, t.default_template, t.modified_date FROM ".cms_db_prefix()."templates t INNER JOIN ".cms_db_prefix()."content c ON c.template_id = t.template_id WHERE (c.content_alias = ? OR c.content_id = ?) AND c.active = 1";
  90. $row = $db->GetRow($query, array($alias, $alias));
  91. if ($row)
  92. {
  93. $onetemplate = new Template();
  94. $onetemplate->id = $row['template_id'];
  95. $onetemplate->name = $row['template_name'];
  96. $onetemplate->content = $row['template_content'];
  97. $onetemplate->stylesheet = $row['stylesheet'];
  98. $onetemplate->encoding = $row['encoding'];
  99. $onetemplate->default = $row['default_template'];
  100. $onetemplate->active = $row['active'];
  101. $onetemplate->modified_date = $db->UnixTimeStamp($row['modified_date']);
  102. $result = $onetemplate;
  103. }
  104. return $result;
  105. }
  106. function LoadTemplateAndContentDates($alias)
  107. {
  108. $result = array();
  109. $gCms = cmsms();
  110. $db = cms_db();
  111. $query = "SELECT c.modified_date AS c_date, t.modified_date AS t_date FROM ".cms_db_prefix()."templates t INNER JOIN ".cms_db_prefix()."content c ON c.template_id = t.template_id WHERE (c.content_alias = ? OR c.content_id = ?) AND c.active = 1";
  112. $dbresult = $db->Execute($query, array($alias, $alias));
  113. while ($dbresult && !$dbresult->EOF)
  114. {
  115. $result[] = $dbresult->fields['c_date'];
  116. $result[] = $dbresult->fields['t_date'];
  117. $dbresult->MoveNext();
  118. }
  119. if ($dbresult) $dbresult->Close();
  120. return $result;
  121. }
  122. function LoadDefaultTemplate()
  123. {
  124. $result = false;
  125. $gCms = cmsms();
  126. $db = cms_db();
  127. $query = "SELECT template_id, template_name, template_content, stylesheet, encoding, active, default_template FROM ".cms_db_prefix()."templates WHERE default_template = 1";
  128. $row = $db->GetRow($query);
  129. if($row)
  130. {
  131. $onetemplate = new Template();
  132. $onetemplate->id = $row['template_id'];
  133. $onetemplate->name = $row['template_name'];
  134. $onetemplate->content = $row['template_content'];
  135. $onetemplate->stylesheet = $row['stylesheet'];
  136. $onetemplate->encoding = $row['encoding'];
  137. $onetemplate->default = $row['default_template'];
  138. $onetemplate->active = $row['active'];
  139. $result = $onetemplate;
  140. }
  141. return $result;
  142. }
  143. function UsageCount($id)
  144. {
  145. $result = 0;
  146. $gCms = cmsms();
  147. $db = cms_db();
  148. $query = "SELECT count(*) as the_count FROM ".cms_db_prefix()."content WHERE template_id = ?";
  149. $row = $db->GetRow($query, array($id));
  150. if($row)
  151. {
  152. $result = $row['the_count'];
  153. }
  154. return $result;
  155. }
  156. function InsertTemplate($template)
  157. {
  158. $result = -1;
  159. $gCms = cmsms();
  160. $db = cms_db();
  161. $time = $db->DBTimeStamp(time());
  162. $new_template_id = $db->GenID(cms_db_prefix()."templates_seq");
  163. $query = "INSERT INTO ".cms_db_prefix()."templates (template_id, template_name, template_content, stylesheet, encoding, active, default_template, create_date, modified_date) VALUES (?,?,?,?,?,?,?,".$time.",".$time.")";
  164. $dbresult = $db->Execute($query, array($new_template_id, $template->name, $template->content, $template->stylesheet, $template->encoding, $template->active, $template->default));
  165. if ($dbresult !== false)
  166. {
  167. $result = $new_template_id;
  168. do_cross_reference($new_template_id, 'template', $template->content);
  169. }
  170. return $result;
  171. }
  172. function UpdateTemplate($template)
  173. {
  174. $result = false;
  175. $gCms = cmsms();
  176. $db = cms_db();
  177. $time = $db->DBTimeStamp(time());
  178. $query = "UPDATE ".cms_db_prefix()."templates SET template_name = ?, template_content = ?, stylesheet = ?, encoding = ?, active = ?, default_template = ?, modified_date = ".$time." WHERE template_id = ?";
  179. $dbresult = $db->Execute($query,array($template->name,$template->content,$template->stylesheet,$template->encoding,$template->active,$template->default,$template->id));
  180. if ($dbresult !== false)
  181. {
  182. $result = true;
  183. do_cross_reference($template->id, 'template', $template->content);
  184. }
  185. return $result;
  186. }
  187. function DeleteTemplateByID($id)
  188. {
  189. $result = false;
  190. $gCms = cmsms();
  191. $db = cms_db();
  192. $query = "DELETE FROM ".cms_db_prefix()."css_assoc WHERE assoc_type = 'template' AND assoc_to_id = ?";
  193. $dbresult = $db->Execute($query,array($id));
  194. $query = "DELETE FROM ".cms_db_prefix()."templates where template_id = ?";
  195. $dbresult = $db->Execute($query,array($id));
  196. if ($dbresult !== false)
  197. {
  198. $result = true;
  199. remove_cross_references($id, 'template');
  200. }
  201. return $result;
  202. }
  203. function CountPagesUsingTemplateByID($id)
  204. {
  205. $result = 0;
  206. $gCms = cmsms();
  207. $db = cms_db();
  208. $query = "SELECT count(*) AS count FROM ".cms_db_prefix()."content WHERE template_id = ?";
  209. $row = $db->GetRow($query,array($id));
  210. if ($row)
  211. {
  212. if (isset($row["count"]))
  213. {
  214. $result = $row["count"];
  215. }
  216. }
  217. return $result;
  218. }
  219. function StylesheetsUsed()
  220. {
  221. $result = 0;
  222. $gCms = cmsms();
  223. $db = cms_db();
  224. $query = "SELECT count(*) AS count FROM ".cms_db_prefix()."templates WHERE stylesheet is not null and stylesheet != ''";
  225. $row = $db->GetRow($query);
  226. if ($row)
  227. {
  228. if (isset($row["count"]))
  229. {
  230. $result = $row["count"];
  231. }
  232. }
  233. return $result;
  234. }
  235. function TouchAllTemplates($blob_name='')
  236. {
  237. $result = false;
  238. $gCms = cmsms();
  239. $db = cms_db();
  240. $dbresult = false;
  241. $time = $db->DBTimeStamp(time());
  242. if ($blob_name != '')
  243. {
  244. $query = "UPDATE ".cms_db_prefix()."templates SET modified_date = ".$time." WHERE template_content like ?";
  245. $dbresult = $db->Execute($query,array('%{html_blob name="'.$blob_name.'"}%'));
  246. }
  247. else
  248. {
  249. $query = "UPDATE ".cms_db_prefix()."templates SET modified_date = ".$time;
  250. $dbresult = $db->Execute($query);
  251. }
  252. if ($dbresult !== false)
  253. {
  254. $result = true;
  255. }
  256. return $result;
  257. }
  258. function CheckExistingTemplateName($name, $id = -1)
  259. {
  260. $result = false;
  261. $gCms = cmsms();
  262. $db = cms_db();
  263. $query = "SELECT template_id from ".cms_db_prefix()."templates WHERE template_name = ?";
  264. $attrs = array($name);
  265. if ($id > -1)
  266. {
  267. $query .= ' AND template_id != ?';
  268. $attrs[] = $id;
  269. }
  270. $row = $db->GetRow($query,$attrs);
  271. if ($row)
  272. {
  273. $result = true;
  274. }
  275. return $result;
  276. }
  277. function TemplateDropdown($id = 'template_id', $selected_id = -1, $othertext = '', $show_hidden = false)
  278. {
  279. $result = "";
  280. global $gCms;
  281. $templateops = $gCms->GetTemplateOperations();
  282. $alltemplates = $templateops->LoadTemplates();
  283. if (count($alltemplates) > 0)
  284. {
  285. $result .= '<select name="'.$id.'"';
  286. if ($othertext != '')
  287. {
  288. $result .= ' ' . $othertext;
  289. }
  290. $result .= '>';
  291. #$result .= '<option value="">Select Template</option>';
  292. foreach ($alltemplates as $onetemplate)
  293. {
  294. if ($onetemplate->active == true || $show_hidden == true)
  295. {
  296. $result .= '<option value="'.$onetemplate->id.'"';
  297. if ($onetemplate->id == $selected_id || ($selected_id == -1 && $onetemplate->default == true))
  298. {
  299. $result .= ' selected="selected"';
  300. }
  301. $result .= '>'.$onetemplate->name.'</option>';
  302. }
  303. }
  304. $result .= '</select>';
  305. }
  306. return $result;
  307. }
  308. }
  309. ?>