Exemple #1
0
 function showTab()
 {
     $visit = CerberusApplication::getVisit();
     $translate = DevblocksPlatform::getTranslationService();
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->cache_lifetime = "0";
     $tpl_path = dirname(dirname(__FILE__)) . '/templates/';
     $tpl->assign('path', $tpl_path);
     @($request_path = DevblocksPlatform::importGPC($_REQUEST['request'], 'string', ''));
     $tpl->assign('request_path', $request_path);
     @($stack = explode('/', $request_path));
     @array_shift($stack);
     // research
     @array_shift($stack);
     // fnr
     @($action = array_shift($stack));
     switch ($action) {
         default:
             //				if(null == ($view = C4_AbstractViewLoader::getView(null, self::VIEW_RESEARCH_FNR_SEARCH))) {
             //					$view = new C4_KbArticleView();
             //					$view->id = self::VIEW_RESEARCH_FNR_SEARCH;
             //					$view->name = $translate->_('common.search_results');
             //					C4_AbstractViewLoader::setView($view->id, $view);
             //				}
             //
             //				$tpl->assign('view', $view);
             //				$tpl->assign('view_fields', C4_KbArticleView::getFields());
             //				$tpl->assign('view_searchable_fields', C4_KbArticleView::getSearchFields());
             //				$tpl->assign('response_uri', 'research/fnr/search');
             $fnr_topics = DAO_FnrTopic::getWhere();
             $tpl->assign('fnr_topics', $fnr_topics);
             $tpl->display($tpl_path . 'research_tab/index.tpl');
             break;
     }
 }
Exemple #2
0
 function showTab()
 {
     @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer', 0));
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $translate = DevblocksPlatform::getTranslationService();
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->tpl_path);
     $tpl->cache_lifetime = "0";
     $view = C4_AbstractViewLoader::getView('', 'audit_log');
     if (null == $view) {
         $view = new C4_TicketAuditLogView();
         $view->id = 'audit_log';
         $view->name = $translate->_('auditlog.audit_log');
         $view->view_columns = array(SearchFields_TicketAuditLog::CHANGE_DATE, SearchFields_TicketAuditLog::WORKER_ID, SearchFields_TicketAuditLog::CHANGE_FIELD, SearchFields_TicketAuditLog::CHANGE_VALUE);
         $view->params = array();
         $view->renderLimit = 15;
         $view->renderPage = 0;
         $view->renderSortBy = SearchFields_TicketAuditLog::CHANGE_DATE;
         $view->renderSortAsc = false;
     }
     $view->params = array(SearchFields_TicketAuditLog::TICKET_ID => new DevblocksSearchCriteria(SearchFields_TicketAuditLog::TICKET_ID, DevblocksSearchCriteria::OPER_EQ, $ticket_id));
     $view->renderPage = 0;
     C4_AbstractViewLoader::setView($view->id, $view);
     $tpl->assign('view', $view);
     $tpl->display('file:' . $this->tpl_path . '/display/log/index.tpl');
 }
Exemple #3
0
 function isVisible()
 {
     // check login
     $visit = CerberusApplication::getVisit();
     if (empty($visit)) {
         return false;
     } else {
         return true;
     }
 }
Exemple #4
0
 function render()
 {
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     $visit = CerberusApplication::getVisit();
     $translate = DevblocksPlatform::getTranslationService();
     $response = DevblocksPlatform::getHttpResponse();
     $tpl->assign('request_path', implode('/', $response->path));
     $stack = $response->path;
     array_shift($stack);
     // research
     $tab_manifests = DevblocksPlatform::getExtensions('cerberusweb.research.tab', false);
     uasort($tab_manifests, create_function('$a, $b', "return strcasecmp(\$a->name,\$b->name);\n"));
     $tpl->assign('tab_manifests', $tab_manifests);
     @($tab_selected = array_shift($stack));
     if (empty($tab_selected)) {
         $tab_selected = '';
     }
     $tpl->assign('tab_selected', $tab_selected);
     $tpl->display('file:' . $this->_TPL_PATH . 'research/index.tpl');
 }
