/** * Get a count of all forum posts * * @param integer $gid Group ID * @param string $authorized Authorization level * @param string $state State of threads * @return integer */ public static function getForumCount($gid = NULL, $authorized, $state = '') { if (!$gid) { return 0; } include_once PATH_CORE . DS . 'components' . DS . 'com_forum' . DS . 'models' . DS . 'manager.php'; $filters = array(); switch ($state) { case 'sticky': $filters['sticky'] = 1; break; case 'closed': $filters['state'] = 2; break; case 'open': default: $filters['state'] = 1; break; } $filters['start'] = 0; $forum = new \Components\Forum\Models\Manager('group', $gid); return $forum->posts($filters)->total(); }
/** * Display a list of threads * * @apiMethod GET * @apiUri /forum/list * @apiParameter { * "name": "limit", * "description": "Number of result to return.", * "type": "integer", * "required": false, * "default": 25 * } * @apiParameter { * "name": "limitstart", * "description": "Number of where to start returning results.", * "type": "integer", * "required": false, * "default": 0 * } * @apiParameter { * "name": "search", * "description": "A word or phrase to search for.", * "type": "string", * "required": false, * "default": "" * } * @apiParameter { * "name": "section", * "description": "Section alias to filter by", * "type": "string", * "required": false, * "default": "" * } * @apiParameter { * "name": "category", * "description": "Category alias to filter by", * "type": "string", * "required": false, * "default": "" * } * @apiParameter { * "name": "scope", * "description": "Scope (site, groups, members, etc.)", * "type": "string", * "required": false, * "default": "site" * } * @apiParameter { * "name": "scope_id", * "description": "Scope ID", * "type": "integer", * "required": false, * "default": 0 * } * @return void */ public function listTask() { $filters = array('authorized' => 1, 'limit' => Request::getInt('limit', 25), 'start' => Request::getInt('limitstart', 0), 'section' => Request::getVar('section', ''), 'category' => Request::getVar('category', ''), 'search' => Request::getVar('search', ''), 'scope' => Request::getWord('scope', 'site'), 'scope_id' => Request::getInt('scope_id', 0), 'state' => 1, 'parent' => 0); $model = new \Components\Forum\Models\Manager($filters['scope'], $filters['scope_id']); $section = $model->section($filters['section'], $model->get('scope'), $model->get('scope_id')); if (!$section->exists()) { throw new Exception(Lang::txt('Section not found.'), 404); } $category = $section->category($filters['category']); if (!$category->exists()) { throw new Exception(Lang::txt('Category not found.'), 404); } $response = new stdClass(); $response->section = new stdClass(); $response->section->id = $section->get('id'); $response->section->title = $section->get('title'); $response->section->alias = $section->get('alias'); $response->section->created = $section->get('created'); $response->section->scope = $section->get('scope'); $response->section->scope_id = $section->get('scope_id'); $response->category = new stdClass(); $response->category->id = $category->get('id'); $response->category->title = $category->get('title'); $response->category->alias = $category->get('alias'); $response->category->description = $category->get('description'); $response->category->created = $category->get('created'); $response->category->scope = $category->get('scope'); $response->category->scope_id = $category->get('scope_id'); $response->threads = array(); $response->total = $category->threads('count', array('state' => 1)); if ($response->total) { $base = str_replace('/api', '', rtrim(Request::base(), '/')); foreach ($category->threads('list', array('state' => 1)) as $thread) { $obj = new stdClass(); $obj->id = $thread->get('id'); $obj->title = $thread->get('title'); //$obj->description = $category->get('description'); $obj->created = $thread->get('created'); $obj->modified = $thread->get('modified'); $obj->anonymous = $thread->get('anonymous') ? true : false; $obj->closed = $thread->get('closed') ? true : false; $obj->scope = $thread->get('scope'); $obj->scope_id = $thread->get('scope_id'); $obj->creator = new stdClass(); $obj->creator->id = $thread->get('created_by'); $obj->creator->name = $thread->creator('name'); $obj->posts = $thread->posts('count'); $obj->url = $base . '/' . ltrim(Route::url('index.php?option=com_forum§ion=' . $section->get('alias') . '&category=' . $category->get('alias') . '&thread=' . $thread->get('id')), '/'); $response->threads[] = $obj; } } $response->success = true; $this->send($response); }