dolibarr 25.0.0-alpha
modulebuilder.lib.php File Reference

Set of function for modulebuilder management. More...

Go to the source code of this file.

Functions

 rebuildObjectClass ($destdir, $module, $objectname, $newmask, $readdir='', $addfieldentry=array(), $delfieldentry='')
 Regenerate files .class.php.
 
 rebuildObjectSql ($destdir, $module, $objectname, $newmask, $readdir='', $object=null, $moduletype='external')
 Save data into a memory area shared by all users, all sessions on server.
 
 dolGetListOfObjectClasses ($destdir)
 Get list of existing objects from a directory.
 
 checkExistComment ($file, $number)
 Function to check if comment BEGIN and END exists in modMyModule class.
 
 deletePerms ($file)
 Delete all permissions declared in the permissions section of a module descriptor.
 
 reWriteAllPermissions ($file, $permissions, $key, $right, $objectname, $module, $action)
 Rewriting all permissions after any actions.
 
 parsePropertyString ($string)
 Converts a formatted properties string into an associative array.
 
 writePropsInAsciiDoc ($file, $objectname, $destfile)
 Write all properties of the object in AsciiDoc format.
 
 deletePropsAndPermsFromDoc ($file, $objectname)
 Delete property and permissions from documentation ascii file if we delete an object.
 
 getFromFile ($file, $start, $end, $excludestart='', $includese=0)
 Search a string and return all lines needed from file.
 
 writePermsInAsciiDoc ($file, $destfile)
 Write all permissions of each object in AsciiDoc format.
 
 addObjectsToApiFile ($srcfile, $file, $objects, $modulename)
 Add Object in ModuleApi File.
 
 removeObjectFromApiFile ($file, $objects, $objectname)
 Remove Object variables and methods from API_Module File.
 
 reWriteAllMenus ($file, $menus, $menuWantTo, $key, $action)
 
 updateDictionaryInFile ($module, $file, $dicts)
 Updates a dictionary in a module descriptor file.
 
 createNewDictionnary ($modulename, $file, $namedic, $dictionnaires=null)
 Create a new dictionary table.
 
 writeApiUrlsInDoc ($file_api, $file_doc)
 Generate Urls and add them to documentation module.
 
 countItemsInDirectory ($path, $type=1)
 count directories or files in modulebuilder folder
 
 getModuleBuilderObjectTabs ()
 Return the map of optional tabs that can be generated for a ModuleBuilder object.
 
 filterEnabledTabs ($requested, $map)
 Filter a list of requested tab keys against the known optional tabs map.
 
 dolReplaceInFilePreservingModuleBuilderMarkers ($file, $arrayreplacement)
 Apply substitutions to a module descriptor file while preserving the MODULEBUILDER comment markers.
 

Detailed Description

Set of function for modulebuilder management.

Definition in file modulebuilder.lib.php.

Function Documentation

◆ addObjectsToApiFile()

addObjectsToApiFile ( $srcfile,
$file,
$objects,
$modulename )

Add Object in ModuleApi File.

Parameters
string$srcfileSource file to use as example
string$filePath of modified file
string[]$objectsArray of objects in the module
string$modulenameName of module
Returns
int<-1,1> Return 1 if OK, -1 if KO

Definition at line 937 of file modulebuilder.lib.php.

References dol_now(), dol_print_date(), dol_syslog(), dolChmod(), dolReplaceInFile(), and getFromFile().

◆ checkExistComment()

checkExistComment ( $file,
$number )

Function to check if comment BEGIN and END exists in modMyModule class.

Parameters
string$fileFilename or path
int<0,2>$number 0 = For Menus, 1 = For permissions, 2 = For Dictionaries
Returns
int 1 if OK , -1 if KO

Definition at line 486 of file modulebuilder.lib.php.

◆ countItemsInDirectory()

countItemsInDirectory ( $path,
$type = 1 )

count directories or files in modulebuilder folder

Parameters
string$pathpath of directory
int<1,2>$type type of file 1= file,2=directory
Returns
int|false False on failure (path is not a directory)

