function do_main() { $notifications = (array) KTNotification::getList(array("user_id = ?", $this->oUser->getId())); $num_notifications = count($notifications); $PAGE_SIZE = 5; $page = (int) KTUtil::arrayGet($_REQUEST, 'page', 0); $page_count = ceil($num_notifications / $PAGE_SIZE); if ($page >= $page_count) { $page = $page_count - 1; } if ($page < 0) { $page = 0; } // slice the notification array. $notifications = array_slice($notifications, $page * $PAGE_SIZE, $PAGE_SIZE); // prepare the batch html. easier to do this here than in the template. $batch = array(); for ($i = 0; $i < $page_count; $i++) { if ($i == $page) { $batch[] = sprintf("<strong>%d</strong>", $i + 1); } else { $batch[] = sprintf('<a href="%s">%d</a>', KTUtil::addQueryStringSelf($this->meldPersistQuery(array("page" => $i), "main", true)), $i + 1); } } $batch_html = implode(' · ', $batch); $count_string = sprintf(_kt("Showing Notifications %d - %d of %d"), $page * $PAGE_SIZE + 1, min(($page + 1) * $PAGE_SIZE, $num_notifications), $num_notifications); $this->oPage->setTitle(_kt("Items that require your attention")); $oTemplate =& $this->oValidator->validateTemplate("ktcore/misc/notification_overflow"); $oTemplate->setData(array('count_string' => $count_string, 'batch_html' => $batch_html, 'notifications' => $notifications)); return $oTemplate->render(); }
function &clearNotificationsForDocument($oDocument) { $aNotifications = KTNotification::getList('data_int_1 = ' . $oDocument->getId()); foreach ($aNotifications as $oNotification) { $oNotification->delete(); } }
function clearAll() { $this->startTransaction(); $aNotifications = KTNotification::getList('user_id = ' . $this->oUser->getId()); foreach ($aNotifications as $oNotification) { $res = $oNotification->delete(); if (PEAR::isError($res)) { $this->rollbackTransaction(); $this->addErrorMessage(_kt('Failed to clear notifications.')); exit(redirect(generateControllerLink('dashboard'))); } } $this->commitTransaction(); $this->addInfoMessage(_kt('Notifications cleared.')); exit(redirect(generateControllerLink('dashboard'))); }
function render() { $notifications = KTNotification::getList(array('user_id = ?', $this->oUser->getId())); $num_notifications = count($notifications); $_MAX_NOTIFICATIONS = 5; // FIXME in lieu of pagination, we slice. if ($num_notifications > $_MAX_NOTIFICATIONS) { $notifications = array_slice($notifications, 0, $_MAX_NOTIFICATIONS); } $oPluginRegistry =& KTPluginRegistry::getSingleton(); $oPlugin =& $oPluginRegistry->getPlugin('ktcore.plugin'); $link = $oPlugin->getPagePath('notifications'); $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate('ktcore/dashlets/notifications'); $aTemplateData = array('notifications' => $notifications, 'notification_count' => $num_notifications, 'visible_count' => count($notifications), 'link_all' => $link); return $oTemplate->render($aTemplateData); }