Exemple #5
0
 function showContactHistoryAction()
 {
     $translate = DevblocksPlatform::getTranslationService();
     @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer'));
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     $ticket = DAO_Ticket::getTicket($ticket_id);
     $requesters = $ticket->getRequesters();
     $contact = DAO_Address::get($ticket->first_wrote_address_id);
     $tpl->assign('contact', $contact);
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $view = C4_AbstractViewLoader::getView('', 'contact_history');
     if (null == $view) {
         $view = new C4_TicketView();
         $view->id = 'contact_history';
         $view->name = $translate->_('addy_book.history.view.title');
         $view->view_columns = array(SearchFields_Ticket::TICKET_LAST_ACTION_CODE, SearchFields_Ticket::TICKET_CREATED_DATE, SearchFields_Ticket::TICKET_TEAM_ID, SearchFields_Ticket::TICKET_CATEGORY_ID);
         $view->params = array();
         $view->renderLimit = 10;
         $view->renderSortBy = SearchFields_Ticket::TICKET_CREATED_DATE;
         $view->renderSortAsc = false;
     }
     $view->name = vsprintf($translate->_('addy_book.history.view.requester'), intval(count($requesters)));
     $view->params = array(SearchFields_Ticket::REQUESTER_ID => new DevblocksSearchCriteria(SearchFields_Ticket::REQUESTER_ID, 'in', array_keys($requesters)), SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, DevblocksSearchCriteria::OPER_EQ, 0));
     $view->renderPage = 0;
     $tpl->assign('view', $view);
     C4_AbstractViewLoader::setView($view->id, $view);
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     $teams = DAO_Group::getAll();
     $tpl->assign('teams', $teams);
     $buckets = DAO_Bucket::getAll();
     $tpl->assign('buckets', $buckets);
     $team_categories = DAO_Bucket::getTeams();
     $tpl->assign('team_categories', $team_categories);
     $tpl->display('file:' . $this->_TPL_PATH . 'display/modules/history/index.tpl');
 }
Exemple #6
0
 function viewDoCopyAction()
 {
     $translate = DevblocksPlatform::getTranslationService();
     $active_worker = CerberusApplication::getActiveWorker();
     $visit = CerberusApplication::getVisit();
     @($view_id = DevblocksPlatform::importGPC($_POST['view_id'], 'string'));
     $view = C4_AbstractViewLoader::getView($view_id);
     @($list_title = DevblocksPlatform::importGPC($_POST['list_title'], 'string', ''));
     @($workspace = DevblocksPlatform::importGPC($_POST['workspace'], 'string', ''));
     @($new_workspace = DevblocksPlatform::importGPC($_POST['new_workspace'], 'string', ''));
     if (empty($workspace) && empty($new_workspace)) {
         $new_workspace = $translate->_('mail.workspaces.new');
     }
     if (empty($list_title)) {
         $list_title = $translate->_('mail.workspaces.new_list');
     }
     $workspace_name = !empty($new_workspace) ? $new_workspace : $workspace;
     // Find the proper workspace source based on the class of the view
     $source_manifests = DevblocksPlatform::getExtensions(Extension_WorkspaceSource::EXTENSION_POINT, false);
     $source_manifest = null;
     if (is_array($source_manifests)) {
         foreach ($source_manifests as $mft) {
             if (is_a($view, $mft->params['view_class'])) {
                 $source_manifest = $mft;
                 break;
             }
         }
     }
     if (!is_null($source_manifest)) {
         // View params inside the list for quick render overload
         $list_view = new Model_WorkerWorkspaceListView();
         $list_view->title = $list_title;
         $list_view->num_rows = $view->renderLimit;
         $list_view->columns = $view->view_columns;
         $list_view->params = $view->params;
         $list_view->sort_by = $view->renderSortBy;
         $list_view->sort_asc = $view->renderSortAsc;
         // Save the new worklist
         $fields = array(DAO_WorkerWorkspaceList::WORKER_ID => $active_worker->id, DAO_WorkerWorkspaceList::WORKSPACE => $workspace_name, DAO_WorkerWorkspaceList::SOURCE_EXTENSION => $source_manifest->id, DAO_WorkerWorkspaceList::LIST_VIEW => serialize($list_view), DAO_WorkerWorkspaceList::LIST_POS => 99);
         $list_id = DAO_WorkerWorkspaceList::create($fields);
     }
     // Select the workspace tab
     $visit->set(CerberusVisit::KEY_HOME_SELECTED_TAB, 'w_' . $workspace_name);
     DevblocksPlatform::redirect(new DevblocksHttpResponse(array('home')));
 }
