Example #1
0
 /**
  * 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();
 }
Example #2
0
 /**
  * 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&section=' . $section->get('alias') . '&category=' . $category->get('alias') . '&thread=' . $thread->get('id')), '/');
             $response->threads[] = $obj;
         }
     }
     $response->success = true;
     $this->send($response);
 }