function display($tpl = null) { $layout = $this->getLayout(); if ($layout == 'form') { $this->_displayForm($tpl); return; } $db = JFactory::getDbo(); $user = JFactory::getUser(); $item = $this->get('Data'); if (!$item->id) { $app = JFactory::getApplication(); $app->redirect('index.php', JText::_('HDP_INVALID_TICKET')); } $canAccess = HelpdeskProHelper::checkTicketAccess($item); $app = JFactory::getApplication(); $pathway = $app->getPathway(); $state = $this->get('State'); $this->state = $state; $lists = array(); $config = HelpdeskProHelper::getConfig(); $sql = 'SELECT a.*, b.name FROM #__helpdeskpro_messages AS a LEFT JOIN #__users AS b ON a.user_id=b.id WHERE ticket_id=' . $item->id . ' ORDER BY a.id DESC'; $db->setQuery($sql); $messages = $db->loadObjectList(); $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; } } $categories = JHTML::_('menu.treerecurse', 0, '', array(), $children, 9999, 0, 0); //Get all custom fields $sql = 'SELECT * FROM #__helpdeskpro_fields WHERE published=1 AND (category_id = -1 OR id IN (SELECT field_id FROM #__helpdeskpro_field_categories WHERE category_id=' . $item->category_id . ')) ORDER BY ordering '; $db->setQuery($sql); $fields = $db->loadObjectList(); $sql = 'SELECT title FROM #__helpdeskpro_statuses WHERE id=' . $item->status_id; $db->setQuery($sql); $item->status = $db->loadResult(); $sql = 'SELECT title FROM #__helpdeskpro_priorities WHERE id=' . $item->priority_id; $db->setQuery($sql); $item->priority = $db->loadResult(); //Get all custom fields value belong to this support ticket $sql = 'SELECT field_id, field_value FROM #__helpdeskpro_field_value WHERE ticket_id=' . $item->id; $db->setQuery($sql); $rows = $db->loadObjectList(); $fieldValues = array(); if (count($rows)) { foreach ($rows as $row) { $fieldValues[$row->field_id] = $row->field_value; } } $sql = 'SELECT id, title FROM #__helpdeskpro_statuses WHERE published=1 ORDER BY ordering'; $db->setQuery($sql); $rowStatuses = $db->loadObjectList(); $sql = 'SELECT id, title FROM #__helpdeskpro_priorities WHERE published=1 ORDER BY ordering'; $db->setQuery($sql); $rowPriorities = $db->loadObjectList(); $dateFormat = HelpdeskProHelper::getConfigValue('date_format'); if ($user->id == $item->user_id || $item->is_ticket_code) { $isCustomer = 1; } else { $isCustomer = 0; } if ($isCustomer && $item->status_id == $config->closed_ticket_status) { $canComment = false; } else { $canComment = true; } $sql = "SELECT id, parent_id, title FROM #__helpdeskpro_categories WHERE published=1 ORDER BY ordering"; $db->setQuery($sql); $list = $db->loadObjectList(); $lists['cat'] = '<ul class="nav menu">'; foreach ($list as $listItem) { $lists['cat'] .= '<li><a href="' . JRoute::_('index.php?option=com_helpdeskpro&view=tickets&category_id=' . $listItem->id) . '">' . $listItem->title . '</a></li>'; } $lists['cat'] .= '</ul>'; $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" ', 'list.select' => $state->category_id)); $Itemid = JRequest::getInt('Itemid'); $this->fields = $fields; $this->messages = $messages; $this->fieldValues = $fieldValues; $this->rowStatuses = $rowStatuses; $this->rowPriorities = $rowPriorities; $this->categories = $categories; $this->dateFormat = $dateFormat; $this->config = $config; $this->item = $item; $this->lists['cat'] = $lists['cat']; $this->isCustomer = $isCustomer; $this->canAccess = $canAccess; $this->canComment = $canComment; $this->Itemid = $Itemid; $sql = 'SELECT title FROM #__helpdeskpro_categories WHERE id=' . $item->category_id; $db->setQuery($sql); $categoryTitle = $db->loadResult(); $pathway->addItem($categoryTitle, 'index.php?option=com_helpdeskpro&category_id=' . $item->category_id); $pathway->addItem($this->item->subject, ''); /* FORM FUNCTION STARTS HERE */ $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_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="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 IS A PART OF BOTH FUNCTIONS parent::display($tpl); }