Exemple #7
0
 function browseOppsAction()
 {
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $request = DevblocksPlatform::getHttpRequest();
     $stack = $request->path;
     array_shift($stack);
     // crm
     array_shift($stack);
     // browseOpps
     @($id = array_shift($stack));
     $opp = DAO_CrmOpportunity::get($id);
     if (empty($opp)) {
         echo "<H1>Invalid Opportunity ID.</H1>";
         return;
     }
     // Display series support (inherited paging from Display)
     @($view_id = array_shift($stack));
     if (!empty($view_id)) {
         $view = C4_AbstractViewLoader::getView('', $view_id);
         // Restrict to the active worker's groups
         $active_worker = CerberusApplication::getActiveWorker();
         //			$memberships = $active_worker->getMemberships();
         //			$view->params['tmp'] = new DevblocksSearchCriteria(SearchFields_CrmOpportunity::TEAM_ID, 'in', array_keys($memberships));
         $range = 100;
         $pos = $view->renderLimit * $view->renderPage;
         $page = floor($pos / $range);
         list($series, $series_count) = DAO_CrmOpportunity::search($view->view_columns, $view->params, $range, $page, $view->renderSortBy, $view->renderSortAsc, false);
         $series_info = array('title' => $view->name, 'total' => count($series), 'series' => $series);
         $visit->set('ch_opp_series', $series_info);
     }
     DevblocksPlatform::redirect(new DevblocksHttpResponse(array('crm', 'opps', $opp->id)));
     exit;
 }
Exemple #8
0
 function render()
 {
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('id', $this->id);
     $view_path = DEVBLOCKS_PLUGIN_PATH . 'cerberusweb.mobile/templates/tickets/';
     $tpl->assign('view_path_mobile', $view_path_mobile);
     $tpl->assign('view', $this);
     $visit = CerberusApplication::getVisit();
     $results = self::getData();
     $tpl->assign('results', $results);
     @($ids = array_keys($results[0]));
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     $teams = DAO_Group::getAll();
     $tpl->assign('teams', $teams);
     $buckets = DAO_Bucket::getAll();
     $tpl->assign('buckets', $buckets);
     $team_categories = DAO_Bucket::getTeams();
     $tpl->assign('team_categories', $team_categories);
     // [TODO] Is this even used here or did mfogg copy it blindly?
     $ticket_fields = DAO_CustomField::getBySource(ChCustomFieldSource_Ticket::ID);
     $tpl->assign('ticket_fields', $ticket_fields);
     // Undo?
     // [TODO] Is this even used here or did mfogg copy it blindly?
     $last_action = C4_TicketView::getLastAction($this->id);
     $tpl->assign('last_action', $last_action);
     if (!empty($last_action) && !is_null($last_action->ticket_ids)) {
         $tpl->assign('last_action_count', count($last_action->ticket_ids));
     }
     $tpl->cache_lifetime = "0";
     $tpl->assign('view_fields', $this->getColumns());
     $tpl->display('file:' . $view_path . 'ticket_view.tpl');
 }
