/** * Display a list of questions * * @apiMethod GET * @apiUri /answers/questions/list * @apiParameter { * "name": "limit", * "description": "Number of result to return.", * "required": false, * "default": 25 * } * @apiParameter { * "name": "start", * "description": "Number of where to start returning results.", * "required": false, * "default": 0 * } * @apiParameter { * "name": "search", * "description": "A word or phrase to search for.", * "required": false, * "default": "" * } * @apiParameter { * "name": "sort", * "description": "Field to sort results by.", * "required": false, * "default": "created", * "allowedValues": "created, title, alias, id, publish_up, publish_down, state" * } * @apiParameter { * "name": "sort_Dir", * "description": "Direction to sort results by.", * "required": false, * "default": "desc", * "allowedValues": "asc, desc" * } * @return void */ public function listTask() { $database = \App::get('db'); $model = new \Components\Answers\Tables\Question($database); $filters = array('limit' => Request::getInt('limit', 25), 'start' => Request::getInt('limitstart', 0), 'search' => Request::getVar('search', ''), 'filterby' => Request::getword('filterby', ''), 'sortby' => Request::getWord('sort', 'date'), 'sort_Dir' => strtoupper(Request::getWord('sortDir', 'DESC'))); $response = new stdClass(); $response->questions = array(); $response->total = $model->getCount($filters); if ($response->total) { $base = rtrim(Request::base(), '/'); foreach ($model->getResults($filters) as $i => $q) { $question = new \Components\Answers\Models\Question($q); $obj = new stdClass(); $obj->id = $question->get('id'); $obj->subject = $question->subject(); $obj->quesion = $question->content(); $obj->state = $question->get('state'); $obj->url = str_replace('/api', '', $base . '/' . ltrim(Route::url($question->link()), '/')); $obj->responses = $question->comments('count'); $response->questions[] = $obj; } } $response->success = true; $this->send($response); }
/** * Vote for an item * * @return void */ public function voteTask() { $no_html = Request::getInt('no_html', 0); $id = Request::getInt('id', 0); $vote = Request::getInt('vote', 0); // Login required if (User::isGuest()) { if (!$no_html) { $this->setError(Lang::txt('COM_ANSWERS_PLEASE_LOGIN_TO_VOTE')); $this->loginTask(); } return; } // Load the question $row = new Question($id); // Record the vote if (!$row->vote($vote)) { if ($no_html) { $response = new \stdClass(); $response->success = false; $response->message = $row->getError(); echo json_encode($response); return; } else { App::redirect(Route::url($row->link()), $row->getError(), 'warning'); return; } } // Update display if ($no_html) { $this->qid = $id; $this->view->question = $row; $this->view->voted = $vote; foreach ($this->getErrors() as $error) { $this->view->setError($error); } $this->view->display(); } else { App::redirect(Route::url($row->link())); } }