Bunch of stuff

remotes/upstream/api-rewrite
Mike Koch 7 years ago
parent 4942fdbfda
commit 403b87bbda

@ -0,0 +1,45 @@
<?php
namespace BusinessObjects;
class Category {
/**
* @var int The category ID
*/
public $id;
/**
* @var int Category order number
*/
public $catOrder;
/**
* @var bool Tickets autoassigned in this category
*/
public $autoAssign;
/**
* @var int The type of category (1 = Private, 2 = Public)
*/
public $type;
/**
* @var int The category's usage (0 = Tickets and Events, 1 = Tickets, 2 = Events)
*/
public $usage;
/**
* @var string? The color of the category
*/
public $color;
/**
* @var int The default ticket priority
*/
public $priority;
/**
* @var int? The manager for the category, if applicable
*/
public $manager;
}

@ -0,0 +1,19 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 1/16/17
* Time: 10:10 PM
*/
namespace BusinessLogic\Category;
use DataAccess\CategoryGateway;
class CategoryRetriever {
static function get_all_categories($hesk_settings) {
require_once(__DIR__ . '/../../dao/CategoryGateway.php');
return CategoryGateway::getAllCategories($hesk_settings);
}
}

@ -0,0 +1,5 @@
<?php
namespace BusinessLogic\Category;
use DataAccess\CategoryGateway;

@ -26,6 +26,7 @@ function createTicketByCustomer($ticket_request, $hesk_settings, $modsForHesk_se
*/
function validate($ticket_request, $staff, $hesk_settings, $modsForHesk_settings) {
require_once(__DIR__ . '/../email_validators.php');
require_once(__DIR__ . '/../../dao/category_dao.php');
//require_once('../category/retriever.php');
//require_once('../bans/retriever.php');
@ -42,7 +43,7 @@ function validate($ticket_request, $staff, $hesk_settings, $modsForHesk_settings
}
if (intval($ticket_request->category) === 0) {
// TODO add support for invalid category ID
$allCategories = null;
$validationModel->errorKeys[] = 'NO_CATEGORY';
}

@ -2,6 +2,7 @@
require_once(API_PATH . 'dao/ticket_dao.php');
function get_ticket_for_staff($hesk_settings, $user, $id = NULL) {
$tickets = get_ticket_for_id($hesk_settings, $user, $id);
if ($tickets == NULL) {

@ -1,58 +0,0 @@
<?php
define('IN_SCRIPT', 1);
define('HESK_PATH', '../../');
define('API_PATH', '../');
require_once(HESK_PATH . 'hesk_settings.inc.php');
require_once(HESK_PATH . 'inc/common.inc.php');
require_once(API_PATH . 'core/output.php');
require_once(API_PATH . 'dao/category_dao.php');
hesk_load_api_database_functions();
hesk_dbConnect();
// Routing
$request_method = $_SERVER['REQUEST_METHOD'];
/**
* @api {get} /category Retrieve a ticket category
* @apiVersion 0.0.0
* @apiName GetCategory
* @apiGroup Category
* @apiPermission public
*
* @apiParam {Number} [id] The ID of the category. Omit for all categories.
*
* @apiSuccess {Number} id ID of the category
* @apiSuccess {String} name The name of the category
* @apiSuccess {Integer} displayOrder The order of the category (in multiples of 10)
* @apiSuccess {Boolean} autoassign `true` if tickets set to this category are automatically assigned.<br>`false` otherwise
* @apiSuccess {Integer} type `0` - Public<br>`1` - Private
* @apiSuccess {Integer} priority Default priority of tickets created in this category
* @apiSuccess {Integer} manager User ID of the category manager, or `null` if there is no manager.
*
* @apiSuccessExample {json} Success-Response:
* HTTP/1.1 200 OK
* {
* "id": 1,
* "name": "General",
* "displayOrder": 10,
* "autoassign": true,
* "type": 0,
* "priority": 2,
* "manager": null
* }
*/
if ($request_method == 'GET') {
if (isset($_GET['id'])) {
$results = get_category($hesk_settings, $_GET['id']);
} else {
$results = get_category($hesk_settings);
}
if ($results == NULL) {
return http_response_code(404);
}
return output($results);
}
return http_response_code(405);

@ -0,0 +1,19 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 1/16/17
* Time: 10:12 PM
*/
namespace Controllers\Category;
use BusinessLogic\Category\CategoryRetriever;
class CategoryController {
static function getAllCategories($hesk_settings) {
require_once(__DIR__ . '/../businesslogic/category/CategoryRetriever.php');
return json_encode(CategoryRetriever::get_all_categories($hesk_settings));
}
}

@ -0,0 +1,38 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 1/16/17
* Time: 10:06 PM
*/
namespace DataAccess;
use BusinessObjects\Category;
class CategoryGateway {
static function getAllCategories($hesk_settings) {
require_once(__DIR__ . '/../businesslogic/category/Category.php');
$sql = 'SELECT * FROM `' . \hesk_dbEscape($hesk_settings['db_pfix']) . 'categories`';
$response = hesk_dbQuery($sql);
$results = array();
while ($row = hesk_dbFetchAssoc($response)) {
$category = new Category();
$category->id = intval($row['id']);
$category->catOrder = intval($row['cat_order']);
$category->autoAssign = $row['autoassign'] == 1;
$category->type = intval($row['type']);
$category->usage = intval($row['usage']);
$category->color = $row['color'];
$category->priority = intval($row['priority']);
$category->manager = intval($row['manager']) == 0 ? NULL : intval($row['manager']);
$results[$category->id] = $category;
}
return $results;
}
}

@ -0,0 +1,26 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 1/16/17
* Time: 10:18 PM
*/
namespace DataAccess;
use mysqli;
class Connection {
static function connect($hesk_settings) {
//-- Return mysqli_connection
}
/**
* @param $mysqliConnection mysqli The MySQLi connection obtained from Connection::connect
* @return bool true if connection closed, false otherwise
*/
static function close($mysqliConnection) {
return $mysqliConnection->close();
}
}

@ -0,0 +1,8 @@
<?php
define('IN_SCRIPT', 1);
// Just call the controller
require_once(__DIR__ . '/controllers/CategoryController.php');
require_once(__DIR__ . '/../hesk_settings.inc.php');
\Controllers\Category\CategoryController::getAllCategories($hesk_settings);

@ -1,3 +0,0 @@
<?php
// The loader is responsible for loading all necessary PHP classes to run the API. No more need to import everything
// manually.
Loading…
Cancel
Save