/** * 検索 */ 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()); }
/** * 一覧表示 */ 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); }
/** * 一覧表示 */ 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); }
/** * 新規作成 */ 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); }
/** * 一覧表示 */ 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); }