function authenticateAction() { // Pull from $_POST @($original_path = explode(',', DevblocksPlatform::importGPC($_POST['original_path']))); @($email = DevblocksPlatform::importGPC($_POST['email'])); @($password = DevblocksPlatform::importGPC($_POST['password'])); $url_service = DevblocksPlatform::getUrlService(); $worker = DAO_Worker::login($email, $password); if (!is_null($worker)) { $session = DevblocksPlatform::getSessionService(); $visit = new UsermeetVisit(); $visit->setWorker($worker); $session->setVisit($visit); //authentication passed if ($original_path[0] == '') { unset($original_path[0]); } $devblocks_response = new DevblocksHttpResponse($original_path); // Worker $worker = UsermeetApplication::getActiveWorker(); // Timezone if (null != ($timezone = DAO_WorkerPref::get($worker->id, 'timezone'))) { $_SESSION['timezone'] = $timezone; @date_default_timezone_set($timezone); } // Language if (null != ($lang_code = DAO_WorkerPref::get($worker->id, 'locale'))) { $_SESSION['locale'] = $lang_code; DevblocksPlatform::setLocale($lang_code); } if (empty($devblocks_response->path)) { $tour_enabled = intval(DAO_WorkerPref::get($worker->id, 'assist_mode', 1)); $next_page = $tour_enabled ? 'welcome' : 'home'; $devblocks_response = new DevblocksHttpResponse(array($next_page)); } } else { //authentication failed $devblocks_response = new DevblocksHttpResponse(array('login', 'failed')); } DevblocksPlatform::redirect($devblocks_response); }
function authenticateAction() { @($original_path = explode(',', DevblocksPlatform::importGPC($_POST['original_path']))); $manifest = DevblocksPlatform::getExtension('login.default'); $inst = $manifest->createInstance(); /* @var $inst Extension_LoginAuthenticator */ $url_service = DevblocksPlatform::getUrlService(); if ($inst->authenticate()) { //authentication passed if ($original_path[0] == '') { unset($original_path[0]); } $devblocks_response = new DevblocksHttpResponse($original_path); // Worker $worker = CerberusApplication::getActiveWorker(); // Timezone if (null != ($timezone = DAO_WorkerPref::get($worker->id, 'timezone'))) { $_SESSION['timezone'] = $timezone; @date_default_timezone_set($timezone); } // Language if (null != ($lang_code = DAO_WorkerPref::get($worker->id, 'locale'))) { $_SESSION['locale'] = $lang_code; DevblocksPlatform::setLocale($lang_code); } if (!empty($devblocks_response->path) && $devblocks_response->path[0] == 'login') { $tour_enabled = intval(DAO_WorkerPref::get($worker->id, 'assist_mode', 1)); $next_page = $tour_enabled ? 'welcome' : 'home'; $devblocks_response = new DevblocksHttpResponse(array($next_page)); } } else { //authentication failed $devblocks_response = new DevblocksHttpResponse(array('login', 'failed')); } DevblocksPlatform::redirect($devblocks_response); }
public function writeResponse(DevblocksHttpResponse $response) { $path = $response->path; // [JAS]: Ajax? // [TODO] Explore outputting whitespace here for Safari // if(empty($path)) // return; $tpl = DevblocksPlatform::getTemplateService(); $session = DevblocksPlatform::getSessionService(); $settings = CerberusSettings::getInstance(); $translate = DevblocksPlatform::getTranslationService(); $active_worker = CerberusApplication::getActiveWorker(); $visit = $session->getVisit(); $page_manifests = $this->_getAllowedPages(); $controller = array_shift($path); // Default page [TODO] This is supposed to come from framework.config.php if (empty($controller)) { $controller = 'home'; } // [JAS]: Require us to always be logged in for Cerberus pages if (empty($visit) && 0 != strcasecmp($controller, 'login')) { $query = array(); if (!empty($response->path)) { $query = array('url' => urlencode(implode('/', $response->path))); } DevblocksPlatform::redirect(new DevblocksHttpRequest(array('login'), $query)); } $page_id = $this->_getPageIdByUri($controller); @($page = DevblocksPlatform::getExtension($page_id, true)); /* @var $page CerberusPageExtension */ if (empty($page)) { header("Status: 404"); return; // [TODO] 404 } // [JAS]: Listeners (Step-by-step guided tour, etc.) $listenerManifests = DevblocksPlatform::getExtensions('devblocks.listener.http'); foreach ($listenerManifests as $listenerManifest) { /* @var $listenerManifest DevblocksExtensionManifest */ $inst = $listenerManifest->createInstance(); /* @var $inst DevblocksHttpRequestListenerExtension */ $inst->run($response, $tpl); } $tpl->assign('active_worker', $active_worker); $tour_enabled = false; if (!empty($visit) && !is_null($active_worker)) { $tour_enabled = intval(DAO_WorkerPref::get($active_worker->id, 'assist_mode', 1)); if (DEMO_MODE) { $tour_enabled = 1; } // override for DEMO $keyboard_shortcuts = intval(DAO_WorkerPref::get($active_worker->id, 'keyboard_shortcuts', 1)); $tpl->assign('pref_keyboard_shortcuts', $keyboard_shortcuts); $active_worker_memberships = $active_worker->getMemberships(); $tpl->assign('active_worker_memberships', $active_worker_memberships); $unread_notifications = DAO_WorkerEvent::getUnreadCountByWorker($active_worker->id); $tpl->assign('active_worker_notify_count', $unread_notifications); DAO_Worker::logActivity($active_worker->id, $page->getActivity()); } $tpl->assign('tour_enabled', $tour_enabled); // [JAS]: Variables provided to all page templates $tpl->assign('settings', $settings); $tpl->assign('session', $_SESSION); $tpl->assign('translate', $translate); $tpl->assign('visit', $visit); $tpl->assign('license', CerberusLicense::getInstance()); $tpl->assign('page_manifests', $page_manifests); $tpl->assign('page', $page); $tpl->assign('response_uri', implode('/', $response->path)); $core_tpl = DEVBLOCKS_PLUGIN_PATH . 'cerberusweb.core/templates/'; $tpl->assign('core_tpl', $core_tpl); // Prebody Renderers $preBodyRenderers = DevblocksPlatform::getExtensions('cerberusweb.renderer.prebody', true); if (!empty($preBodyRenderers)) { $tpl->assign('prebody_renderers', $preBodyRenderers); } // Postbody Renderers $postBodyRenderers = DevblocksPlatform::getExtensions('cerberusweb.renderer.postbody', true); if (!empty($postBodyRenderers)) { $tpl->assign('postbody_renderers', $postBodyRenderers); } // Timings $tpl->assign('render_time', microtime(true) - DevblocksPlatform::getStartTime()); if (function_exists('memory_get_usage') && function_exists('memory_get_peak_usage')) { $tpl->assign('render_memory', memory_get_usage() - DevblocksPlatform::getStartMemory()); $tpl->assign('render_peak_memory', memory_get_peak_usage() - DevblocksPlatform::getStartPeakMemory()); } $tpl->display($core_tpl . 'border.tpl'); // $cache = DevblocksPlatform::getCacheService(); // $cache->printStatistics(); }
function showConversationAction() { @($id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer')); @($expand_all = DevblocksPlatform::importGPC($_REQUEST['expand_all'], 'integer', '0')); @($active_worker = CerberusApplication::getActiveWorker()); $tpl = DevblocksPlatform::getTemplateService(); $tpl->assign('path', $this->_TPL_PATH); $tpl->assign('expand_all', $expand_all); $ticket = DAO_Ticket::getTicket($id); $tpl->assign('ticket', $ticket); $tpl->assign('requesters', $ticket->getRequesters()); $messages = $ticket->getMessages(); arsort($messages); $tpl->assign('latest_message_id', key($messages)); $tpl->assign('messages', $messages); // Thread comments and messages on the same level $convo_timeline = array(); // Track senders and their orgs $message_senders = array(); $message_sender_orgs = array(); // Loop messages foreach ($messages as $message_id => $message) { /* @var $message CerberusMessage */ $key = $message->created_date . '_m' . $message_id; // build a chrono index of messages $convo_timeline[$key] = array('m', $message_id); // If we haven't cached this sender address yet if (!isset($message_senders[$message->address_id])) { if (null != ($sender_addy = DAO_Address::get($message->address_id))) { $message_senders[$sender_addy->id] = $sender_addy; // If we haven't cached this sender org yet if (!isset($message_sender_orgs[$sender_addy->contact_org_id])) { if (null != ($sender_org = DAO_ContactOrg::get($sender_addy->contact_org_id))) { $message_sender_orgs[$sender_org->id] = $sender_org; } } } } } $tpl->assign('message_senders', $message_senders); $tpl->assign('message_sender_orgs', $message_sender_orgs); @($mail_inline_comments = DAO_WorkerPref::get($active_worker->id, 'mail_inline_comments', 1)); if ($mail_inline_comments) { // if inline comments are enabled $comments = DAO_TicketComment::getByTicketId($id); arsort($comments); $tpl->assign('comments', $comments); // build a chrono index of comments foreach ($comments as $comment_id => $comment) { /* @var $comment Model_TicketComment */ $key = $comment->created . '_c' . $comment_id; $convo_timeline[$key] = array('c', $comment_id); } } // sort the timeline if (!$expand_all) { krsort($convo_timeline); } else { ksort($convo_timeline); } $tpl->assign('convo_timeline', $convo_timeline); // Message Notes $notes = DAO_MessageNote::getByTicketId($id); $message_notes = array(); // Index notes by message id if (is_array($notes)) { foreach ($notes as $note) { if (!isset($message_notes[$note->message_id])) { $message_notes[$note->message_id] = array(); } $message_notes[$note->message_id][$note->id] = $note; } } $tpl->assign('message_notes', $message_notes); // Message toolbar items $messageToolbarItems = DevblocksPlatform::getExtensions('cerberusweb.message.toolbaritem', true); if (!empty($messageToolbarItems)) { $tpl->assign('message_toolbaritems', $messageToolbarItems); } // Workers $workers = DAO_Worker::getAll(); $tpl->assign('workers', $workers); $tpl->register_modifier('makehrefs', array('CerberusUtils', 'smarty_modifier_makehrefs')); $tpl->display('file:' . $this->_TPL_PATH . 'display/modules/conversation/index.tpl'); }
function viewSaveCustomizeAction() { $translate = DevblocksPlatform::getTranslationService(); @($id = DevblocksPlatform::importGPC($_REQUEST['id'])); @($columns = DevblocksPlatform::importGPC($_REQUEST['columns'], 'array', array())); @($num_rows = DevblocksPlatform::importGPC($_REQUEST['num_rows'], 'integer', 10)); $num_rows = max($num_rows, 1); // make 1 the minimum $view = C4_AbstractViewLoader::getView($id); $view->doCustomize($columns, $num_rows); $active_worker = CerberusApplication::getActiveWorker(); // Conditional Persist if (substr($id, 0, 5) == "cust_") { // custom workspace $list_view_id = intval(substr($id, 5)); // Special custom view fields @($title = DevblocksPlatform::importGPC($_REQUEST['title'], 'string', $translate->_('views.new_list'))); $view->name = $title; // Persist Object $list_view = new Model_WorkerWorkspaceListView(); $list_view->title = $title; $list_view->columns = $view->view_columns; $list_view->num_rows = $view->renderLimit; $list_view->params = $view->params; $list_view->sort_by = $view->renderSortBy; $list_view->sort_asc = $view->renderSortAsc; DAO_WorkerWorkspaceList::update($list_view_id, array(DAO_WorkerWorkspaceList::LIST_VIEW => serialize($list_view))); } else { $prefs = new C4_AbstractViewModel(); $prefs->class_name = get_class($view); $prefs->view_columns = $view->view_columns; $prefs->renderLimit = $view->renderLimit; $prefs->renderSortBy = $view->renderSortBy; $prefs->renderSortAsc = $view->renderSortAsc; DAO_WorkerPref::set($active_worker->id, 'view' . $view->id, serialize($prefs)); } C4_AbstractViewLoader::setView($id, $view); $view->render(); }
function handleRequest(DevblocksHttpRequest $request) { $worker = CerberusApplication::getActiveWorker(); if (empty($worker)) { return; } $stack = $request->path; array_shift($stack); // print @($object = strtolower(array_shift($stack))); // ticket|message|etc $tpl = DevblocksPlatform::getTemplateService(); $tpl->assign('path', $this->_TPL_PATH); $settings = DevblocksPlatform::getPluginSettingsService(); $tpl->assign('settings', $settings); $translate = DevblocksPlatform::getTranslationService(); $tpl->assign('translate', $translate); $teams = DAO_Group::getAll(); $tpl->assign('teams', $teams); $buckets = DAO_Bucket::getAll(); $tpl->assign('buckets', $buckets); $workers = DAO_Worker::getAll(); $tpl->assign('workers', $workers); // Security $active_worker = CerberusApplication::getActiveWorker(); $active_worker_memberships = $active_worker->getMemberships(); // [TODO] Make this pluggable // Subcontroller switch ($object) { case 'ticket': @($id = array_shift($stack)); @($ticket = is_numeric($id) ? DAO_Ticket::getTicket($id) : DAO_Ticket::getTicketByMask($id)); $convo_timeline = array(); $messages = $ticket->getMessages(); foreach ($messages as $message_id => $message) { /* @var $message CerberusMessage */ $key = $message->created_date . '_m' . $message_id; // build a chrono index of messages $convo_timeline[$key] = array('m', $message_id); } @($mail_inline_comments = DAO_WorkerPref::get($active_worker->id, 'mail_inline_comments', 1)); if ($mail_inline_comments) { // if inline comments are enabled $comments = DAO_TicketComment::getByTicketId($ticket->id); arsort($comments); $tpl->assign('comments', $comments); // build a chrono index of comments foreach ($comments as $comment_id => $comment) { /* @var $comment Model_TicketComment */ $key = $comment->created . '_c' . $comment_id; $convo_timeline[$key] = array('c', $comment_id); } } ksort($convo_timeline); $tpl->assign('convo_timeline', $convo_timeline); // Comment parent addresses $comment_addresses = array(); foreach ($comments as $comment) { /* @var $comment Model_TicketComment */ $address_id = intval($comment->address_id); if (!isset($comment_addresses[$address_id])) { $address = DAO_Address::get($address_id); $comment_addresses[$address_id] = $address; } } $tpl->assign('comment_addresses', $comment_addresses); // Message Notes $notes = DAO_MessageNote::getByTicketId($ticket->id); $message_notes = array(); // Index notes by message id if (is_array($notes)) { foreach ($notes as $note) { if (!isset($message_notes[$note->message_id])) { $message_notes[$note->message_id] = array(); } $message_notes[$note->message_id][$note->id] = $note; } } $tpl->assign('message_notes', $message_notes); // Make sure we're allowed to view this ticket or message if (!isset($active_worker_memberships[$ticket->team_id])) { echo "<H1>" . $translate->_('common.access_denied') . "</H1>"; return; } $tpl->assign('ticket', $ticket); $tpl->display('file:' . $this->_TPL_PATH . 'print/ticket.tpl'); break; case 'message': @($id = array_shift($stack)); @($message = DAO_Ticket::getMessage($id)); @($ticket = DAO_Ticket::getTicket($message->ticket_id)); // Make sure we're allowed to view this ticket or message if (!isset($active_worker_memberships[$ticket->team_id])) { echo "<H1>" . $translate->_('common.access_denied') . "</H1>"; return; } // Message Notes $notes = DAO_MessageNote::getByTicketId($ticket->id); $message_notes = array(); // Index notes by message id if (is_array($notes)) { foreach ($notes as $note) { if (!isset($message_notes[$note->message_id])) { $message_notes[$note->message_id] = array(); } $message_notes[$note->message_id][$note->id] = $note; } } $tpl->assign('message_notes', $message_notes); $tpl->assign('message', $message); $tpl->assign('ticket', $ticket); $tpl->display('file:' . $this->_TPL_PATH . 'print/message.tpl'); break; } }
function authenticateLDAPAction() { @($server = DevblocksPlatform::importGPC($_POST['server'])); @($port = DevblocksPlatform::importGPC($_POST['port'])); @($dn = DevblocksPlatform::importGPC($_POST['dn'])); @($password = DevblocksPlatform::importGPC($_POST['password'])); @($original_path = explode(',', DevblocksPlatform::importGPC($_POST['original_path']))); @($original_query_str = DevblocksPlatform::importGPC($_POST['original_query'])); $manifest = DevblocksPlatform::getExtension('login.ldap'); $inst = $manifest->createInstance(); /* @var $inst CerberusLoginPageExtension */ $url_service = DevblocksPlatform::getUrlService(); if ($inst->authenticate(array('server' => $server, 'port' => $port, 'dn' => $dn, 'password' => $password))) { //authentication passed $original_query = $url_service->parseQueryString($original_query_str); if ($original_path[0] == '') { unset($original_path[0]); } $devblocks_response = new DevblocksHttpResponse($original_path, $original_query); if ($devblocks_response->path[0] == 'login') { $session = DevblocksPlatform::getSessionService(); $visit = $session->getVisit(); $tour_enabled = false; if (!empty($visit) && !is_null($visit->getWorker())) { $worker = $visit->getWorker(); $tour_enabled = intval(DAO_WorkerPref::get($worker->id, 'assist_mode', 1)); } $next_page = $tour_enabled ? 'welcome' : 'home'; $devblocks_response = new DevblocksHttpResponse(array($next_page)); } } else { //authentication failed $devblocks_response = new DevblocksHttpResponse(array('login')); } DevblocksPlatform::redirect($devblocks_response); }
/** * Enter description here... * * @param string $class Feg_AbstractView * @param string $view_label ID * @return Feg_AbstractView instance */ static function getView($view_label, Feg_AbstractViewModel $defaults = null) { $active_worker = FegApplication::getActiveWorker(); if (is_null(self::$views)) { self::_init(); } if (self::exists($view_label)) { $model = self::$views[$view_label]; return self::unserializeAbstractView($model); } else { // See if the worker has their own saved prefs @($prefs = unserialize(DAO_WorkerPref::get($active_worker->id, 'view' . $view_label))); // Sanitize if (!empty($prefs) && $prefs instanceof Feg_AbstractViewModel && !empty($prefs->class_name)) { if (!class_exists($prefs->class_name)) { DAO_WorkerPref::delete($active_worker->id, 'view' . $view_label); } $prefs = null; } // If no worker prefsd, check if we're passed defaults if (!$prefs instanceof Feg_AbstractViewModel && !empty($defaults)) { $prefs = $defaults; } // Create a default view if it doesn't exist if ($prefs instanceof Feg_AbstractViewModel) { if (!empty($prefs->class_name) && class_exists($prefs->class_name)) { $view = new $prefs->class_name(); $view->id = $view_label; if (!empty($prefs->view_columns)) { $view->view_columns = $prefs->view_columns; } if (!empty($prefs->renderLimit)) { $view->renderLimit = $prefs->renderLimit; } if (null !== $prefs->renderSortBy) { $view->renderSortBy = $prefs->renderSortBy; } if (null !== $prefs->renderSortAsc) { $view->renderSortAsc = $prefs->renderSortAsc; } self::setView($view_label, $view); return $view; } } } return null; }
function saveTab() { @($forward_bucket = DevblocksPlatform::importGPC($_REQUEST['forward_bucket'], 'string', '')); @($forward_address = DevblocksPlatform::importGPC($_REQUEST['forward_address'], 'string', '')); @($forward_event = DevblocksPlatform::importGPC($_REQUEST['forward_event'], 'string', '')); $worker = CerberusApplication::getActiveWorker(); // Delete forwards @($forward_deletes = DevblocksPlatform::importGPC($_REQUEST['forward_deletes'], 'array', array())); if (!empty($forward_deletes)) { DAO_WorkerMailForward::delete($forward_deletes); } // Add forward if (!empty($forward_bucket) && !empty($forward_address) && !empty($forward_event)) { @(list($group_id, $bucket_id) = split('_', $forward_bucket)); if (is_null($group_id) || is_null($bucket_id)) { break; } $fields = array(DAO_WorkerMailForward::WORKER_ID => $worker->id, DAO_WorkerMailForward::GROUP_ID => $group_id, DAO_WorkerMailForward::BUCKET_ID => $bucket_id, DAO_WorkerMailForward::EMAIL => $forward_address, DAO_WorkerMailForward::EVENT => $forward_event); DAO_WorkerMailForward::create($fields); } // Assignment notifications @($assign_notify_email = DevblocksPlatform::importGPC($_REQUEST['assign_notify_email'], 'string', '')); DAO_WorkerPref::set($worker->id, ChWatchersPlugin::WORKER_PREF_ASSIGN_EMAIL, $assign_notify_email); DevblocksPlatform::setHttpResponse(new DevblocksHttpResponse(array('preferences', 'notifications'))); }
function saveDefaultsAction() { @($timezone = DevblocksPlatform::importGPC($_REQUEST['timezone'], 'string')); @($lang_code = DevblocksPlatform::importGPC($_REQUEST['lang_code'], 'string', 'en_US')); @($default_signature = DevblocksPlatform::importGPC($_REQUEST['default_signature'], 'string')); @($default_signature_pos = DevblocksPlatform::importGPC($_REQUEST['default_signature_pos'], 'integer', 0)); @($reply_box_height = DevblocksPlatform::importGPC($_REQUEST['reply_box_height'], 'integer')); $worker = CerberusApplication::getActiveWorker(); $translate = DevblocksPlatform::getTranslationService(); $tpl = DevblocksPlatform::getTemplateService(); $pref_errors = array(); // Time $_SESSION['timezone'] = $timezone; @date_default_timezone_set($timezone); DAO_WorkerPref::set($worker->id, 'timezone', $timezone); // Language $_SESSION['locale'] = $lang_code; DevblocksPlatform::setLocale($lang_code); DAO_WorkerPref::set($worker->id, 'locale', $lang_code); @($new_password = DevblocksPlatform::importGPC($_REQUEST['change_pass'], 'string')); @($verify_password = DevblocksPlatform::importGPC($_REQUEST['change_pass_verify'], 'string')); //[mdf] if nonempty passwords match, update worker's password if ($new_password != "" && $new_password === $verify_password) { $session = DevblocksPlatform::getSessionService(); $fields = array(DAO_Worker::PASSWORD => md5($new_password)); DAO_Worker::updateAgent($worker->id, $fields); } @($assist_mode = DevblocksPlatform::importGPC($_REQUEST['assist_mode'], 'integer', 0)); DAO_WorkerPref::set($worker->id, 'assist_mode', $assist_mode); @($keyboard_shortcuts = DevblocksPlatform::importGPC($_REQUEST['keyboard_shortcuts'], 'integer', 0)); DAO_WorkerPref::set($worker->id, 'keyboard_shortcuts', $keyboard_shortcuts); @($mail_inline_comments = DevblocksPlatform::importGPC($_REQUEST['mail_inline_comments'], 'integer', 0)); DAO_WorkerPref::set($worker->id, 'mail_inline_comments', $mail_inline_comments); @($mail_always_show_all = DevblocksPlatform::importGPC($_REQUEST['mail_always_show_all'], 'integer', 0)); DAO_WorkerPref::set($worker->id, 'mail_always_show_all', $mail_always_show_all); // Alternate Email Addresses @($new_email = DevblocksPlatform::importGPC($_REQUEST['new_email'], 'string', '')); @($email_delete = DevblocksPlatform::importGPC($_REQUEST['email_delete'], 'array', array())); // Confirm deletions are assigned to the current worker if (!empty($email_delete)) { foreach ($email_delete as $e) { if (null != ($worker_address = DAO_AddressToWorker::getByAddress($e)) && $worker_address->worker_id == $worker->id) { DAO_AddressToWorker::unassign($e); } } } // Assign a new e-mail address if it's legitimate if (!empty($new_email)) { if (null != ($addy = DAO_Address::lookupAddress($new_email, true))) { if (null == ($assigned = DAO_AddressToWorker::getByAddress($new_email))) { $this->_sendConfirmationEmail($new_email, $worker); } else { $pref_errors[] = vsprintf($translate->_('prefs.address.exists'), $new_email); } } else { $pref_errors[] = vsprintf($translate->_('prefs.address.invalid'), $new_email); } } $tpl->assign('pref_errors', $pref_errors); DevblocksPlatform::setHttpResponse(new DevblocksHttpResponse(array('preferences'))); }
function doStopTourAction() { // $request = DevblocksPlatform::getHttpRequest(); $worker = CerberusApplication::getActiveWorker(); DAO_WorkerPref::set($worker->id, 'assist_mode', 0); // DevblocksPlatform::redirect(new DevblocksHttpResponse($request->path, $request->query)); }
*/ require getcwd() . '/framework.config.php'; require DEVBLOCKS_PATH . 'Devblocks.class.php'; require APP_PATH . '/api/Application.class.php'; header("Content-type: text/html; charset=" . LANG_CHARSET_CODE); $request = DevblocksPlatform::readRequest(); DevblocksPlatform::init(); DevblocksPlatform::setExtensionDelegate('C4_DevblocksExtensionDelegate'); $session = DevblocksPlatform::getSessionService(); $settings = DevblocksPlatform::getPluginSettingsService(); $worker = CerberusApplication::getActiveWorker(); // Localization DevblocksPlatform::setLocale(isset($_SESSION['locale']) && !empty($_SESSION['locale']) ? $_SESSION['locale'] : 'en_US'); if (isset($_SESSION['timezone'])) { @date_default_timezone_set($_SESSION['timezone']); } $tpl = DevblocksPlatform::getTemplateService(); $tpl->assign('translate', DevblocksPlatform::getTranslationService()); $tpl->assign('session', $_SESSION); $tpl->assign('visit', $session->getVisit()); $tpl->assign('active_worker', $worker); $tpl->assign('settings', $settings); $tpl->assign('core_tpl', APP_PATH . '/features/cerberusweb.core/templates/'); if (!empty($worker)) { $active_worker_memberships = $worker->getMemberships(); $tpl->assign('active_worker_memberships', $active_worker_memberships); $keyboard_shortcuts = intval(DAO_WorkerPref::get($worker->id, 'keyboard_shortcuts', 1)); $tpl->assign('pref_keyboard_shortcuts', $keyboard_shortcuts); } CerberusApplication::processRequest($request, true); exit;
function saveTabGeneralAction() { @($timezone = DevblocksPlatform::importGPC($_REQUEST['timezone'], 'string')); @($lang_code = DevblocksPlatform::importGPC($_REQUEST['lang_code'], 'string', 'en_US')); $worker = PortSensorApplication::getActiveWorker(); $translate = DevblocksPlatform::getTranslationService(); $tpl = DevblocksPlatform::getTemplateService(); // Time $_SESSION['timezone'] = $timezone; @date_default_timezone_set($timezone); DAO_WorkerPref::set($worker->id, 'timezone', $timezone); // Language $_SESSION['locale'] = $lang_code; DevblocksPlatform::setLocale($lang_code); DAO_WorkerPref::set($worker->id, 'locale', $lang_code); @($new_password = DevblocksPlatform::importGPC($_REQUEST['change_pass'], 'string')); @($verify_password = DevblocksPlatform::importGPC($_REQUEST['change_pass_verify'], 'string')); //[mdf] if nonempty passwords match, update worker's password if ($new_password != "" && $new_password === $verify_password) { $session = DevblocksPlatform::getSessionService(); $fields = array(DAO_Worker::PASS => md5($new_password)); DAO_Worker::update($worker->id, $fields); } @($assist_mode = DevblocksPlatform::importGPC($_REQUEST['assist_mode'], 'integer', 0)); DAO_WorkerPref::set($worker->id, 'assist_mode', $assist_mode); @($keyboard_shortcuts = DevblocksPlatform::importGPC($_REQUEST['keyboard_shortcuts'], 'integer', 0)); DAO_WorkerPref::set($worker->id, 'keyboard_shortcuts', $keyboard_shortcuts); DevblocksPlatform::setHttpResponse(new DevblocksHttpResponse(array('preferences'))); }
function showTab() { $response = DevblocksPlatform::getHttpResponse(); $path = $response->path; array_shift($path); // iphone array_shift($path); // tickets array_shift($path); // current ('display') $id = array_shift($path); // ticket id @($active_worker = CerberusApplication::getActiveWorker()); $tpl = DevblocksPlatform::getTemplateService(); $tpl->assign('path', $this->_TPL_PATH); $tpl->assign('expand_all', $expand_all); $ticket = DAO_Ticket::getTicket($id); $tpl->assign('requesters', $ticket->getRequesters()); // Drafts $drafts = DAO_MailQueue::getWhere(sprintf("%s = %d AND %s = %s", DAO_MailQueue::TICKET_ID, $id, DAO_MailQueue::TYPE, C4_ORMHelper::qstr(Model_MailQueue::TYPE_TICKET_REPLY))); if (!empty($drafts)) { $tpl->assign('drafts', $drafts); } // Only unqueued drafts $pending_drafts = array(); if (!empty($drafts) && is_array($drafts)) { foreach ($drafts as $draft_id => $draft) { if (!$draft->is_queued) { $pending_drafts[$draft_id] = $draft; } } } if (!empty($pending_drafts)) { $tpl->assign('pending_drafts', $pending_drafts); } // Messages $messages = $ticket->getMessages(); arsort($messages); $tpl->assign('latest_message_id', key($messages)); $tpl->assign('messages', $messages); // Thread comments and messages on the same level $convo_timeline = array(); // Track senders and their orgs $message_senders = array(); $message_sender_orgs = array(); // Loop messages foreach ($messages as $message_id => $message) { /* @var $message Model_Message */ $key = $message->created_date . '_m' . $message_id; // build a chrono index of messages $convo_timeline[$key] = array('m', $message_id); // If we haven't cached this sender address yet if (!isset($message_senders[$message->address_id])) { if (null != ($sender_addy = DAO_Address::get($message->address_id))) { $message_senders[$sender_addy->id] = $sender_addy; // If we haven't cached this sender org yet if (!isset($message_sender_orgs[$sender_addy->contact_org_id])) { if (null != ($sender_org = DAO_ContactOrg::get($sender_addy->contact_org_id))) { $message_sender_orgs[$sender_org->id] = $sender_org; } } } } } $tpl->assign('message_senders', $message_senders); $tpl->assign('message_sender_orgs', $message_sender_orgs); @($mail_inline_comments = DAO_WorkerPref::get($active_worker->id, 'mail_inline_comments', 1)); if ($mail_inline_comments) { // if inline comments are enabled $comments = DAO_TicketComment::getByTicketId($id); arsort($comments); $tpl->assign('comments', $comments); // build a chrono index of comments foreach ($comments as $comment_id => $comment) { /* @var $comment Model_TicketComment */ $key = $comment->created . '_c' . $comment_id; $convo_timeline[$key] = array('c', $comment_id); } } // Thread drafts into conversation if (!empty($drafts)) { foreach ($drafts as $draft_id => $draft) { /* @var $draft Model_MailQueue */ $key = $draft->updated . '_d' . $draft_id; $convo_timeline[$key] = array('d', $draft_id); } } // sort the timeline if (!$expand_all) { krsort($convo_timeline); } else { ksort($convo_timeline); } $tpl->assign('convo_timeline', $convo_timeline); // Message Notes $notes = DAO_MessageNote::getByTicketId($id); $message_notes = array(); // Index notes by message id if (is_array($notes)) { foreach ($notes as $note) { if (!isset($message_notes[$note->message_id])) { $message_notes[$note->message_id] = array(); } $message_notes[$note->message_id][$note->id] = $note; } } $tpl->assign('message_notes', $message_notes); // Message toolbar items $messageToolbarItems = DevblocksPlatform::getExtensions('cerberusweb.message.toolbaritem', true); if (!empty($messageToolbarItems)) { $tpl->assign('message_toolbaritems', $messageToolbarItems); } // Workers $workers = DAO_Worker::getAll(); $tpl->assign('workers', $workers); $tpl->display('file:' . $this->_TPL_PATH . 'tickets/display/conversation.tpl'); }