Exemple #9
0
 function doImportAction()
 {
     $active_worker = CerberusApplication::getActiveWorker();
     if (!$active_worker->hasPriv('crm.opp.actions.import')) {
         return;
     }
     @($pos = DevblocksPlatform::importGPC($_REQUEST['pos'], 'array', array()));
     @($field = DevblocksPlatform::importGPC($_REQUEST['field'], 'array', array()));
     @($sync_dupes = DevblocksPlatform::importGPC($_REQUEST['sync_dupes'], 'array', array()));
     @($include_first = DevblocksPlatform::importGPC($_REQUEST['include_first'], 'integer', 0));
     @($is_blank_unset = DevblocksPlatform::importGPC($_REQUEST['is_blank_unset'], 'integer', 0));
     @($opt_assign = DevblocksPlatform::importGPC($_REQUEST['opt_assign'], 'integer', 0));
     @($opt_assign_worker_id = DevblocksPlatform::importGPC($_REQUEST['opt_assign_worker_id'], 'integer', 0));
     $visit = CerberusApplication::getVisit();
     $db = DevblocksPlatform::getDatabaseService();
     $workers = DAO_Worker::getAllActive();
     $csv_file = $visit->get('crm.import.last.csv', '');
     $fp = fopen($csv_file, "rt");
     if (!$fp) {
         return;
     }
     // [JAS]: Do we need to consume a first row of headings?
     if (!$include_first) {
         @fgetcsv($fp, 8192, ',', '"');
     }
     while (!feof($fp)) {
         $parts = fgetcsv($fp, 8192, ',', '"');
         if (empty($parts) || 1 == count($parts) && is_null($parts[0])) {
             continue;
         }
         $fields = array();
         $custom_fields = array();
         $sync_fields = array();
         foreach ($pos as $idx => $p) {
             $key = $field[$idx];
             $val = $parts[$idx];
             // Special handling
             if (!empty($key)) {
                 switch ($key) {
                     case 'amount':
                         if (0 != strlen($val) && is_numeric($val)) {
                             @($val = floatval($val));
                         } else {
                             unset($key);
                         }
                         break;
                         // Translate e-mail address to ID
                     // Translate e-mail address to ID
                     case 'email':
                         if (null != ($addy = CerberusApplication::hashLookupAddress($val, true))) {
                             $key = 'primary_email_id';
                             $val = $addy->id;
                         } else {
                             unset($key);
                         }
                         break;
                         // Bools
                     // Bools
                     case 'is_won':
                     case 'is_closed':
                         if (0 != strlen($val)) {
                             @($val = !empty($val) ? 1 : 0);
                         } else {
                             unset($key);
                         }
                         break;
                         // Dates
                     // Dates
                     case 'created_date':
                     case 'updated_date':
                     case 'closed_date':
                         if (0 != strlen($val)) {
                             @($val = !is_numeric($val) ? strtotime($val) : $val);
                         } else {
                             unset($key);
                         }
                         break;
                         // Worker by name
                     // Worker by name
                     case 'worker':
                         unset($key);
                         if (is_array($workers)) {
                             foreach ($workers as $worker_id => $worker) {
                                 if (0 == strcasecmp($val, $worker->getName())) {
                                     $key = 'worker_id';
                                     $val = $worker_id;
                                 }
                             }
                         }
                         break;
                 }
                 if (!isset($key)) {
                     continue;
                 }
                 // Custom fields
                 if ('cf_' == substr($key, 0, 3)) {
                     $custom_fields[substr($key, 3)] = $val;
                 } elseif (!empty($key)) {
                     $fields[$key] = $val;
                 }
                 // Find dupe combos
                 if (in_array($idx, $sync_dupes)) {
                     $search_field = '';
                     $search_val = '';
                     switch ($key) {
                         case 'primary_email_id':
                             $search_field = SearchFields_CrmOpportunity::PRIMARY_EMAIL_ID;
                             $search_val = intval($val);
                             break;
                         case 'title':
                             $search_field = SearchFields_CrmOpportunity::NAME;
                             $search_val = $val;
                             break;
                         case 'amount':
                             $search_field = SearchFields_CrmOpportunity::AMOUNT;
                             $search_val = floatval($val);
                             break;
                         case 'is_won':
                             $search_field = SearchFields_CrmOpportunity::IS_WON;
                             $search_val = intval($val);
                             break;
                         case 'is_closed':
                             $search_field = SearchFields_CrmOpportunity::IS_CLOSED;
                             $search_val = intval($val);
                             break;
                         case 'created_date':
                             $search_field = SearchFields_CrmOpportunity::CREATED_DATE;
                             $search_val = intval($val);
                             break;
                         case 'updated_date':
                             $search_field = SearchFields_CrmOpportunity::UPDATED_DATE;
                             $search_val = intval($val);
                             break;
                         case 'closed_date':
                             $search_field = SearchFields_CrmOpportunity::CLOSED_DATE;
                             $search_val = intval($val);
                             break;
                         case 'worker_id':
                             $search_field = SearchFields_CrmOpportunity::WORKER_ID;
                             $search_val = intval($val);
                             break;
                         default:
                             // Custom field dupe
                             if ('cf_' == substr($key, 0, 3)) {
                                 $search_field = $key;
                                 // [TODO] Need to format this for proper custom fields
                                 $search_val = $val;
                             }
                             break;
                     }
                     if (!empty($search_field) && !empty($search_val)) {
                         $sync_fields[$search_field] = new DevblocksSearchCriteria($search_field, '=', $search_val);
                     }
                 }
             }
         }
         // end foreach($pos)
         // Dupe checking
         if (!empty($fields) && !empty($sync_fields)) {
             list($dupes, $null) = DAO_CrmOpportunity::search(array(), $sync_fields, 1, 0, null, false, false);
         }
         if (!empty($fields)) {
             if (isset($fields['primary_email_id'])) {
                 // Make sure a minimum amount of fields are provided
                 if (!isset($fields[DAO_CrmOpportunity::UPDATED_DATE])) {
                     $fields[DAO_CrmOpportunity::UPDATED_DATE] = time();
                 }
                 if ($opt_assign && !isset($fields[DAO_CrmOpportunity::WORKER_ID])) {
                     $fields[DAO_CrmOpportunity::WORKER_ID] = $opt_assign_worker_id;
                 }
                 if (empty($dupes)) {
                     // [TODO] Provide an import prefix for blank names
                     if (!isset($fields[DAO_CrmOpportunity::NAME]) && isset($addy)) {
                         $fields[DAO_CrmOpportunity::NAME] = $addy->email;
                     }
                     if (!isset($fields[DAO_CrmOpportunity::CREATED_DATE])) {
                         $fields[DAO_CrmOpportunity::CREATED_DATE] = time();
                     }
                     $id = DAO_CrmOpportunity::create($fields);
                 } else {
                     $id = key($dupes);
                     DAO_CrmOpportunity::update($id, $fields);
                 }
             }
         }
         if (!empty($custom_fields) && !empty($id)) {
             // Format (typecast) and set the custom field types
             $source_ext_id = CrmCustomFieldSource_Opportunity::ID;
             DAO_CustomFieldValue::formatAndSetFieldValues($source_ext_id, $id, $custom_fields, $is_blank_unset);
         }
     }
     @unlink($csv_file);
     // nuke the imported file
     $visit->set('crm.import.last.csv', null);
     DevblocksPlatform::redirect(new DevblocksHttpResponse(array('activity', 'opps')));
 }
