Merge pull request #24505 from lamrani002/manageApiFileInMB
optimize section for add & remove apiFile
This commit is contained in:
commit
45cdc26cd7
@ -742,3 +742,108 @@ function writePermsInAsciiDoc($file, $destfile)
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add Object in ModuleApi File
|
||||||
|
* @param string $file path of file
|
||||||
|
* @param array $objects array of objects in the module
|
||||||
|
* @param string $modulename name of module
|
||||||
|
* @return int 1 if OK, -1 if KO
|
||||||
|
*/
|
||||||
|
function addObjectsToApiFile($file, $objects, $modulename)
|
||||||
|
{
|
||||||
|
if (!file_exists($file)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
$content = file($file);
|
||||||
|
$includeClass = "dol_include_once('/mymodule/class/myobject.class.php');";
|
||||||
|
$props = "public \$myobject;";
|
||||||
|
$varcomented = "@var MyObject \$myobject {@type MyObject}";
|
||||||
|
$constructObj = "\$this->myobject = new MyObject(\$this->db);";
|
||||||
|
|
||||||
|
// add properties and declare them in consturctor
|
||||||
|
foreach ($content as $lineNumber => &$lineContent) {
|
||||||
|
if (strpos($lineContent, $varcomented) !== false) {
|
||||||
|
$lineContent = '';
|
||||||
|
foreach ($objects as $object) {
|
||||||
|
$lineContent .= "\t * @var ".$object." \$".strtolower($object)." {@type ".$object."}". PHP_EOL;
|
||||||
|
}
|
||||||
|
//var_dump($lineContent);exit;
|
||||||
|
}
|
||||||
|
if (strpos($lineContent, $props) !== false) {
|
||||||
|
$lineContent = '';
|
||||||
|
foreach ($objects as $object) {
|
||||||
|
$lineContent .= "\tpublic \$".strtolower($object).";". PHP_EOL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (strpos($lineContent, $constructObj) !== false) {
|
||||||
|
$lineContent = '';
|
||||||
|
foreach ($objects as $object) {
|
||||||
|
$lineContent .= "\t\t\$this->".strtolower($object)." = new ".$object."(\$this->db);". PHP_EOL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (strpos($lineContent, $includeClass) !== false) {
|
||||||
|
$lineContent = '';
|
||||||
|
foreach ($objects as $object) {
|
||||||
|
$lineContent .= "dol_include_once('/".strtolower($modulename)."/class/".strtolower($object).".class.php');". PHP_EOL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$allContent = implode("", $content);
|
||||||
|
file_put_contents($file, $allContent);
|
||||||
|
|
||||||
|
//add methods for each object
|
||||||
|
$allContent = getFromFile($file, '/*begin methods CRUD*/', '/*end methods CRUD*/');
|
||||||
|
foreach ($objects as $object) {
|
||||||
|
$contentReplaced =str_replace(["myobject","MyObject"], [strtolower($object),$object], $allContent);
|
||||||
|
dolReplaceInFile($file, array('/*end methods CRUD*/' => '/*CRUD FOR '.strtoupper($object).'*/'."\n".$contentReplaced."\n\t".'/*END CRUD FOR '.strtoupper($object).'*/'."\n\t".'/*end methods CRUD*/'));
|
||||||
|
}
|
||||||
|
dolReplaceInFile($file, array($allContent => '','MyModule' => ucfirst($modulename)));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove Object variables and methods from API_Module File
|
||||||
|
* @param string $file file api module
|
||||||
|
* @param string $objectname name of object whant to remove
|
||||||
|
* @param string $modulename name of module
|
||||||
|
* @return int 1 if OK, -1 if KO
|
||||||
|
*/
|
||||||
|
function removeObjectFromApiFile($file, $objectname, $modulename)
|
||||||
|
{
|
||||||
|
$begin = '/*CRUD FOR '.strtoupper($objectname).'*/';
|
||||||
|
$end = '/*END CRUD FOR '.strtoupper($objectname).'*/';
|
||||||
|
$includeClass = "dol_include_once('/".strtolower($modulename)."/class/".strtolower($objectname).".class.php');";
|
||||||
|
$varcomentedDel = "\t * @var ".$objectname." \$".strtolower($objectname)." {@type ".$objectname."}";
|
||||||
|
$propsDel = "\tpublic \$".strtolower($objectname).";";
|
||||||
|
$constructObjDel = "\t\t\$this->".strtolower($objectname)." = new ".$objectname."(\$this->db);";
|
||||||
|
|
||||||
|
if (!file_exists($file)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
$content = file($file);
|
||||||
|
// for delete property and the initialization from the construct
|
||||||
|
foreach ($content as $lineNumber => &$lineContent) {
|
||||||
|
if (strpos($lineContent, $includeClass) !== false) {
|
||||||
|
$lineContent = '';
|
||||||
|
}
|
||||||
|
if (strpos($lineContent, $varcomentedDel) !== false) {
|
||||||
|
$lineContent = '';
|
||||||
|
}
|
||||||
|
if (strpos($lineContent, $propsDel) !== false) {
|
||||||
|
$lineContent = '';
|
||||||
|
}
|
||||||
|
if (strpos($lineContent, $constructObjDel) !== false) {
|
||||||
|
$lineContent = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$allContent = implode("", $content);
|
||||||
|
file_put_contents($file, $allContent);
|
||||||
|
// for delete methods of object
|
||||||
|
$allContent = getFromFile($file, $begin, $end);
|
||||||
|
$check = dolReplaceInFile($file, array($allContent => ''));
|
||||||
|
if ($check) {
|
||||||
|
dolReplaceInFile($file, array($begin => '', $end => ''));
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|||||||
@ -471,72 +471,10 @@ if ($dirins && in_array($action, array('initapi', 'initphpunit', 'initpagecontac
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (count($objects) > 1) {
|
if (count($objects) > 1) {
|
||||||
$file = $destfile;
|
addObjectsToApiFile($destfile, $objects, $modulename);
|
||||||
$content = file($file);
|
|
||||||
$props = "public \$myobject;";
|
|
||||||
$varcomented = "@var MyObject \$myobject {@type MyObject}";
|
|
||||||
$constructObj = "\$this->myobject = new MyObject(\$this->db);";
|
|
||||||
// add properties and declare them in consturctor
|
|
||||||
foreach ($content as $lineNumber => &$lineContent) {
|
|
||||||
if (strpos($lineContent, $varcomented) !== false) {
|
|
||||||
$lineContent = '';
|
|
||||||
foreach ($objects as $object) {
|
|
||||||
$lineContent .= "\t * @var ".$object." \$".strtolower($object)." {@type ".$object."}". PHP_EOL;
|
|
||||||
}
|
|
||||||
//var_dump($lineContent);exit;
|
|
||||||
}
|
|
||||||
if (strpos($lineContent, $props) !== false) {
|
|
||||||
$lineContent = '';
|
|
||||||
foreach ($objects as $object) {
|
|
||||||
$lineContent .= "\tpublic \$".strtolower($object).";". PHP_EOL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (strpos($lineContent, $constructObj) !== false) {
|
|
||||||
$lineContent = '';
|
|
||||||
foreach ($objects as $object) {
|
|
||||||
$lineContent .= "\t\t\$this->".strtolower($object)."= new ".$object."(\$this->db);". PHP_EOL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$allContent = implode("", $content);
|
|
||||||
file_put_contents($destfile, $allContent);
|
|
||||||
}
|
|
||||||
if (count($objects) > 1) {
|
|
||||||
$search = "/*begin methods CRUD*/";
|
|
||||||
// Open the file and read line by line
|
|
||||||
$handle = fopen($destfile, "r");
|
|
||||||
$i = 1;
|
|
||||||
$lines = array();
|
|
||||||
$props = " public \$myobject; ";
|
|
||||||
while (($line = fgets($handle)) !== false) {
|
|
||||||
//search line begin
|
|
||||||
if (strpos($line, $search) !== false) {
|
|
||||||
$start_line = $i;
|
|
||||||
|
|
||||||
// Copy lines until the end on array
|
|
||||||
while (($line = fgets($handle)) !== false) {
|
|
||||||
if (strpos($line, "/*end methods CRUD*/") !== false) {
|
|
||||||
$end_line = $i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$lines[] = $line;
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
$allContent = implode("", $lines);
|
|
||||||
|
|
||||||
foreach ($objects as $object) {
|
|
||||||
$contentReplaced = str_replace(["myobject","MyObject"], [strtolower($object),$object], $allContent);
|
|
||||||
dolReplaceInFile($destfile, array('/*end methods CRUD*/' => '/*CRUD FOR '.strtoupper($object).'*/'."\n".$contentReplaced."\n\t".'/*END CRUD FOR '.strtoupper($object).'*/'."\n\t".'/*end methods CRUD*/'));
|
|
||||||
}
|
|
||||||
dolReplaceInFile($destfile, array($allContent => ''));
|
|
||||||
fclose($handle);
|
|
||||||
} else {
|
} else {
|
||||||
dolReplaceInFile($destfile, $arrayreplacement);
|
dolReplaceInFile($destfile, $arrayreplacement);
|
||||||
|
dolReplaceInFile($destfile, array('/*begin methods CRUD*/' => '/*begin methods CRUD*/'."\n\t".'/*CRUD FOR '.strtoupper($objectname).'*/', '/*end methods CRUD*/' => '/*END CRUD FOR '.strtoupper($objectname).'*/'."\n\t".'/*end methods CRUD*/'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($varnametoupdate) {
|
if ($varnametoupdate) {
|
||||||
@ -938,17 +876,25 @@ if ($dirins && $action == 'confirm_removefile' && !empty($module)) {
|
|||||||
|
|
||||||
$relativefilename = dol_sanitizePathName(GETPOST('file', 'restricthtml'));
|
$relativefilename = dol_sanitizePathName(GETPOST('file', 'restricthtml'));
|
||||||
|
|
||||||
// Get list of existing objects
|
|
||||||
$objects = dolGetListOfObjectClasses($destdir);
|
|
||||||
|
|
||||||
|
|
||||||
// Now we delete the file
|
// Now we delete the file
|
||||||
if ($relativefilename) {
|
if ($relativefilename) {
|
||||||
$dirnametodelete = dirname($relativefilename);
|
$dirnametodelete = dirname($relativefilename);
|
||||||
$filetodelete = $dirins.'/'.$relativefilename;
|
$filetodelete = $dirins.'/'.$relativefilename;
|
||||||
$dirtodelete = $dirins.'/'.$dirnametodelete;
|
$dirtodelete = $dirins.'/'.$dirnametodelete;
|
||||||
|
|
||||||
$result = dol_delete_file($filetodelete);
|
//check when we want delete api_file
|
||||||
|
if (strpos($relativefilename, 'api') !== false) {
|
||||||
|
$removeFile = removeObjectFromApiFile($file_api, $objectname, $module);
|
||||||
|
$var = getFromFile($file_api, '/*begin methods CRUD*/', '/*end methods CRUD*/');
|
||||||
|
if (str_word_count($var) == 0) {
|
||||||
|
$result = dol_delete_file($filetodelete);
|
||||||
|
}
|
||||||
|
if ($removeFile) {
|
||||||
|
setEventMessages($langs->trans("ApiObjectDeleted"), null);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$result = dol_delete_file($filetodelete);
|
||||||
|
}
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
setEventMessages($langs->trans("ErrorFailToDeleteFile", basename($filetodelete)), null, 'errors');
|
setEventMessages($langs->trans("ErrorFailToDeleteFile", basename($filetodelete)), null, 'errors');
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user