Add method to get each type of category with a specific uri

This commit is contained in:
jfefe 2015-05-05 02:10:10 +02:00
parent 0e4a06799d
commit 967e8c66a9

View File

@ -40,8 +40,16 @@ class CategoryApi extends DolibarrApi {
'type' 'type'
); );
static $TYPES = array(
0 => 'product',
1 => 'supplier',
2 => 'customer',
3 => 'member',
4 => 'contact',
);
/** /**
* @var category $category {@type category} * @var Categorie $category {@type Categorie}
*/ */
public $category; public $category;
@ -56,6 +64,7 @@ class CategoryApi extends DolibarrApi {
global $db, $conf; global $db, $conf;
$this->db = $db; $this->db = $db;
$this->category = new Categorie($this->db); $this->category = new Categorie($this->db);
} }
/** /**
@ -71,7 +80,7 @@ class CategoryApi extends DolibarrApi {
*/ */
function get($id) function get($id)
{ {
if(! DolibarrApiAccess::$user->rights->category->read) { if(! DolibarrApiAccess::$user->rights->category->lire) {
throw new RestException(401); throw new RestException(401);
} }
@ -94,7 +103,7 @@ class CategoryApi extends DolibarrApi {
* *
* @url GET /category/list * @url GET /category/list
* *
* @param int $mode Use this param to filter list * @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact')
* @param string $sortfield Sort field * @param string $sortfield Sort field
* @param string $sortorder Sort order * @param string $sortorder Sort order
* @param int $limit Limit for list * @param int $limit Limit for list
@ -102,7 +111,7 @@ class CategoryApi extends DolibarrApi {
* *
* @return array Array of category objects * @return array Array of category objects
*/ */
function getList($mode=0, $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) { function getList($type='product', $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) {
global $db, $conf; global $db, $conf;
$obj_ret = array(); $obj_ret = array();
@ -113,12 +122,8 @@ class CategoryApi extends DolibarrApi {
$sql = "SELECT s.rowid"; $sql = "SELECT s.rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."categorie as s"; $sql.= " FROM ".MAIN_DB_PREFIX."categorie as s";
// Example of use $mode
//if ($mode == 1) $sql.= " AND s.client IN (1, 3)";
//if ($mode == 2) $sql.= " AND s.client IN (2, 3)";
$sql.= ' WHERE s.entity IN ('.getEntity('categorie', 1).')'; $sql.= ' WHERE s.entity IN ('.getEntity('categorie', 1).')';
$sql.= ' AND s.type='.array_search($type,CategoryApi::$TYPES);
$nbtotalofrecords = 0; $nbtotalofrecords = 0;
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
@ -153,7 +158,7 @@ class CategoryApi extends DolibarrApi {
} }
} }
else { else {
throw new RestException(503, 'Error when retrieve category list'); throw new RestException(503, 'Error when retrieve category list : '.$category_static->error);
} }
if( ! count($obj_ret)) { if( ! count($obj_ret)) {
throw new RestException(404, 'No category found'); throw new RestException(404, 'No category found');
@ -161,6 +166,81 @@ class CategoryApi extends DolibarrApi {
return $obj_ret; return $obj_ret;
} }
/**
* Get member categories list
*
* @url GET /category/list/member
*
* @param string $sortfield Sort field
* @param string $sortorder Sort order
* @param int $limit Limit for list
* @param int $page Page number
*
* @return mixed
*/
function getListCategoryMember($sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) {
return $this->getList('member', $sortfield, $sortorder, $limit, $page);
}
/**
* Get customer categories list
*
* @url GET /category/list/customer
*
* @param string $sortfield Sort field
* @param string $sortorder Sort order
* @param int $limit Limit for list
* @param int $page Page number
*
* @return mixed
*/
function getListCategoryCustomer($sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) {
return $this->getList('customer', $sortfield, $sortorder, $limit, $page);
}
/**
* Get supplier categories list
*
* @url GET /category/list/supplier
*
* @param string $sortfield Sort field
* @param string $sortorder Sort order
* @param int $limit Limit for list
* @param int $page Page number
*
* @return mixed
*/
function getListCategorySupplier($sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) {
return $this->getList('supplier', $sortfield, $sortorder, $limit, $page);
}
/**
* Get product categories list
*
* @url GET /category/list/product
*
* @param string $sortfield Sort field
* @param string $sortorder Sort order
* @param int $limit Limit for list
* @param int $page Page number
*
* @return mixed
*/
function getListCategoryProduct($sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) {
return $this->getList('product', $sortfield, $sortorder, $limit, $page);
}
/**
* Get contact categories list
*
* @url GET /category/list/contact
*
* @return mixed
*/
function getListCategoryContact($sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) {
return $this->getList('contact', $sortfield, $sortorder, $limit, $page);
}
/** /**
* Create category object * Create category object
* *