Example #1
0
 /**
  * 検索
  */
 public function search()
 {
     $request = Request::getInstance();
     $where = 'blog_id=?';
     $params = array($this->getBlogId());
     // 検索ワード取得
     if ($keyword = $request->get('q')) {
         $this->set('sub_title', $request->get('q'));
         $keyword = Model::escape_wildcard($keyword);
         $keyword = "%{$keyword}%";
         $where .= ' AND (title LIKE ? OR body LIKE ?)';
         $params = array_merge($params, array($keyword, $keyword));
     }
     $options = array('where' => $where, 'params' => $params);
     $this->setEntriesData($options, array('search_area'));
     return $this->fc2template($this->getBlogId());
 }
Example #2
0
 /**
  * 一覧表示
  */
 public function index()
 {
     $request = Request::getInstance();
     $tags_model = Model::load('Tags');
     $blog_id = $this->getBlogId();
     Session::set('sig', App::genRandomString());
     // 検索条件作成
     $where = 'blog_id=?';
     $params = array($blog_id);
     if ($name = $request->get('name')) {
         $name = Model::escape_wildcard($name);
         $name = "%{$name}%";
         $where .= ' AND name LIKE ?';
         $params = array_merge($params, array($name));
     }
     // 並び順
     $order = 'count DESC, id DESC';
     switch ($request->get('order')) {
         default:
         case 'count_desc':
             break;
         case 'count_asc':
             $order = 'count ASC, id ASC';
             break;
         case 'name_desc':
             $order = 'name DESC, id DESC';
             break;
         case 'name_asc':
             $order = 'name ASC, id ASC';
             break;
     }
     $options = array('where' => $where, 'params' => $params, 'limit' => $request->get('limit', Config::get('TAG.DEFAULT_LIMIT'), Request::VALID_POSITIVE_INT), 'page' => $request->get('page', 0, Request::VALID_UNSIGNED_INT), 'order' => $order);
     if ($options['limit'] > max(array_keys(Config::get('TAG.LIMIT_LIST')))) {
         $options['limit'] = Config::get('TAG.DEFAULT_LIMIT');
     }
     if (ceil(PHP_INT_MAX / $options['limit']) <= $options['page']) {
         $options['page'] = 0;
     }
     $tags = $tags_model->find('all', $options);
     $paging = $tags_model->getPaging($options);
     $this->set('tags', $tags);
     $this->set('paging', $paging);
 }
Example #3
0
 /**
  * 一覧表示
  */
 public function index()
 {
     $request = Request::getInstance();
     $entries_model = Model::load('Entries');
     $blog_id = $this->getBlogId();
     // 検索条件
     $where = 'entries.blog_id=?';
     $params = array($blog_id);
     $from = array();
     if ($keyword = $request->get('keyword')) {
         $keyword = Model::escape_wildcard($keyword);
         $keyword = "%{$keyword}%";
         $where .= ' AND (entries.title LIKE ? OR entries.body LIKE ? OR entries.extend LIKE ?)';
         $params = array_merge($params, array($keyword, $keyword, $keyword));
     }
     if ($open_status = $request->get('open_status')) {
         $where .= ' AND entries.open_status=?';
         $params[] = $open_status;
     }
     if ($category_id = $request->get('category_id')) {
         $where .= ' AND entry_categories.blog_id=? AND entry_categories.category_id=? AND entries.id=entry_categories.entry_id';
         $params = array_merge($params, array($blog_id, $category_id));
         $from[] = 'entry_categories';
     }
     if ($tag_id = $request->get('tag_id')) {
         $where .= ' AND entry_tags.blog_id=? AND entry_tags.tag_id=? AND entries.id=entry_tags.entry_id';
         $params = array_merge($params, array($blog_id, $tag_id));
         $from[] = 'entry_tags';
     }
     // 並び順
     $order = 'entries.posted_at DESC, entries.id DESC';
     switch ($request->get('order')) {
         default:
         case 'posted_at_desc':
             break;
         case 'posted_at_asc':
             $order = 'entries.posted_at ASC, entries.id ASC';
             break;
         case 'title_desc':
             $order = 'entries.title DESC, entries.id DESC';
             break;
         case 'title_asc':
             $order = 'entries.title ASC, entries.id ASC';
             break;
         case 'comment_desc':
             $order = 'entries.comment_count DESC, entries.id DESC';
             break;
         case 'comment_asc':
             $order = 'entries.comment_count ASC, entries.id ASC';
             break;
         case 'body_desc':
             $order = 'entries.body DESC, entries.id DESC';
             break;
         case 'body_asc':
             $order = 'entries.body ASC, entries.id ASC';
             break;
     }
     Session::set('sig', App::genRandomString());
     // オプション設定
     $options = array('fields' => 'entries.*', 'where' => $where, 'params' => $params, 'from' => $from, 'limit' => $request->get('limit', Config::get('ENTRY.DEFAULT_LIMIT'), Request::VALID_POSITIVE_INT), 'page' => $request->get('page', 0, Request::VALID_UNSIGNED_INT), 'order' => $order);
     $entries = $entries_model->find('all', $options);
     $paging = $entries_model->getPaging($options);
     $this->set('entries', $entries);
     $this->set('paging', $paging);
 }
