public static function getInstance() { if (!self::$instance) { self::$instance = new BlogPluginsModel(); } return self::$instance; }
/** * プラグイン用のプレビュー */ 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); }