Example #1
0
/**
 * WEBサイトのベースとなるURLを取得する
 * 
 * コントローラーが初期化される前など {$this->base} が利用できない場合に利用する
 * / | /index.php/ | /subdir/ | /subdir/index.php/
 * 
 * ※ プログラムフォルダ内の画像やCSSの読み込み時もbootstrap.php で呼び出されるのでサーバーキャッシュは利用しない
 * 
 * @return string ベースURL
 */
function baseUrl()
{
    $baseUrl = Configure::read('App.baseUrl');
    if ($baseUrl) {
        if (!preg_match('/\\/$/', $baseUrl)) {
            $baseUrl .= '/';
        }
    } else {
        $script = $_SERVER['SCRIPT_FILENAME'];
        $script = str_replace(docRoot(), '', $script);
        if (BC_DEPLOY_PATTERN == 1) {
            $baseUrl = preg_replace('/' . preg_quote('app' . DS . 'webroot' . DS . 'index.php', '/') . '/', '', $script);
            $baseUrl = preg_replace('/' . preg_quote('app' . DS . 'webroot' . DS . 'test.php', '/') . '/', '', $baseUrl);
            // ↓ Windows Azure 対策 SCRIPT_FILENAMEに期待した値が入ってこない為
            $baseUrl = preg_replace('/index\\.php/', '', $baseUrl);
        } elseif (BC_DEPLOY_PATTERN == 2) {
            $baseUrl = preg_replace('/index\\.php/', '', $script);
        }
        $baseUrl = preg_replace("/index\$/", '', $baseUrl);
    }
    $baseUrl = str_replace(DS, '/', $baseUrl);
    if (!$baseUrl) {
        $baseUrl = '/';
    }
    return $baseUrl;
}
Example #2
0
 /**
  * ドキュメントルートを取得する
  */
 public function testDocRoot()
 {
     $_SERVER['SCRIPT_FILENAME'] = WWW_ROOT . 'test.php';
     if (isConsole()) {
         $expected = str_replace('app' . DS . 'Console' . DS . 'cake.php', '', $_SERVER['SCRIPT_NAME']);
     } else {
         $path = explode('/', $_SERVER['SCRIPT_NAME']);
         krsort($path);
         $expected = $_SERVER['SCRIPT_FILENAME'];
         foreach ($path as $value) {
             $reg = "/\\/" . $value . "\$/";
             $expected = preg_replace($reg, '', $expected);
         }
     }
     $result = docRoot();
     $this->assertEquals($expected, $result);
 }
Example #3
0
require BASER . 'Error' . DS . 'exceptions.php';
/**
 * インストール状態
 */
define('BC_INSTALLED', isInstalled());
/**
 * Baserパス追加
 */
App::build(array('Controller' => array_merge(App::path('Controller'), array(BASER_CONTROLLERS)), 'Model' => array_merge(App::path('Model'), array(BASER_MODELS)), 'Model/Behavior' => array_merge(App::path('Model/Behavior'), array(BASER_BEHAVIORS)), 'Model/Datasource' => array_merge(App::path('Model/Datasource'), array(BASER_DATASOURCE)), 'Model/Datasource/Database' => array_merge(App::path('Model/Datasource/Database'), array(BASER_DATABASE)), 'Controller/Component' => array_merge(App::path('Controller/Component'), array(BASER_COMPONENTS)), 'Controller/Component/Auth' => array_merge(App::path('Controller/Component/Auth'), array(BASER_COMPONENTS . 'Auth' . DS)), 'View' => array_merge(array(WWW_ROOT), App::path('View'), array(BASER_VIEWS)), 'View/Helper' => array_merge(App::path('View/Helper'), array(BASER_HELPERS)), 'Plugin' => array_merge(App::path('Plugin'), array(BASER_PLUGINS)), 'Vendor' => array_merge(App::path('Vendor'), array(BASER_VENDORS)), 'Locale' => array_merge(App::path('Locale'), array(BASER_LOCALES)), 'Lib' => array_merge(App::path('Lib'), array(BASER_LIBS)), 'Console' => array_merge(App::path('Console'), array(BASER_CONSOLES)), 'Console/Command' => array_merge(App::path('Console/Command'), array(BASER_CONSOLES . 'Command' . DS)), 'Routing/Filter' => array_merge(App::path('Routing/Filter'), array(BASER . 'Routing' . DS . 'Filter' . DS))));
App::build(array('Event' => array(APP . 'Event', BASER_EVENTS), 'Routing/Filter' => array(BASER . 'Routing' . DS . 'Filter' . DS), 'Configure' => array(BASER . 'Configure' . DS), 'TestSuite' => array(BASER_TEST_SUITE), 'TestSuite/Reporter' => array(BASER_TEST_SUITE . 'Reporter' . DS), 'TestSuite/Fixture' => array(BASER_TEST_SUITE . 'Fixture' . DS), 'Network' => array(BASER . 'Network' . DS)), App::REGISTER);
/**
 * 配置パターン
 * Windows対策として、「\」を「/」へ変換してチェックする
 */
