OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / include / manager / systemManager.php
1 <?php
2 /**
3  * システム制御マネージャー
4  *
5  *  主にシステムの動作に関わる制御の仲介を行う
6  *
7  * PHP versions 5
8  *
9  * LICENSE: This source file is licensed under the terms of the GNU General Public License.
10  *
11  * @package    Magic3 Framework
12  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
13  * @copyright  Copyright 2006-2013 Magic3 Project.
14  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
15  * @version    SVN: $Id: systemManager.php 6173 2013-07-16 02:23:00Z fishbone $
16  * @link       http://www.magic3.org
17  */
18 require_once(M3_SYSTEM_INCLUDE_PATH . '/common/core.php');              // Magic3コアクラス
19
20 class SystemManager extends Core
21 {
22         private $_systemConfigArray = array();                  // システム定義値
23         private $_siteDefArray = array();                       // サイト定義値
24         private $defaultAdminTemplateId;                                // 管理画面用テンプレートID
25         private $defaultTemplateId;                                             // PC用テンプレートID
26         private $defaultMobileTemplateId;                               // 携帯用テンプレートID
27         private $defaultSmartphoneTemplateId;                           // スマートフォン用テンプレートID
28         private $adminDefaultTheme;                     // 管理画面用jQueryUIテーマ
29         private $permitInitSystem;                                              // システム初期化可能かどうか
30         private $siteInPublic;                          // Webサイトの公開状況
31         private $sitePcInPublic;                        // PC用サイトの公開状況
32         private $siteMobileInPublic;            // 携帯用サイトの公開状況
33         private $siteSmartphoneInPublic;        // スマートフォン用サイトの公開状況
34         private $mobileAutoRedirect;            // 携帯の自動遷移
35         private $smartphoneAutoRedirect;        // スマートフォンの自動遷移
36         private $usePageCache;          // 表示キャッシュ機能を使用するかどうか
37         private $pageCacheLifetime;     // 画面キャッシュの更新時間(分)
38         private $useTemplateIdInSession;        // テンプレートIDをセッションに保存するかどうか
39         private $acceptLanguage;                        // アクセス可能言語
40         private $systemLanguages;                       // システムで利用可能な言語
41         private $hierarchicalPage;                      // 階層化ページを使用するかどうか
42         const CF_DEFAULT_LANG = 'default_lang';                 // デフォルト言語
43         const CF_PERMIT_INIT_SYSTEM = 'permit_init_system';                                     // システム初期化可能かどうか
44         const CF_PERMIT_CHANGE_LANG = 'permit_change_lang';                                     // 言語変更可能かどうか
45         const CF_USE_TEMPLATE_ID_IN_SESSION = 'use_template_id_in_session';                     // セッションのテンプレートIDを使用するかどうか
46         const CF_REGENERATE_SESSION_ID = 'regenerate_session_id';                       // セッションIDを毎回更新するかどうか
47         const CF_SITE_IN_PUBLIC = 'site_in_public';     // Webサイトの公開状況
48         const CF_SITE_PC_IN_PUBLIC = 'site_pc_in_public';                               // PC用サイトの公開状況
49         const CF_SITE_MOBILE_IN_PUBLIC = 'site_mobile_in_public';               // 携帯用サイトの公開状況
50         const CF_SITE_SMARTPHONE_IN_PUBLIC = 'site_smartphone_in_public';               // スマートフォン用サイトの公開状況
51         const CF_USE_PAGE_CACHE = 'use_page_cache';             // 画面キャッシュ機能を使用するかどうか
52         const CF_PAGE_CACHE_LIFETIME = 'page_cache_lifetime';           // 画面キャッシュの更新時間(分)
53         const CF_DEFAULT_TEMPLATE                       = 'default_template';                   // システム定義値取得用キー(PC用デフォルトテンプレート)
54         const CF_DEFAULT_TEMPLATE_MOBILE        = 'mobile_default_template';    // システム定義値取得用キー(携帯用デフォルトテンプレート)
55         const CF_DEFAULT_TEMPLATE_SMARTPHONE    = 'smartphone_default_template';        // システム定義値取得用キー(スマートフォン用デフォルトテンプレート)
56         const CF_ADMIN_DEFAULT_THEME = 'admin_default_theme';           // 管理画面用jQueryUIテーマ
57         const CF_DEFAULT_THEME = 'default_theme';               // 一般画面用jQueryUIテーマ
58         const CF_ACCEPT_LANGUAGE        = 'accept_language';    // アクセス可能言語
59         const CF_ADMIN_DEFAULT_TEMPLATE = 'admin_default_template';             // 管理用デフォルトテンプレート
60         const CF_MOBILE_AUTO_REDIRECT = 'mobile_auto_redirect';         // 携帯の自動遷移
61         const CF_SMARTPHONE_AUTO_REDIRECT = 'smartphone_auto_redirect';         // スマートフォンの自動遷移
62         const CF_HIERARCHICAL_PAGE = 'hierarchical_page';               // 階層化ページを使用するかどうか
63         const DEFAULT_PAGE_CACHE_LIFETIME = 1440;               // デフォルトの画面キャッシュの更新時間(分)。1日ごと。
64         
65         /**
66          * コンストラクタ
67          */
68         function __construct()
69         {
70                 // 親クラスを呼び出す
71                 parent::__construct();
72                                                                                         
73                 // システムDBオブジェクト取得
74                 $this->db = $this->gInstance->getSytemDbObject();
75                 
76                 // 初期値を設定
77                 $this->defaultAdminTemplateId = '';                             // 管理画面用テンプレートID
78                 $this->defaultTemplateId = '';                                          // PC用テンプレートID
79                 $this->defaultMobileTemplateId = '';                            // 携帯用テンプレートID
80                 $this->defaultSmartphoneTemplateId = '';                        // スマートフォン用テンプレートID
81                 $this->adminDefaultTheme = '';                  // 管理画面用jQueryUIテーマ
82                 $this->permitInitSystem         = false;                        // システム初期化可能かどうか
83                 $this->siteInPublic = '1';                              // Webサイトの公開状況
84                 $this->sitePcInPublic = '1';                    // PC用サイトの公開状況
85                 $this->siteMobileInPublic = '1';                // 携帯用サイトの公開状況
86                 $this->siteSmartphoneInPublic = '1';    // スマートフォン用サイトの公開状況
87                 $this->mobileAutoRedirect = '0';                // 携帯の自動遷移
88                 $this->smartphoneAutoRedirect = '0';    // スマートフォンの自動遷移
89                 $this->usePageCache = '0';              // 表示キャッシュ機能を使用するかどうか
90                 $this->pageCacheLifetime = self::DEFAULT_PAGE_CACHE_LIFETIME;   // 画面キャッシュの更新時間(分)
91                 $this->useTemplateIdInSession = true;   // テンプレートIDをセッションに残すかどうか
92                 $this->acceptLanguage = array();                        // アクセス可能言語
93                 $this->systemLanguages = array('ja', 'en');                     // システムで利用可能な言語
94                 $this->hierarchicalPage = false;                        // 階層化ページを使用するかどうか
95         }
96         /**
97          * システム定義値を取得
98          *
99          * @param string $key    キーとなる項目値
100          * @return string               値
101          */
102         function getSystemConfig($key)
103         {
104                 $value = $this->_systemConfigArray[$key];
105                 if (isset($value)){
106                         return $value;
107                 } else {
108                         return '';
109                 }
110         }
111         /**
112          * システム定義値を更新
113          *
114          * @param string $key           キーとなる項目値
115          * @param string $value         値
116          * @return                                      true = 正常、false=異常
117          */
118         function updateSystemConfig($key, $value)
119         {
120                 $ret = $this->db->updateSystemConfig($key, $value);
121                 if ($ret) $this->_systemConfigArray[$key] = $value;
122                 return $ret;
123         }
124         /**
125          * サイト定義値を取得
126          *
127          * @param string $key    キーとなる項目値
128          * @return string               値
129          */
130         function getSiteDef($key)
131         {
132                 $value = $this->_siteDefArray[$key];
133                 if (isset($value)){
134                         return $value;
135                 } else {
136                         return '';
137                 }
138         }
139         /**
140          * システム定義値、サイト定義値をDBから取得
141          *
142          * @return bool                 true=取得成功、false=取得失敗
143          */
144         function _loadSystemConfig()
145         {
146                 $this->_systemConfigArray = array();
147                 $this->_siteDefArray = array();
148
149                 // システム定義を読み込み
150                 $ret = $this->db->getAllSystemConfig($rows);
151                 if ($ret){
152                         // 取得データを連想配列にする
153                         $configCount = count($rows);
154                         for ($i = 0; $i < $configCount; $i++){
155                                 $key = $rows[$i]['sc_id'];
156                                 $value = $rows[$i]['sc_value'];
157                                 $this->_systemConfigArray[$key] = $value;
158                         }
159                         // メンバー変数に再設定
160                         $this->defaultAdminTemplateId   = $this->getSystemConfig(self::CF_ADMIN_DEFAULT_TEMPLATE);                              // 管理画面用テンプレートID
161                         $this->defaultTemplateId                = $this->getSystemConfig(self::CF_DEFAULT_TEMPLATE);    // PC用テンプレートID
162                         $this->defaultMobileTemplateId  = $this->getSystemConfig(self::CF_DEFAULT_TEMPLATE_MOBILE);// 携帯用テンプレートID
163                         $this->defaultSmartphoneTemplateId = $this->getSystemConfig(self::CF_DEFAULT_TEMPLATE_SMARTPHONE);              // スマートフォン用テンプレートID
164                         $this->adminDefaultTheme = $this->getSystemConfig(self::CF_ADMIN_DEFAULT_THEME);                        // 管理画面用jQueryUIテーマ
165                         if ($this->getSystemConfig(self::CF_PERMIT_INIT_SYSTEM) == '1'){// システム初期化可能かどうか
166                                 $this->permitInitSystem = true;
167                         } else {
168                                 $this->permitInitSystem = false;
169                         }
170                         if ($this->db->getSystemConfig(self::CF_USE_TEMPLATE_ID_IN_SESSION) == '1'){// テンプレートIDをセッションに保存するかどうか
171                                 $this->useTemplateIdInSession = true;
172                         } else {
173                                 $this->useTemplateIdInSession = false;
174                         }
175                         $this->siteInPublic             = $this->getSystemConfig(self::CF_SITE_IN_PUBLIC);                      // Webサイトの公開状況
176                         if ($this->siteInPublic == '') $this->siteInPublic = '1';               // デフォルトは公開
177                         $this->sitePcInPublic           = $this->getSystemConfig(self::CF_SITE_PC_IN_PUBLIC);                   // PC用サイトの公開状況
178                         if ($this->sitePcInPublic == '') $this->sitePcInPublic = '1';           // デフォルトは公開
179                         $this->siteMobileInPublic       = $this->getSystemConfig(self::CF_SITE_MOBILE_IN_PUBLIC);       // 携帯用サイトの公開状況
180                         if ($this->siteMobileInPublic == '') $this->siteMobileInPublic = '1';           // デフォルトは公開
181                         $this->siteSmartphoneInPublic   = $this->getSystemConfig(self::CF_SITE_SMARTPHONE_IN_PUBLIC);   // スマートフォン用サイトの公開状況
182                         if ($this->siteSmartphoneInPublic == '') $this->siteSmartphoneInPublic = '1';           // デフォルトは公開
183                         $this->mobileAutoRedirect       = $this->getSystemConfig(self::CF_MOBILE_AUTO_REDIRECT);        // 携帯の自動遷移
184                         if ($this->mobileAutoRedirect == '') $this->mobileAutoRedirect = '0';
185                         $this->smartphoneAutoRedirect   = $this->getSystemConfig(self::CF_SMARTPHONE_AUTO_REDIRECT);    // スマートフォンの自動遷移
186                         if ($this->smartphoneAutoRedirect == '') $this->smartphoneAutoRedirect = '0';
187                         $this->usePageCache     = $this->getSystemConfig(self::CF_USE_PAGE_CACHE);      // 表示キャッシュ機能を使用するかどうか
188                         if ($this->usePageCache == '') $this->usePageCache = '0';               // デフォルトはキャッシュなし
189                         $this->pageCacheLifetime = intval($this->getSystemConfig(self::CF_PAGE_CACHE_LIFETIME));        // 画面キャッシュの更新時間(分)
190                         if ($this->pageCacheLifetime < 0) $this->pageCacheLifetime = self::DEFAULT_PAGE_CACHE_LIFETIME;
191                         if ($this->getSystemConfig(self::CF_HIERARCHICAL_PAGE) == '1') $this->hierarchicalPage = true;                  // 階層化ページを使用するかどうか
192                         
193                         $value = $this->getSystemConfig(self::CF_ACCEPT_LANGUAGE);                      // アクセス可能言語
194                         if (!empty($value)) $this->acceptLanguage = explode(',', $value);
195                 } else {
196                         $this->gLog->error(__METHOD__, 'DBエラー発生: システム定義(_system_config)が読み込めません。');
197                         return false;
198                 }
199                 
200                 // 言語取得
201                 $lang = $this->getSystemConfig(self::CF_DEFAULT_LANG);// デフォルト言語
202
203                 // サイト定義をデフォルト言語で読み込む。データが空でもエラーとしない
204                 $ret = $this->db->getAllSiteDefValue($lang, $rows);
205                 if ($ret){
206                         // 取得データを連想配列にする
207                         $defCount = count($rows);
208                         for ($i = 0; $i < $defCount; $i++){
209                                 $key = $rows[$i]['sd_id'];
210                                 $value = $rows[$i]['sd_value'];
211                                 $this->_siteDefArray[$key] = $value;
212                         }
213                 }
214                 return true;
215         }
216         /**
217          * システム初期化可能どうかを返す
218          *
219          * @param bool $reload  再取得するかどうか
220          * @return bool         true=システム初期化モード、false=システム初期化しない
221          */
222         public function canInitSystem($reload = false)
223         {
224                 if ($reload){
225                         $value = $this->db->getSystemConfig(self::CF_PERMIT_INIT_SYSTEM);                       // システム初期化可能かどうか
226                         if ($value == '1'){
227                                 $this->permitInitSystem = true;
228                         } else {
229                                 $this->permitInitSystem = false;
230                         }
231                 }
232                 return $this->permitInitSystem;                 // システム初期化可能かどうか
233         }
234         /**
235          * システム初期化可能にする
236          *
237          * @return              なし
238          */
239         public function enableInitSystem()
240         {
241                 // データを更新
242                 $this->db->updateSystemConfig(self::CF_PERMIT_INIT_SYSTEM, 1);
243                 
244                 // データを再取得
245                 $this->canInitSystem(true);
246         }
247         /**
248          * システム初期化を不可にする
249          *
250          * @return              なし
251          */
252         public function disableInitSystem()
253         {
254                 // データを更新
255                 $this->db->updateSystemConfig(self::CF_PERMIT_INIT_SYSTEM, 0);
256                 
257                 // データを再取得
258                 $this->canInitSystem(true);
259         }
260         /**
261          * セッションを毎回更新するかどうかを返す
262          *
263          * @return bool         true=毎回更新、false=更新しない
264          */
265         public function regenerateSessionId()
266         {
267                 $retValue = $this->getSystemConfig(self::CF_REGENERATE_SESSION_ID);
268                 if ($retValue == '1'){
269                         return true;
270                 } else {
271                         return false;
272                 }
273         }
274         /**
275          * 表示言語変更可能かどうかを取得
276          *
277          * @return bool                 true=変更可能、false=変更不可
278          */
279         function canChangeLang()
280         {
281                 $retValue = $this->getSystemConfig(self::CF_PERMIT_CHANGE_LANG);
282                 if ($retValue == '1'){
283                         return true;
284                 } else {
285                         return false;
286                 }
287         }
288         /**
289          * テンプレートIDをセッションに保存するかどうかを取得
290          *
291          * @param bool $reload  再取得するかどうか
292          * @return bool                 true=変更可能、false=変更不可
293          */
294         function useTemplateIdInSession($reload = false)
295         {
296                 if ($reload){
297                         $retValue = $this->db->getSystemConfig(self::CF_USE_TEMPLATE_ID_IN_SESSION);
298                         if ($retValue == '1'){
299                                 $this->useTemplateIdInSession = true;
300                         } else {
301                                 $this->useTemplateIdInSession = false;
302                         }
303                 }
304                 return $this->useTemplateIdInSession;
305         }
306         /**
307          * 管理画面用のデフォルトのテンプレートIDを取得
308          *
309          * @param bool $reload  再取得するかどうか
310          * @return string       デフォルトのテンプレートID
311          */
312         function defaultAdminTemplateId($reload = false)
313         {
314                 if ($reload){
315                         $this->defaultAdminTemplateId           = $this->db->getSystemConfig(self::CF_ADMIN_DEFAULT_TEMPLATE);
316                 }
317                 return $this->defaultAdminTemplateId;
318         }
319         /**
320          * デフォルトのテンプレートIDを取得
321          *
322          * @param bool $reload  再取得するかどうか
323          * @return string       デフォルトのテンプレートID
324          */
325         function defaultTemplateId($reload = false)
326         {
327                 if ($reload){
328                         $this->defaultTemplateId                = $this->db->getSystemConfig(self::CF_DEFAULT_TEMPLATE);
329                 }
330                 return $this->defaultTemplateId;
331         }
332         /**
333          * 携帯用デフォルトのテンプレートIDを取得
334          *
335          * @param bool $reload  再取得するかどうか
336          * @return string       デフォルトのテンプレートID
337          */
338         function defaultMobileTemplateId($reload = false)
339         {
340                 if ($reload){
341                         $this->defaultMobileTemplateId          = $this->db->getSystemConfig(self::CF_DEFAULT_TEMPLATE_MOBILE);
342                 }
343                 return $this->defaultMobileTemplateId;
344         }
345         /**
346          * スマートフォン用デフォルトのテンプレートIDを取得
347          *
348          * @param bool $reload  再取得するかどうか
349          * @return string       デフォルトのテンプレートID
350          */
351         function defaultSmartphoneTemplateId($reload = false)
352         {
353                 if ($reload){
354                         $this->defaultSmartphoneTemplateId              = $this->db->getSystemConfig(self::CF_DEFAULT_TEMPLATE_SMARTPHONE);
355                 }
356                 return $this->defaultSmartphoneTemplateId;
357         }
358         /**
359          * デフォルトテンプレートの変更
360          *
361          * @param string  $templateId   デフォルトテンプレートID
362          * @return                                              true=成功、false=失敗
363          */
364         function changeDefaultTemplate($templateId)
365         {
366                 $ret = $this->db->updateSystemConfig(self::CF_DEFAULT_TEMPLATE, $templateId);
367                 
368                 // データ再取得
369                 $this->defaultTemplateId(true);
370                 return $ret;
371         }
372         /**
373          * 携帯用デフォルトテンプレートの変更
374          *
375          * @param string  $templateId   デフォルトテンプレートID
376          * @return                                              true=成功、false=失敗
377          */
378         function changeDefaultMobileTemplate($templateId)
379         {
380                 $ret = $this->db->updateSystemConfig(self::CF_DEFAULT_TEMPLATE_MOBILE, $templateId);
381                 
382                 // データ再取得
383                 $this->defaultMobileTemplateId(true);
384                 return $ret;
385         }
386         /**
387          * スマートフォン用デフォルトテンプレートの変更
388          *
389          * @param string  $templateId   デフォルトテンプレートID
390          * @return                                              true=成功、false=失敗
391          */
392         function changeDefaultSmartphoneTemplate($templateId)
393         {
394                 $ret = $this->db->updateSystemConfig(self::CF_DEFAULT_TEMPLATE_SMARTPHONE, $templateId);
395                 
396                 // データ再取得
397                 $this->defaultSmartphoneTemplateId(true);
398                 return $ret;
399         }
400         /**
401          * 管理画面用jQueryUIテーマを取得
402          *
403          * @param bool $reload  再取得するかどうか
404          * @return string       デフォルトのjQueryUIテーマ
405          */
406         function adminDefaultTheme($reload = false)
407         {
408                 if ($reload){
409                         $this->adminDefaultTheme                = $this->db->getSystemConfig(self::CF_ADMIN_DEFAULT_THEME);
410                 }
411                 return $this->adminDefaultTheme;
412         }
413         /**
414          * 一般画面用jQueryUIテーマを取得
415          *
416          * @return string       jQueryUIテーマ
417          */
418         function defaultTheme()
419         {
420                 static $theme;
421
422                 if (!isset($theme)) $theme = $this->getSystemConfig(self::CF_DEFAULT_THEME);
423                 return $theme;
424         }
425         /**
426          * デフォルト言語以外のサイト定義を読み込む
427          *
428          * @param string $langId                言語ID
429          * @return bool                                 true=成功(指定言語あり)、false=失敗(指定言語なし)
430          */
431         function roadSiteDefByLang($langId)
432         {
433                 if ($langId == $this->getSystemConfig(self::CF_DEFAULT_LANG)) return false;
434                 
435                 // サイト定義を読み込む
436                 $ret = $this->db->getAllSiteDefValue($langId, $rows);
437                 if ($ret){
438                         // 取得データを連想配列にする
439                         $defCount = count($rows);
440                         for ($i = 0; $i < $defCount; $i++){
441                                 $key = $rows[$i]['sd_id'];
442                                 $value = $rows[$i]['sd_value'];
443                                 
444                                 // 値が存在した場合のみ上書き
445                                 if (!empty($value)){
446                                         $this->_siteDefArray[$key] = $value;
447                                 }
448                         }
449                 }
450                 return $ret;
451         }
452         /**
453          * アクセス可能言語を取得
454          *
455          * @param bool $reload  再取得するかどうか
456          * @return array        アクセス可能言語
457          */
458         function getAcceptLanguage($reload = false)
459         {
460                 if ($reload){
461                         $value = $this->db->getSystemConfig(self::CF_ACCEPT_LANGUAGE);                  // アクセス可能言語
462                         if (empty($value)){
463                                 $this->acceptLanguage = array();
464                         } else {
465                                 $this->acceptLanguage = explode(',', $value);
466                         }
467                 }
468                 return $this->acceptLanguage;
469         }
470         /**
471          * システムで利用可能な言語を取得
472          *
473          * @return array        言語
474          */
475         function getSystemLanguages()
476         {
477                 return $this->systemLanguages;
478         }
479         /**
480          * アップロード可能なファイルの最大サイズを返す
481          *
482          * @param bool $byInteger       数値のバイトサイズを返すかどうか
483          * @return string                       バイトサイズ
484          */
485         public function getMaxFileSizeForUpload($byInteger = false)
486         {       
487                 $limit = convBytes(ini_get('upload_max_filesize')) > convBytes(ini_get('post_max_size')) ? ini_get('post_max_size') : ini_get('upload_max_filesize');
488                 $limit = convBytes($limit) > convBytes(ini_get('memory_limit')) ? ini_get('memory_limit') : $limit;
489                 
490                 if ($byInteger){                // ファイルサイズを数値で返す場合
491                         return convBytes($limit);
492                 } else {
493                         return $limit;
494                 }
495         }
496         /**
497          * アクセスポイントが有効かどうかを返す
498          *
499          * @param int $type             デバイスタイプ(0=PC,1=携帯,2=スマートフォン)
500          * @return bool                 true=有効、false=無効
501          */
502         public function getSiteActiveStatus($type)
503         {
504                 static $siteActiveStatus;                       // アクセスポイントが有効かどうか
505         
506                 if (!isset($siteActiveStatus)){
507                         $siteActiveStatus = array();
508                         
509                         $ret = $this->db->getPageIdRecords(0/*ページID*/, $rows);
510                         if ($ret){
511                                 for ($i = 0; $i < 3; $i++){
512                                         // ページID作成
513                                         switch ($i){
514                                                 case 0:         // PC
515                                                         $pageId = 'index';
516                                                         break;
517                                                 case 1:         // 携帯
518                                                         $pageId = M3_DIR_NAME_MOBILE . '_index';
519                                                         break;
520                                                 case 2:         // スマートフォン
521                                                         $pageId = M3_DIR_NAME_SMARTPHONE . '_index';
522                                                         break;
523                                         }
524                                         for ($j = 0; $j < count($rows); $j++){
525                                                 if ($rows[$j]['pg_id'] == $pageId){
526                                                         $siteActiveStatus[$i] = $rows[$j]['pg_active'];
527                                                         break;
528                                                 }
529                                         }
530                                 }
531                         }
532                 }
533                 return $siteActiveStatus[$type];
534         }
535         /**
536          * Webサイトを公開するかどうか
537          *
538          * @param bool $reload  再取得するかどうか
539          * @return bool                 true=公開、false=非公開
540          */
541         public function siteInPublic($reload = false)
542         {
543                 if ($reload){
544                         $this->siteInPublic             = $this->db->getSystemConfig(self::CF_SITE_IN_PUBLIC);                  // Webサイトの公開状況
545                         if ($this->siteInPublic == '') $this->siteInPublic = '1';               // デフォルトは公開
546                 }
547                 return $this->siteInPublic;                     // Webサイトの公開状況
548         }
549         /**
550          * PC用サイトを公開するかどうか
551          *
552          * @param bool $reload  再取得するかどうか
553          * @return bool                 true=公開、false=非公開
554          */
555         public function sitePcInPublic($reload = false)
556         {
557                 if ($reload){
558                         $this->sitePcInPublic           = $this->db->getSystemConfig(self::CF_SITE_PC_IN_PUBLIC);                       // PC用サイトの公開状況
559                         if ($this->sitePcInPublic == '') $this->sitePcInPublic = '1';           // デフォルトは公開
560                 }
561                 return $this->sitePcInPublic;                   // PC用サイトの公開状況
562         }
563         /**
564          * 携帯用サイトを公開するかどうか
565          *
566          * @param bool $reload  再取得するかどうか
567          * @return bool                 true=公開、false=非公開
568          */
569         public function siteMobileInPublic($reload = false)
570         {
571                 if ($reload){
572                         $this->siteMobileInPublic       = $this->db->getSystemConfig(self::CF_SITE_MOBILE_IN_PUBLIC);   // 携帯用サイトの公開状況
573                         if ($this->siteMobileInPublic == '') $this->siteMobileInPublic = '1';           // デフォルトは公開
574                 }
575                 return $this->siteMobileInPublic;                       // 携帯用サイトの公開状況
576         }
577         /**
578          * スマートフォン用サイトを公開するかどうか
579          *
580          * @param bool $reload  再取得するかどうか
581          * @return bool                 true=公開、false=非公開
582          */
583         public function siteSmartphoneInPublic($reload = false)
584         {
585                 if ($reload){
586                         $this->siteSmartphoneInPublic   = $this->db->getSystemConfig(self::CF_SITE_SMARTPHONE_IN_PUBLIC);       // スマートフォン用サイトの公開状況
587                         if ($this->siteSmartphoneInPublic == '') $this->siteSmartphoneInPublic = '1';           // デフォルトは公開
588                 }
589                 return $this->siteSmartphoneInPublic;                   // スマートフォン用サイトの公開状況
590         }
591         /**
592          * 携帯の自動遷移を行うかどうか
593          *
594          * @param bool $reload  再取得するかどうか
595          * @return bool                 true=公開、false=非公開
596          */
597         public function mobileAutoRedirect($reload = false)
598         {
599                 if ($reload){
600                         $this->mobileAutoRedirect       = $this->db->getSystemConfig(self::CF_MOBILE_AUTO_REDIRECT);    // 携帯の自動遷移
601                         if ($this->mobileAutoRedirect == '') $this->mobileAutoRedirect = '0';
602                 }
603                 return $this->mobileAutoRedirect;
604         }
605         /**
606          * スマートフォンの自動遷移を行うかどうか
607          *
608          * @param bool $reload  再取得するかどうか
609          * @return bool                 true=公開、false=非公開
610          */
611         public function smartphoneAutoRedirect($reload = false)
612         {
613                 if ($reload){
614                         $this->smartphoneAutoRedirect   = $this->db->getSystemConfig(self::CF_SMARTPHONE_AUTO_REDIRECT);        // スマートフォンの自動遷移
615                         if ($this->smartphoneAutoRedirect == '') $this->smartphoneAutoRedirect = '0';
616                 }
617                 return $this->smartphoneAutoRedirect;
618         }
619         /**
620          * 表示キャッシュ機能を使用するかどうか
621          *
622          * @param bool $reload  再取得するかどうか
623          * @return bool                 true=キャッシュ、false=キャッシュなし
624          */
625         public function usePageCache($reload = false)
626         {
627                 if ($reload){
628                         $this->usePageCache     = $this->db->getSystemConfig(self::CF_USE_PAGE_CACHE);  // 表示キャッシュ機能を使用するかどうか
629                         if ($this->usePageCache == '') $this->usePageCache = '0';               // デフォルトはキャッシュなし
630                 }
631                 return $this->usePageCache;
632         }
633         /**
634          * 画面キャッシュの更新時間
635          *
636          * @param bool $reload  再取得するかどうか
637          * @return int                  キャッシュの更新時間(分)
638          */
639         public function pageCacheLifetime($reload = false)
640         {
641                 if ($reload){
642                         $this->pageCacheLifetime = intval($this->db->getSystemConfig(self::CF_PAGE_CACHE_LIFETIME));    // 画面キャッシュの更新時間(分)
643                         if ($this->pageCacheLifetime < 0) $this->pageCacheLifetime = self::DEFAULT_PAGE_CACHE_LIFETIME;
644                 }
645                 return $this->pageCacheLifetime;
646         }
647         /**
648          * 階層化ページを使用するかどうか
649          *
650          * @param bool $reload  再取得するかどうか
651          * @return int                  true=階層化ページ使用、false=階層化ページ不使用
652          */
653         public function hierarchicalPage($reload = false)
654         {
655                 if ($reload){
656                         $value = $this->getSystemConfig(self::CF_HIERARCHICAL_PAGE);
657                         if (empty($value)){
658                                 $this->hierarchicalPage = false;                        // 階層化ページを使用するかどうか
659                         } else {
660                                 $this->hierarchicalPage = true;                 // 階層化ページを使用するかどうか
661                         }
662                 }
663                 return $this->hierarchicalPage;
664         }
665         /**
666          * メインコンテンツタイプを取得
667          *
668          * @return array        コンテンツタイプ
669          */
670         public function getAllContentType()
671         {
672                 $contentType = array(   M3_VIEW_TYPE_CONTENT,                           // 汎用コンテンツ
673                                                                 M3_VIEW_TYPE_PRODUCT,                           // 製品
674                                                                 M3_VIEW_TYPE_BBS,                                       // BBS
675                                                                 M3_VIEW_TYPE_BLOG,                              // ブログ
676                                                                 M3_VIEW_TYPE_WIKI,                              // wiki
677                                                                 M3_VIEW_TYPE_USER,                              // ユーザ作成コンテンツ
678                                                                 M3_VIEW_TYPE_EVENT,                             // イベント
679                                                                 M3_VIEW_TYPE_PHOTO,                             // フォトギャラリー
680                                                                 M3_VIEW_TYPE_SEARCH);                   // 検索結果
681                 return $contentType;
682         }
683 }
684 ?>