public function executeGoto(sfWebRequest $request) { $q = Doctrine_Core::getTable('Discussions')->createQuery('d')->leftJoin('d.DiscussionsStatus ds')->leftJoin('d.Projects p')->leftJoin('d.Users'); $q->addWhere('projects_id=?', $request->getParameter('projects_id')); if (Users::hasAccess('view_own', 'discussions', $this->getUser(), $request->getParameter('projects_id'))) { $q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',d.assigned_to) or d.users_id='" . $this->getUser()->getAttribute('id') . "'"); } $q = Discussions::addFiltersToQuery($q, $this->getUser()->getAttribute('discussions_filter' . ((int) $request->getParameter('projects_id') > 0 ? $request->getParameter('projects_id') : ''))); $q = app::addListingOrder($q, 'discussions', $this->getUser(), (int) $request->getParameter('projects_id')); $this->menu = array(); $ids = array(); foreach ($q->fetchArray() as $v) { if (strlen($sn = app::getArrayName($v, 'DiscussionsStatus')) > 0) { $sn = $sn . ': '; } else { $sn = ''; } if ($request->getParameter('discussions_id') == $v['id']) { $v['name'] = '<b>' . $v['name'] . '</b>'; } $this->menu[] = array('title' => $sn . $v['name'], 'url' => 'discussionsComments/index?projects_id=' . $request->getParameter('projects_id') . '&discussions_id=' . $v['id']); $ids[] = $v['id']; } $current_key = array_search($request->getParameter('discussions_id'), $ids); $this->previous_item_id = false; $this->next_item_id = false; if (isset($ids[$current_key - 1])) { $this->previous_item_id = $ids[$current_key - 1]; } if (isset($ids[$current_key + 1])) { $this->next_item_id = $ids[$current_key + 1]; } }
public function executeListing(sfWebRequest $request) { if (!isset($this->reports_id)) { $this->reports_id = false; } $q = Doctrine_Core::getTable('Discussions')->createQuery('d')->leftJoin('d.DiscussionsStatus ds')->leftJoin('d.Projects p')->leftJoin('d.Users'); if ($request->hasParameter('projects_id')) { $q->addWhere('projects_id=?', $request->getParameter('projects_id')); if (Users::hasAccess('view_own', 'discussions', $this->getUser(), $request->getParameter('projects_id'))) { $q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',d.assigned_to) or d.users_id='" . $this->getUser()->getAttribute('id') . "'"); } } else { if (Users::hasAccess('view_own', 'projects', $this->getUser())) { $q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',team) or p.created_by='" . $this->getUser()->getAttribute('id') . "'"); } if (Users::hasAccess('view_own', 'discussions', $this->getUser())) { $q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',d.assigned_to) or d.users_id='" . $this->getUser()->getAttribute('id') . "'"); } } if ($this->reports_id > 0) { $q = DiscussionsReports::addFiltersToQuery($q, $this->reports_id, $this->getUser()); } elseif ($request->hasParameter('search')) { $q = app::addSearchQuery($q, $request->getParameter('search'), 'DiscussionsComments', 'd', $request->getParameter('search_by_extrafields')); $q = app::addListingOrder($q, 'discussions', $this->getUser()); } else { $q = Discussions::addFiltersToQuery($q, $this->getUser()->getAttribute('discussions_filter' . ((int) $request->getParameter('projects_id') > 0 ? $request->getParameter('projects_id') : ''))); $q = app::addListingOrder($q, 'discussions', $this->getUser(), (int) $request->getParameter('projects_id')); } if (sfConfig::get('app_rows_limit') > 0) { $this->pager = new sfDoctrinePager('Discussions', sfConfig::get('app_rows_limit')); $this->pager->setQuery($q); $this->pager->setPage($request->getParameter('page', 1)); $this->pager->init(); } $this->discussions_list = $q->fetchArray(); if (isset($this->is_dashboard)) { $this->url_params = 'redirect_to=dashboard'; $this->display_insert_button = true; } elseif ($this->reports_id > 0) { $this->url_params = 'redirect_to=discussionsReports' . $this->reports_id; $this->display_insert_button = true; } else { $this->url_params = ''; if ($request->hasParameter('projects_id')) { $this->url_params = 'projects_id=' . $request->getParameter('projects_id'); } $this->display_insert_button = true; } $this->tlId = rand(1111111, 9999999); }