Definition at line 1385 of file modulebuilder.lib.php.

◆ createNewDictionnary()

createNewDictionnary ( $modulename,
$file,
$namedic,
$dictionnaires = null )

Create a new dictionary table.

It generates the necessary SQL code to define the table structure, including columns such as 'rowid', 'code', 'label', 'position', 'use_default', 'active', etc. The table name is constructed based on the provided $namedic parameter.

Parameters
string$modulenameThe lowercase name of the module for which the dictionary table is being created.
string$fileThe file path to the Dolibarr module builder file where the dictionaries are defined.
string$namedicThe name of the dictionary, which will also be used as the base for the table name.
?array{langs:string,tabname:string[],tablib:string[],tabsql:string[],tabsqlsort:string[],tabfield:string[],tabfieldvalue:string[],tabfieldinsert:string[],tabrowid:string[],tabcond:array<string|bool|int>,tabhelp:array<array{code:string,field2:string}>}$dictionnaires An optional array containing pre-existing dictionary data, including tabname, tablib, tabsql, etc.
Returns
int<-1,-1> Return int < 0 if error, return nothing on success

Definition at line 1247 of file modulebuilder.lib.php.

References $db, dol_print_error(), isModEnabled(), setEventMessages(), and updateDictionaryInFile().

◆ deletePerms()

deletePerms ( $file)

Delete all permissions declared in the permissions section of a module descriptor.

Parameters
string$filefile with path
Returns
int<-1,1> 1 if OK, -1 if KO

Definition at line 530 of file modulebuilder.lib.php.

References dol_syslog(), and PermissionsBlock\fromFile().

◆ deletePropsAndPermsFromDoc()

deletePropsAndPermsFromDoc ( $file,
$objectname )

Delete property and permissions from documentation ascii file if we delete an object.

Parameters
string$filefile or path
string$objectnamename of object wants to deleted
Returns
void

Definition at line 776 of file modulebuilder.lib.php.

References dol_is_file(), and dolChmod().

◆ dolGetListOfObjectClasses()

dolGetListOfObjectClasses ( $destdir)

Get list of existing objects from a directory.

Parameters
string$destdirDirectory
Returns
string[]|int Return integer <=0 if KO, array if OK

Definition at line 453 of file modulebuilder.lib.php.

References dol_dir_list().

◆ dolReplaceInFilePreservingModuleBuilderMarkers()

dolReplaceInFilePreservingModuleBuilderMarkers ( $file,
$arrayreplacement )

Apply substitutions to a module descriptor file while preserving the MODULEBUILDER comment markers.

Markers such as "BEGIN MODULEBUILDER LEFTMENU MYOBJECT" must keep their MYOBJECT/MYMODULE placeholder so that generating subsequent objects can still locate them (see checkExistComment()). A blanket substitution would rewrite them to the first object name and break the generation of further objects.

Parameters
string$filePath to the module descriptor file
array<string,string>$arrayreplacement Substitution map (search => replace), applied as literal strings
Returns
int 1 on success, -1 on read/write error

Definition at line 1455 of file modulebuilder.lib.php.

◆ filterEnabledTabs()

filterEnabledTabs ( $requested,
$map )

Filter a list of requested tab keys against the known optional tabs map.

Protects against injection of unknown keys, removes duplicates, normalizes order.

Parameters
string[]$requestedRaw tab keys requested by the user (e.g. from GETPOST array)
array<string,array{file:string,var:string,marker:string,label:string}>$map Map from getModuleBuilderObjectTabs()
Returns
string[] Sanitized list of valid tab keys, in map order

Definition at line 1431 of file modulebuilder.lib.php.

◆ getFromFile()

getFromFile ( $file,
$start,
$end,
$excludestart = '',
$includese = 0 )

Search a string and return all lines needed from file.

Does not include line $start nor $end

Parameters
string$filefile for searching
string$startstart line if it exists
string$endend line if it exists
string$excludestartIgnore if start line is $excludestart
int<0,1>$includese Include start and end line
Returns
string Return the lines between first line with $start and $end. "" if not found.

