function do_request($oDocument) { // Display form for sending a request through the the sys admin to unarchive the document // name, document, request, submit $oForm = new KTForm(); $oForm->setOptions(array('label' => _kt('Request restoration of document'), 'submit_label' => _kt('Send request'), 'identifier' => '', 'cancel_url' => KTBrowseUtil::getUrlForFolder($oFolder), 'fail_action' => 'main', 'context' => $this)); $oForm->addWidget(array('ktcore.widgets.text', array('label' => _kt('Reason'), 'name' => 'reason', 'required' => true))); $data = isset($_REQUEST['data']) ? $_REQUEST['data'] : array(); $iFolderId = $oDocument->getFolderID(); $oFolder = Folder::get($iFolderId); $sFolderUrl = KTBrowseUtil::getUrlForFolder($oFolder); if (!empty($data)) { $res = $oForm->validate(); if (!empty($res['errors'])) { return $oForm->handleError('', $aError); } $aAdminGroups = Group::getAdministratorGroups(); if (!PEAR::isError($aAdminGroups) && !empty($aAdminGroups)) { foreach ($aAdminGroups as $oGroup) { $aGroupUsers = $oGroup->getMembers(); // ensure unique users foreach ($aGroupUsers as $oUser) { $aUsers[$oUser->getId()] = $oUser; } } $sSubject = _kt('Request for an archived document to be restored'); $sDetails = $data['reason']; // Send request foreach ($aUsers as $oU) { if (!PEAR::isError($oU)) { include_once KT_DIR . '/plugins/ktcore/KTAssist.php'; KTAssistNotification::newNotificationForDocument($oDocument, $oU, $this->oUser, $sSubject, $sDetails); } } // Redirect to folder $this->addInfoMessage(_kt('The System Administrators have been notified of your request.')); redirect($sFolderUrl); exit; } } return $oForm->renderPage(_kt('Archived document request') . ': ' . $oDocument->getName()); }
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; }