public function executeRemove($request) { $this->patterns = array(); if ($request->isMethod('post')) { sfContext::switchTo('frontend'); $frontendContext = sfContext::getInstance(); if ($page = $request->getParameter('page')) { $routing = $frontendContext->getRouting(); if ($route = $routing->findRoute($page)) { $params = $route['parameters']; $module = $params['module']; $action = $params['action']; unset($params['module']); unset($params['action']); unset($params['sf_culture']); $this->patterns = LsCache::generateCachePatterns($module, $action, $params); LsCache::clearCachePatterns($this->patterns); } } if ($entityId = $request->getParameter('entity_id')) { $this->patterns = array_merge($this->patterns, LsCache::clearEntityCacheById($entityId)); } if ($relationshipId = $request->getParameter('relationship_id')) { $this->patterns = array_merge($this->patterns, LsCache::clearRelationshipCacheById($relationshipId)); } if ($listId = $request->getParameter('list_id')) { $this->patterns = array_merge($this->patterns, LsCache::clearListCacheById($listId)); } if ($userName = $request->getParameter('username')) { $this->patterns = array_merge($this->patterns, LsCache::clearUserCacheByName($userName)); } if ($groupName = $request->getParameter('groupname')) { $this->patterns = array_merge($this->patterns, LsCache::clearGroupCacheByName($groupName)); } sfContext::switchTo('backend'); } }
public function executeRefresh($request) { $this->checkList($request); LsCache::clearListCacheById($this->list['id']); $this->redirect($request->getParameter('ref', LsListTable::getInternalUrl($this->list))); }
public function executeAddList($request) { $this->checkEntity($request, false, false); if ($request->hasParameter('add_list_terms')) { $terms = explode(' ', $request->getParameter('add_list_terms')); $page = $request->getParameter('page', 1); $num = $request->getParameter('num', 10); $q = LsDoctrineQuery::create()->from('LsList l')->where('l.is_network = 0 AND NOT EXISTS(SELECT le.id FROM ls_list_entity le WHERE le.list_id = l.id AND le.entity_id = ? AND le.is_deleted = 0)', $this->entity->id); foreach ($terms as $term) { $q->addWhere('l.name LIKE \'%' . $term . '%\' OR l.description LIKE \'%' . $term . '%\''); } if (!$this->getUser()->hasCredential('admin')) { $q->addWhere('l.is_admin = ?', 0); } $this->results_pager = new Doctrine_Pager($q, $page, $num); } if ($request->isMethod('post')) { $list = Doctrine::getTable('LsList')->find($request->getParameter('list_id')); $this->forward404Unless($list); //check that entity isn't already on this list $q = LsDoctrineQuery::create()->from('LsListEntity le')->where('le.list_id = ? AND le.entity_id = ? AND le.is_deleted IS NOT NULL', array($list->id, $this->entity->id)); if ($listEntity = $q->fetchOne()) { if ($listEntity->is_deleted) { $listEntity->is_deleted = 0; $listEntity->save(); } } else { $listEntity = new LsListEntity(); $listEntity->list_id = $list->id; $listEntity->entity_id = $this->entity->id; $listEntity->save(); } $this->clearCache($this->entity); LsCache::clearListCacheById($list->id); $this->redirect($this->entity->getInternalUrl()); } //also show popular lists $q = LsDoctrineQuery::create()->select('l.*, COUNT(le.id) num')->from('LsList l')->where('l.is_network = 0')->leftJoin('l.LsListEntity le')->groupBy('l.id')->orderBy('num DESC')->limit(10); if (!$this->getUser()->hasCredential('admin')) { $q->addWhere('l.is_admin = ?', 0); } $this->popular_lists = $q->execute(); }