/** * 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)); }