From cf8ff97855cfbcd93315c3d94821903e722810e8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Apr 2014 13:17:20 +0200 Subject: [PATCH] Fix: Install of odt templates for project and tasks failed. --- htdocs/core/lib/files.lib.php | 6 +++ htdocs/core/modules/modProjet.class.php | 43 +++++++++++++++++- .../projects/template_task_summary.odt | Bin 19309 -> 0 bytes 3 files changed, 48 insertions(+), 1 deletion(-) delete mode 100755 htdocs/install/doctemplates/projects/template_task_summary.odt diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index d2310e25ac0..5f0c574869d 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -510,6 +510,12 @@ function dol_copy($srcfile, $destfile, $newmask=0, $overwriteifexists=1) return -3; } if (empty($newmask) && ! empty($conf->global->MAIN_UMASK)) $newmask=$conf->global->MAIN_UMASK; + if (empty($newmask)) // This should no happen + { + dol_syslog("Warning: dol_copy called with empty value for newmask and no default value defined", LOG_WARNING); + $newmask='0664'; + } + @chmod($newpathofdestfile, octdec($newmask)); return 1; diff --git a/htdocs/core/modules/modProjet.class.php b/htdocs/core/modules/modProjet.class.php index d6f38b90523..8ec9d651c79 100644 --- a/htdocs/core/modules/modProjet.class.php +++ b/htdocs/core/modules/modProjet.class.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2010 Laurent Destailleur + * Copyright (C) 2004-2014 Laurent Destailleur * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2005-2012 Regis Houssin @@ -228,6 +228,47 @@ class modProjet extends DolibarrModules // Permissions $this->remove($options); + //ODT template for project + $src=DOL_DOCUMENT_ROOT.'/install/doctemplates/projects/template_project.odt'; + $dirodt=DOL_DATA_ROOT.'/doctemplates/projects'; + $dest=$dirodt.'/template_project.odt'; + + if (file_exists($src) && ! file_exists($dest)) + { + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + dol_mkdir($dirodt); + $result=dol_copy($src,$dest,0,0); + if ($result < 0) + { + $langs->load("errors"); + $this->error=$langs->trans('ErrorFailToCopyFile',$src,$dest); + return 0; + } + } + + //ODT template for tasks + $src=DOL_DOCUMENT_ROOT.'/install/doctemplates/tasks/template_task_summary.odt'; + $dirodt=DOL_DATA_ROOT.'/doctemplates/tasks'; + $dest=$dirodt.'/template_task_summary.odt'; + + if (file_exists($src) && ! file_exists($dest)) + { + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + dol_mkdir($dirodt); + $result=dol_copy($src,$dest,0,0); + if ($result < 0) + { + $langs->load("errors"); + $this->error=$langs->trans('ErrorFailToCopyFile',$src,$dest); + return 0; + } + } + + $sql = array( + "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][2]."' AND entity = ".$conf->entity, + "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][2]."','invoice',".$conf->entity.")" + ); + $sql = array( "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][2]."' AND entity = ".$conf->entity, "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][2]."','project',".$conf->entity.")", diff --git a/htdocs/install/doctemplates/projects/template_task_summary.odt b/htdocs/install/doctemplates/projects/template_task_summary.odt deleted file mode 100755 index 84fbe00ccc9703adef642faa7412ea3648999d6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19309 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