public function createTicket($data) { $default_status_id = kyTicketStatus::getAll()->filterByTitle('New')->first()->getId(); $default_priority_id = kyTicketPriority::getAll()->filterByTitle('Normal')->first()->getId(); $default_type_id = $data['issue']; kyTicket::setDefaults($default_status_id, $default_priority_id, $default_type_id); $general_department = kyDepartment::getAll()->filterByTitle('Customer Service')->filterByModule(kyDepartment::MODULE_TICKETS)->first(); $ticket = kyTicket::createNewAuto($general_department, $data['name'], $data['email'], $data['comment'], $data['subject'])->create(); return true; }
/** * Returns list of departments in the form of array: * array( * <top department id> => array( * 'department' => <top department object>, * 'child_departments' => array(<child department object>, ...) * ), * ... * ) * * @return array */ function getDepartmentsTree() { $departments_tree = array(); $all_departments = kyDepartment::getAll()->filterByModule(kyDepartment::MODULE_TICKETS)->filterByType(kyDepartment::TYPE_PUBLIC); $top_departments = $all_departments->filterByParentDepartmentId(null)->orderByDisplayOrder(); foreach ($top_departments as $top_department) { /* @var $top_department kyDepartment */ $departments_tree[$top_department->getId()] = array('department' => $top_department, 'child_departments' => $all_departments->filterByParentDepartmentId($top_department->getId())->orderByDisplayOrder()); } return $departments_tree; }
<?php /** * @copyright 2001-2015 Kayako * @license https://www.freebsd.org/copyright/freebsd-license.html * @link https://github.com/kayako/whmcs-integration */ //Include config file require_once __DIR__ . '/config.php'; //Include all necessary classes and helper methods require_once 'API/kyIncludes.php'; //Include constants file require_once 'constants.php'; //Initialize the client kyConfig::set(new kyConfig(API_URL, API_KEY, SECRET_KEY)); $_ticketDepartmentObjectContainer = kyDepartment::getAll()->filterByModule(kyDepartment::MODULE_TICKETS)->filterByType(kyDepartment::TYPE_PUBLIC); $_ticketStatusObjectContainer = kyTicketStatus::getAll()->filterByType(kyTicketStatus::TYPE_PUBLIC)->first(); $_ticketStatusContainer = []; foreach ($_ticketStatusObjectContainer as $_ticketStatusObject) { $_ticketStatusID = $_ticketStatusObject->getId(); $_ticketStatus['ticketstatusid'] = $_ticketStatusID; $_ticketStatus['title'] = $_ticketStatusObject->getTitle(); $_ticketStatus['markasresolved'] = $_ticketStatusObject->getMarkAsResolved(); $_ticketStatusContainer[$_ticketStatusID] = $_ticketStatus; } $_ticketObjectContainer = kyTicket::getAll($_ticketDepartmentObjectContainer, $_ticketStatusObjectContainer, [], [], $_params['clientsdetails']['email'], $_settings['recordsperpage'], 0)->orderByLastActivity(); $_totalTicketCount = kyTicket::getTicketCount($_ticketDepartmentObjectContainer, $_ticketStatusObjectContainer, array(), array(), $clientsdetails['email']); $_ticketContainer = []; $_numActiveTickets = 0; foreach ($_ticketObjectContainer as $_ticketObject) { $_ticketID = $_ticketObject->getId();
/** * Returns Department list * * @return kyResultSet */ public function getAllDepartments() { $_departments = kyDepartment::getAll(); return $_departments; }
* @copyright 2001-2015 Kayako * @license https://www.freebsd.org/copyright/freebsd-license.html * @link https://github.com/kayako/whmcs-integration */ //Include config file require_once __DIR__ . '/config.php'; //Include all necessary classes and helper methods require_once 'API/kyIncludes.php'; //Include common functions require_once 'functions.php'; //Include constants file require_once 'constants.php'; //Initialize the client kyConfig::set(new kyConfig(API_URL, API_KEY, SECRET_KEY)); if (!isset($_REQUEST['step'])) { $_allDepartments = kyDepartment::getAll()->filterByModule(kyDepartment::MODULE_TICKETS)->filterByType(kyDepartment::TYPE_PUBLIC); $_topDepartments = $_allDepartments->orderByDisplayOrder(); $_departmentMap = []; foreach ($_topDepartments as $_topDepartment) { $_department = []; $_topDepartmentID = $_topDepartment->getId(); $_department['departmentid'] = $_topDepartmentID; $_department['title'] = $_topDepartment->getTitle(); $_department['departmenttype'] = $_topDepartment->getType(); $_departmentMap[$_topDepartmentID] = $_department; $_childDepartments = $_allDepartments->filterByParentDepartmentId($_topDepartmentID)->orderByDisplayOrder(); foreach ($_childDepartments as $_childDepartment) { $_department = []; $_department['departmentid'] = $_childDepartment->getId(); $_department['title'] = $_childDepartment->getTitle(); $_department['departmenttype'] = $_childDepartment->getType();
*/ defined('_JEXEC') or die; require_once 'modules/mod_kayako/includes/kayako-php-api/kyIncludes.php'; require_once 'modules/mod_kayako/helper.php'; $email = JFactory::getUser()->email; if (empty($email) || !isset($email)) { throw new kyException(); } //Retrieve the get value $input = JFactory::getApplication()->input; //$edit_id = $input->get('id', null); $edit_id = $_REQUEST['ticketid']; JTickets::init(); $all_departments = kyDepartment::getAll()->filterByModule(kyDepartment::MODULE_TICKETS)->filterByType(kyDepartment::TYPE_PUBLIC); $department_titles = kyDepartment::getAll()->collectTitle(); $department_id = kyDepartment::getAll()->collectId(); $priority_list = kyTicketPriority::getAll(); $status_list = kyTicketStatus::getAll(); $ticket_type = kyTicketType::getAll(); $ticket_details = kyTicket::get($edit_id); $document =& JFactory::getDocument(); $document->addScript('/media/jui/js/jquery.min.js'); ?> <link rel="stylesheet" type="text/css" href="modules/mod_kayako/resources/css/style.css"> <script> jQuery(document).ready(function() { jQuery('#Reply').click(function() { jQuery('#div_reply').slideToggle("fast"); });
function get_tickets_by_dept_status($department, $status) { $tickets = kyTicket::getAll(kyDepartment::getAll()->filterByTitle(array("~", "/" . $department . "/i")), kyTicketStatus::getAll()->filterByTitle(array("=", $status)), array(), array()); return $tickets; }
* Search for tickets with "power cable" text in contents of posts or notes. */ $tickets = kyTicket::search("power cable", array(kyTicket::SEARCH_CONTENTS, kyTicket::SEARCH_NOTES)); //print them print "Searching tickets:\n" . $tickets; /** * Search for open and assigned tickets with no replies in all departments. * WARNING: Can be time consuming. */ $tickets = kyTicket::getAll(kyDepartment::getAll())->filterByStatusId(kyTicketStatus::getAll()->filterByTitle(array("!=", "Closed"))->collectId())->filterByReplies(array('<=', 1))->filterByOwnerStaffId(array("!=", null)); //print them print "Searching tickets:\n" . $tickets; /** * Filtering, sorting and paging results. */ //print available filter methods for User objects print "User available filter methods:\n"; print_r(kyUser::getAvailableFilterMethods()); //print available order methods for Staff objects print "Staff available order methods:\n"; print_r(kyStaff::getAvailableOrderMethods()); //find the user with email someuser@example.com $user = kyUser::getAll()->filterByEmail("*****@*****.**")->first(); //find ticket time tracks with billable time greater than 10 minutes and sort them ascending using time worked $time_tracks = $ticket->getTimeTracks()->filterByTimeBillable(array(">", 10 * 60))->orderByTimeWorked(); //find department with title "General" $general_department = kyDepartment::getAll()->filterByTitle("General")->first(); //find tickets in "General" department with word "help" in subject $tickets = kyTicket::getAll($general_department->getId())->filterBySubject(array("~", "/help/i")); //assuming 10 items per page, get second page from list of staff users ordered by fullname $staff_page_2 = kyStaff::getAll()->orderByFullName()->getPage(2, 10);