Definition at line 810 of file modulebuilder.lib.php.

References dol_osencode().

Referenced by addObjectsToApiFile(), removeObjectFromApiFile(), reWriteAllMenus(), updateDictionaryInFile(), writeApiUrlsInDoc(), and writePermsInAsciiDoc().

◆ getModuleBuilderObjectTabs()

getModuleBuilderObjectTabs ( )

Return the map of optional tabs that can be generated for a ModuleBuilder object.

The CARD tab is always generated and is therefore not listed here. HISTORY is an alias of AGENDA (object event history is the agenda tab in Dolibarr).

Returns
array<string,array{file:string,var:string,marker:string,label:string}> Map: tab key => metadata

Definition at line 1413 of file modulebuilder.lib.php.

◆ parsePropertyString()

parsePropertyString ( $string)

Converts a formatted properties string into an associative array.

Parameters
string$stringThe formatted properties string.
Returns
array<string,bool|int|float|string|mixed[]> The resulting associative array.

Definition at line 632 of file modulebuilder.lib.php.

References parsePropertyString().

Referenced by parsePropertyString(), and writePropsInAsciiDoc().

◆ rebuildObjectClass()

rebuildObjectClass ( $destdir,
$module,
$objectname,
$newmask,
$readdir = '',
$addfieldentry = array(),
$delfieldentry = '' )

Regenerate files .class.php.

Parameters
string$destdirDirectory
string$moduleModule name
string$objectnameName of object
string$newmaskNew mask
string$readdirDirectory source (use $destdir when not defined)
array{}|array{name:string,key:string,type:string,label:string,picot?:string,enabled:int<0,1>,notnull:int<0,1>,position:int,visible:int,noteditable?:int<0,1>,alwayseditable?:int<0,1>,default?:string,index?:int,foreignkey?:string,searchall?:int,isameasure?:int<0,1>,css?:string,cssview?:string,csslist?:string,help?:string,showoncombobox?:int<0,1>,disabled?:int<0,1>,autofocusoncreate?:int<0,1>,arrayofkeyval?:array<string,string>,validate?:int<0,1>,comment?:string}$addfieldentry Array of 1 field entry to add
string$delfieldentryId of field to remove
Returns
int<-7,-1>|CommonObject Return integer <=0 if KO, Object if OK
See also
rebuildObjectSql()

Definition at line 41 of file modulebuilder.lib.php.

References $db, $object, dol_copy(), dol_escape_js(), dol_escape_php(), dol_is_file(), dol_mkdir(), dol_osencode(), dol_print_error(), dol_sort_array(), dolChmod(), and setEventMessages().

◆ rebuildObjectSql()

rebuildObjectSql ( $destdir,
$module,
$objectname,
$newmask,
$readdir = '',
$object = null,
$moduletype = 'external' )

Save data into a memory area shared by all users, all sessions on server.

Parameters
string$destdirDirectory
string$moduleModule name
string$objectnameName of object
string$newmaskNew mask
string$readdirDirectory source (use $destdir when not defined)
Object$objectIf object was already loaded/known, it is pass to avoid another include and new.
string$moduletype'external' or 'internal'
Returns
int Return integer <=0 if KO, >0 if OK
See also
rebuildObjectClass()

Definition at line 269 of file modulebuilder.lib.php.

References $db, $object, dol_copy(), dol_is_file(), dol_mkdir(), dol_osencode(), dolChmod(), and setEventMessages().

◆ removeObjectFromApiFile()

removeObjectFromApiFile ( $file,
$objects,
$objectname )

Remove Object variables and methods from API_Module File.

Parameters
string$fileFile api module
string[]$objectsArray of objects in the module
string$objectnameName of object want to remove
Returns
int<-1,1> 1 if OK, -1 if KO

Definition at line 1018 of file modulebuilder.lib.php.

References dolChmod(), dolReplaceInFile(), and getFromFile().

◆ reWriteAllMenus()

reWriteAllMenus ( $file,
$menus,
$menuWantTo,
$key,
$action )
Parameters
string$filepath of filename
array<int,array{commentgroup?:string,fk_menu:string,type:string,titre:string,mainmenu:string,leftmenu:string,url:string,langs:string,position:int|string,enabled:int|string,perms:string,target:string,user:int}>$menus all menus for module
null|string|array{commentgroup?:string,fk_menu:string,type:string,titre:string,mainmenu:string,leftmenu:string,url:string,langs:string,position:int|string,enabled:int|string,perms:string,target:string,user:int}$menuWantTo menu get for do actions
?int$keykey for the concerned menu
int<-1,2>$action for specify what action (0 = delete perm, 1 = add perm, 2 = update perm, -1 = when we delete object)
Returns
int<-1,1> 1 if OK, -1 if KO

Definition at line 1069 of file modulebuilder.lib.php.

References dolReplaceInFile(), and getFromFile().

◆ reWriteAllPermissions()

reWriteAllPermissions ( $file,
$permissions,
$key,
$right,
$objectname,
$module,
$action )

Rewriting all permissions after any actions.

Kept for backward compatibility: this is a public core function that external modules may call. The signature and the 1/-1 contract are unchanged, the body delegates to DescriptorRightsSyncService.

Parameters
string$filefilename or path
array<int,string[]>$permissions permissions existing in file
?int$keykey for permission needed
?array<int,string>$right $right to update or add
string$objectnamename of object
string$modulename of module
int<-2,2>$action 0 for delete, 1 for add, 2 for update, -1 when delete object completely, -2 for generate rights after add
Returns
int<-1,1> 1 if OK,-1 if KO

Definition at line 560 of file modulebuilder.lib.php.

References dol_syslog(), RightsSyncCommand\forObjectCreation(), RightsSyncCommand\forObjectDeletion(), RightsSyncCommand\forRightAddition(), RightsSyncCommand\forRightDeletion(), RightsSyncCommand\forRightUpdate(), and string.

◆ updateDictionaryInFile()

updateDictionaryInFile ( $module,
$file,
$dicts )

Updates a dictionary in a module descriptor file.

Parameters
string$moduleThe name of the module.
string$fileThe path to the module descriptor file.
array{langs:string,tabname:string[],tablib:string[],tabsql:string[],tabsqlsort:string[],tabfield:string[],tabfieldvalue:string[],tabfieldinsert:string[],tabrowid:string[],tabcond:array<string|bool|int>,tabhelp:array<array{code:string,field2:string}>}$dicts The dictionary data to be updated.
Returns
int Returns the number of replacements made in the file.
Parameters
bool | string | int$val
Returns
string|int
Parameters
string$val
Returns
string

Definition at line 1174 of file modulebuilder.lib.php.

References dolReplaceInFile(), and getFromFile().

Referenced by createNewDictionnary().

◆ writeApiUrlsInDoc()

writeApiUrlsInDoc ( $file_api,
$file_doc )

Generate Urls and add them to documentation module.

Parameters
string$file_apifilename or path of api
string$file_docfilename or path of documentation
Returns
int<-1,1> -1 if KO, 1 if OK, 0 if nothing change

Definition at line 1328 of file modulebuilder.lib.php.

References dol_is_file(), dolReplaceInFile(), and getFromFile().

◆ writePermsInAsciiDoc()

writePermsInAsciiDoc ( $file,
$destfile )

Write all permissions of each object in AsciiDoc format.

Parameters
string$filepath of the class
string$destfilefile where write table of permissions
Returns
int<-1,1> 1 if OK, -1 if KO

Definition at line 850 of file modulebuilder.lib.php.

References dolReplaceInFile(), and getFromFile().

◆ writePropsInAsciiDoc()

writePropsInAsciiDoc ( $file,
$objectname,
$destfile )

Write all properties of the object in AsciiDoc format.

Parameters
string$filepath of the class
string$objectnamename of the objectClass
string$destfilefile where write table of properties
Returns
int 1 if OK, -1 if KO

Definition at line 678 of file modulebuilder.lib.php.

References dolReplaceInFile(), and parsePropertyString().