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
cmsmadesimple-2-0 / lib / classes / class.cms_stylesheet.php
100644 120 lines (108 sloc) 3.815 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
<?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 stylesheet in the database.
*
* @author Ted Kulp
* @since 0.11
* @version $Revision$
* @modifiedby $LastChangedBy$
* @lastmodified $Date$
* @license GPL
**/
class CmsStylesheet extends CmsObjectRelationalMapping
{
  var $params = array('id' => -1, 'name' => '', 'value' => '', 'media_type' => 'all', 'active' => 1);
  var $table = 'stylesheets';
  var $media_types = array(
      array('name' => "all"),
      array('name' => "aural"),
      array('name' => "braille"),
      array('name' => "embossed"),
      array('name' => "handheld"),
      array('name' => "print"),
      array('name' => "projection"),
      array('name' => "screen"),
      array('name' => "tty"),
      array('name' => "tv")
    );
  
  public function validate()
  {
    $this->validate_not_blank('name', lang('nofieldgiven',array(lang('name'))));
    $this->validate_not_blank('value', lang('nofieldgiven',array(lang('content'))));
    if ($this->name != '')
    {
      $result = $this->find_all_by_name($this->name);
      if (count($result) > 0)
      {
        if ($result[0]->id != $this->id)
        {
          $this->add_validation_error(lang('stylesheetexists'));
        }
      }
    }
  }
  
  public function get_media_types_as_array()
  {
    return explode(', ', $this->media_type);
  }
  
  public function setup()
  {
    $this->create_has_many_association('template_associations', 'template_stylesheet_association', 'stylesheet_id');
    $this->create_has_and_belongs_to_many_association('templates', 'template', 'stylesheet_template_assoc', 'template_id', 'stylesheet_id');
    $this->create_has_and_belongs_to_many_association('active_templates', 'template', 'stylesheet_template_assoc', 'template_id', 'stylesheet_id', array('conditions' => 'templates.active = 1'));
  }
  
  public function assign_template_by_id($template_id)
  {
    $template = cms_orm('template')->find_by_id($template_id);
    if ($template)
    {
      $template->assign_stylesheet_by_id($this->id);
    }
  }
  
  public function remove_assigned_template_by_id($template_id)
  {
    $template = cms_orm('template')->find_by_id($template_id);
    if ($template)
    {
      $template->remove_assigned_stylesheet_by_id($this->id);
    }
  }
  
  //Callback handlers
  function before_save()
  {
    CmsEvents::send_event( 'Core', ($this->id == -1 ? 'AddStylesheetPre' : 'EditStylesheetPre'), array('stylesheet' => &$this));
  }
  
  function after_save()
  {
    CmsEvents::send_event( 'Core', ($this->create_date == $this->modified_date ? 'AddStylesheetPost' : 'EditStylesheetPost'), array('stylesheet' => &$this));
  }
  
  function before_delete()
  {
    CmsEvents::send_event('Core', 'DeleteStylesheetPre', array('stylesheet' => &$this));
  }
  
  function after_delete()
  {
    CmsEvents::send_event('Core', 'DeleteStylesheetPost', array('stylesheet' => &$this));
  }
}
 
class Stylesheet extends CmsStylesheet {}
 
# vim:ts=4 sw=4 noet
?>