public
Description: Git mirror of the CMS Made Simple 2.0 rewrite
Homepage: http://cmsmadesimple.org
Clone URL: git://github.com/tedkulp/cmsmadesimple-2-0.git
tedkulp (author)
Sun Apr 27 06:27:38 -0700 2008
commit  aec01eb1af4c1dbb19d98c5bc656d0771a199a7f
tree    24bf0a40b77798c9f9e14317a7ac83bd77317d39
parent  d0c7ce152c41ceaef9472cf23f6be1a732ba1151
cmsmadesimple-2-0 / lib / classes / class.cms_page_info.php
100644 127 lines (111 sloc) 3.734 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php // -*- mode:php; tab-width:4; indent-tabs-mode:t; c-basic-offset:4; -*-
#CMS - CMS Made Simple
#(c)2004-2008 by Ted Kulp (ted@cmsmadesimple.org)
#This project's homepage is: http://cmsmadesimple.org
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#$Id$
 
/**
* Represents a "page" which consists of different variables virtually
* composited together.
*
* @author Ted Kulp
* @since 0.11
* @version $Revision$
* @modifiedby $LastChangedBy$
* @lastmodified $Date$
* @license GPL
**/
class CmsPageInfo extends CmsObject
{
  var $content_id = -1;
  var $content_title = '';
  var $content_alias = '';
  var $content_menutext = '';
  var $content_titleattribute = '';
  var $content_hierarchy = '';
  var $content_id_hierarchy = '';
  var $content_type = '';
  var $content_props;
  var $content_metadata = '';
  var $content_modified_date = -1;
  var $content_created_date = -1;
  var $content_last_modified_date = -1;
  var $content_last_modified_by_id = -1;
  var $template_id = -1;
  var $template_encoding = '';
  var $template_modified_date = -1;
  var $cachable = false;
 
  function __construct()
  {
    parent::__construct();
 
    $this->content_props = array();
    $this->content_last_modified_date = CmsCache::get_instance()->call(array(&$this, 'get_max_modified_date'));
  }
  
  public function get_max_modified_date()
  {
    $db = cms_db();
 
    $query = 'SELECT MAX(modified_date) AS thedate FROM '.cms_db_prefix().'content c';
    $row = $db->GetRow($query);
 
    if ($row)
    {
      return $db->UnixTimeStamp($row['thedate']);
    }
    
    return -1;
  }
  
  public function send_headers()
  {
    header("Content-Type: " . cmsms()->variables['content-type'] . "; charset=" . CmsResponse::get_encoding());
  }
  
  /**
   * Renders the given pageinfo object based on it's assigned content and template
   * parts.
   *
   * @return string The rendered html
   **/
  public function render()
  {
    $html = '';
    $cached = false;
    
    $gCms = cmsms();
    $smarty = cms_smarty();
    
    $id = CmsRequest::get_id_from_request();
 
    #If this is a case where a module doesn't want a template to be shown, just disable caching
    if (isset($id) && $id != '' && isset($_REQUEST[$id.'showtemplate']) && ($_REQUEST[$id.'showtemplate'] == 'false' || $_REQUEST[$id.'showtemplate'] == false))
    {
      $html = $smarty->fetch('template:notemplate') . "\n";
    }
    else
    {
      //$smarty->caching = false;
      //$smarty->compile_check = true;
      ($smarty->is_cached('template:'.$this->template_id)?$cached="":$cached="not ");
      // Added HTTP_HOST here to work with multisites - SK
      $html = $smarty->fetch('template:'.$this->template_id.$_SERVER['HTTP_HOST']) . "\n";
      if (isset($_REQUEST['tmpfile']))
      {
        $smarty->clear_compiled_tpl('template:'.$this->template_id);
      }
    }
 
    if (!$cached)
    {
      CmsEvents::send_event('Core', 'ContentPostRenderNonCached', array(&$html));
    }
 
    CmsEvents::send_event('Core', 'ContentPostRender', array('content' => &$html));
    
    return $html;
  }
}
 
# vim:ts=4 sw=4 noet
?>