示例#1
0
 /**
  * Filter tickets by certain condition
  *
  */
 public function actionFilterIssues($type, $id, $alias, $rss = null)
 {
     // Initiate Criteria
     $criteria = new CDbCriteria();
     $pages = new CPagination();
     $pages->route = '/issues/' . $type . '/' . $id . '/' . $alias;
     switch ($type) {
         case 'status':
             $criteria->condition = 't.ticketstatus=:status';
             $criteria->params = array(':status' => $id);
             break;
         case 'type':
             $criteria->condition = 't.tickettype=:type';
             $criteria->params = array(':type' => $id);
             break;
         case 'priority':
             $criteria->condition = 't.priority=:priority';
             $criteria->params = array(':priority' => $id);
             break;
         case 'category':
             $criteria->condition = 't.ticketcategory=:category';
             $criteria->params = array(':category' => $id);
             break;
         case 'version':
             $criteria->condition = 't.ticketversion=:version';
             $criteria->params = array(':version' => $id);
             break;
         case 'fixedin':
             $criteria->condition = 't.fixedin=:fixedin';
             $criteria->params = array(':fixedin' => $id);
             break;
         case 'milestone':
             $criteria->condition = 't.milestone=:milestone';
             $criteria->params = array(':milestone' => $id);
             break;
         default:
             $this->redirect(array('/tickets'));
             break;
     }
     // Initiate Pager
     $count = Tickets::model()->count($criteria);
     $pages->pageSize = Yii::app()->params['ticketsPerPage'];
     $pages->applyLimit($criteria);
     // Load them
     $tickets = Tickets::model()->with(array('reporter', 'assigned', 'status', 'type', 'category', 'ticketpriority', 'version', 'fixed', 'ticketmilestone'))->byDate()->findAll($criteria);
     // Did we wanted to see the rss
     if ($rss && in_array($rss, array('rss', 'atom'))) {
         // Load the feed writer
         Yii::import('ext.FeedWriter.FeedWriter');
         $feedWriter = new FeedWriter($rss == 'atom' ? ATOM : RSS2);
         $channelElems = array('title' => Yii::t('tickets', 'Tickets Feed'), 'link' => Yii::app()->createAbsoluteUrl('/tickets'), 'charset' => Yii::app()->charset, 'description' => Yii::t('tickets', 'Tickets Feed'), 'author' => Yii::app()->name, 'generator' => Yii::app()->name, 'language' => Yii::app()->language, 'ttl' => 10);
         // Set channel elements
         $feedWriter->setChannelElementsFromArray($channelElems);
         if ($tickets) {
             foreach ($tickets as $r) {
                 $newItem = $feedWriter->createNewItem();
                 $itemElems = array('title' => htmlspecialchars($r->title), 'link' => Yii::app()->createAbsoluteUrl('/issue/' . $r->id . '/' . $r->alias), 'charset' => Yii::app()->charset, 'description' => htmlspecialchars(substr(strip_tags($r->content), 0, 100)), 'author' => $r->reporter ? $r->reporter->username : Yii::app()->name, 'generator' => Yii::app()->name, 'language' => Yii::app()->language, 'guid' => $r->id, 'content' => htmlspecialchars($r->content));
                 $newItem->addElementArray($itemElems);
                 //Now add the feed item
                 $feedWriter->addItem($newItem);
             }
         }
         // Display & end
         echo $feedWriter->genarateFeed();
         exit;
     }
     // Load the quick moderation form
     $moderation = new TicketsQuickModeration();
     // Title
     $this->pageTitle[] = Yii::t('tickets', 'Viewing Issues');
     // Render
     $this->render('ticketslist', array('total' => $count, 'tickets' => $tickets, 'pages' => $pages, 'moderation' => $moderation));
 }