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 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); }
function &newNotificationForDocument($oDocument, $oUser, $oState, $oActor, $sComments) { $aInfo = array(); $aInfo['sData1'] = $oState->getName(); $aInfo['sData2'] = $sComments; $aInfo['iData1'] = $oDocument->getId(); $aInfo['iData2'] = $oActor->getId(); $aInfo['sType'] = 'ktcore/workflow'; $aInfo['dCreationDate'] = getCurrentDateTime(); $aInfo['iUserId'] = $oUser->getId(); $aInfo['sLabel'] = $oDocument->getName(); $oNotification = KTNotification::createFromArray($aInfo); $handler = new KTWorkflowNotification(); if ($oUser->getEmailNotification() && strlen($oUser->getEmail()) > 0) { $emailContent = $handler->handleNotification($oNotification); $emailSubject = sprintf(_kt('Workflow Notification: %s'), $oDocument->getName()); $oEmail = new EmailAlert($oUser->getEmail(), $emailSubject, $emailContent); $oEmail->send(); } return $oNotification; }
function &newNotificationForDocument($oDocument, $oUser, $oActor, $sSubject, $sDetails) { $aInfo = array(); $aInfo['sData1'] = $sSubject; $aInfo['sText1'] = $sDetails; $aInfo['iData1'] = $oDocument->getId(); $aInfo['iData2'] = $oActor->getId(); $aInfo['sType'] = 'ktcore/assist'; $aInfo['dCreationDate'] = getCurrentDateTime(); $aInfo['iUserId'] = $oUser->getId(); $aInfo['sLabel'] = $oDocument->getName(); $oNotification = KTNotification::createFromArray($aInfo); $handler = new KTAssistNotification(); if ($oUser->getEmailNotification() && strlen($oUser->getEmail()) > 0) { $emailContent = $handler->handleNotification($oNotification); $emailSubject = sprintf(_kt('Assistance request: %s'), $oDocument->getName()); $oEmail = new EmailAlert($oUser->getEmail(), $emailSubject, $emailContent); $oEmail->send(); } return $oNotification; }