function onAfterRoute() { $mainframe = JFactory::getApplication(); if ($mainframe->isAdmin()) { return; } if (!file_exists(JPATH_ROOT . '/components/com_helpdeskpro/helper/helper.php')) { return; } $option = JRequest::getCmd('option', ''); $task = JRequest::getCmd('task', ''); if ($option == 'com_contact' && $task == 'contact.submit') { require_once JPATH_ROOT . '/components/com_helpdeskpro/helper/helper.php'; $config = HelpdeskProHelper::getConfig(); $contactData = JRequest::getVar('jform'); $data = array(); $data['name'] = $contactData['contact_name']; $data['email'] = $contactData['contact_email']; $data['subject'] = $contactData['contact_subject']; $data['message'] = nl2br($contactData['contact_message']); $data['category_id'] = $this->params->get('category_id'); $data['priority_id'] = $config->default_ticket_priority_id; HelpdeskProHelper::storeTicket($data); } }
function onViewTicket($row) { $db = JFactory::getDbo(); $sql = 'SELECT attachments, original_filenames FROM #__helpdeskpro_tickets WHERE id=' . $row->id; $db->setQuery($sql); $rowAttachments = $db->loadObjectList(); //Select attachments from comments $sql = 'SELECT attachments, original_filenames FROM #__helpdeskpro_messages WHERE ticket_id=' . $row->id; $db->setQuery($sql); $rowAttachments = array_merge($rowAttachments, $db->loadObjectList()); if (count($rowAttachments)) { ob_start(); ?> <tr> <th colspan="2"><?php echo JText::_('HDP_TICKET_ATTACHMENTS'); ?> </th> </tr> <?php foreach ($rowAttachments as $rowAttachment) { if ($rowAttachment->original_filenames) { $originalFileNames = explode('|', $rowAttachment->original_filenames); $attachments = explode('|', $rowAttachment->attachments); for ($i = 0, $n = count($originalFileNames); $i < $n; $i++) { $filePath = JPATH_ROOT . '/media/com_helpdeskpro/attachments/' . $attachments[$i]; if (file_exists($filePath)) { ?> <tr> <td colspan="2"> <a href="<?php echo JRoute::_('index.php?option=com_helpdeskpro&task=ticket.download_attachment&filename=' . $attachments[$i] . '&original_filename=' . $originalFileNames[$i]); ?> "><?php echo $originalFileNames[$i]; ?> </a> (<?php echo HelpdeskProHelper::getSize($filePath); ?> ) </td> </tr> <?php } } } } $text = ob_get_contents(); ob_end_clean(); return $text; } else { return null; } }
function _buildContentWhereArray() { $app = JFactory::getApplication(); $user = JFactory::getUser(); $config = HelpdeskProHelper::getConfig(); $managedCategoryIds = HelpdeskProHelper::getTicketCategoryIds($user->get('username')); $where = parent::_buildContentWhereArray(); $state = $this->getState(); if ($state->category_id) { $where[] = ' a.category_id = ' . $state->category_id; } if ($state->status_id) { if ($state->status_id == -1) { if (!$user->authorise('core.admin')) { if (count($managedCategoryIds)) { //Show open and pending tickets to managers by default $where[] = ' (a.status_id=' . $config->new_ticket_status_id . ' OR a.status_id=' . $config->ticket_status_when_customer_add_comment . ') '; } else { //Show open tickets and require feedback tickets to customers //$where[] = ' (a.status_id='.$config->new_ticket_status_id.' OR a.status_id='.$config->ticket_status_when_admin_add_comment.') '; $where[] = " a.status_id != {$config->closed_ticket_status} "; } } else { //Show open and pending tickets to managers by default $where[] = ' (a.status_id=' . $config->new_ticket_status_id . ' OR a.status_id=' . $config->ticket_status_when_customer_add_comment . ') '; } } else { $where[] = ' a.status_id = ' . $state->status_id; } } if ($state->priority_id) { $where[] = ' a.priority_id = ' . $state->priority_id; } if (!$user->authorise('core.admin')) { //Super administrator can view all tickets if ($managedCategoryIds) { //He is ticket managers, so all tickets belong to him $where[] = ' a.category_id IN (' . implode(',', $managedCategoryIds) . ')'; } else { //Registered user, only show tickets submitted by himself $userId = $user->get('id'); $email = $user->get('email'); // $where[] = "(a.user_id=$userId OR a.email='$email') " ; $where[] = ' a.status_id = 4'; } } return $where; }
require_once JPATH_ROOT . '/administrator/components/com_helpdeskpro/libraries/factory.php'; $command = JRequest::getVar('task', 'display'); // Check for a controller.task command. if (strpos($command, '.') !== false) { list($controller, $task) = explode('.', $command); $path = JPATH_ADMINISTRATOR . '/components/com_helpdeskpro/controllers/' . $controller . '.php'; if (file_exists($path)) { require_once $path; $className = 'HelpdeskproController' . ucfirst($controller); $config = array('model_path' => JPATH_ADMINISTRATOR . '/components/com_helpdeskpro/models'); $controller = new $className($config); } else { //Fallback to default controller OSFactory::loadLibrary('controller'); $controller = new OSController(array('entity_name' => $controller, 'name' => 'Helpdeskpro', 'model_path' => JPATH_ADMINISTRATOR . '/components/com_helpdeskpro/models')); } JRequest::setVar('task', $task); } else { $path = JPATH_COMPONENT . '/controller.php'; require_once $path; $className = 'HelpdeskproController'; $config['model_path'] = JPATH_ADMINISTRATOR . '/components/com_helpdeskpro/models'; $controller = new $className($config); } $document =& JFactory::getDocument(); $document->addStyleSheet(JURI::base(true) . '/components/com_helpdeskpro/assets/css/style.css'); if (version_compare(JVERSION, '3.0', 'lt')) { HelpdeskProHelper::loadBootstrap(); } $controller->execute(JRequest::getCmd('task')); $controller->redirect();
function _buildListArray(&$lists, $state) { $user = JFactory::getUser(); $db =& JFactory::getDbo(); $dateFormat = HelpdeskProHelper::getConfigValue('date_format'); if (!$user->authorise('core.admin')) { $managedCategoryIds = HelpdeskProHelper::getTicketCategoryIds($user->get('username')); if (count($managedCategoryIds)) { $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories WHERE id IN (" . implode(',', $managedCategoryIds) . ") AND published=1 ORDER BY ordering"; } elseif (!$user->get('id')) { $userId = 0; $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories WHERE published=1 ORDER BY ordering"; } else { $userId = $user->get('id'); $email = $user->get('email'); $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories WHERE published=1 AND id IN (SELECT DISTINCT category_id FROM #__helpdeskpro_tickets AS t WHERE t.user_id={$userId} OR t.email='{$email}') ORDER BY ordering"; } } else { $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories WHERE published=1 ORDER BY ordering"; } $db->setQuery($sql); $rows = $db->loadObjectList(); $children = array(); if ($rows) { // first pass - collect children foreach ($rows as $v) { $pt = $v->parent_id; $list = @$children[$pt] ? $children[$pt] : array(); array_push($list, $v); $children[$pt] = $list; } } $list = JHTML::_('menu.treerecurse', 0, '', array(), $children, 9999, 0, 0); $options = array(); $options[] = JHtml::_('select.option', 0, JText::_('HDP_ALL_CATEGORIES')); foreach ($list as $listItem) { $options[] = JHTML::_('select.option', $listItem->id, ' ' . $listItem->treename); } $lists['cat'] = '<ul class="nav menu">'; foreach ($list as $listItem) { if ($listItem->id == $state->category_id && isset($_GET['category_id'])) { $active = ' class="active"'; } else { $active = ''; } $lists['cat'] .= '<li' . $active . '><a href="' . JRoute::_('index.php?option=com_helpdeskpro&view=tickets&category_id=' . $listItem->id) . '">' . $listItem->treename . '</a></li>'; } $lists['cat'] .= '</ul>'; $lists['category_id'] = JHTML::_('select.genericlist', $options, 'category_id', array('option.text.toHtml' => false, 'option.text' => 'text', 'option.value' => 'value', 'list.attr' => 'class="inputbox" ', 'list.select' => $state->category_id)); $options = array(); $options[] = JHtml::_('select.option', -1, JText::_('HDP_SELECT'), 'id', 'title'); $options[] = JHtml::_('select.option', 0, JText::_('HDP_ALL_STATUSES'), 'id', 'title'); $sql = 'SELECT id, title FROM #__helpdeskpro_statuses WHERE published=1 ORDER BY ordering'; $db->setQuery($sql); $rowStatuses = $db->loadObjectList(); $options = array_merge($options, $rowStatuses); $lists['status_id'] = JHTML::_('select.genericlist', $options, 'status_id', array('option.text.toHtml' => false, 'option.text' => 'title', 'option.key' => 'id', 'list.attr' => 'class="inputbox" onchange="submit();"', 'list.select' => $state->status_id)); $options = array(); $options[] = JHtml::_('select.option', 0, JText::_('HDP_ALL_PRIORITIES'), 'id', 'title'); $sql = 'SELECT id, title FROM #__helpdeskpro_priorities WHERE published=1 ORDER BY ordering'; $db->setQuery($sql); $rowPriorities = $db->loadObjectList(); $options = array_merge($options, $rowPriorities); $lists['priority_id'] = JHTML::_('select.genericlist', $options, 'priority_id', array('option.text.toHtml' => false, 'option.text' => 'title', 'option.key' => 'id', 'list.attr' => 'class="inputbox" ', 'list.select' => $state->priority_id)); $statusList = array(); foreach ($rowStatuses as $status) { $statusList[$status->id] = $status->title; } $priorityList = array(); foreach ($rowPriorities as $priority) { $priorityList[$priority->id] = $priority->title; } $sql = 'SELECT title FROM #__helpdeskpro_categories WHERE id=' . $state->category_id; $db->setQuery($sql); $categoryTitle = $db->loadResult(); $sql = "SELECT config_value FROM #__helpdeskpro_configs WHERE config_key='home_page_text'"; $db->setQuery($sql); $home_page_text = $db->loadResult(); $this->home_page_text = $home_page_text; $this->dateFormat = $dateFormat; $this->statusList = $statusList; $this->priorityList = $priorityList; if (isset($_GET['category_id'])) { $this->category_id = $state->category_id; } else { $this->category_id = 0; } $this->categoryTitle = $categoryTitle; return true; }
/** * Generate form allows admin creating new ticket * @param array $lists * @param object $item */ function _buildListArrayForm(&$lists, $item) { $db =& JFactory::getDbo(); $config = HelpdeskProHelper::getConfig(); $db =& JFactory::getDBO(); $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories"; $db->setQuery($sql); $rows = $db->loadObjectList(); $children = array(); if ($rows) { // first pass - collect children foreach ($rows as $v) { $pt = $v->parent_id; $list = @$children[$pt] ? $children[$pt] : array(); array_push($list, $v); $children[$pt] = $list; } } $list = JHTML::_('menu.treerecurse', 0, '', array(), $children, 9999, 0, 0); $options = array(); $options[] = JHtml::_('select.option', 0, JText::_('HDP_CHOOSE_CATEGORY')); foreach ($list as $listItem) { $options[] = JHTML::_('select.option', $listItem->id, ' ' . $listItem->treename); } $lists['category_id'] = JHTML::_('select.genericlist', $options, 'category_id', array('option.text.toHtml' => false, 'option.text' => 'text', 'option.value' => 'value', 'list.attr' => 'class="inputbox" onchange="showFields(this.form);" ', 'list.select' => $item->category_id)); $options = array(); $options[] = JHtml::_('select.option', 0, JText::_('HDP_CHOOSE_PRIORITY'), 'id', 'title'); $sql = 'SELECT id, title FROM #__helpdeskpro_priorities WHERE published=1 ORDER BY ordering'; $db->setQuery($sql); $rowPriorities = $db->loadObjectList(); $options = array_merge($options, $rowPriorities); $lists['priority_id'] = JHTML::_('select.genericlist', $options, 'priority_id', array('option.text.toHtml' => false, 'option.text' => 'title', 'option.key' => 'id', 'list.attr' => 'class="inputbox" ', 'list.select' => $config->default_ticket_priority_id)); $categoryId = 0; $jcFields = new JCFields(); if ($jcFields->getTotal()) { $customField = true; $fieldArray = JCFields::getAssoc(); $fieldJs = "fields = new Array();\n"; foreach ($fieldArray as $catId => $fieldList) { $fieldJs .= ' fields[' . $catId . '] = new Array("' . implode('","', $fieldList) . '");' . "\n"; } $this->assign('fieldJs', $fieldJs); $fields = $jcFields->renderCustomFields($categoryId, $fieldArray); $validations = $jcFields->renderJSValidation(); $this->assign('fields', $fields); $this->assign('validations', $validations); } else { $customField = false; } $this->assign('customField', $customField); $user = JFactory::getUser(); $this->item = $item; $this->config = $config; }
function download_attachment() { $fileName = JRequest::getVar('filename', ''); $originalFilename = JRequest::getVar('original_filename', ''); if (file_exists(JPATH_ROOT . '/media/com_helpdeskpro/attachments/' . $fileName)) { while (@ob_end_clean()) { } HelpdeskProHelper::processDownload(JPATH_ROOT . '/media/com_helpdeskpro/attachments/' . $fileName, $originalFilename); exit; } else { $mainframe =& JFactory::getApplication(); $mainframe->redirect('index.php', JText::_('HDP_FILE_NOT_EXIST')); } }
function _buildListArray(&$lists, $state) { $db =& JFactory::getDbo(); $user = JFactory::getUser(); $dateFormat = HelpdeskProHelper::getConfigValue('date_format'); if (!$user->authorise('core.admin')) { $managedCategoryIds = HelpdeskProHelper::getTicketCategoryIds($user->get('username')); if (count($managedCategoryIds)) { $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories WHERE id IN (" . implode(',', $managedCategoryIds) . ") AND published=1 ORDER BY ordering"; } else { $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories WHERE published=1 ORDER BY ordering"; } } else { $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories WHERE published=1 ORDER BY ordering"; } $db->setQuery($sql); $rows = $db->loadObjectList(); $children = array(); if ($rows) { // first pass - collect children foreach ($rows as $v) { $pt = $v->parent_id; $list = @$children[$pt] ? $children[$pt] : array(); array_push($list, $v); $children[$pt] = $list; } } $list = JHTML::_('menu.treerecurse', 0, '', array(), $children, 9999, 0, 0); $options = array(); $options[] = JHtml::_('select.option', 0, JText::_('HDP_ALL_CATEGORIES')); foreach ($list as $listItem) { $options[] = JHTML::_('select.option', $listItem->id, ' ' . $listItem->treename); } $lists['category_id'] = JHTML::_('select.genericlist', $options, 'category_id', array('option.text.toHtml' => false, 'option.text' => 'text', 'option.value' => 'value', 'list.attr' => 'class="inputbox" onchange="submit();"', 'list.select' => $state->category_id)); $options = array(); $options[] = JHtml::_('select.option', -1, JText::_('HDP_SELECT'), 'id', 'title'); $options[] = JHtml::_('select.option', 0, JText::_('HDP_ALL_STATUSES'), 'id', 'title'); $sql = 'SELECT id, title FROM #__helpdeskpro_statuses WHERE published=1 ORDER BY ordering'; $db->setQuery($sql); $rowStatuses = $db->loadObjectList(); $options = array_merge($options, $rowStatuses); $lists['status_id'] = JHTML::_('select.genericlist', $options, 'status_id', array('option.text.toHtml' => false, 'option.text' => 'title', 'option.key' => 'id', 'list.attr' => 'class="inputbox" onchange="submit();" ', 'list.select' => $state->status_id)); $options = array(); $options[] = JHtml::_('select.option', 0, JText::_('HDP_ALL_PRIORITIES'), 'id', 'title'); $sql = 'SELECT id, title FROM #__helpdeskpro_priorities WHERE published=1 ORDER BY ordering'; $db->setQuery($sql); $rowPriorities = $db->loadObjectList(); $options = array_merge($options, $rowPriorities); $lists['priority_id'] = JHTML::_('select.genericlist', $options, 'priority_id', array('option.text.toHtml' => false, 'option.text' => 'title', 'option.key' => 'id', 'list.attr' => 'class="inputbox" onchange="submit();" ', 'list.select' => $state->priority_id)); $statusList = array(); foreach ($rowStatuses as $status) { $statusList[$status->id] = $status->title; } $priorityList = array(); foreach ($rowPriorities as $priority) { $priorityList[$priority->id] = $priority->title; } $this->dateFormat = $dateFormat; $this->statusList = $statusList; $this->priorityList = $priorityList; return true; }
function _displayForm($tpl) { $db =& JFactory::getDbo(); $user = JFactory::getUser(); $config = HelpdeskProHelper::getConfig(); $userId = $user->get('id'); $Itemid = JRequest::getInt('Itemid', 0); if (!$userId && !$config->allow_public_user_submit_ticket) { //Redirect user to login page $return = JRoute::_('index.php?option=com_helpdeskpro&task=ticket.add&Itemid=' . $Itemid); JFactory::getApplication()->redirect('index.php?option=com_users&view=login&return=' . base64_encode($return), JText::_('HDP_LOGIN_TO_SUBMIT_TICKET')); } $db =& JFactory::getDBO(); $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories WHERE published=1 AND access IN (" . implode(',', $user->getAuthorisedViewLevels()) . ')'; $db->setQuery($sql); $rows = $db->loadObjectList(); $children = array(); if ($rows) { // first pass - collect children foreach ($rows as $v) { $pt = $v->parent_id; $list = @$children[$pt] ? $children[$pt] : array(); array_push($list, $v); $children[$pt] = $list; } } $list = JHTML::_('menu.treerecurse', 0, '', array(), $children, 9999, 0, 0); $options = array(); $options[] = JHtml::_('select.option', 0, JText::_('HDP_CHOOSE_CATEGORY')); foreach ($list as $listItem) { $options[] = JHTML::_('select.option', $listItem->id, ' ' . $listItem->treename); } $options = array(); $options[] = JHtml::_('select.option', 0, JText::_('HDP_CHOOSE_PRIORITY'), 'id', 'title'); $sql = 'SELECT id, title FROM #__helpdeskpro_priorities WHERE published=1 ORDER BY ordering'; $db->setQuery($sql); $rowPriorities = $db->loadObjectList(); $options = array_merge($options, $rowPriorities); $lists['category_id'] = JHTML::_('select.genericlist', $options, 'category_id', array('option.text.toHtml' => false, 'option.text' => 'text', 'option.value' => 'value', 'list.attr' => 'class="inputbox" onchange="showFields(this.form);" ', 'list.select' => 0)); $lists['priority_id'] = JHTML::_('select.genericlist', $options, 'priority_id', array('option.text.toHtml' => false, 'option.text' => 'title', 'option.key' => 'id', 'list.attr' => 'class="inputbox" ', 'list.select' => $config->default_ticket_priority_id)); $categoryId = 0; $jcFields = new JCFields(); if ($jcFields->getTotal()) { $customField = true; $fieldArray = JCFields::getAssoc(); $fieldJs = "fields = new Array();\n"; foreach ($fieldArray as $catId => $fieldList) { $fieldJs .= ' fields[' . $catId . '] = new Array("' . implode('","', $fieldList) . '");' . "\n"; } $this->assign('fieldJs', $fieldJs); $fields = $jcFields->renderCustomFields($categoryId, $fieldArray); $validations = $jcFields->renderJSValidation(); $this->assign('fields', $fields); $this->assign('validations', $validations); } else { $customField = false; } $this->assign('customField', $customField); $this->lists = $lists; $this->Itemid = $Itemid; $this->config = $config; $this->userId = $userId; $this->lists['category_id'] = $lists['category_id']; parent::display($tpl); }
/** * Replace callback function * * @param array $matches */ function _displayForm($matches) { $document = JFactory::getDocument(); require_once JPATH_ROOT . '/components/com_helpdeskpro/helper/helper.php'; require_once JPATH_ROOT . '/components/com_helpdeskpro/helper/fields.php'; $db =& JFactory::getDbo(); $user = JFactory::getUser(); HelpdeskProHelper::loadLanguage(); $document->addStyleSheet(JURI::base(true) . '/components/com_helpdeskpro/assets/css/style.css'); if (version_compare(JVERSION, '3.0', 'lt')) { HelpdeskProHelper::loadBootstrap(); } $config = HelpdeskProHelper::getConfig(); $userId = $user->get('id'); $Itemid = JRequest::getInt('Itemid', 0); if (!$userId && !$config->allow_public_user_submit_ticket) { //Redirect user to login page $return = JRoute::_('index.php?option=com_helpdeskpro&task=ticket.add&Itemid=' . $Itemid); JFactory::getApplication()->redirect('index.php?option=com_users&view=login&return=' . base64_encode($return), JText::_('HDP_LOGIN_TO_SUBMIT_TICKET')); } //Initialize the view object $viewConfig = array(); $viewConfig['name'] = 'form'; $viewConfig['base_path'] = JPATH_ROOT . '/plugins/content/helpdeskpro'; $viewConfig['template_path'] = JPATH_ROOT . '/plugins/content/helpdeskpro/tmpl'; $viewConfig['layout'] = 'form'; require_once JPATH_ROOT . '/administrator/components/com_helpdeskpro/legacy/view.php'; $jView = new LegacyView($viewConfig); $db =& JFactory::getDBO(); $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories WHERE published=1 AND access IN (" . implode(',', $user->getAuthorisedViewLevels()) . ')'; $db->setQuery($sql); $rows = $db->loadObjectList(); $children = array(); if ($rows) { // first pass - collect children foreach ($rows as $v) { $pt = $v->parent_id; $list = @$children[$pt] ? $children[$pt] : array(); array_push($list, $v); $children[$pt] = $list; } } $list = JHTML::_('menu.treerecurse', 0, '', array(), $children, 9999, 0, 0); $options = array(); $options[] = JHtml::_('select.option', 0, JText::_('HDP_CHOOSE_CATEGORY')); foreach ($list as $listItem) { $options[] = JHTML::_('select.option', $listItem->id, ' ' . $listItem->treename); } $lists['category_id'] = JHTML::_('select.genericlist', $options, 'category_id', array('option.text.toHtml' => false, 'option.text' => 'text', 'option.value' => 'value', 'list.attr' => 'class="inputbox" onchange="showFields(this.form);" ', 'list.select' => 0)); $options = array(); $options[] = JHtml::_('select.option', 0, JText::_('HDP_CHOOSE_PRIORITY'), 'id', 'title'); $sql = 'SELECT id, title FROM #__helpdeskpro_priorities WHERE published=1 ORDER BY ordering'; $db->setQuery($sql); $rowPriorities = $db->loadObjectList(); $options = array_merge($options, $rowPriorities); $lists['priority_id'] = JHTML::_('select.genericlist', $options, 'priority_id', array('option.text.toHtml' => false, 'option.text' => 'title', 'option.key' => 'id', 'list.attr' => 'class="inputbox" ', 'list.select' => $config->default_ticket_priority_id)); $categoryId = 0; $jcFields = new JCFields(); if ($jcFields->getTotal()) { $customField = true; $fieldArray = JCFields::getAssoc(); $fieldJs = "fields = new Array();\n"; foreach ($fieldArray as $catId => $fieldList) { $fieldJs .= ' fields[' . $catId . '] = new Array("' . implode('","', $fieldList) . '");' . "\n"; } $jView->fieldJs = $fieldJs; $fields = $jcFields->renderCustomFields($categoryId, $fieldArray); $validations = $jcFields->renderJSValidation(); $jView->fields = $fields; $jView->validations = $validations; } else { $customField = false; } $jView->assign('customField', $customField); $jView->lists = $lists; $jView->Itemid = $Itemid; $jView->config = $config; $jView->userId = $userId; ob_start(); $jView->display(); $text = ob_get_contents(); ob_end_clean(); return $text; }
/** * Export support tickets into CSV format */ function csv_export() { $db = JFactory::getDbo(); $dateFormat = HelpdeskProHelper::getConfigValue('date_format'); $categoryId = JRequest::getInt('category_id'); $statusId = JRequest::getInt('status_id'); $priorityId = JRequest::getInt('priority_id'); //Get list statues and id $sql = 'SElECT id, title FROM #__helpdeskpro_statuses '; $db->setQuery($sql); $rowStatuses = $db->loadObjectList(); $statusList = array(); foreach ($rowStatuses as $status) { $statusList[$status->id] = $status->title; } $sql = 'SElECT id, title FROM #__helpdeskpro_priorities '; $db->setQuery($sql); $rowPriorities = $db->loadObjectList(); $priorityList = array(); foreach ($rowPriorities as $priority) { $priorityList[$priority->id] = $priority->title; } $where = array(); if ($categoryId > 0) { $where[] = ' a.category_id = ' . $categoryId; } if ($statusId > 0) { $where[] = ' a.status_id = ' . $statusId; } if ($priorityId > 0) { $where[] = ' a.priority_id = ' . $priorityId; } $sql = 'SELECT a.*, b.title AS category_title, c.username AS username FROM #__helpdeskpro_tickets AS a ' . ' LEFT JOIN #__helpdeskpro_categories AS b ' . ' ON a.category_id= b.id ' . ' LEFT JOIN #__users AS c ' . ' ON a.user_id = c.id ' . (count($where) > 0 ? ' WHERE ' . implode(' AND ', $where) : '') . ' ORDER BY id '; $db->setQuery($sql); $rows = $db->loadObjectList(); if (count($rows)) { $results_arr = array(); $results_arr[] = JText::_('HDP_TITLE'); $results_arr[] = JText::_('HDP_MESSAGE'); $results_arr[] = JText::_('HDP_CATEGORY'); $results_arr[] = JText::_('HDP_USER'); $results_arr[] = JText::_('HDP_CREATED_DATE'); $results_arr[] = JText::_('HDP_MODIFIED_DATE'); $results_arr[] = JText::_('HDP_STATUS'); $results_arr[] = JText::_('HDP_PRIORITY'); $results_arr[] = JText::_('HDP_ID'); $csv_output = implode(",", $results_arr); foreach ($rows as $row) { $results_arr = array(); $results_arr[] = $row->subject; $results_arr[] = $row->message; $results_arr[] = $row->subject; $results_arr[] = $row->category_title; if ($row->username) { $results_arr[] = $row->name . '(' . $row->username . ')'; } else { $results_arr[] = $row->name; } $results_arr[] = $row->email; $results_arr[] = JHtml::_('date', $row->created_date, $dateFormat); $results_arr[] = JHtml::_('date', $row->modified_date, $dateFormat); $results_arr[] = @$statusList[$row->status_id]; $results_arr[] = @$priorityList[$row->priority_id]; $results_arr[] = $row->id; $csv_output .= "\n\"" . implode("\",\"", $results_arr) . "\""; } $csv_output .= "\n"; if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'])) { $UserBrowser = "Opera"; } elseif (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'])) { $UserBrowser = "IE"; } else { $UserBrowser = ''; } $mime_type = $UserBrowser == 'IE' || $UserBrowser == 'Opera' ? 'application/octetstream' : 'application/octet-stream'; $filename = "tickets"; @ob_end_clean(); ob_start(); header('Content-Type: ' . $mime_type); header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); if ($UserBrowser == 'IE') { header('Content-Disposition: attachment; filename="' . $filename . '.csv"'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); } else { header('Content-Disposition: attachment; filename="' . $filename . '.csv"'); header('Pragma: no-cache'); } echo $csv_output; exit; } }
function addComment($data) { $user = JFactory::getUser(); $config = HelpdeskProHelper::getConfig(); if (isset($data['message_id'])) { $row = JTable::getInstance('helpdeskpro', 'message'); if ($data['comment' . $data['message_id']] == '') { $row->delete($data['message_id']); return true; } $row->load($data['message_id']); $row->message = $data['comment' . $data['message_id']]; $row->store(); return true; } $ticket = JTable::getInstance('helpdeskpro', 'ticket'); $row = JTable::getInstance('helpdeskpro', 'message'); $allowedFileTypes = explode('|', $config->allowed_file_types); for ($i = 0, $n = count($allowedFileTypes); $i < $n; $i++) { $allowedFileTypes[$i] = trim(strtoupper($allowedFileTypes[$i])); } $row->bind($data); $row->message = $data['comment']; $ticket->load($row->ticket_id); if ($user->id) { $row->user_id = $user->get('id'); } else { if (isset($data['ticket_code'])) { $row->user_id = $ticket->user_id; } } $row->date_added = gmdate('Y-m-d H:i:s'); $uploadedFiles = $this->_storeAttachment($allowedFileTypes); if (count($uploadedFiles['names'])) { $row->attachments = implode('|', $uploadedFiles['names']); $row->original_filenames = implode('|', $uploadedFiles['original_names']); } $row->store(); if ($row->user_id == $ticket->user_id || isset($data['ticket_code'])) { $isCustomerAddComment = true; } else { $isCustomerAddComment = false; } //Update ticket status if ($isCustomerAddComment) { if ($config->ticket_status_when_customer_add_comment) { $ticket->status_id = $config->ticket_status_when_customer_add_comment; } } else { if ($config->ticket_status_when_admin_add_comment) { $ticket->status_id = $config->ticket_status_when_admin_add_comment; } } $ticket->modified_date = gmdate('Y-m-d H:i:s'); $ticket->store(); //Need to send email to users if ($isCustomerAddComment) { HelpdeskProHelper::sendTicketUpdatedEmailToManagers($row, $ticket, $config); } else { HelpdeskProHelper::sendTicketUpdatedEmailToCustomer($row, $ticket, $config); } return true; }
/** * Store ticket from input data * @param array $data */ public static function storeTicket($data) { $db = JFactory::getDbo(); JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_helpdeskpro/tables'); jimport('joomla.user.helper'); $config = HelpdeskProHelper::getConfig(); $user = JFactory::getUser(); $row = JTable::getInstance('helpdeskpro', 'ticket'); $row->bind($data); if ($user->get('id')) { $row->user_id = $user->get('id'); } else { $sql = 'SELECT id FROM #__users WHERE email="' . $data['email'] . '"'; $db->setQuery($sql); $row->user_id = $db->loadResult(); } $row->status_id = $config->new_ticket_status_id; while (true) { $ticketCode = strtolower(JUserHelper::genRandomPassword(10)); $sql = 'SELECT COUNT(*) FROM #__helpdeskpro_tickets WHERE ticket_code="' . $ticketCode . '"'; $db->setQuery($sql); $total = $db->loadResult(); if (!$total) { break; } } $row->ticket_code = $ticketCode; $row->created_date = $row->modified_date = gmdate('Y-m-d H:i:s'); $row->store(); //Store custom fields information for this ticket HelpdeskProHelper::sendNewTicketNotificationEmails($row, $config); return true; }