Exemple #10
0
 function doArticleQuickSearchAction()
 {
     @($type = DevblocksPlatform::importGPC($_POST['type'], 'string'));
     @($query = DevblocksPlatform::importGPC($_POST['query'], 'string'));
     $query = trim($query);
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $translate = DevblocksPlatform::getTranslationService();
     if (null == ($searchView = C4_AbstractViewLoader::getView(ChKbResearchTab::VIEW_RESEARCH_KB_SEARCH))) {
         $searchView = new C4_KbArticleView();
         $searchView->id = ChKbResearchTab::VIEW_RESEARCH_KB_SEARCH;
         $searchView->name = $translate->_('common.search_results');
         C4_AbstractViewLoader::setView($searchView->id, $searchView);
     }
     $params = array();
     switch ($type) {
         case "content":
             $params[SearchFields_KbArticle::CONTENT] = new DevblocksSearchCriteria(SearchFields_KbArticle::CONTENT, DevblocksSearchCriteria::OPER_FULLTEXT, $query);
             break;
     }
     $searchView->params = $params;
     $searchView->renderPage = 0;
     $searchView->renderSortBy = null;
     C4_AbstractViewLoader::setView($searchView->id, $searchView);
     DevblocksPlatform::redirect(new DevblocksHttpResponse(array('research', 'kb', 'search')));
 }
Exemple #11
0
 public static function clearLastActions()
 {
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $visit->set(CerberusVisit::KEY_VIEW_LAST_ACTION, array());
 }
