1: <?php
2:
3: if (!defined('XOOPS_ROOT_PATH')) exit();
4:
5: class LegacyRenderThemeObject extends XoopsSimpleObject
6: {
7: var $mPackage = array();
8: var $mActiveResource = true;
9:
10: function LegacyRenderThemeObject()
11: {
12: static $initVars;
13: if (isset($initVars)) {
14: $this->mVars = $initVars;
15: return;
16: }
17: $this->initVar('id', XOBJ_DTYPE_INT, '', true);
18: $this->initVar('name', XOBJ_DTYPE_STRING, '', true, 255);
19: $this->initVar('tplset_id', XOBJ_DTYPE_INT, '0', true);
20: $this->initVar('enable_select', XOBJ_DTYPE_BOOL, '0', true);
21: $initVars=$this->mVars;
22: }
23:
24: function loadPackage()
25: {
26: $themeDir = XOOPS_THEME_PATH . "/" . $this->get('name');
27:
28: if (file_exists($mnfFile = $themeDir . "/manifesto.ini.php")) {
29: $iniHandler = new XCube_IniHandler($mnfFile, true);
30: $this->mPackage = $iniHandler->getAllConfig();
31: }
32:
33: if (isset($this->mPackage['Manifesto'])) {
34:
35:
36:
37: if (isset($this->mPackage['Manifesto']) && isset($this->mPackage['Manifesto']['Depends'])) {
38: $this->mActiveResource = ($this->mPackage['Manifesto']['Depends'] == "Legacy_RenderSystem");
39: }
40: }
41: else {
42: $file = XOOPS_THEME_PATH . "/" . $this->get('name') . "/theme.html";
43: $this->mActiveResource = file_exists($file);
44: }
45: }
46:
47: function isActiveResource()
48: {
49: return $this->mActiveResource;
50: }
51: }
52:
53: class LegacyRenderThemeHandler extends XoopsObjectGenericHandler
54: {
55: var $mTable = "legacyrender_theme";
56: var $mPrimary = "id";
57: var $mClass = "LegacyRenderThemeObject";
58:
59: function &getByName($themeName)
60: {
61: $criteria = new Criteria('name', $themeName);
62: $obj =& $this->getObjects($criteria);
63: if (count($obj) > 0) {
64: return $obj[0];
65: }
66: else {
67: $obj =& $this->create();
68: return $obj;
69: }
70: }
71:
72: 73: 74:
75: function searchThemes()
76: {
77: $themeList = array();
78:
79: if($handler=opendir(XOOPS_THEME_PATH)) {
80: while(($dir=readdir($handler))!==false) {
81: if($dir=="." || $dir=="..") {
82: continue;
83: }
84:
85: $themeDir=XOOPS_THEME_PATH."/".$dir;
86: if(is_dir($themeDir)) {
87: $manifesto = array();
88: if (file_exists($mnfFile = $themeDir . "/manifesto.ini.php")) {
89: $iniHandler = new XCube_IniHandler($mnfFile, true);
90: $manifesto = $iniHandler->getAllConfig();
91: }
92:
93: if(count($manifesto) > 0) {
94:
95:
96:
97: if(isset($manifesto['Manifesto']) && isset($manifesto['Manifesto']['Depends']) && preg_match('/Legacy_RenderSystem(\s|,|$)/', $manifesto['Manifesto']['Depends'])) {
98: $themeList[]=$dir;
99: }
100: }
101: else {
102: $file=$themeDir."/theme.html";
103: if(file_exists($file)) {
104: $themeList[]=$dir;
105: }
106: }
107: }
108: }
109: closedir($handler);
110: }
111:
112: return $themeList;
113: }
114:
115: function updateThemeList()
116: {
117: $diskThemeNames = $this->searchThemes();
118: $DBthemes =& $this->getObjects();
119:
120:
121:
122:
123: foreach ($diskThemeNames as $name) {
124: $findFlag = false;
125: foreach ($DBthemes as $theme) {
126: if ($theme->get('name') == $name) {
127: $findFlag = true;
128: break;
129: }
130: }
131:
132:
133:
134:
135: if (!$findFlag) {
136: $obj =& $this->create();
137: $obj->set('name', $name);
138: $this->insert($obj, true);
139: }
140: }
141:
142:
143:
144:
145:
146: foreach ($DBthemes as $theme) {
147: if (!in_array($theme->get('name'), $diskThemeNames)) {
148: $this->delete($theme, true);
149: }
150: }
151: }
152: }
153:
154: ?>
155: