Modify search of API classes for module

A module can now bring several API classes.
By example, thirdparty module can have api_thirdparty.class.php for thirdparty and api_contact.class.php for contacts.

Classes must be named <Object>API (ie ThirdpartyApi or ContactApi)
This commit is contained in:
jfefe 2015-05-03 19:43:49 +02:00
parent 80b832e90c
commit 60d6cc5806
2 changed files with 21 additions and 9 deletions

View File

@ -88,19 +88,29 @@ foreach ($modulesdir as $dir)
/* /*
* If exists, load the API class for enable module * If exists, load the API class for enable module
* *
* Search a file api_<object>.class.php into /htdocs/<module>/class directory * Search files named api_<object>.class.php into /htdocs/<module>/class directory
* *
* @todo : take care of externals module! * @todo : take care of externals module!
* @todo : use getElementProperties() function * @todo : use getElementProperties() function ?
*/ */
$file = DOL_DOCUMENT_ROOT.'/'.$part."/class/api_".$obj.".class.php"; $dir_part = DOL_DOCUMENT_ROOT.'/'.$part.'/class/';
$classname = ucwords($obj).'Api'; $handle_part=@opendir(dol_osencode($dir_part));
if (file_exists($file)) if (is_resource($handle_part))
{ {
require_once $file; while (($file_searched = readdir($handle_part))!==false)
$api->r->addAPIClass($classname,''); {
if (is_readable($dir_part.$file_searched) && preg_match("/^(api_.*)\.class\.php$/i",$file_searched,$reg))
{
$classname=$reg[1];
$classname = str_replace('Api_','',ucwords($reg[1])).'Api';
require_once $dir_part.$file_searched;
if(class_exists($classname))
$api->r->addAPIClass($classname,'');
}
}
} }
} }
} }
} }

View File

@ -90,7 +90,9 @@ class ThirdpartyApi extends DolibarrApi {
} }
/** /**
* Fetch a list of thirdparties * List thirdparties
*
* Get a list of thirdparties
* *
* @url GET /thirdparties/ * @url GET /thirdparties/
* *