GetDb(); $result = array(); $query = "SELECT template_id, template_name, template_content, stylesheet, encoding, active, default_template, modified_date FROM ".cms_db_prefix()."templates ORDER BY template_name"; $dbresult = $db->Execute($query); while ($dbresult && !$dbresult->EOF) { $onetemplate = new Template(); $onetemplate->id = $dbresult->fields['template_id']; $onetemplate->name = $dbresult->fields['template_name']; $onetemplate->active = $dbresult->fields['active']; $onetemplate->default = $dbresult->fields['default_template']; $onetemplate->content = $dbresult->fields['template_content']; $onetemplate->encoding = $dbresult->fields['encoding']; $onetemplate->stylesheet = $dbresult->fields['stylesheet']; $onetemplate->modified_date = $db->UnixTimeStamp($dbresult->fields['modified_date']); $result[] = $onetemplate; $this->_toCache($onetemplate); $dbresult->MoveNext(); } if ($dbresult) $dbresult->Close(); return $result; } protected function &_findCachedDefault() { foreach( $this->_templateCache as $key => &$object ) { if( $object->default ) return $object; } $res = null; return $res; } protected function &_fromCache($id) { if( is_numeric($id) ) { if( isset($this->_templateCache[$id]) ) return $this->_templateCache[$id]; } else if( is_string($id) ) { foreach( $this->_templateCache as $key => &$object ) { if( $object->name == $id ) return $this->_templateCache[$key]; } } $res = null; return $res; } protected function _toCache(Template& $template) { $this->_templateCache[$template->id] = $template; } public function & LoadTemplateByID($id,$sparse = FALSE) { $onetemplate = null; if( ($onetemplate = $this->_fromCache($id)) ) { return $onetemplate; } $db = cmsms()->GetDb(); $query = ''; $where = ' WHERE template_id = ?'; if( !is_numeric($id) ) { $where = ' WHERE template_name = ?'; } if( $sparse ) { $query = "SELECT template_id, template_name, stylesheet, active, default_template, modified_date FROM ".cms_db_prefix().'templates'; } else { $query = "SELECT template_id, template_name, template_content, stylesheet, encoding, active, default_template, modified_date FROM ".cms_db_prefix()."templates"; } $row = $db->GetRow($query.$where, array($id)); if($row) { $onetemplate = new Template(); $onetemplate->id = $row['template_id']; $onetemplate->name = $row['template_name']; if( isset($row['template_content']) ) $onetemplate->content = $row['template_content']; $onetemplate->stylesheet = $row['stylesheet']; if( isset($row['encoding']) ) $onetemplate->encoding = $row['encoding']; $onetemplate->default = $row['default_template']; $onetemplate->active = $row['active']; $onetemplate->modified_date = $db->UnixTimeStamp($row['modified_date']); $this->_toCache($onetemplate); } return $onetemplate; } function LoadTemplateByContentAlias($alias) { $result = null; if( ($result = $this->_fromCache($alias)) ) { return $result; } $gCms = cmsms(); $db = $gCms->GetDb(); $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"; $row = &$db->GetRow($query, array($alias, $alias)); if ($row) { $result = new Template(); $result->id = $row['template_id']; $result->name = $row['template_name']; $result->content = $row['template_content']; $result->stylesheet = $row['stylesheet']; $result->encoding = $row['encoding']; $result->default = $row['default_template']; $result->active = $row['active']; $result->modified_date = $db->UnixTimeStamp($row['modified_date']); $this->_toCache($result); } return $result; } function LoadTemplateAndContentDates($alias) { $result = array(); $gCms = cmsms(); $db = $gCms->GetDb(); $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"; $dbresult = &$db->Execute($query, array($alias, $alias)); while ($dbresult && !$dbresult->EOF) { $result[] = $dbresult->fields['c_date']; $result[] = $dbresult->fields['t_date']; $dbresult->MoveNext(); } if ($dbresult) $dbresult->Close(); return $result; } function LoadDefaultTemplate() { $result = null; if( ($result = $this->_findCachedDefault()) ) { return $result; } $db = cmsms()->GetDb(); $query = "SELECT template_id, template_name, template_content, stylesheet, encoding, active, default_template, create_date, modified_date FROM ".cms_db_prefix()."templates WHERE default_template = 1"; $row = &$db->GetRow($query); if($row) { $result = new Template(); $result->id = $row['template_id']; $result->name = $row['template_name']; $result->content = $row['template_content']; $result->stylesheet = $row['stylesheet']; $result->encoding = $row['encoding']; $result->default = $row['default_template']; $result->active = $row['active']; $result->modified_date = $db->UnixTimeStamp($row['modified_date']); $this->_toCache($result); } return $result; } function UsageCount($id) { $result = 0; $gCms = cmsms(); $db = $gCms->GetDb(); $query = "SELECT count(*) as the_count FROM ".cms_db_prefix()."content WHERE template_id = ?"; $row = &$db->GetRow($query, array($id)); if($row) { $result = $row['the_count']; } return $result; } function InsertTemplate($template) { $result = -1; $gCms = cmsms(); $db = $gCms->GetDb(); $time = $db->DBTimeStamp(time()); $new_template_id = $db->GenID(cms_db_prefix()."templates_seq"); $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.")"; $dbresult = $db->Execute($query, array($new_template_id, $template->name, $template->content, $template->stylesheet, $template->encoding, $template->active, $template->default)); if ($dbresult !== false) { $result = $new_template_id; } return $result; } function UpdateTemplate($template) { $result = false; $gCms = cmsms(); $db = $gCms->GetDb(); $time = $db->DBTimeStamp(time()); $query = "UPDATE ".cms_db_prefix()."templates SET template_name = ?, template_content = ?, stylesheet = ?, encoding = ?, active = ?, default_template = ?, modified_date = ".$time." WHERE template_id = ?"; $dbresult = $db->Execute($query,array($template->name,$template->content,$template->stylesheet,$template->encoding,$template->active,$template->default,$template->id)); if ($dbresult !== false) { $result = true; } return $result; } function DeleteTemplateByID($id) { $result = false; $gCms = cmsms(); $db = $gCms->GetDb(); $query = "DELETE FROM ".cms_db_prefix()."css_assoc WHERE assoc_type = 'template' AND assoc_to_id = ?"; $dbresult = $db->Execute($query,array($id)); $query = "DELETE FROM ".cms_db_prefix()."templates where template_id = ?"; $dbresult = $db->Execute($query,array($id)); if ($dbresult !== false) { $result = true; } return $result; } function CountPagesUsingTemplateByID($id) { $result = 0; $gCms = cmsms(); $db = $gCms->GetDb(); $query = "SELECT count(*) AS count FROM ".cms_db_prefix()."content WHERE template_id = ?"; $row = &$db->GetRow($query,array($id)); if ($row) { if (isset($row["count"])) { $result = $row["count"]; } } return $result; } function StylesheetsUsed() { $result = 0; $gCms = cmsms(); $db = $gCms->GetDb(); $query = "SELECT count(*) AS count FROM ".cms_db_prefix()."templates WHERE stylesheet is not null and stylesheet != ''"; $row = &$db->GetRow($query); if ($row) { if (isset($row["count"])) { $result = $row["count"]; } } return $result; } function TouchAllTemplates($blob_name='') { $result = false; $gCms = cmsms(); $db = $gCms->GetDb(); $dbresult = false; $time = $db->DBTimeStamp(time()); if ($blob_name != '') { $query = "UPDATE ".cms_db_prefix()."templates SET modified_date = ".$time." WHERE template_content like ?"; $dbresult = $db->Execute($query,array('%{html_blob name="'.$blob_name.'"}%')); } else { $query = "UPDATE ".cms_db_prefix()."templates SET modified_date = ".$time; $dbresult = $db->Execute($query); } if ($dbresult !== false) { $result = true; } return $result; } function CheckExistingTemplateName($name, $id = -1) { $result = false; $gCms = cmsms(); $db = $gCms->GetDb(); $query = "SELECT template_id from ".cms_db_prefix()."templates WHERE template_name = ?"; $attrs = array($name); if ($id > -1) { $query .= ' AND template_id != ?'; $attrs[] = $id; } $row = &$db->GetRow($query,$attrs); if ($row) { $result = true; } return $result; } function TemplateDropdown($id = 'template_id', $selected_id = -1, $othertext = '', $show_hidden = false) { $result = ""; $gCms = cmsms(); $templateops = $gCms->GetTemplateOperations(); $alltemplates = $templateops->LoadTemplates(); if (count($alltemplates) > 0) { $result .= ''; } return $result; } } ?>