Exemple #12
0
 private function _renderExplorerNavigation($stack)
 {
     $visit = CerberusApplication::getVisit();
     if (null == ($posts = $visit->get('forums_explorer_results', null))) {
         return;
     }
     $pos = $visit->get('forums_explorer_results_pos', -1);
     // Advance our pointer
     if (!empty($pos) && isset($posts[$pos])) {
         while (key($posts) != $pos) {
             next($posts);
         }
     }
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->cache_lifetime = "0";
     $tpl->assign('path', $this->tpl_path);
     $translate = DevblocksPlatform::getTranslationService();
     $tpl->assign('translate', $translate);
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     switch (array_shift($stack)) {
         case 'next':
             next($posts);
             $key = key($posts);
             $visit->set('forums_explorer_results_pos', $key);
             break;
         case 'prev':
             prev($posts);
             $key = key($posts);
             $visit->set('forums_explorer_results_pos', $key);
             break;
     }
     if (null != ($post = DAO_ForumsThread::get(key($posts)))) {
         $tpl->assign('current_post', $post);
     }
     // Check for previous position
     if (prev($posts)) {
         $current = current($posts);
         $tpl->assign('prev_post', $current);
         next($posts);
         //re-advance
     } else {
         reset($posts);
     }
     // Check for next position
     if (next($posts)) {
         $current = current($posts);
         $tpl->assign('next_post', $current);
     } else {
         end($posts);
     }
     $tpl->assign('active_worker', $visit->getWorker());
     $tpl->display('file:' . $this->tpl_path . '/explorer/navigation.tpl');
 }
Exemple #13
0
 function searchviewAction()
 {
     $visit = CerberusApplication::getVisit();
     $response = DevblocksPlatform::getHttpRequest();
     $path = $response->path;
     array_shift($path);
     // tickets
     array_shift($path);
     // searchview
     $id = array_shift($path);
     $view = C4_AbstractViewLoader::getView($id);
     if (!empty($view->params)) {
         $params = array();
         // Index by field name for search system
         if (is_array($view->params)) {
             foreach ($view->params as $key => $criteria) {
                 /* @var $criteria DevblocksSearchCriteria */
                 $params[$key] = $criteria;
             }
         }
     }
     if (null == ($search_view = C4_AbstractViewLoader::getView(CerberusApplication::VIEW_SEARCH))) {
         $search_view = C4_TicketView::createSearchView();
     }
     $search_view->params = $params;
     $search_view->renderPage = 0;
     C4_AbstractViewLoader::setView($search_view->id, $search_view);
     DevblocksPlatform::setHttpResponse(new DevblocksHttpResponse(array('tickets', 'search')));
 }
Exemple #14
0
 function showTaskNotesTabAction()
 {
     @($task_id = DevblocksPlatform::importGPC($_REQUEST['id'], 'integer'));
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl_path = dirname(dirname(dirname(__FILE__))) . '/templates/';
     $tpl->assign('path', $tpl_path);
     $visit = CerberusApplication::getVisit();
     //		$visit->set(self::SESSION_OPP_TAB, 'notes');
     $task = DAO_Task::get($task_id);
     $tpl->assign('task', $task);
     list($notes, $null) = DAO_Note::search(array(new DevblocksSearchCriteria(SearchFields_Note::SOURCE_EXT_ID, '=', ChNotesSource_Task::ID), new DevblocksSearchCriteria(SearchFields_Note::SOURCE_ID, '=', $task->id)), 25, 0, SearchFields_Note::CREATED, false, false);
     $tpl->assign('notes', $notes);
     $active_workers = DAO_Worker::getAllActive();
     $tpl->assign('active_workers', $active_workers);
     $workers = DAO_Worker::getAllWithDisabled();
     $tpl->assign('workers', $workers);
     $tpl->display('file:' . $tpl_path . 'tasks/display/tabs/notes.tpl');
 }
