BUG 12213 "Adicionar soporte para hotfixes" SOLVED

- Nuevo feature
- Funcionalidad para la instalacion de parches
- Nuevo feature implementado, se ha adicionado una nueva opcion al comando ./processmaker
  Esta nueva opcion trabaja de la siguiente manera:
      Caso 1 - ./processmaker patch-install MyPatch.tar
      Caso 2 - ./processmaker patch-install path_to_patch/MyPatch.tar
  Para el caso 1, el archivo tar debe estar fisicamente en la ruta:
      path_to_processmaker/shared/patchs (si no existe el directorio "patchs", crearlo y darle todos los permisos)
  Para el caso 2, el archivo debe existir en la ruta que se especifica
* Available from version ProcessMaker-2.5.1-testing.3
This commit is contained in:
Victor Saisa Lopez
2013-06-26 13:15:43 -04:00
parent e4823844a0
commit 5883652bd1
2 changed files with 104 additions and 6 deletions

View File

@@ -0,0 +1,48 @@
<?php
CLI::taskName("patch-install");
CLI::taskDescription(<<<EOT
Install patch to system
This command is executed when you want to update certain files, which have improvements or solution to bugs.
EOT
);
CLI::taskRun(runPatchInstall);
function runPatchInstall($command, $args)
{
CLI::logging("PATCH", PATH_DATA . "log" . PATH_SEP . "upgrades.log");
CLI::logging("Install patch to system\n");
$arrayFile = $command;
if (count($arrayFile) > 0) {
//Install patch
foreach ($arrayFile as $value) {
$f = $value;
$result = workspaceTools::patchInstall($f);
CLI::logging($result["message"] . "\n");
}
//Clear server's cache
CLI::logging("\nClearing cache...\n");
if (defined("PATH_C")) {
G::rm_dir(PATH_C);
G::mk_dir(PATH_C, 0777);
}
//Safe upgrade for JavaScript files
CLI::logging("\nSafe upgrade for files cached by the browser\n\n");
G::browserCacheFilesSetUid();
CLI::logging("PATCH done\n");
} else {
CLI::logging("Not exist patchs to install in the command\n");
}
}

View File

@@ -1307,5 +1307,55 @@ class workspaceTools
CLI::logging(CLI::info("Done restoring") . "\n");
}
public static function patchInstall($file)
{
$result = array();
$dirPatch = PATH_DATA . "patchs";
$arrayPathInfo = pathinfo($file);
$f = ($arrayPathInfo["dirname"] == ".")? $dirPatch . PATH_SEP . $file : $file;
$swv = 1;
$msgv = "";
if (!file_exists($dirPatch)) {
G::mk_dir($dirPatch, 0777);
}
if (!file_exists($f)) {
$swv = 0;
$msgv = $msgv . (($msgv != "")? "\n": null) . "- The file \"$f\" does not exist";
}
if ($arrayPathInfo["extension"] != "tar") {
$swv = 0;
$msgv = $msgv . (($msgv != "")? "\n": null) . "- The file's extension \"$file\" no is \"tar\"";
}
if ($swv == 1) {
G::LoadThirdParty("pear/Archive", "Tar");
//Extract
$tar = new Archive_Tar($f);
$swTar = $tar->extract(PATH_OUTTRUNK); //true on success, false on error
if ($swTar) {
$result["status"] = 1;
$result["message"] = "- Successfully to install patch \"$f\"";
} else {
$result["status"] = 0;
$result["message"] = "- Could not extract file \"$f\"";
}
} else {
$result["status"] = 0;
$result["message"] = $msgv;
}
return $result;
}
}