Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
    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;
        }
    }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
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();
Exemplo n.º 5
0
 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, '&nbsp;&nbsp;&nbsp;' . $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;
 }
Exemplo n.º 6
0
 /**
  * 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, '&nbsp;&nbsp;&nbsp;' . $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;
 }
Exemplo n.º 7
0
 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'));
     }
 }
Exemplo n.º 8
0
 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, '&nbsp;&nbsp;&nbsp;' . $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;
 }
Exemplo n.º 9
0
 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, '&nbsp;&nbsp;&nbsp;' . $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);
 }
Exemplo n.º 10
0
 /**
  * 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, '&nbsp;&nbsp;&nbsp;' . $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;
 }
Exemplo n.º 11
0
 /**
  * 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;
     }
 }
Exemplo n.º 12
0
 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;
 }
Exemplo n.º 13
0
 /**
  * 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;
 }