Exemple #15
0
 function showContactHistoryAction()
 {
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $translate = DevblocksPlatform::getTranslationService();
     @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer'));
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     // Ticket
     $ticket = DAO_Ticket::getTicket($ticket_id);
     $tpl->assign('ticket', $ticket);
     $requesters = $ticket->getRequesters();
     // Addy
     $contact = DAO_Address::get($ticket->first_wrote_address_id);
     $tpl->assign('contact', $contact);
     // Scope
     $scope = $visit->get('display.history.scope', '');
     // [TODO] Sanitize scope preference
     // Defaults
     $defaults = new C4_AbstractViewModel();
     $defaults->class_name = 'C4_TicketView';
     $defaults->id = 'contact_history';
     $defaults->name = $translate->_('addy_book.history.view.title');
     $defaults->view_columns = array(SearchFields_Ticket::TICKET_LAST_ACTION_CODE, SearchFields_Ticket::TICKET_CREATED_DATE, SearchFields_Ticket::TICKET_TEAM_ID, SearchFields_Ticket::TICKET_CATEGORY_ID);
     $defaults->params = array();
     $defaults->renderLimit = 10;
     $defaults->renderSortBy = SearchFields_Ticket::TICKET_CREATED_DATE;
     $defaults->renderSortAsc = false;
     // View
     $view = C4_AbstractViewLoader::getView('contact_history', $defaults);
     // Sanitize scope options
     if ('org' == $scope) {
         if (empty($contact->contact_org_id)) {
             $scope = '';
         }
         if (null == ($contact_org = DAO_ContactOrg::get($contact->contact_org_id))) {
             $scope = '';
         }
     }
     if ('domain' == $scope) {
         $email_parts = explode('@', $contact->email);
         if (!is_array($email_parts) || 2 != count($email_parts)) {
             $scope = '';
         }
     }
     switch ($scope) {
         case 'org':
             $view->params = array(SearchFields_Ticket::TICKET_FIRST_CONTACT_ORG_ID => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_FIRST_CONTACT_ORG_ID, '=', $contact->contact_org_id), SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, '=', 0));
             $view->name = ucwords($translate->_('contact_org.name')) . ": " . $contact_org->name;
             break;
         case 'domain':
             $view->params = array(SearchFields_Ticket::REQUESTER_ADDRESS => new DevblocksSearchCriteria(SearchFields_Ticket::REQUESTER_ADDRESS, 'like', '*@' . $email_parts[1]), SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, '=', 0));
             $view->name = ucwords($translate->_('common.email')) . ": *@" . $email_parts[1];
             break;
         default:
         case 'email':
             $scope = 'email';
             $view->params = array(SearchFields_Ticket::REQUESTER_ID => new DevblocksSearchCriteria(SearchFields_Ticket::REQUESTER_ID, 'in', array_keys($requesters)), SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, '=', 0));
             $view->name = ucwords($translate->_('common.email')) . ": " . $contact->email;
             break;
     }
     $tpl->assign('scope', $scope);
     $view->renderPage = 0;
     $tpl->assign('view', $view);
     C4_AbstractViewLoader::setView($view->id, $view);
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     $teams = DAO_Group::getAll();
     $tpl->assign('teams', $teams);
     $buckets = DAO_Bucket::getAll();
     $tpl->assign('buckets', $buckets);
     $team_categories = DAO_Bucket::getTeams();
     $tpl->assign('team_categories', $team_categories);
     $tpl->display('file:' . $this->_TPL_PATH . 'display/modules/history/index.tpl');
 }
Exemple #16
0
 function doEditWorkspaceAction()
 {
     @($workspace = DevblocksPlatform::importGPC($_POST['workspace'], 'string', ''));
     @($rename_workspace = DevblocksPlatform::importGPC($_POST['rename_workspace'], 'string', ''));
     @($ids = DevblocksPlatform::importGPC($_POST['ids'], 'array', array()));
     @($names = DevblocksPlatform::importGPC($_POST['names'], 'array', array()));
     @($pos = DevblocksPlatform::importGPC($_POST['pos'], 'array', array()));
     @($deletes = DevblocksPlatform::importGPC($_POST['deletes'], 'array', array()));
     $db = DevblocksPlatform::getDatabaseService();
     $active_worker = CerberusApplication::getActiveWorker();
     $visit = CerberusApplication::getVisit();
     $worklists = DAO_WorkerWorkspaceList::getWhere(sprintf("%s = %s", DAO_WorkerWorkspaceList::WORKSPACE, $db->qstr($workspace)));
     // Reorder worklists, rename lists, delete lists, on workspace
     if (is_array($ids) && !empty($ids)) {
         foreach ($ids as $idx => $id) {
             if (false !== array_search($id, $deletes)) {
                 DAO_WorkerWorkspaceList::delete($id);
                 C4_AbstractViewLoader::deleteView('cust_' . $id);
                 // free up a little memory
             } else {
                 if (!isset($worklists[$id])) {
                     continue;
                 }
                 $list_view = $worklists[$id]->list_view;
                 /* @var $list_view Model_WorkerWorkspaceListView */
                 // If the name changed
                 if (isset($names[$idx]) && 0 != strcmp($list_view->title, $names[$idx])) {
                     $list_view->title = $names[$idx];
                     // Save the view in the session
                     $view = C4_AbstractViewLoader::getView('', 'cust_' . $id);
                     $view->name = $list_view->title;
                     C4_AbstractViewLoader::setView('cust_' . $id, $view);
                 }
                 DAO_WorkerWorkspaceList::update($id, array(DAO_WorkerWorkspaceList::LIST_POS => @intval($pos[$idx]), DAO_WorkerWorkspaceList::LIST_VIEW => serialize($list_view)));
             }
         }
     }
     // Rename workspace
     if (!empty($rename_workspace)) {
         $fields = array(DAO_WorkerWorkspaceList::WORKSPACE => $rename_workspace);
         DAO_WorkerWorkspaceList::updateWhere($fields, sprintf("%s = %s AND %s = %d", DAO_WorkerWorkspaceList::WORKSPACE, $db->qstr($workspace), DAO_WorkerWorkspaceList::WORKER_ID, $active_worker->id));
         $workspace = $rename_workspace;
     }
     // Change active tab
     $visit->set(CerberusVisit::KEY_HOME_SELECTED_TAB, 'w_' . $workspace);
     DevblocksPlatform::redirect(new DevblocksHttpResponse(array('home')));
 }
