Esempio n. 1
0
 /**
  * Modelをロードする(requireとgetInstance)
  */
 public static function load($model)
 {
     $model .= 'Model';
     if (empty(self::$loaded[$model])) {
         require snakeCase($model) . '.php';
         self::$loaded[$model] = new $model();
     }
     return self::$loaded[$model];
 }
Esempio n. 2
0
 /**
  * URLを作成する
  * TODO:ユーザー側のURL生成時はApp:userURLを使用に置き換え最終的にblog_idの部分を削る
  */
 public static function url($args = array(), $reused = false)
 {
     // 現在のURLの引数を引き継ぐ
     if ($reused == true) {
         $gets = Request::getInstance()->getGet();
         unset($gets[Config::get('ARGS_CONTROLLER')]);
         unset($gets[Config::get('ARGS_ACTION')]);
         $args = array_merge($gets, $args);
     }
     $controller = Config::get('ControllerName');
     if (isset($args['controller'])) {
         $controller = $args['controller'];
         unset($args['controller']);
     }
     $controller = snakeCase($controller);
     $action = Config::get('ActionName');
     if (isset($args['action'])) {
         $action = $args['action'];
         unset($args['action']);
     }
     // 引数のデバイスタイプを取得
     $device_name = App::getArgsDevice();
     if (!empty($device_name) && isset($args[$device_name])) {
         unset($args[$device_name]);
     }
     // URL/Controller/Methodの形で返却
     if (Config::get('URL_REWRITE')) {
         $params = array();
         foreach ($args as $key => $value) {
             $params[] = $key . '=' . $value;
         }
         if (!empty($device_name)) {
             $params[] = $device_name;
         }
         $url = Config::get('BASE_DIRECTORY') . $controller . '/' . $action;
         if (count($params)) {
             $url .= '?' . implode('&', $params);
         }
         return $url;
     }
     // BlogIdを先頭に付与する
     $blog_id = null;
     if (isset($args['blog_id'])) {
         $blog_id = $args['blog_id'];
         unset($args['blog_id']);
     }
     $params = array();
     $params[] = Config::get('ARGS_CONTROLLER') . '=' . $controller;
     $params[] = Config::get('ARGS_ACTION') . '=' . $action;
     foreach ($args as $key => $value) {
         $params[] = $key . '=' . $value;
     }
     if (!empty($device_name)) {
         $params[] = $device_name;
     }
     $url = Config::get('BASE_DIRECTORY') . Config::get('DIRECTORY_INDEX');
     if (count($params)) {
         $url .= '?' . implode('&', $params);
     }
     if ($blog_id) {
         $url = '/' . $blog_id . $url;
     }
     return $url;
 }
Esempio n. 3
0
/**
* ルーティング用メソッド
*/
function getRouting()
{
    require_once Config::get('CONFIG_DIR') . Config::get('ROUTING');
    // ルーティング設定を読み込み
    $request = Request::getInstance();
    $defaultClass = Config::get('DEFAULT_CLASS_NAME');
    $defaultMethod = Config::get('DEFAULT_METHOD_NAME');
    $prefix = Config::get('APP_PREFIX');
    $denyClass = $prefix ? $prefix . 'Controller' : 'AppController';
    $denyMethod = array('process', 'display', 'fetch', 'set');
    $denyPattern = array('CommonController' => array('install'));
    $argsc = Config::get('ARGS_CONTROLLER');
    $argsa = Config::get('ARGS_ACTION');
    $className = pascalCase(basename($request->get($argsc)));
    $className = $className ? $className . 'Controller' : $defaultClass;
    $classFile = Config::get('CONTROLLER_DIR') . ($prefix ? $prefix . '/' : '') . snakeCase($className) . '.php';
    $methodName = $request->get($argsa, $defaultMethod);
    $methodName = in_array($methodName, $denyMethod) ? $defaultMethod : $methodName;
    if ($className == $denyClass || !is_file($classFile) || isset($denyPattern[$className]) && in_array($methodName, $denyPattern[$className])) {
        $className = $defaultClass;
        $classFile = Config::get('CONTROLLER_DIR') . ($prefix ? $prefix . '/' : '') . snakeCase($className) . '.php';
        $methodName = $defaultMethod;
    }
    return array($classFile, $className, $methodName);
}
Esempio n. 4
0
 /**
  * 現在選択中のメニューかどうかを返す
  * @param params = array('entries/create', 'entries/edit', ...),
  */
 public static function isActiveMenu($params)
 {
     // コントローラー名とメソッド名を取得
     static $controller_name = null;
     static $method_name = null;
     if ($controller_name == null) {
         $controller_name = snakeCase(Config::get('ControllerName'));
         $method_name = snakeCase(Config::get('ActionName'));
     }
     if (is_string($params)) {
         $params = array($params);
     }
     // コントローラー名とメソッド名を判定
     foreach ($params as $value) {
         list($c_name, $m_name) = explode('/', $value);
         if (lcfirst($c_name) != $controller_name) {
             continue;
         }
         if (!empty($m_name) && snakeCase($m_name) != $method_name) {
             continue;
         }
         return true;
     }
     return false;
 }
Esempio n. 5
0
 /**
  * 画面表示処理
  */
 public function display($fw_template, $fw_data = array(), $fw_is_prefix = true)
 {
     $fw_template = snakeCase($fw_template);
     // データの設定
     if (count($fw_data)) {
         // 定義済み変数に関しては展開させない
         unset($fw_data['fw_template']);
         unset($fw_data['fw_is_prefix']);
         // fw_dataがある場合は渡された値のみ展開
         extract($fw_data);
     } else {
         // 定義済み変数に関しては展開させない
         unset($this->data['fw_template']);
         unset($this->data['fw_is_prefix']);
         // displayDataが無い場合はControllerのdataを展開
         extract($this->data);
     }
     // 展開完了後fw_dataは解除
     unset($fw_data);
     // リクエストデータ
     $request = Request::getInstance();
     // Debug用にテンプレートで使用可能な変数一覧表示
     if (Config::get('DEBUG_TEMPLATE_VARS')) {
         include Config::get('VIEW_DIR') . 'Common/variables.html';
     }
     // Template表示
     $fw_template_path = Config::get('VIEW_DIR') . ($fw_is_prefix ? Config::get('APP_PREFIX') . '/' : '') . $fw_template;
     $fw_template_device_path = preg_replace('/^(.*?)\\.([^\\/\\.]*?)$/', '$1' . Config::get('DEVICE_PREFIX.' . Config::get('DeviceType')) . '.$2', $fw_template_path);
     if (is_file($fw_template_device_path)) {
         // デバイス毎のファイルがあればデバイス毎のファイルを優先する
         include $fw_template_device_path;
     } elseif (is_file($fw_template_path)) {
         Debug::log('Template[' . $fw_template_path . ']', false, 'system', __FILE__, __LINE__);
         include $fw_template_path;
     } else {
         Debug::log('Not Found Template[' . $fw_template_path . ']', false, 'error', __FILE__, __LINE__);
     }
 }