if (!defined('BC_DEPLOY_PATTERN')) {
    if (!preg_match('/' . preg_quote(str_replace('\\', '/', docRoot()), '/') . '/', str_replace('\\', '/', ROOT))) {
        // CakePHP標準の配置
        define('BC_DEPLOY_PATTERN', 3);
    } elseif (ROOT . DS == WWW_ROOT) {
        // webrootをドキュメントルートにして、その中に app / baser / cake を配置
        define('BC_DEPLOY_PATTERN', 2);
    } else {
        // baserCMS配布時の配置
        define('BC_DEPLOY_PATTERN', 1);
    }
}
/**
 * baserUrl取得
 */
define('BC_BASE_URL', baseUrl());
/**
Example #4
0
 /**
  * Checks if a file exists when theme is used, if no file is found default location is returned
  *
  * PENDING Core Hack
  *
  * @param  string  $file
  * @return string  $webPath web path to file.
  */
 public function webroot($file)
 {
     // CUSTOMIZE ADD 2015/02/15 ryuring
     // >>>
     // フルパスの場合はそのまま返す
     if (preg_match('/^(http|https):\\/\\//', $file)) {
         return $file;
     }
     // <<<
     $asset = explode('?', $file);
     $asset[1] = isset($asset[1]) ? '?' . $asset[1] : null;
     // CUSTOMIZE MODIFY 2009/10/6 ryuring
     // Rewriteモジュールが利用できない場合、$this->Html->css / $javascript->link では、
     // app/webroot/を付加してURLを生成してしまう為、vendors 内のパス解決ができない。
     // URLの取得方法をRouterに変更
     // Dispatcherクラスのハックが必須
     //
     // CUSTOMIZE MODIFY 2010/02/12 ryuring
     // ファイルの存在チェックを行い存在しない場合のみRouterを利用するように変更した。
     //
     // CUSTOMIZE MODIFY 2011/04/11 ryuring
     // Rewriteモジュールが利用できない場合、画像等で出力されるURL形式(/app/webroot/img/...)が
     // $file に設定された場合でもパス解決ができるようにした。
     //
     // >>>
     //$webPath = "{$this->request->webroot}" . $asset[0];
     // ---
     $asset[0] = preg_replace('/^\\//', '', $asset[0]);
     if ($this->request->webroot && $this->request->webroot != '/') {
         $filePath = preg_replace('/' . preg_quote($this->request->webroot, '/') . '/', '', $asset[0]);
     } else {
         $filePath = $asset[0];
     }
     $filePath = str_replace('/', DS, $filePath);
     $docRoot = docRoot();
     if (file_exists(WWW_ROOT . $filePath)) {
         $webPath = $this->request->webroot . $asset[0];
     } elseif (file_exists($docRoot . DS . $filePath) && strpos($docRoot . DS . $filePath, ROOT . DS) !== false) {
         // ※ ファイルのパスが ROOT 配下にある事が前提
         $webPath = $asset[0];
     } else {
         $webPath = Router::url('/' . $asset[0]);
     }
     // <<<
     $file = $asset[0];
     if (!empty($this->theme)) {
         $file = trim($file, '/');
         $theme = $this->theme . '/';
         if (DS === '\\') {
             $file = str_replace('/', '\\', $file);
         }
         if (file_exists(Configure::read('App.www_root') . 'theme' . DS . $this->theme . DS . $file)) {
             $webPath = "{$this->request->webroot}theme/" . $theme . $asset[0];
         } else {
             $themePath = App::themePath($this->theme);
             $path = $themePath . 'webroot' . DS . $file;
             if (file_exists($path)) {
                 // CUSTOMIZE 2013/6/18 ryuring
                 // >>>
                 //	$webPath = Configure::read('App.baseUrl')."{$this->request->webroot}theme/" . $theme . $asset[0];
                 //}
                 // ---
                 if ($baseUrl) {
                     // スマートURLオフ
                     $webPath = Configure::read('App.baseUrl') . "/theme/" . $theme . $asset[0];
                 } else {
                     // スマートURLオン
                     $webPath = "{$this->request->webroot}theme/" . $theme . $asset[0];
                 }
             } else {
                 // フロントのWebページを表示する際に、管理システム用のアセットファイルを参照する為のURLを生成する
                 if (property_exists($this->_View, 'adminTheme') && $this->_View->adminTheme) {
                     if (file_exists($themePath = Configure::read('App.www_root') . 'theme' . DS . $this->_View->adminTheme . DS . $file)) {
                         $adminTheme = $this->_View->adminTheme . '/';
                         if ($baseUrl) {
                             // スマートURLオフ
                             $webPath = Configure::read('App.baseUrl') . "/theme/" . $adminTheme . $asset[0];
                         } else {
                             // スマートURLオン
                             $webPath = "{$this->request->webroot}theme/" . $adminTheme . $asset[0];
                         }
                     }
                 }
             }
             // <<<
         }
     }
     if (strpos($webPath, '//') !== false) {
         return str_replace('//', '/', $webPath . $asset[1]);
     }
     // >>> CUSTOMIZE ADD 2013/06/18 ryuring
     if (strpos($webPath, '\\') !== false) {
         $webPath = str_replace("\\", '/', $webPath);
     }
     // <<<
     return $webPath . $asset[1];
 }
Example #5
0
 /**
  * [ADMIN] サイト基本設定
  */
 public function admin_form()
 {
     $writableInstall = is_writable(APP . 'Config' . DS . 'install.php');
     if (empty($this->request->data)) {
         $this->request->data = $this->_getSiteConfigData();
     } else {
         $this->SiteConfig->set($this->request->data);
         if (!$this->SiteConfig->validates()) {
             $this->setMessage('入力エラーです。内容を修正してください。', true);
         } else {
             $mode = 0;
             $smartUrl = false;
             $siteUrl = $sslUrl = '';
             if (isset($this->request->data['SiteConfig']['mode'])) {
                 $mode = $this->request->data['SiteConfig']['mode'];
                 if ($mode > 0) {
                     clearAllCache();
                 }
             }
             if (isset($this->request->data['SiteConfig']['smart_url'])) {
                 $smartUrl = $this->request->data['SiteConfig']['smart_url'];
             }
             if (isset($this->request->data['SiteConfig']['ssl_url'])) {
                 $siteUrl = $this->request->data['SiteConfig']['site_url'];
                 if (!preg_match('/\\/$/', $siteUrl)) {
                     $siteUrl .= '/';
                 }
             }
             if (isset($this->request->data['SiteConfig']['ssl_url'])) {
                 $sslUrl = $this->request->data['SiteConfig']['ssl_url'];
                 if ($sslUrl && !preg_match('/\\/$/', $sslUrl)) {
                     $sslUrl .= '/';
                 }
             }
             $adminSsl = @$this->request->data['SiteConfig']['admin_ssl'];
             $mobile = @$this->request->data['SiteConfig']['mobile'];
             $smartphone = @$this->request->data['SiteConfig']['smartphone'];
             unset($this->request->data['SiteConfig']['id']);
             unset($this->request->data['SiteConfig']['mode']);
             unset($this->request->data['SiteConfig']['smart_url']);
             unset($this->request->data['SiteConfig']['site_url']);
             unset($this->request->data['SiteConfig']['ssl_url']);
             unset($this->request->data['SiteConfig']['admin_ssl']);
             unset($this->request->data['SiteConfig']['mobile']);
             unset($this->request->data['SiteConfig']['smartphone']);
             // DBに保存
             if ($this->SiteConfig->saveKeyValue($this->request->data)) {
                 $this->setMessage('システム設定を保存しました。');
                 // 環境設定を保存
                 if ($writableInstall) {
                     $this->BcManager->setInstallSetting('debug', $mode);
                     $this->BcManager->setInstallSetting('BcEnv.siteUrl', "'" . $siteUrl . "'");
                     $this->BcManager->setInstallSetting('BcEnv.sslUrl', "'" . $sslUrl . "'");
                     $this->BcManager->setInstallSetting('BcApp.adminSsl', $adminSsl ? 'true' : 'false');
                     $this->BcManager->setInstallSetting('BcApp.mobile', $mobile ? 'true' : 'false');
                     $this->BcManager->setInstallSetting('BcApp.smartphone', $smartphone ? 'true' : 'false');
                 }
                 if ($this->BcManager->smartUrl() != $smartUrl) {
                     $this->BcManager->setSmartUrl($smartUrl);
                 }
                 // キャッシュをクリア
                 if ($this->request->data['SiteConfig']['maintenance'] || $this->siteConfigs['google_analytics_id'] != $this->request->data['SiteConfig']['google_analytics_id'] || !$smartphone && Configure::read('BcApp.smartphone') || !$mobile && Configure::read('BcApp.mobile')) {
                     clearViewCache();
                 }
                 // リダイレクト
                 if ($this->BcManager->smartUrl() != $smartUrl) {
                     $adminPrefix = Configure::read('Routing.prefixes.0');
                     if ($smartUrl) {
                         $redirectUrl = $this->BcManager->getRewriteBase('/' . $adminPrefix . '/site_configs/form');
                     } else {
                         $redirectUrl = $this->BcManager->getRewriteBase('/index.php/' . $adminPrefix . '/site_configs/form');
                     }
                     header('Location: ' . FULL_BASE_URL . $redirectUrl);
                     exit;
                 } else {
                     $this->redirect(array('action' => 'form'));
                 }
             }
         }
     }
     /* スマートURL関連 */
     $apachegetmodules = function_exists('apache_get_modules');
     if ($apachegetmodules) {
         $rewriteInstalled = in_array('mod_rewrite', apache_get_modules());
     } else {
         $rewriteInstalled = -1;
     }
     if (BC_DEPLOY_PATTERN != 3) {
         $htaccess1 = ROOT . DS . '.htaccess';
     } else {
         $htaccess1 = docRoot() . DS . '.htaccess';
     }
     $htaccess2 = WWW_ROOT . '.htaccess';
     $writableHtaccess = is_writable($htaccess1);
     if ($htaccess1 != $htaccess2) {
         $writableHtaccess2 = is_writable($htaccess2);
     } else {
         $writableHtaccess2 = true;
     }
     $baseUrl = str_replace('/index.php', '', BC_BASE_URL);
     if ($writableInstall && $writableHtaccess && $writableHtaccess2 && $rewriteInstalled !== false) {
         $smartUrlChangeable = true;
     } else {
         $smartUrlChangeable = false;
     }
     $UserGroup = ClassRegistry::init('UserGroup');
     $userGroups = $UserGroup->find('list', array('fields' => array('UserGroup.id', 'UserGroup.title')));
     $disableSettingSmartUrl = array();
     $disableSettingInstallSetting = array();
     if (!$smartUrlChangeable) {
         $disableSettingSmartUrl = array('disabled' => 'disabled');
     }
     if (!$writableInstall) {
         $disableSettingInstallSetting = array('disabled' => 'disabled');
     }
     $this->set(compact('baseUrl', 'userGroups', 'rewriteInstalled', 'writableInstall', 'writableHtaccess', 'writableHtaccess2', 'smartUrlChangeable', 'disableSettingSmartUrl', 'disableSettingInstallSetting'));
     $this->subMenuElements = array('site_configs');
     $this->pageTitle = 'サイト基本設定';
     $this->help = 'site_configs_form';
 }
Example #6
0
 /**
  * Checks if a file exists when theme is used, if no file is found default location is returned
  *
  * PENDING Core Hack
  *
  * @param  string  $file
  * @return string  $webPath web path to file.
  */
 function webroot($file)
 {
     // CUSTOMIZE ADD 2010/05/19 ryuring
     // CakePHP1.2.6以降、Rewriteモジュールを利用せず、App.baseUrlを利用した場合、
     // Dispatcherでwebrootが正常に取得できなくなってしまったので、ここで再設定する
     // CUSTOMIZE MODIFY 2011/03/17 ryuring
     // BC_DEPLOY_PATTERN 2 について対応
     // >>>
     $dir = Configure::read('App.dir');
     $webroot = Configure::read('App.webroot');
     $baseUrl = Configure::read('App.baseUrl');
     if ($baseUrl) {
         switch (BC_DEPLOY_PATTERN) {
             case 1:
                 if (strpos($this->webroot, $dir) === false) {
                     $this->webroot .= $dir . '/';
                 }
                 if (strpos($this->webroot, $webroot) === false) {
                     $this->webroot .= $webroot . '/';
                 }
                 break;
             case 2:
                 $baseDir = str_replace('index.php', '', $baseUrl);
                 $this->webroot = $baseDir;
                 break;
         }
     }
     //<<<
     // CUSTOMIZE MODIFY 2009/10/6 ryuring
     // Rewriteモジュールが利用できない場合、$html->css / $javascript->link では、
     // app/webroot/を付加してURLを生成してしまう為、vendors 内のパス解決ができない。
     // URLの取得方法をRouterに変更
     // Dispatcherクラスのハックが必須
     //
     // CUSTOMIZE MODIFY 2010/02/12 ryuring
     // ファイルの存在チェックを行い存在しない場合のみRouterを利用するように変更した。
     //
     // CUSTOMIZE MODIFY 2011/04/11 ryuring
     // Rewriteモジュールが利用できない場合、画像等で出力されるURL形式(/app/webroot/img/...)が
     // $file に設定された場合でもパス解決ができるようにした。
     //
     // >>>
     // $webPath = "{$this->webroot}" . $file;
     // ---
     $filePath = str_replace('/', DS, $file);
     $docRoot = docRoot();
     if (file_exists(WWW_ROOT . $filePath)) {
         $webPath = $this->webroot . $file;
     } elseif (file_exists($docRoot . DS . $filePath) && strpos($docRoot . DS . $filePath, ROOT . DS) !== false) {
         // ※ ファイルのパスが ROOT 配下にある事が前提
         $webPath = $file;
     } else {
         $webPath = Router::url('/' . $file);
     }
     // <<<
     if (!empty($this->themeWeb)) {
         $os = env('OS');
         if (!empty($os) && strpos($os, 'Windows') !== false) {
             if (strpos(WWW_ROOT . $this->themeWeb . $filePath, '\\') !== false) {
                 $path = str_replace('/', '\\', WWW_ROOT . $this->themeWeb . $filePath);
             }
         } else {
             $path = WWW_ROOT . $this->themeWeb . $filePath;
         }
         if (file_exists($path)) {
             $webPath = "{$this->webroot}" . $this->themeWeb . $file;
         }
     }
     if (strpos($webPath, '//') !== false) {
         return str_replace('//', '/', $webPath);
     }
     // >>> CUSTOMIZE ADD 2010/02/12 ryuring
     if (strpos($webPath, '\\') !== false) {
         $webPath = str_replace("\\", '/', $webPath);
     }
     // <<<
     return $webPath;
 }
Example #7
0
 * vendors内の静的ファイルの読み込みの場合はスキップ
 */
$uri = @$_SERVER['REQUEST_URI'];
$baseUrl = baseUrl();
if (strpos($uri, $baseUrl . 'css/') !== false || strpos($uri, $baseUrl . 'js/') !== false || strpos($uri, $baseUrl . 'img/') !== false) {
    $assets = array('js', 'css', 'gif', 'jpg', 'png');
    $ext = array_pop(explode('.', $uri));
    if (in_array($ext, $assets)) {
        Configure::write('Baser.Asset', true);
        return;
    }
}
/**
 * 配置パターン
 */
if (!preg_match('/' . preg_quote(docRoot(), '/') . '/', ROOT)) {
    // CakePHP標準の配置
    define('DEPLOY_PATTERN', 3);
} elseif (ROOT . DS == WWW_ROOT) {
    // webrootをドキュメントルートにして、その中に app / baser / cake を配置
    define('DEPLOY_PATTERN', 2);
} else {
    // baserCMS配布時の配置
    define('DEPLOY_PATTERN', 1);
}
/**
 * 設定ファイル読み込み
 * install.php で設定している為、一旦読み込んで再設定
 */
$baserSettings = Configure::read('Baser');
if (Configure::load('baser') === false) {
 /**
  * [ADMIN] サイト基本設定
  *
  * @return void
  * @access public
  */
 function admin_form()
 {
     if (empty($this->data)) {
         $this->data = $this->_getSiteConfigData();
     } else {
         $this->SiteConfig->set($this->data);
         if (!$this->SiteConfig->validates()) {
             $this->Session->setFlash('入力エラーです。内容を修正してください。');
         } else {
             $mode = 0;
             $smartUrl = false;
             $siteUrl = $sslUrl = $adminSslOn = '';
             if (isset($this->data['SiteConfig']['mode'])) {
                 $mode = $this->data['SiteConfig']['mode'];
             }
             if (isset($this->data['SiteConfig']['smart_url'])) {
                 $smartUrl = $this->data['SiteConfig']['smart_url'];
             }
             if (isset($this->data['SiteConfig']['ssl_url'])) {
                 $siteUrl = $this->data['SiteConfig']['site_url'];
                 if (!preg_match('/\\/$/', $siteUrl)) {
                     $siteUrl .= '/';
                 }
             }
             if (isset($this->data['SiteConfig']['ssl_url'])) {
                 $sslUrl = $this->data['SiteConfig']['ssl_url'];
                 if ($sslUrl && !preg_match('/\\/$/', $sslUrl)) {
                     $sslUrl .= '/';
                 }
             }
             $adminSslOn = $this->data['SiteConfig']['admin_ssl_on'];
             $mobile = $this->data['SiteConfig']['mobile'];
             $smartphone = $this->data['SiteConfig']['smartphone'];
             unset($this->data['SiteConfig']['id']);
             unset($this->data['SiteConfig']['mode']);
             unset($this->data['SiteConfig']['smart_url']);
             unset($this->data['SiteConfig']['site_url']);
             unset($this->data['SiteConfig']['ssl_url']);
             unset($this->data['SiteConfig']['admin_ssl_on']);
             unset($this->data['SiteConfig']['mobile']);
             unset($this->data['SiteConfig']['smartphone']);
             // DBに保存
             if ($this->SiteConfig->saveKeyValue($this->data)) {
                 $this->Session->setFlash('システム設定を保存しました。');
                 // 環境設定を保存
                 $this->writeDebug($mode);
                 $this->writeInstallSetting('Baser.siteUrl', "'" . $siteUrl . "'");
                 $this->writeInstallSetting('Baser.sslUrl', "'" . $sslUrl . "'");
                 $this->writeInstallSetting('Baser.adminSslOn', $adminSslOn ? 'true' : 'false');
                 $this->writeInstallSetting('Baser.mobile', $mobile ? 'true' : 'false');
                 $this->writeInstallSetting('Baser.smartphone', $smartphone ? 'true' : 'false');
                 if ($this->readSmartUrl() != $smartUrl) {
                     $this->writeSmartUrl($smartUrl);
                 }
                 // キャッシュをクリア
                 if ($this->siteConfigs['maintenance'] || $this->siteConfigs['theme'] != $this->data['SiteConfig']['theme'] || $this->siteConfigs['google_analytics_id'] != $this->data['SiteConfig']['google_analytics_id']) {
                     clearViewCache();
                 }
                 // ページテンプレートの生成
                 if ($this->siteConfigs['theme'] != $this->data['SiteConfig']['theme']) {
                     if (!$this->Page->createAllPageTemplate()) {
                         $this->Session->setFlash('テーマ変更中にページテンプレートの生成に失敗しました。<br />' . '表示できないページはページ管理より更新処理を行ってください。');
                     }
                 }
                 // リダイレクト
                 if ($this->readSmartUrl() != $smartUrl) {
                     if ($smartUrl) {
                         $redirectUrl = $this->getRewriteBase('/admin/site_configs/form');
                     } else {
                         $redirectUrl = $this->getRewriteBase('/index.php/admin/site_configs/form');
                     }
                     header('Location: ' . FULL_BASE_URL . $redirectUrl);
                     exit;
                 } else {
                     $this->redirect(array('action' => 'form'));
                 }
             }
         }
     }
     /* スマートURL関連 */
     $apachegetmodules = function_exists('apache_get_modules');
     if ($apachegetmodules) {
         $rewriteInstalled = in_array('mod_rewrite', apache_get_modules());
     } else {
         $rewriteInstalled = -1;
     }
     $writableInstall = is_writable(CONFIGS . 'install.php');
     if (DEPLOY_PATTERN != 3) {
         $htaccess1 = ROOT . DS . '.htaccess';
     } else {
         $htaccess1 = docRoot() . DS . '.htaccess';
     }
     $htaccess2 = WWW_ROOT . '.htaccess';
     $writableHtaccess = is_writable($htaccess1);
     if ($htaccess1 != $htaccess2) {
         $writableHtaccess2 = is_writable($htaccess2);
     } else {
         $writableHtaccess2 = true;
     }
     $baseUrl = str_replace('/index.php', '', baseUrl());
     if ($writableInstall && $writableHtaccess && $writableHtaccess2 && $rewriteInstalled !== false) {
         $smartUrlChangeable = true;
     } else {
         $smartUrlChangeable = false;
     }
     $UserGroup = ClassRegistry::init('UserGroup');
     $userGroups = $UserGroup->find('list', array('fields' => array('UserGroup.id', 'UserGroup.title')));
     $this->set('userGroups', $userGroups);
     $this->set('themes', $this->SiteConfig->getThemes());
     $this->set('rewriteInstalled', $rewriteInstalled);
     $this->set('writableInstall', $writableInstall);
     $this->set('writableHtaccess', $writableHtaccess);
     $this->set('writableHtaccess2', $writableHtaccess2);
     $this->set('baseUrl', $baseUrl);
     $this->set('smartUrlChangeable', $smartUrlChangeable);
     $this->subMenuElements = array('site_configs');
     $this->pageTitle = 'サイト基本設定';
 }