diff --git a/htdocs/societe/class/api_contact.class.php b/htdocs/societe/class/api_contact.class.php index 2b9e0b262e0100ec4f2f17699b282f698f82e1de..fb8dba41bb545b5d2f1a8ae87991c91c4efe8fd3 100644 --- a/htdocs/societe/class/api_contact.class.php +++ b/htdocs/societe/class/api_contact.class.php @@ -1,5 +1,4 @@ <?php - /* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * * This program is free software; you can redistribute it and/or modify @@ -94,6 +93,7 @@ class ContactApi extends DolibarrApi * * Get a list of contacts * + * @url GET /contact/list * @url GET /contact/list/{socid} * @url GET /thirdparty/{socid}/contacts * @@ -164,23 +164,22 @@ class ContactApi extends DolibarrApi $sql.= $db->plimit($limit + 1, $offset); } - $result = $db->query($sql); if ($result) { $num = $db->num_rows($result); - while ($i < min($num, $conf->liste_limit)) + while ($i < $num) { $obj = $db->fetch_object($result); - $soc_static = new Contact($db); - if ($soc_static->fetch($obj->rowid)) + $contact_static = new Contact($db); + if ($contact_static->fetch($obj->rowid)) { - $obj_ret[] = parent::_cleanObjectDatas($soc_static); + $obj_ret[] = parent::_cleanObjectDatas($contact_static); } $i++; } - } else - { + } + else { throw new RestException(503, 'Error when retreive contacts : ' . $sql); } if (!count($obj_ret)) diff --git a/htdocs/societe/class/api_thirdparty.class.php b/htdocs/societe/class/api_thirdparty.class.php index 8fcc8b539d46b347a7791ef2fb249e2126c75c62..204db5ba2681586cbe794d05b0ca042e00aee487 100644 --- a/htdocs/societe/class/api_thirdparty.class.php +++ b/htdocs/societe/class/api_thirdparty.class.php @@ -96,14 +96,18 @@ class ThirdpartyApi extends DolibarrApi { * * @url GET /thirdparties/ * - * @param int $only_customer Set to 1 to show only customers - * @param int $only_prospect Set to 1 to show only prospects - * @param int $only_others Set to 1 to show only those are not customer neither prospect + * @param int $mode Set to 1 to show only customers + * Set to 2 to show only prospects + * Set to 3 to show only those are not customer neither prospect + * @param string $sortfield Sort field + * @param string $sortorder Sort order + * @param int $limit Limit for list + * @param int $page Page number * * * @return array Array of thirdparty objects */ - function getList($only_customer=0,$only_prospect=0,$only_others=0) { + function getList($mode, $sortfield = "c.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) { global $db, $conf; $obj_ret = array(); @@ -120,9 +124,9 @@ class ThirdpartyApi extends DolibarrApi { if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale $sql.= ", ".MAIN_DB_PREFIX."c_stcomm as st"; $sql.= " WHERE s.fk_stcomm = st.id"; - if ($only_customer) $sql.= " AND s.client IN (1, 3)"; - if ($only_prospect) $sql.= " AND s.client IN (2, 3)"; - if ($only_others) $sql.= " AND s.client IN (0)"; + if ($mode == 1) $sql.= " AND s.client IN (1, 3)"; + if ($mode == 2) $sql.= " AND s.client IN (2, 3)"; + if ($mode == 3) $sql.= " AND s.client IN (0)"; $sql.= ' AND s.entity IN ('.getEntity('societe', 1).')'; if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc"; if ($socid) $sql.= " AND s.rowid = ".$socid; @@ -141,14 +145,23 @@ class ThirdpartyApi extends DolibarrApi { $nbtotalofrecords = $db->num_rows($result); } - $sql.= $db->order($sortfield,$sortorder); - $sql.= $db->plimit($conf->liste_limit +1, $offset); + $sql.= $db->order($sortfield, $sortorder); - $result = $db->query($sql); + if ($limit) { + if ($page < 0) + { + $page = 0; + } + $offset = $limit * $page; + + $sql.= $db->plimit($limit + 1, $offset); + } + + $result = $db->query($sql); if ($result) { $num = $db->num_rows($result); - while ($i < min($num,$conf->liste_limit)) + while ($i < $num) { $obj = $db->fetch_object($result); $soc_static = new Societe($db); @@ -158,6 +171,9 @@ class ThirdpartyApi extends DolibarrApi { $i++; } } + else { + throw new RestException(503, 'Error when retrieve thirdparties : ' . $sql); + } if( ! count($obj_ret)) { throw new RestException(404, 'Thirdparties not found'); }