File:
0.00.1a/core/Skin.php (
View as Code)
1: 2: /* -------------------------------------------------------------
3: This file is part of FreeDESK
4:
5: FreeDESK is (C) Copyright 2012 David Cutting
6:
7: FreeDESK is free software: you can redistribute it and/or modify
8: it under the terms of the GNU General Public License as published by
9: the Free Software Foundation, either version 3 of the License, or
10: (at your option) any later version.
11:
12: FreeDESK is distributed in the hope that it will be useful,
13: but WITHOUT ANY WARRANTY; without even the implied warranty of
14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: GNU General Public License for more details.
16:
17: You should have received a copy of the GNU General Public License
18: along with FreeDESK. If not, see www.gnu.org/licenses
19:
20: For more information see www.purplepixie.org/freedesk/
21: -------------------------------------------------------------- */
22:
23: /**
24: * Skin class - controls skin elements as required
25: **/
26: class Skin
27: {
28: /**
29: * FreeDESK instance
30: **/
31: private $DESK = null;
32:
33: /**
34: * Current Skin
35: **/
36: private $Skin = "default";
37:
38: /**
39: * Default/Fallback Skin
40: **/
41: private $Default = "default";
42:
43: /**
44: * Constructor
45: * @param mixed &$freeDESK FreeDESK instance pointer
46: **/
47: function Skin(&$freeDESK)
48: {
49: $this->DESK = &$freeDESK;
50: }
51:
52: /**
53: * Set skin
54: * @param string Skin
55: **/
56: function SetSkin($skin)
57: {
58: $this->Skin = $skin;
59: }
60:
61: /**
62: * Get a (physical) file location
63: * @param string $file Filename
64: * @return mixed Filepath (string) or bool false on failure to find
65: **/
66: function GetFileLocation($file)
67: {
68: $skinfile = $this->DESK->BaseDir . "skin/" . $this->Skin . "/" . $file;
69: $deffile = $this->DESK->BaseDir . "skin/" . $this->Default . "/" . $file;
70: if ($skinfile != $deffile) // seperate files to try
71: {
72: if (file_exists($skinfile))
73: return $skinfile;
74: }
75: // Try the default
76: if (file_exists($deffile))
77: return $deffile;
78: else
79: return false; // no file found
80: }
81:
82: /**
83: * Get a web location for a file
84: * @param string $file Filename
85: * @return mixed Filepath (string) or bool false on failure to find
86: **/
87: function GetWebLocation($file)
88: {
89: $webfile = "";
90: $skinfile = $this->DESK->BaseDir . "skin/" . $this->Skin . "/" . $file;
91: $deffile = $this->DESK->BaseDir . "skin/" . $this->Default . "/" . $file;
92: if ($skinfile != $deffile) // seperate files to try
93: {
94: if (file_exists($skinfile))
95: $webfile="skin/".$this->Skin."/".$file;
96: }
97: // Try the default
98: if (($webfile=="")&&(file_exists($deffile)))
99: $webfile="skin/".$this->Default."/".$file;
100: else
101: return false; // no file found
102:
103: return $webfile;
104: }
105:
106: /**
107: * Include a file
108: * @param string $file Filename
109: * @param array $data Data element for skin element (optional)
110: * @return bool True on success or false on failure
111: **/
112: function IncludeFile($file, $data=array())
113: {
114: $filename=$this->GetFileLocation($file);
115: if ($filename === false) return false; // file not found
116: $DESK=&$this->DESK;
117:
118: include($filename);
119: }
120:
121: /**
122: * Get a file contents
123: * @param string $file Filename
124: * @return mixed Contents on success or bool false on failure
125: **/
126: function GetFile($file)
127: {
128: $filename=$this->GetFileLocation($file);
129: if ($filename === false) return false; // file not found
130:
131: return file_get_contents($filename);
132: }
133:
134: /**
135: * Common Header Items Display
136: **/
137: function CommonHeader()
138: {
139: $scripts = array("js/freedesk.js","js/ajax.js","js/alerts.js","js/search.js","js/request.js");
140:
141: $pim_scripts = $this->DESK->PluginManager->GetScripts();
142:
143: foreach($pim_scripts as $scr)
144: $scripts[]=$scr;
145:
146: $css = $this->DESK->PluginManager->GetCSS();
147:
148: $mode = 1; // 0 - standard, 1 std with no cache, 2 include inline
149:
150: if ($mode==0)
151: {
152: foreach($scripts as $script)
153: echo "\n";
154: foreach($css as $stylesheet)
155: echo "\n";
156: }
157: else if ($mode==1)
158: {
159: mt_srand(microtime()*1000000);
160: $len=32;
161: $chars="abcdefghijklmnopqrstuvwxyz";
162: $clen=strlen($chars);
163: foreach($scripts as $script)
164: {
165: $nc="";
166: for($a=0; $a<$len; ++$a)
167: {
168: $nc.=$chars[mt_rand(0,$clen-1)];
169: }
170: echo "\n";
171: }
172: foreach($css as $stylesheet)
173: {
174: $nc="";
175: for($a=0; $a<$len; ++$a)
176: {
177: $nc.=$chars[mt_rand(0,$clen-1)];
178: }
179: echo "\n";
180: }
181:
182: }
183: else
184: {
185: echo "\n";
192:
193: echo "\n\n";
200: }
201:
202: if ($this->DESK->ContextManager->IsOpen())
203: {
204: // Login-specific settings such as SID and request statuses
205: echo "\n";
230: }
231:
232:
233: }
234:
235: /**
236: * Common Footer Items (pre end of HTML) display
237: **/
238: function CommonFooter()
239: {
240: echo "\n";
241: echo "242: echo "\n";
243: echo "\n";
244: }
245:
246: /**
247: * Common body items (just after the body tag) display
248: **/
249: function CommonBody()
250: {
251: echo "\n";
252: $this->IncludeFile("login.php");
253: echo "\n";
254: echo "\n";
255: }
256:
257: }
258: ?>
259:
260:
261:
262: