Example #1
0
 public static function getInstance()
 {
     if (!self::$instance) {
         self::$instance = new BlogPluginsModel();
     }
     return self::$instance;
 }
Example #2
0
 /**
  * プラグイン用のプレビュー
  */
 private function preview_plugin()
 {
     $request = Request::getInstance();
     $blog_id = $this->getBlogId();
     // プラグインのプレビュー情報取得
     $preview_plugin = null;
     if ($request->get('plugin_id')) {
         // DBからプレビュー情報取得
         $preview_plugin = Model::load('Plugins')->findById($request->get('plugin_id'));
         $preview_plugin['category'] = $request->get('category');
     } else {
         // リクエストパラメータからプレビュー情報取得
         $preview_plugin = $request->get('blog_plugin');
         $preview_plugin['list'] = '';
         // TODO:リストスタイルは未作成
         $preview_plugin['attribute'] = '';
         // TODO:属性は未作成
     }
     $contents = $preview_plugin['contents'];
     // テンプレートのシンタックスチェック
     Model::load('BlogPlugins');
     $syntax = BlogPluginsModel::fc2PluginSyntax($contents);
     if ($syntax !== true) {
         return 'Entries/syntax.html';
     }
     // プラグインのPHPファイル作成
     BlogPluginsModel::createPlugin($contents, $blog_id);
     // 入力データからデータを作成
     $category = $preview_plugin['category'];
     $device_type = $preview_plugin['device_type'];
     $plugin = array('id' => 'preview', 'blog_id' => $blog_id, 'title' => $preview_plugin['title'], 'title_align' => $preview_plugin['title_align'], 'title_color' => $preview_plugin['title_color'], 'list' => $preview_plugin['list'], 'contents' => $preview_plugin['contents'], 'contents_align' => $preview_plugin['contents_align'], 'contents_color' => $preview_plugin['contents_color'], 'attribute' => $preview_plugin['attribute'], 'device_type' => $device_type, 'category' => $category, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'));
     // スマフォ版のプラグインのプレビュー表示
     if ($device_type == Config::get('DEVICE_SP')) {
         $this->set('s_plugin', $plugin);
         $this->setPageData(array('spplugin_area'));
         return $this->fc2template($blog_id);
     }
     // 記事一覧データ設定(スマフォ版以外のプレビュー表示)
     $options = array('where' => 'blog_id=?', 'params' => array($this->getBlogId()));
     $pages = $request->get('page') ? array() : array('index_area');
     $this->setEntriesData($options, $pages);
     // 通常のプラグインリストに追加する
     $plugins = Model::load('BlogPlugins')->findByDeviceTypeAndCategory($this->getDeviceType(), $category, $blog_id);
     $id = $request->get('id');
     if (empty($id)) {
         // 新規プラグインは最後尾に追加する
         $plugins[] = $plugin;
     } else {
         // 編集の場合は上書きする
         foreach ($plugins as $key => $value) {
             if ($value['id'] == $id) {
                 $plugins[$key] = $plugin;
             }
         }
     }
     $this->set('t_plugins_' . $category, $plugins);
     // FC2用のテンプレートで表示
     return $this->fc2template($blog_id);
 }