Exemple #17
0
 function showTabHistoryAction()
 {
     $translate = DevblocksPlatform::getTranslationService();
     @($org = DevblocksPlatform::importGPC($_REQUEST['org']));
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     $contact = DAO_ContactOrg::get($org);
     $tpl->assign('contact', $contact);
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $tickets_view = C4_AbstractViewLoader::getView('contact_history');
     // All org contacts
     $people = DAO_Address::getWhere(sprintf("%s = %d", DAO_Address::CONTACT_ORG_ID, $contact->id));
     if (null == $tickets_view) {
         $tickets_view = new C4_TicketView();
         $tickets_view->id = 'contact_history';
         $tickets_view->name = $translate->_('addy_book.history.view_title');
         $tickets_view->view_columns = array(SearchFields_Ticket::TICKET_LAST_ACTION_CODE, SearchFields_Ticket::TICKET_CREATED_DATE, SearchFields_Ticket::TICKET_TEAM_ID, SearchFields_Ticket::TICKET_CATEGORY_ID);
         $tickets_view->params = array();
         $tickets_view->renderLimit = 10;
         $tickets_view->renderPage = 0;
         $tickets_view->renderSortBy = SearchFields_Ticket::TICKET_CREATED_DATE;
         $tickets_view->renderSortAsc = false;
     }
     @($tickets_view->name = $translate->_('ticket.requesters') . ": " . htmlspecialchars($contact->name) . ' - ' . intval(count($people)) . ' contact(s)');
     $tickets_view->params = array(SearchFields_Ticket::REQUESTER_ID => new DevblocksSearchCriteria(SearchFields_Ticket::REQUESTER_ID, 'in', array_keys($people)), SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, DevblocksSearchCriteria::OPER_EQ, 0));
     $tpl->assign('contact_history', $tickets_view);
     C4_AbstractViewLoader::setView($tickets_view->id, $tickets_view);
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     $teams = DAO_Group::getAll();
     $tpl->assign('teams', $teams);
     $buckets = DAO_Bucket::getAll();
     $tpl->assign('buckets', $buckets);
     $team_categories = DAO_Bucket::getTeams();
     $tpl->assign('team_categories', $team_categories);
     $tpl->display('file:' . $this->_TPL_PATH . 'contacts/orgs/tabs/history.tpl');
     exit;
 }
Exemple #18
0
	function render() {
		// check whether extensions are loaded or not
		$extensions = array(
			'oauth' => extension_loaded('oauth')
		);
		$tpl = DevblocksPlatform::getTemplateService();

		$visit = CerberusApplication::getVisit();
		$visit->set(ChConfigurationPage::ID, 'issue');
		
		$params = array(
			'client_id' => DevblocksPlatform::getPluginSetting('wgm.issues', 'client_id', ''),
			'client_secret' => DevblocksPlatform::getPluginSetting('wgm.issues', 'client_secret', ''),
			'repos' => DAO_Repository::getAll(),
			'users' => DAO_User::getWhere(),
		);
		
		$tpl->assign('params', $params);
		$tpl->assign('extensions', $extensions);
		
		$tpl->display('devblocks:wgm.issues::setup/index.tpl');
	}