Ejemplo n.º 1
0
 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');
     }
 }
Ejemplo n.º 2
0
 public function executeRefresh($request)
 {
     $this->checkList($request);
     LsCache::clearListCacheById($this->list['id']);
     $this->redirect($request->getParameter('ref', LsListTable::getInternalUrl($this->list)));
 }
Ejemplo n.º 3
0
 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();
 }