Example #4
0
 /**
  * 新規作成
  */
 public function upload()
 {
     $request = Request::getInstance();
     $files_model = Model::load('Files');
     $blog_id = $this->getBlogId();
     Session::set('sig', App::genRandomString());
     // 初期表示時
     if ($request->file('file')) {
         // 新規登録処理
         $errors = array();
         $errors['file'] = $files_model->insertValidate($request->file('file'), $request->get('file'), $data_file);
         if (empty($errors['file'])) {
             $data_file['blog_id'] = $blog_id;
             $tmp_name = $data_file['tmp_name'];
             unset($data_file['tmp_name']);
             if ($id = $files_model->insert($data_file)) {
                 // ファイルの移動
                 $data_file['id'] = $id;
                 $move_file_path = App::getUserFilePath($data_file, true);
                 App::mkdir($move_file_path);
                 move_uploaded_file($tmp_name, $move_file_path);
                 $this->setInfoMessage(__('I have completed the upload of files'));
                 $this->redirect(array('action' => 'upload'));
             }
         }
         // エラー情報の設定
         $this->setErrorMessage(__('Input error exists'));
         $this->set('errors', $errors);
         return;
     }
     // PCの場合はajaxでファイル情報を取得するので以下の処理は不要
     if (App::isPC()) {
         return;
     }
     // 検索条件
     $where = 'blog_id=?';
     $params = array($blog_id);
     if ($keyword = $request->get('keyword')) {
         $keyword = Model::escape_wildcard($keyword);
         $keyword = "%{$keyword}%";
         $where .= ' AND name LIKE ?';
         $params = array_merge($params, array($keyword));
     }
     // 並び順
     $order = 'created_at DESC, id DESC';
     switch ($request->get('order')) {
         default:
         case 'created_at_desc':
             break;
         case 'created_at_asc':
             $order = 'created_at ASC, id ASC';
             break;
         case 'name_desc':
             $order = 'name DESC, id DESC';
             break;
         case 'name_asc':
             $order = 'name ASC, id ASC';
             break;
     }
     $options = array('where' => $where, 'params' => $params, 'limit' => $request->get('limit', App::getPageLimit('FILE'), Request::VALID_POSITIVE_INT), 'page' => $request->get('page', 0, Request::VALID_UNSIGNED_INT), 'order' => $order);
     $files = $files_model->find('all', $options);
     $paging = $files_model->getPaging($options);
     $this->set('files', $files);
     $this->set('paging', $paging);
 }
Example #5
0
 /**
  * 一覧表示
  */
 public function index()
 {
     $request = Request::getInstance();
     $comments_model = Model::load('Comments');
     $blog_id = $this->getBlogId();
     // 検索条件
     $where = 'comments.blog_id=?';
     $params = array($blog_id);
     if ($keyword = $request->get('keyword')) {
         $keyword = Model::escape_wildcard($keyword);
         $keyword = "%{$keyword}%";
         $where .= ' AND (comments.title LIKE ? OR comments.body LIKE ? OR comments.name LIKE ?)';
         $params = array_merge($params, array($keyword, $keyword, $keyword));
     }
     if (($open_status = $request->get('open_status')) !== null) {
         $where .= ' AND comments.open_status=?';
         $params[] = $open_status;
     }
     if ($reply_status = $request->get('reply_status')) {
         $where .= ' AND comments.reply_status=?';
         $params[] = $reply_status;
     }
     if ($entry_id = $request->get('entry_id')) {
         $where .= ' AND comments.entry_id=?';
         $params[] = $entry_id;
     }
     // 記事の結合条件追加
     $where .= ' AND entries.blog_id=? AND comments.entry_id=entries.id';
     $params[] = $blog_id;
     // 並び順
     $order = 'comments.created_at DESC, id DESC';
     switch ($request->get('order')) {
         default:
         case 'created_at_desc':
             break;
         case 'created_at_asc':
             $order = 'comments.created_at ASC, comments.id ASC';
             break;
         case 'name_desc':
             $order = 'comments.name DESC, comments.id DESC';
             break;
         case 'name_asc':
             $order = 'comments.name ASC, comments.id ASC';
             break;
         case 'body_desc':
             $order = 'comments.body DESC, comments.id DESC';
             break;
         case 'body_asc':
             $order = 'comments.body ASC, comments.id ASC';
             break;
         case 'entry_id_desc':
             $order = 'comments.entry_id DESC, comments.id DESC';
             break;
         case 'entry_id_asc':
             $order = 'comments.entry_id ASC, comments.id ASC';
             break;
     }
     $options = array('fields' => array('comments.*', 'entries.title as entry_title'), 'from' => 'entries', 'where' => $where, 'params' => $params, 'limit' => $request->get('limit', Config::get('ENTRY.DEFAULT_LIMIT'), Request::VALID_POSITIVE_INT), 'page' => $request->get('page', 0, Request::VALID_UNSIGNED_INT), 'order' => $order);
     if ($options['limit'] > max(array_keys(Config::get('ENTRY.LIMIT_LIST')))) {
         $options['limit'] = Config::get('ENTRY.DEFAULT_LIMIT');
     }
     if (ceil(PHP_INT_MAX / $options['limit']) <= $options['page']) {
         $options['page'] = 0;
     }
     $comments = $comments_model->find('all', $options);
     $paging = $comments_model->getPaging($options);
     $this->set('comments', $comments);
     $this->set('paging', $paging);
 }