From fd8bfcfd3b98c8f5c427a1e759f0017a6da1d698 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 23 Dec 2020 17:25:38 +0100 Subject: [PATCH 01/20] FIX Update Restler API to 3.1.1 to fix error with php8 --- dev/dolibarr_changes.txt | 16 +- htdocs/api/class/api_documents.class.php | 2 +- htdocs/api/class/api_login.class.php | 2 +- .../framework/Luracast/Restler/ApcCache.php | 2 +- .../framework/Luracast/Restler/AutoLoader.php | 2 +- .../Luracast/Restler/CommentParser.php | 56 +++--- .../framework/Luracast/Restler/Compose.php | 2 +- .../Luracast/Restler/Data/ApiMethodInfo.php | 2 +- .../framework/Luracast/Restler/Data/Arr.php | 2 +- .../Luracast/Restler/Data/Invalid.php | 2 +- .../framework/Luracast/Restler/Data/Obj.php | 2 +- .../framework/Luracast/Restler/Data/Text.php | 164 +++++++++--------- .../Luracast/Restler/Data/ValidationInfo.php | 2 +- .../Luracast/Restler/Data/Validator.php | 2 +- .../Luracast/Restler/Data/ValueObject.php | 2 +- .../Luracast/Restler/Data/iValidate.php | 2 +- .../Luracast/Restler/Data/iValueObject.php | 2 +- .../framework/Luracast/Restler/Defaults.php | 2 +- .../Luracast/Restler/EventDispatcher.php | 2 +- .../Luracast/Restler/Filter/RateLimit.php | 2 +- .../framework/Luracast/Restler/Flash.php | 2 +- .../Luracast/Restler/Format/AmfFormat.php | 2 +- .../Luracast/Restler/Format/CsvFormat.php | 2 +- .../Luracast/Restler/Format/Format.php | 2 +- .../Luracast/Restler/Format/HtmlFormat.php | 144 ++++++++++----- .../Luracast/Restler/Format/JsFormat.php | 2 +- .../Luracast/Restler/Format/JsonFormat.php | 2 +- .../Luracast/Restler/Format/MultiFormat.php | 2 +- .../Luracast/Restler/Format/PlistFormat.php | 2 +- .../Luracast/Restler/Format/TsvFormat.php | 2 +- .../Luracast/Restler/Format/UploadFormat.php | 2 +- .../Restler/Format/UrlEncodedFormat.php | 2 +- .../Luracast/Restler/Format/XmlFormat.php | 2 +- .../Luracast/Restler/Format/YamlFormat.php | 2 +- .../Luracast/Restler/Format/iDecodeStream.php | 2 +- .../Luracast/Restler/Format/iFormat.php | 2 +- .../Luracast/Restler/HumanReadableCache.php | 2 +- .../Restler/InvalidAuthCredentials.php | 2 +- .../Luracast/Restler/PassThrough.php | 2 +- .../framework/Luracast/Restler/Redirect.php | 2 +- .../framework/Luracast/Restler/Resources.php | 2 +- .../Luracast/Restler/RestException.php | 2 +- .../framework/Luracast/Restler/Restler.php | 10 +- .../framework/Luracast/Restler/Routes.php | 2 +- .../framework/Luracast/Restler/Scope.php | 27 +-- .../framework/Luracast/Restler/UI/Emmet.php | 2 +- .../framework/Luracast/Restler/UI/Forms.php | 160 ++++++++++------- .../framework/Luracast/Restler/UI/Nav.php | 5 +- .../framework/Luracast/Restler/UI/Tags.php | 2 +- .../framework/Luracast/Restler/User.php | 2 +- .../framework/Luracast/Restler/Util.php | 55 +++--- .../Luracast/Restler/iAuthenticate.php | 2 +- .../framework/Luracast/Restler/iCache.php | 2 +- .../framework/Luracast/Restler/iCompose.php | 2 +- .../framework/Luracast/Restler/iFilter.php | 2 +- .../Luracast/Restler/iIdentifyUser.php | 2 +- .../Restler/iProvideMultiVersionApi.php | 2 +- .../Luracast/Restler/iUseAuthentication.php | 2 +- 58 files changed, 437 insertions(+), 298 deletions(-) diff --git a/dev/dolibarr_changes.txt b/dev/dolibarr_changes.txt index 98a6d2176aa..5648381ff49 100644 --- a/dev/dolibarr_changes.txt +++ b/dev/dolibarr_changes.txt @@ -229,11 +229,21 @@ Change content of file htdocs/includes/restler/framework/Luracast/Restler/explor public static function getShortName($className) { // @CHANGE LDR - if (! is_string($className)) return; + if (!is_string($className)) return; //var_dump($className); - - +* Add line into Data/Text.php to complete function + + public static function endsWith($haystack, $needle) + { + $length = strlen($needle); + if ($length == 0) { + return true; + } + // @CHANGE LDR + if (!is_string($haystack)) return false; + + PARSEDOWN --------- diff --git a/htdocs/api/class/api_documents.class.php b/htdocs/api/class/api_documents.class.php index bdf86a5c2c9..2d6a598398c 100644 --- a/htdocs/api/class/api_documents.class.php +++ b/htdocs/api/class/api_documents.class.php @@ -707,7 +707,7 @@ class Documents extends DolibarrApi if (!empty($createdirifnotexists)) { if (dol_mkdir($upload_dir) < 0) { // needed by products - throw new RestException(500, 'Error while trying to create directory.'); + throw new RestException(500, 'Error while trying to create directory '.$upload_dir); } } diff --git a/htdocs/api/class/api_login.class.php b/htdocs/api/class/api_login.class.php index cb2fdd54d66..08439214b8e 100644 --- a/htdocs/api/class/api_login.class.php +++ b/htdocs/api/class/api_login.class.php @@ -109,7 +109,7 @@ class Login } // Generate token for user - $token = dol_hash($login.uniqid().$conf->global->MAIN_API_KEY, 1); + $token = dol_hash($login.uniqid().(empty($conf->global->MAIN_API_KEY)?'':$conf->global->MAIN_API_KEY), 1); // We store API token into database $sql = "UPDATE ".MAIN_DB_PREFIX."user"; diff --git a/htdocs/includes/restler/framework/Luracast/Restler/ApcCache.php b/htdocs/includes/restler/framework/Luracast/Restler/ApcCache.php index b8cdd95b373..a2ddc83c44f 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/ApcCache.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/ApcCache.php @@ -13,7 +13,7 @@ use Luracast\Restler\iCache; * @copyright 2013 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class ApcCache implements iCache { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/AutoLoader.php b/htdocs/includes/restler/framework/Luracast/Restler/AutoLoader.php index d8445fdc70c..5ed160a070a 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/AutoLoader.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/AutoLoader.php @@ -12,7 +12,7 @@ namespace Luracast\Restler { * @subpackage helper * @author Nick Lombard * @copyright 2012 Luracast - * @version 3.0.0rc6 + * */ class AutoLoader { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php b/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php index 2815f1f6c70..6b8b9178f6b 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php @@ -1,4 +1,5 @@ true, - 'select' => true, + 'choice' => true, + 'select' => true, 'properties' => true, ); @@ -220,7 +221,7 @@ class CommentParser */ private function parseParam($param, array $value, array $embedded) { - $data = & $this->_data; + $data = &$this->_data; $allowMultiple = false; switch ($param) { case 'param' : @@ -237,7 +238,7 @@ class CommentParser $value = $this->formatReturn($value); break; case 'class' : - $data = & $data[$param]; + $data = &$data[$param]; list ($param, $value) = $this->formatClass($value); break; case 'access' : @@ -294,7 +295,7 @@ class CommentParser += $data[$param][self::$embeddedDataName]; } if (!is_array($data[$param])) { - $data[$param] = array('description' => (string) $data[$param]); + $data[$param] = array('description' => (string)$data[$param]); } if (is_array($value)) { $data[$param] = $value + $data[$param]; @@ -320,19 +321,24 @@ class CommentParser $data['pattern'] = $matches[2]; } while (preg_match('/{@(\w+)\s?([^}]*)}/ms', $subject, $matches)) { + $name = $matches[1]; + $value = $matches[2]; $subject = str_replace($matches[0], '', $subject); - if ($matches[1] == 'pattern') { + if ($name == 'pattern') { throw new Exception('Inline pattern tag should follow {@pattern /REGEX_PATTERN_HERE/} format and can optionally include PCRE modifiers following the ending `/`'); - } elseif (isset(static::$allowsArrayValue[$matches[1]])) { - $matches[2] = explode(static::$arrayDelimiter, $matches[2]); - } elseif ($matches[2] == 'true' || $matches[2] == 'false') { - $matches[2] = $matches[2] == 'true'; - } elseif ($matches[2] == '') { - $matches[2] = true; - } elseif ($matches[1] == 'required') { - $matches[2] = explode(static::$arrayDelimiter, $matches[2]); + } elseif (isset(static::$allowsArrayValue[$name])) { + $value = explode(static::$arrayDelimiter, $value); + } elseif ($value == 'true' || $value == 'false') { + $value = $value == 'true'; + } elseif ($value == '') { + $value = true; + } elseif ($name == 'required') { + $value = explode(static::$arrayDelimiter, $value); } - $data[$matches[1]] = $matches[2]; + if (defined('Luracast\\Restler\\UI\\HtmlForm::'.$name)) { + $value = constant($value); + } + $data[$name] = $value; } while (preg_match(self::$embeddedDataPattern, $subject, $matches)) { @@ -340,9 +346,9 @@ class CommentParser $str = $matches[self::$embeddedDataIndex]; if (isset ($this->restler) && self::$embeddedDataIndex > 1 - && !empty ($matches[1]) + && !empty ($name) ) { - $extension = $matches[1]; + $extension = $name; $formatMap = $this->restler->getFormatMap(); if (isset ($formatMap[$extension])) { /** @@ -397,15 +403,15 @@ class CommentParser { $code = 500; $exception = 'Exception'; - if(count($value)>1){ + if (count($value) > 1) { $v1 = $value[0]; $v2 = $value[1]; - if(is_numeric($v1)){ + if (is_numeric($v1)) { $code = $v1; $exception = $v2; array_shift($value); array_shift($value); - } elseif(is_numeric($v2)){ + } elseif (is_numeric($v2)) { $code = $v2; $exception = $v1; array_shift($value); @@ -414,17 +420,17 @@ class CommentParser $exception = $v1; array_shift($value); } - } elseif(count($value) && is_numeric($value[0])) { + } elseif (count($value) && is_numeric($value[0])) { $code = $value[0]; array_shift($value); } $message = implode(' ', $value); - if(!isset(RestException::$codes[$code])){ + if (!isset(RestException::$codes[$code])) { $code = 500; - } elseif(empty($message)){ + } elseif (empty($message)) { $message = RestException::$codes[$code]; } - return compact('code','message','exception'); + return compact('code', 'message', 'exception'); } private function formatClass(array $value) diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Compose.php b/htdocs/includes/restler/framework/Luracast/Restler/Compose.php index 594e5902004..141aa8bcb2f 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Compose.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Compose.php @@ -11,7 +11,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Compose implements iCompose { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/ApiMethodInfo.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/ApiMethodInfo.php index 4d0fa4bfd48..f4dea84df97 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Data/ApiMethodInfo.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/ApiMethodInfo.php @@ -11,7 +11,7 @@ namespace Luracast\Restler\Data; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class ApiMethodInfo extends ValueObject { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/Arr.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/Arr.php index 6e98a4132ea..8ae18c7003d 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Data/Arr.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/Arr.php @@ -10,7 +10,7 @@ namespace Luracast\Restler\Data; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Arr { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/Invalid.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/Invalid.php index 6b06d266f13..832dd30850e 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Data/Invalid.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/Invalid.php @@ -12,7 +12,7 @@ use Exception; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Invalid extends Exception { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/Obj.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/Obj.php index 003f1df8794..8fe2a79ab63 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Data/Obj.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/Obj.php @@ -11,7 +11,7 @@ namespace Luracast\Restler\Data; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Obj { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/Text.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/Text.php index 506ea25fb20..d0b39896c8e 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Data/Text.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/Text.php @@ -10,87 +10,91 @@ namespace Luracast\Restler\Data; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Text { - /** - * Given haystack contains the needle or not? - * - * @param string $haystack - * @param string $needle - * @param bool $caseSensitive - * - * @return bool - */ - public static function contains($haystack, $needle, $caseSensitive = true) - { - if (empty($needle)) - return true; - return $caseSensitive - ? strpos($haystack, $needle) !== false - : stripos($haystack, $needle) !== false; - } - - /** - * Given haystack begins with the needle or not? - * - * @param string $haystack - * @param string $needle - * - * @return bool - */ - public static function beginsWith($haystack, $needle) - { - $length = strlen($needle); - return (substr($haystack, 0, $length) === $needle); - } - - /** - * Given haystack ends with the needle or not? - * - * @param string $haystack - * @param string $needle - * - * @return bool - */ - public static function endsWith($haystack, $needle) - { - $length = strlen($needle); - if ($length == 0) { - return true; - } - return (substr($haystack, -$length) === $needle); - } - - - /** - * Convert camelCased or underscored string in to a title - * - * @param string $name - * - * @return string - */ - public static function title($name) - { - return - ucwords( - preg_replace( - array('/(?<=[^A-Z])([A-Z])/', '/(?<=[^0-9])([0-9])/', '/([_-])/', '/[^a-zA-Z0-9\s]|\s\s+/'), - array(' $0', ' $0', ' ', ' '), - $name - ) - ); - } - - /** - * Convert given string to be used as a slug or css class - * - * @param string $name - * @return string - */ - public static function slug($name) - { - return preg_replace('/[^a-zA-Z]+/', '-', strtolower(strip_tags($name))); - } + /** + * Given haystack contains the needle or not? + * + * @param string $haystack + * @param string $needle + * @param bool $caseSensitive + * + * @return bool + */ + public static function contains($haystack, $needle, $caseSensitive = true) + { + if (empty($needle)) + return true; + return $caseSensitive + ? strpos($haystack, $needle) !== false + : stripos($haystack, $needle) !== false; + } + + /** + * Given haystack begins with the needle or not? + * + * @param string $haystack + * @param string $needle + * + * @return bool + */ + public static function beginsWith($haystack, $needle) + { + $length = strlen($needle); + return (substr($haystack, 0, $length) === $needle); + } + + /** + * Given haystack ends with the needle or not? + * + * @param string $haystack + * @param string $needle + * + * @return bool + */ + public static function endsWith($haystack, $needle) + { + $length = strlen($needle); + if ($length == 0) { + return true; + } + + // @CHANGE LDR + if (!is_string($haystack)) return false; + + return (substr($haystack, -$length) === $needle); + } + + + /** + * Convert camelCased or underscored string in to a title + * + * @param string $name + * + * @return string + */ + public static function title($name) + { + return + ucwords( + preg_replace( + array('/(?<=[^A-Z])([A-Z])/', '/(?<=[^0-9])([0-9])/', '/([_-])/', '/[^a-zA-Z0-9\s]|\s\s+/'), + array(' $0', ' $0', ' ', ' '), + $name + ) + ); + } + + /** + * Convert given string to be used as a slug or css class + * + * @param string $name + * @return string + */ + public static function slug($name) + { + return preg_replace('/[^a-zA-Z]+/', '-', strtolower(strip_tags($name))); + } } \ No newline at end of file diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/ValidationInfo.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/ValidationInfo.php index 298b72ec125..fc05c5386df 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Data/ValidationInfo.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/ValidationInfo.php @@ -15,7 +15,7 @@ use Luracast\Restler\Util; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class ValidationInfo implements iValueObject { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/Validator.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/Validator.php index c98a17a62d6..023fc7c4d1e 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Data/Validator.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/Validator.php @@ -18,7 +18,7 @@ use Luracast\Restler\Util; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Validator implements iValidate { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/ValueObject.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/ValueObject.php index 46857b45329..5a2b001e841 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Data/ValueObject.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/ValueObject.php @@ -11,7 +11,7 @@ namespace Luracast\Restler\Data; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class ValueObject implements iValueObject { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/iValidate.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/iValidate.php index 66688b066ba..923fc79b1ce 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Data/iValidate.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/iValidate.php @@ -10,7 +10,7 @@ namespace Luracast\Restler\Data; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ interface iValidate { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/iValueObject.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/iValueObject.php index dbf36cb744c..dcce824a655 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Data/iValueObject.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/iValueObject.php @@ -11,7 +11,7 @@ namespace Luracast\Restler\Data; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ interface iValueObject { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Defaults.php b/htdocs/includes/restler/framework/Luracast/Restler/Defaults.php index 8913db316b5..803c8b3177a 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Defaults.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Defaults.php @@ -15,7 +15,7 @@ use Luracast\Restler\Data\Validator; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Defaults { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/EventDispatcher.php b/htdocs/includes/restler/framework/Luracast/Restler/EventDispatcher.php index f8cd883af46..0c5d0fa676c 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/EventDispatcher.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/EventDispatcher.php @@ -9,7 +9,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ use Closure; diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Filter/RateLimit.php b/htdocs/includes/restler/framework/Luracast/Restler/Filter/RateLimit.php index 5dce8591bba..e5705136fce 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Filter/RateLimit.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Filter/RateLimit.php @@ -15,7 +15,7 @@ use Luracast\Restler\RestException; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class RateLimit implements iFilter, iUseAuthentication { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Flash.php b/htdocs/includes/restler/framework/Luracast/Restler/Flash.php index 3ab04aa745e..41d097f312d 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Flash.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Flash.php @@ -15,7 +15,7 @@ use ArrayAccess; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Flash implements ArrayAccess { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/AmfFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/AmfFormat.php index 3d146fbcfac..181d95bea46 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/AmfFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/AmfFormat.php @@ -17,7 +17,7 @@ use ZendAmf\Parser\OutputStream; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class AmfFormat extends DependentFormat { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/CsvFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/CsvFormat.php index 4bed88251c8..c33557f8463 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/CsvFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/CsvFormat.php @@ -15,7 +15,7 @@ use Luracast\Restler\RestException; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class CsvFormat extends Format implements iDecodeStream { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/Format.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/Format.php index 10b2c5834e6..edc2cbde719 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/Format.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/Format.php @@ -10,7 +10,7 @@ namespace Luracast\Restler\Format; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ abstract class Format implements iFormat { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/HtmlFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/HtmlFormat.php index e871186c446..493e3e44061 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/HtmlFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/HtmlFormat.php @@ -1,4 +1,5 @@ 'illuminate/view:4.2.*', - 'Twig_Environment' => 'twig/twig:v1.13.*', - 'Mustache_Engine' => 'mustache/mustache:dev-master', + self::BLADE => 'illuminate/view:^8', + self::TWIG => 'twig/twig:^3', + self::MUSTACHE => 'mustache/mustache:dev-master', ); } @@ -101,7 +111,7 @@ class HtmlFormat extends DependentFormat $resolver->register('blade', function () use ($engine) { return $engine; }); - $phpEngine = new PhpEngine(); + $phpEngine = new PhpEngine($files); $resolver->register('php', function () use ($phpEngine) { return $phpEngine; }); @@ -128,32 +138,43 @@ class HtmlFormat extends DependentFormat return $view->render(); } - public static function twig(array $data, $debug = true) + /** + * @param array|object $data + * @param bool $debug + * + * @return string + * @throws \Twig\Error\LoaderError + * @throws \Twig\Error\RuntimeError + * @throws \Twig\Error\SyntaxError + */ + public static function twig($data, $debug = true) { - $loader = new \Twig_Loader_Filesystem(static::$viewPath); - $twig = new \Twig_Environment($loader, array( - 'cache' => static::$cacheDirectory, - 'debug' => $debug, + $loader = new FilesystemLoader(static::$viewPath); + $twig = new Environment($loader, array( + 'cache' => is_string(static::$cacheDirectory) + ? static::$cacheDirectory : false, + 'debug' => $debug, 'use_strict_variables' => $debug, )); - if ($debug) - $twig->addExtension(new \Twig_Extension_Debug()); + if ($debug) { + $twig->addExtension(new DebugExtension()); + } $twig->addFunction( - new \Twig_SimpleFunction( + new TwigFunction( 'form', 'Luracast\Restler\UI\Forms::get', array('is_safe' => array('html')) ) ); $twig->addFunction( - new \Twig_SimpleFunction( + new TwigFunction( 'form_key', 'Luracast\Restler\UI\Forms::key' ) ); $twig->addFunction( - new \Twig_SimpleFunction( + new TwigFunction( 'nav', 'Luracast\Restler\UI\Nav::get' ) @@ -164,7 +185,7 @@ class HtmlFormat extends DependentFormat isset(HtmlFormat::$data[$name]) && is_callable(HtmlFormat::$data[$name]) ) { - return new \Twig_SimpleFunction( + return new TwigFunction( $name, HtmlFormat::$data[$name] ); @@ -172,21 +193,35 @@ class HtmlFormat extends DependentFormat return false; }); - $template = $twig->loadTemplate(static::getViewFile()); - return $template->render($data); + $template = $twig->load(static::getViewFile()); + return $template->render((array)$data); } - public static function handlebar(array $data, $debug = true) + /** + * @param array|object $data + * @param bool $debug + * + * @return string + */ + public static function handlebar($data, $debug = true) { return static::mustache($data, $debug); } - public static function mustache(array $data, $debug = true) + /** + * @param array|object $data + * @param bool $debug + * + * @return string + */ + public static function mustache($data, $debug = true) { - if (!isset($data['nav'])) + $data = (array)$data; + if (!isset($data['nav'])) { $data['nav'] = array_values(Nav::get()); + } $options = array( - 'loader' => new \Mustache_Loader_FilesystemLoader( + 'loader' => new \Mustache_Loader_FilesystemLoader( static::$viewPath, array('extension' => static::getViewExtension()) ), @@ -200,16 +235,25 @@ class HtmlFormat extends DependentFormat }, ) ); - if (!$debug) + if (!$debug) { $options['cache'] = static::$cacheDirectory; + } $m = new \Mustache_Engine($options); return $m->render(static::getViewFile(), $data); } - public static function php(array $data, $debug = true) + /** + * @param array|object $data + * @param bool $debug + * + * @return string + * @throws RestException + */ + public static function php($data, $debug = true) { - if (static::$view == 'debug') + if (static::$view == 'debug') { static::$viewPath = dirname(__DIR__) . '/views'; + } $view = static::getViewFile(true); if (!is_readable($view)) { @@ -222,22 +266,26 @@ class HtmlFormat extends DependentFormat $path = static::$viewPath . DIRECTORY_SEPARATOR; $template = function ($view) use ($data, $path) { + $data = (array)$data; $form = function () { return call_user_func_array( 'Luracast\Restler\UI\Forms::get', func_get_args() ); }; - if (!isset($data['form'])) + if (!isset($data['form'])) { $data['form'] = $form; + } $nav = function () { return call_user_func_array( 'Luracast\Restler\UI\Nav::get', func_get_args() ); }; - if (!isset($data['nav'])) + if (!isset($data['nav'])) { $data['nav'] = $nav; + } + $_ = function () use ($data, $path) { extract($data); @@ -254,7 +302,7 @@ class HtmlFormat extends DependentFormat ) { $str = ''; foreach ($arrays as $arr) { - extract($arr); + extract((array)$arr); $str .= include $file; } return $str; @@ -264,15 +312,18 @@ class HtmlFormat extends DependentFormat } break; case 'if': - if (count($args) < 2) + if (count($args) < 2) { $args[1] = ''; - if (count($args) < 3) + } + if (count($args) < 3) { $args[2] = ''; + } return $args[0] ? $args[1] : $args[2]; break; default: - if (isset($data[$task]) && is_callable($data[$task])) + if (isset($data[$task]) && is_callable($data[$task])) { return call_user_func_array($data[$task], $args); + } } return ''; }; @@ -280,8 +331,9 @@ class HtmlFormat extends DependentFormat return @include $view; }; $value = $template($view); - if (is_string($value)) + if (is_string($value)) { return $value; + } } /** @@ -294,8 +346,8 @@ class HtmlFormat extends DependentFormat * Formatter has to make the encoded * output more human readable * - * @throws \Exception * @return string encoded string + * @throws \Exception */ public function encode($data, $humanReadable = false) { @@ -317,9 +369,9 @@ class HtmlFormat extends DependentFormat 'response' => static::$convertResponseToArray ? Obj::toArray($data) : $data, - 'stages' => $this->restler->getEvents(), - 'success' => $success, - 'error' => $error + 'stages' => $this->restler->getEvents(), + 'success' => $success, + 'error' => $error ); $info = $data['api'] = $this->restler->apiMethodInfo; $metadata = Util::nestedValue( @@ -358,7 +410,9 @@ class HtmlFormat extends DependentFormat if ($value) { $data = Util::nestedValue($data, explode('.', $value)); } - $data += static::$data; + if (is_array($data)) { + $data += static::$data; + } if (false === ($i = strrpos(self::$view, '.'))) { $template = self::$template; } else { @@ -369,17 +423,18 @@ class HtmlFormat extends DependentFormat static::$cacheDirectory = Defaults::$cacheDirectory . DIRECTORY_SEPARATOR . $template; if (!file_exists(static::$cacheDirectory)) { if (!mkdir(static::$cacheDirectory, 0770, true)) { - throw new RestException(500, 'Unable to create cache directory `' . static::$cacheDirectory . '`'); + throw new RestException(500, + 'Unable to create cache directory `' . static::$cacheDirectory . '`'); } } } if (method_exists($class = get_called_class(), $template)) { if ($template == 'blade') { - $this->checkDependency('Illuminate\View\View'); + $this->checkDependency(self::BLADE); } elseif ($template == 'twig') { - $this->checkDependency('Twig_Environment'); + $this->checkDependency(self::TWIG); } elseif ($template == 'mustache' || $template == 'handlebar') { - $this->checkDependency('Mustache_Engine'); + $this->checkDependency(self::MUSTACHE); } return call_user_func("$class::$template", $data, $humanReadable); } @@ -416,8 +471,9 @@ class HtmlFormat extends DependentFormat { $v = $fullPath ? static::$viewPath . '/' : ''; $v .= static::$view; - if ($includeExtension) + if ($includeExtension) { $v .= '.' . static::getViewExtension(); + } return $v; } diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/JsFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/JsFormat.php index 0f04b7f0ee5..913dc272e19 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/JsFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/JsFormat.php @@ -11,7 +11,7 @@ namespace Luracast\Restler\Format; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class JsFormat extends JsonFormat { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/JsonFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/JsonFormat.php index 00c763e8ff5..170676c071b 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/JsonFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/JsonFormat.php @@ -15,7 +15,7 @@ use Luracast\Restler\RestException; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class JsonFormat extends Format { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/MultiFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/MultiFormat.php index 18fdd54b842..64afa3b3ea4 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/MultiFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/MultiFormat.php @@ -9,7 +9,7 @@ namespace Luracast\Restler\Format; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ abstract class MultiFormat implements iFormat { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/PlistFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/PlistFormat.php index cc07066a33c..f1eca01933d 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/PlistFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/PlistFormat.php @@ -18,7 +18,7 @@ use CFPropertyList\CFPropertyList; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class PlistFormat extends DependentMultiFormat { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/TsvFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/TsvFormat.php index 502b02d2758..4eb3006f363 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/TsvFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/TsvFormat.php @@ -11,7 +11,7 @@ namespace Luracast\Restler\Format; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class TsvFormat extends CsvFormat { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/UploadFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/UploadFormat.php index de41bf98c71..b58b0f02b49 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/UploadFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/UploadFormat.php @@ -13,7 +13,7 @@ use Luracast\Restler\RestException; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class UploadFormat extends Format { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/UrlEncodedFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/UrlEncodedFormat.php index 12d5a410333..6d141230d82 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/UrlEncodedFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/UrlEncodedFormat.php @@ -11,7 +11,7 @@ namespace Luracast\Restler\Format; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class UrlEncodedFormat extends Format { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/XmlFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/XmlFormat.php index ceec32e4cb5..6f8606eb111 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/XmlFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/XmlFormat.php @@ -16,7 +16,7 @@ use XMLWriter; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class XmlFormat extends Format { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/YamlFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/YamlFormat.php index 07baae88b6f..4ff643de65f 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/YamlFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/YamlFormat.php @@ -14,7 +14,7 @@ use Luracast\Restler\Data\Obj; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class YamlFormat extends DependentFormat { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/iDecodeStream.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/iDecodeStream.php index 080e3da506c..ec29330ed1f 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/iDecodeStream.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/iDecodeStream.php @@ -11,7 +11,7 @@ namespace Luracast\Restler\Format; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ interface iDecodeStream { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/iFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/iFormat.php index d70d2019a94..0f4173d5b74 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Format/iFormat.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/iFormat.php @@ -11,7 +11,7 @@ namespace Luracast\Restler\Format; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ interface iFormat { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/HumanReadableCache.php b/htdocs/includes/restler/framework/Luracast/Restler/HumanReadableCache.php index 6e1c22b432c..2546e30a4ee 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/HumanReadableCache.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/HumanReadableCache.php @@ -10,7 +10,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class HumanReadableCache implements iCache { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/InvalidAuthCredentials.php b/htdocs/includes/restler/framework/Luracast/Restler/InvalidAuthCredentials.php index 233e543e0aa..1b402238bf3 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/InvalidAuthCredentials.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/InvalidAuthCredentials.php @@ -12,7 +12,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ diff --git a/htdocs/includes/restler/framework/Luracast/Restler/PassThrough.php b/htdocs/includes/restler/framework/Luracast/Restler/PassThrough.php index a77e533b722..2d265fb0fba 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/PassThrough.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/PassThrough.php @@ -10,7 +10,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class PassThrough { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Redirect.php b/htdocs/includes/restler/framework/Luracast/Restler/Redirect.php index 63319106759..8203b8eb18d 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Redirect.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Redirect.php @@ -12,7 +12,7 @@ use Luracast\Restler\Format\JsonFormat; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Redirect { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Resources.php b/htdocs/includes/restler/framework/Luracast/Restler/Resources.php index 2986968a990..dfb547d287b 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Resources.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Resources.php @@ -15,7 +15,7 @@ use stdClass; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Resources implements iUseAuthentication, iProvideMultiVersionApi { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/RestException.php b/htdocs/includes/restler/framework/Luracast/Restler/RestException.php index b2e51f8b122..4291381661c 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/RestException.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/RestException.php @@ -14,7 +14,7 @@ use Exception; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class RestException extends Exception diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Restler.php b/htdocs/includes/restler/framework/Luracast/Restler/Restler.php index fcb5388726c..0c8f44a3864 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Restler.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Restler.php @@ -15,13 +15,14 @@ use Luracast\Restler\Format\UrlEncodedFormat; * inspired by the RestServer code from * * + * * @category Framework * @package Restler * @author R.Arul Kumaran * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * * * @method static void onGet() onGet(Callable $function) fired before reading the request details * @method static void onRoute() onRoute(Callable $function) fired before finding the api method @@ -48,10 +49,13 @@ use Luracast\Restler\Format\UrlEncodedFormat; * @method void onRespond() onRespond(Callable $function) fired before sending response * @method void onComplete() onComplete(Callable $function) fired after sending response * @method void onMessage() onMessage(Callable $function) fired before composing error response + * + * @property bool|null _authenticated + * @property bool _authVerified */ class Restler extends EventDispatcher { - const VERSION = '3.0.0rc6'; + const VERSION = '3.1.0'; // ================================================================== // @@ -693,6 +697,8 @@ class Restler extends EventDispatcher * - media type * - charset * - language + * + * @throws RestException */ protected function negotiate() { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Routes.php b/htdocs/includes/restler/framework/Luracast/Restler/Routes.php index 999094dec4c..d59b27d4418 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Routes.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Routes.php @@ -17,7 +17,7 @@ use Exception; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Routes { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Scope.php b/htdocs/includes/restler/framework/Luracast/Restler/Scope.php index 16ccdd33561..6f7b49daf40 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Scope.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Scope.php @@ -1,4 +1,6 @@ 'Luracast\Restler\Resources', 'Explorer' => 'Luracast\Restler\Explorer\v2\Explorer', - 'Explorer1' => 'Luracast\Restler\Explorer\v1\Explorer', - 'Explorer2' => 'Luracast\Restler\Explorer\v2\Explorer', + 'Explorer1' => 'Luracast\Restler\Explorer\v1\Explorer', + 'Explorer2' => 'Luracast\Restler\Explorer\v2\Explorer', //Cache classes 'HumanReadableCache' => 'Luracast\Restler\HumanReadableCache', @@ -120,6 +122,7 @@ class Scope $r = new $fullName(); static::$instances[$name] = (object)array('instance' => $r); if ($name != 'Restler') { + /** @var Restler restler */ $r->restler = static::get('Restler'); $m = Util::nestedValue($r->restler, 'apiMethodInfo', 'metadata'); if ($m) { @@ -138,15 +141,14 @@ class Scope } if ( $r instanceof iUseAuthentication && - static::get('Restler')->_authVerified && + $r->restler && $r->restler->_authVerified && !isset(static::$instances[$name]->authVerified) ) { static::$instances[$name]->authVerified = true; - $r->__setAuthenticationStatus - (static::get('Restler')->_authenticated); + $r->__setAuthenticationStatus($r->restler->_authenticated); } if (isset(static::$instances[$name]->initPending)) { - $m = Util::nestedValue(static::get('Restler'), 'apiMethodInfo', 'metadata'); + $m = Util::nestedValue($r->restler, 'apiMethodInfo', 'metadata'); $fullName = $name; if (class_exists($name)) { $shortName = Util::getShortName($name); @@ -194,15 +196,15 @@ class Scope */ public static function resolve($className, array $scope) { - if (empty($className) || !is_string($className)) + if (empty($className) || !is_string($className)) { return false; + } if (self::isPrimitiveDataType($className)) { return false; } $divider = '\\'; - $qualified = false; if ($className[0] == $divider) { $qualified = trim($className, $divider); } elseif (array_key_exists($className, $scope)) { @@ -210,18 +212,21 @@ class Scope } else { $qualified = $scope['*'] . $className; } - if (class_exists($qualified)) + if (class_exists($qualified)) { return $qualified; + } if (isset(static::$classAliases[$className])) { $qualified = static::$classAliases[$className]; - if (class_exists($qualified)) + if (class_exists($qualified)) { return $qualified; + } } return false; } /** * @param string $stringName + * * @return boolean */ private static function isPrimitiveDataType($stringName) diff --git a/htdocs/includes/restler/framework/Luracast/Restler/UI/Emmet.php b/htdocs/includes/restler/framework/Luracast/Restler/UI/Emmet.php index 435804b4469..66090568a47 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/UI/Emmet.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/UI/Emmet.php @@ -8,7 +8,7 @@ use Luracast\Restler\Util; * Class Emmet * @package Luracast\Restler\UI * - * @version 3.0.0rc6 + * @version 3.1.0 */ class Emmet { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/UI/Forms.php b/htdocs/includes/restler/framework/Luracast/Restler/UI/Forms.php index 7073bfcf837..20749a2e691 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/UI/Forms.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/UI/Forms.php @@ -1,4 +1,5 @@ url; + } $info = $restler->url == $action && Util::getRequestMethod() == $method @@ -126,23 +134,25 @@ class Forms implements iFilter //echo $e->getErrorMessage(); $info = false; } - if (!$info) + if (!$info) { throw new RestException(500, 'invalid action path for form `' . $method . ' ' . $action . '`'); + } static::$info = $info; $m = $info->metadata; $r = static::fields($dataOnly); if ($method != 'GET' && $method != 'POST') { - if (empty(Defaults::$httpMethodOverrideProperty)) + if (empty(Defaults::$httpMethodOverrideProperty)) { throw new RestException( 500, 'Forms require `Defaults::\$httpMethodOverrideProperty`' . "for supporting HTTP $method" ); + } if ($dataOnly) { $r[] = array( - 'tag' => 'input', - 'name' => Defaults::$httpMethodOverrideProperty, - 'type' => 'hidden', + 'tag' => 'input', + 'name' => Defaults::$httpMethodOverrideProperty, + 'type' => 'hidden', 'value' => 'method', ); } else { @@ -158,9 +168,9 @@ class Forms implements iFilter $form_key = static::key($method, $action); if ($dataOnly) { $r[] = array( - 'tag' => 'input', - 'name' => static::FORM_KEY, - 'type' => 'hidden', + 'tag' => 'input', + 'name' => static::FORM_KEY, + 'type' => 'hidden', 'value' => 'hidden', ); } else { @@ -173,15 +183,16 @@ class Forms implements iFilter } $s = array( - 'tag' => 'button', - 'type' => 'submit', + 'tag' => 'button', + 'type' => 'submit', 'label' => Util::nestedValue($m, 'return', CommentParser::$embeddedDataName, 'label') - ? : 'Submit' + ?: 'Submit' ); - if (!$dataOnly) + if (!$dataOnly) { $s = Emmet::make(static::style('submit', $m), $s); + } $r[] = $s; $t = array( 'action' => $restler->getBaseUrl() . '/' . rtrim($action, '/'), @@ -207,15 +218,18 @@ class Forms implements iFilter public static function style($name, array $metadata, $type = '') { - return isset($metadata[CommentParser::$embeddedDataName][$name]) - ? $metadata[CommentParser::$embeddedDataName][$name] - : (!empty($type) && isset(static::$style["$name-$type"]) - ? static::$style["$name-$type"] - : (isset(static::$style[$name]) - ? static::$style[$name] - : null - ) - ); + if (isset($metadata[CommentParser::$embeddedDataName][$name])) { + return $metadata[CommentParser::$embeddedDataName][$name]; + } + $style = static::$style . '::' . $name; + $typedStyle = $style . '_' . $type; + if (defined($typedStyle)) { + return constant($typedStyle); + } + if (defined($style)) { + return constant($style); + } + return null; } public static function fields($dataOnly = false) @@ -230,11 +244,13 @@ class Forms implements iFilter is_scalar($value) || ($p['type'] == 'array' && is_array($value) && $value == array_values($value)) || is_object($value) && $p['type'] == get_class($value) - ) + ) { $p['value'] = $value; + } static::$validationInfo = $v = new ValidationInfo($p); - if ($v->from == 'path') + if ($v->from == 'path') { continue; + } if (!empty($v->children)) { $t = Emmet::make(static::style('fieldset', $m), array('label' => $v->label)); foreach ($v->children as $n => $c) { @@ -243,11 +259,13 @@ class Forms implements iFilter is_scalar($value) || ($c['type'] == 'array' && is_array($value) && $value == array_values($value)) || is_object($value) && $c['type'] == get_class($value) - ) + ) { $c['value'] = $value; + } static::$validationInfo = $vc = new ValidationInfo($c); - if ($vc->from == 'path') + if ($vc->from == 'path') { continue; + } $vc->name = $v->name . '[' . $vc->name . ']'; $t [] = static::field($vc, $dataOnly); } @@ -275,7 +293,7 @@ class Forms implements iFilter //prevent XSS attacks $p->value = htmlspecialchars($p->value, ENT_QUOTES | ENT_HTML401, 'UTF-8'); } - $type = $p->field ? : static::guessFieldType($p); + $type = $p->field ?: static::guessFieldType($p); $tag = in_array($type, static::$inputTypes) ? 'input' : $type; $options = array(); @@ -291,25 +309,33 @@ class Forms implements iFilter $option['text'] = isset($p->rules['select'][$i]) ? $p->rules['select'][$i] : $choice; - if ($choice == $p->value) + if ($choice == $p->value) { $option['selected'] = true; + } $options[] = $option; } } elseif ($p->type == 'boolean' || $p->type == 'bool') { if (Text::beginsWith($type, 'radio') || Text::beginsWith($type, 'select')) { - $options[] = array('name' => $p->name, 'text' => ' Yes ', - 'value' => 'true'); - $options[] = array('name' => $p->name, 'text' => ' No ', - 'value' => 'false'); - if ($p->value || $p->default) + $options[] = array( + 'name' => $p->name, + 'text' => ' Yes ', + 'value' => 'true' + ); + $options[] = array( + 'name' => $p->name, + 'text' => ' No ', + 'value' => 'false' + ); + if ($p->value || $p->default) { $options[0]['selected'] = true; + } } else { //checkbox $r = array( - 'tag' => $tag, - 'name' => $name, - 'type' => $type, - 'label' => $p->label, - 'value' => 'true', + 'tag' => $tag, + 'name' => $name, + 'type' => $type, + 'label' => $p->label, + 'value' => 'true', 'default' => $p->default, ); $r['text'] = 'Yes'; @@ -323,13 +349,13 @@ class Forms implements iFilter } if (empty($r)) { $r = array( - 'tag' => $tag, - 'name' => $name, - 'type' => $type, - 'label' => $p->label, - 'value' => $p->value, - 'default' => $p->default, - 'options' => & $options, + 'tag' => $tag, + 'name' => $name, + 'type' => $type, + 'label' => $p->label, + 'value' => $p->value, + 'default' => $p->default, + 'options' => & $options, 'multiple' => $multiple, ); if (isset($p->rules)) { @@ -347,30 +373,36 @@ class Forms implements iFilter $r['message'] = Validator::$exceptions[$p->name]->getMessage(); } - if (true === $p->required) + if (true === $p->required) { $r['required'] = 'required'; - if (isset($p->rules['autofocus'])) + } + if (isset($p->rules['autofocus'])) { $r['autofocus'] = 'autofocus'; + } /* echo "
";
         print_r($r);
         echo "
"; */ - if ($dataOnly) + if ($dataOnly) { return $r; - if (isset($p->rules['form'])) + } + if (isset($p->rules['form'])) { return Emmet::make($p->rules['form'], $r); + } $m = static::$info->metadata; - $t = Emmet::make(static::style($type, $m, $p->type) ? : static::style($tag, $m, $p->type), $r); + $t = Emmet::make(static::style($type, $m, $p->type) ?: static::style($tag, $m, $p->type), $r); return $t; } protected static function guessFieldType(ValidationInfo $p, $type = 'type') { - if (in_array($p->$type, static::$inputTypes)) + if (in_array($p->$type, static::$inputTypes)) { return $p->$type; - if ($p->choice) + } + if ($p->choice) { return $p->type == 'array' ? 'checkbox' : 'select'; + } switch ($p->$type) { case 'boolean': return 'radio'; @@ -381,8 +413,9 @@ class Forms implements iFilter case 'array': return static::guessFieldType($p, 'contentType'); } - if ($p->name == 'password') + if ($p->name == 'password') { return 'password'; + } return 'text'; } @@ -397,11 +430,13 @@ class Forms implements iFilter */ public static function key($method = 'POST', $action = null) { - if (is_null($action)) + if (is_null($action)) { $action = Scope::get('Restler')->url; + } $target = "$method $action"; - if (empty(static::$key[$target])) + if (empty(static::$key[$target])) { static::$key[$target] = md5($target . User::getIpAddress() . uniqid(mt_rand())); + } $_SESSION[static::FORM_KEY] = static::$key; return static::$key[$target]; } @@ -425,8 +460,9 @@ class Forms implements iFilter $url = $restler->url; foreach (static::$excludedPaths as $exclude) { if (empty($exclude)) { - if ($url == $exclude) + if ($url == $exclude) { return true; + } } elseif (Text::beginsWith($url, $exclude)) { return true; } @@ -447,4 +483,4 @@ class Forms implements iFilter } return true; } -} \ No newline at end of file +} diff --git a/htdocs/includes/restler/framework/Luracast/Restler/UI/Nav.php b/htdocs/includes/restler/framework/Luracast/Restler/UI/Nav.php index b74054a99c5..4a7445ccbe6 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/UI/Nav.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/UI/Nav.php @@ -19,7 +19,7 @@ use Luracast\Restler\Util; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class Nav { @@ -130,7 +130,8 @@ class Nav } else { return $tree; } - return null; + $value = null; + return $value; } public static function addUrls(array $urls) diff --git a/htdocs/includes/restler/framework/Luracast/Restler/UI/Tags.php b/htdocs/includes/restler/framework/Luracast/Restler/UI/Tags.php index 2c194cdbd1b..27e90bc89b5 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/UI/Tags.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/UI/Tags.php @@ -14,7 +14,7 @@ use Luracast\Restler\Util; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * * * ============================ magic properties ============================== * @property Tags parent parent tag diff --git a/htdocs/includes/restler/framework/Luracast/Restler/User.php b/htdocs/includes/restler/framework/Luracast/Restler/User.php index 57465e26e46..463fd46867c 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/User.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/User.php @@ -11,7 +11,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ class User implements iIdentifyUser { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Util.php b/htdocs/includes/restler/framework/Luracast/Restler/Util.php index 9674550814f..a181a0e0da9 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/Util.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/Util.php @@ -1,5 +1,7 @@ 0) + } + if (strlen($resourcePath) > 0) { $resourcePath .= '/'; + } return $prefix . $resourcePath; } @@ -114,8 +121,9 @@ class Util */ public static function removeCommonPath($fromPath, $usingPath, $char = '/') { - if (empty($fromPath)) + if (empty($fromPath)) { return ''; + } $fromPath = explode($char, $fromPath); $usingPath = explode($char, $usingPath); while (count($usingPath)) { @@ -145,8 +153,9 @@ class Util */ public static function splitCommonPath($fromPath, $usingPath, $char = '/') { - if (empty($fromPath)) + if (empty($fromPath)) { return array('', ''); + } $fromPath = explode($char, $fromPath); $usingPath = explode($char, $usingPath); $commonPath = array(); @@ -213,11 +222,18 @@ class Util $accepts = array($accepts); } foreach ($accepts as $pos => $accept) { - $parts = explode(';q=', trim($accept)); - $type = array_shift($parts); - $quality = count($parts) ? - floatval(array_shift($parts)) : - (1000 - $pos) / 1000; + $parts = explode(';', $accept); + $type = trim(array_shift($parts)); + $parameters = []; + foreach ($parts as $part) { + $part = explode('=', $part); + if (2 !== count($part)) { + continue; + } + $key = strtolower(trim($part[0])); + $parameters[$key] = trim($part[1], ' "'); + } + $quality = isset($parameters['q']) ? (float)$parameters['q'] : (1000 - $pos) / 1000; $acceptList[$type] = $quality; } arsort($acceptList); @@ -227,8 +243,7 @@ class Util public static function getShortName($className) { // @CHANGE LDR - if (! is_string($className)) return ''; - //var_dump($className); + if (!is_string($className)) return; $className = explode('\\', $className); return end($className); diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iAuthenticate.php b/htdocs/includes/restler/framework/Luracast/Restler/iAuthenticate.php index 6bacb8cec09..954055343e4 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/iAuthenticate.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/iAuthenticate.php @@ -11,7 +11,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ interface iAuthenticate extends iFilter { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iCache.php b/htdocs/includes/restler/framework/Luracast/Restler/iCache.php index 37d6aaea261..3b6504340b6 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/iCache.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/iCache.php @@ -9,7 +9,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ interface iCache { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iCompose.php b/htdocs/includes/restler/framework/Luracast/Restler/iCompose.php index b06b2c3bc6c..2bc0579befe 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/iCompose.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/iCompose.php @@ -13,7 +13,7 @@ use Exception; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ interface iCompose { /** diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iFilter.php b/htdocs/includes/restler/framework/Luracast/Restler/iFilter.php index 89b50ce9812..dc1b355db0f 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/iFilter.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/iFilter.php @@ -12,7 +12,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ interface iFilter { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iIdentifyUser.php b/htdocs/includes/restler/framework/Luracast/Restler/iIdentifyUser.php index d3dd4a5d8c5..834897668db 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/iIdentifyUser.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/iIdentifyUser.php @@ -12,7 +12,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ interface iIdentifyUser { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iProvideMultiVersionApi.php b/htdocs/includes/restler/framework/Luracast/Restler/iProvideMultiVersionApi.php index c7afe11fcb7..b57fc876f41 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/iProvideMultiVersionApi.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/iProvideMultiVersionApi.php @@ -5,7 +5,7 @@ namespace Luracast\Restler; * Interface iProvideMultiVersionApi * @package Luracast\Restler * - * @version 3.0.0rc6 + * */ interface iProvideMultiVersionApi { diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iUseAuthentication.php b/htdocs/includes/restler/framework/Luracast/Restler/iUseAuthentication.php index 611d909b305..ee3a9e0bcca 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/iUseAuthentication.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/iUseAuthentication.php @@ -11,7 +11,7 @@ namespace Luracast\Restler; * @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ - * @version 3.0.0rc6 + * */ interface iUseAuthentication { From abf8bc2b92d5a0bf53ddb5309f6c5c7abf2a00e0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 23 Dec 2020 17:26:25 +0100 Subject: [PATCH 02/20] Update doc --- COPYRIGHT | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/COPYRIGHT b/COPYRIGHT index 10b06b86811..4f4bc3dff6d 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -29,7 +29,7 @@ PHPoAuthLib 0.8.2 MIT License Yes PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests PSR/Logs 1.0 Library for logs (used by DebugBar) PSR/simple-cache ? Library for cache (used by PHPSpreadSheet) -Restler 3.0.0RC6 LGPL-3+ Yes Library to develop REST Web services (+ swagger-ui js lib into dir explorer) +Restler 3.1.1 LGPL-3+ Yes Library to develop REST Web services (+ swagger-ui js lib into dir explorer) Sabre 3.2.2 BSD Yes DAV support Swift Mailer 5.4.2-DEV MIT license Yes Comprehensive mailing tools for PHP Stripe 6.43.1 MIT licence Yes Library for Stripe module From 9f2c6f3f33f635469850ce35efdca45062dec361 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 23 Dec 2020 17:36:03 +0100 Subject: [PATCH 03/20] Fix api to download for shipments --- htdocs/core/lib/files.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index c43a7eb890c..6a590b44368 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -2647,7 +2647,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } $original_file = $conf->accounting->dir_output.'/'.$original_file; } // Wrapping pour les expedition - elseif ($modulepart == 'expedition' && !empty($conf->expedition->dir_output)) + elseif (($modulepart == 'expedition' || $modulepart == 'shipment') && !empty($conf->expedition->dir_output)) { if ($fuser->rights->expedition->{$lire} || preg_match('/^specimen/i', $original_file)) { @@ -2655,7 +2655,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } $original_file = $conf->expedition->dir_output."/sending/".$original_file; } // Delivery Note Wrapping - elseif ($modulepart == 'delivery' && !empty($conf->expedition->dir_output)) + elseif (($modulepart == 'livraison' || $modulepart == 'delivery') && !empty($conf->expedition->dir_output)) { if ($fuser->rights->expedition->delivery->{$lire} || preg_match('/^specimen/i', $original_file)) { From 8e839a34e2666db7c417bf361c3033d6c5f74bc3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 23 Dec 2020 19:14:47 +0100 Subject: [PATCH 04/20] FIX for php 8 --- htdocs/adherents/list.php | 7 +---- htdocs/comm/action/list.php | 10 ++----- htdocs/compta/bank/bankentries_list.php | 10 ++----- htdocs/compta/bank/list.php | 10 ++----- .../compta/cashcontrol/cashcontrol_list.php | 10 ++----- .../compta/facture/invoicetemplate_list.php | 10 ++----- htdocs/contrat/list.php | 10 ++----- htdocs/contrat/services_list.php | 10 ++----- htdocs/core/class/extrafields.class.php | 30 +++++++------------ .../tpl/extrafields_list_array_fields.tpl.php | 2 +- htdocs/expensereport/list.php | 9 +----- htdocs/fichinter/list.php | 10 ++----- htdocs/fourn/commande/list.php | 10 ++----- htdocs/fourn/facture/list.php | 10 ++----- htdocs/holiday/list.php | 9 +----- htdocs/intracommreport/list.php | 2 +- .../modulebuilder/template/myobject_list.php | 2 +- htdocs/projet/activity/perday.php | 2 +- htdocs/projet/activity/perweek.php | 2 +- htdocs/projet/tasks.php | 10 ++----- htdocs/projet/tasks/list.php | 10 ++----- htdocs/projet/tasks/time.php | 10 ++----- htdocs/reception/list.php | 11 ++----- htdocs/resource/list.php | 10 ++----- htdocs/societe/website.php | 10 ++----- htdocs/supplier_proposal/list.php | 10 ++----- htdocs/zapier/hook_list.php | 8 ++--- 27 files changed, 55 insertions(+), 189 deletions(-) diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index c9aaa856d22..9c9df8e25b5 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -146,12 +146,7 @@ $arrayfields = array( 'd.statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000) ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) { - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; /* diff --git a/htdocs/comm/action/list.php b/htdocs/comm/action/list.php index 510fa67dcdb..2fe47ab39f1 100644 --- a/htdocs/comm/action/list.php +++ b/htdocs/comm/action/list.php @@ -141,14 +141,8 @@ $arrayfields = array( 'a.tms'=>array('label'=>'DateModification', 'checked'=>0) ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index d57e2cf5591..63021eb3b07 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -155,14 +155,8 @@ $arrayfields = array( 'b.conciliated'=>array('label'=>$langs->trans("Conciliated"), 'enabled'=> $object->rappro, 'checked'=>($action == 'reconcile' ? 1 : 0), 'position'=>1020), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index 87c8380ebda..f3efea15235 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -106,14 +106,8 @@ $arrayfields = array( 'balance'=>array('label'=>$langs->trans("Balance"), 'checked'=>1, 'position'=>1010), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/compta/cashcontrol/cashcontrol_list.php b/htdocs/compta/cashcontrol/cashcontrol_list.php index fdc3e57bdba..c6431143a98 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_list.php +++ b/htdocs/compta/cashcontrol/cashcontrol_list.php @@ -120,14 +120,8 @@ foreach ($object->fields as $key => $val) if (!empty($val['visible'])) $arrayfields['t.'.$key] = array('label'=>$val['label'], 'checked'=>(($val['visible'] < 0) ? 0 : 1), 'enabled'=>$val['enabled'], 'position'=>$val['position']); } // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php index c0abc5a6028..6beb5caa1e2 100644 --- a/htdocs/compta/facture/invoicetemplate_list.php +++ b/htdocs/compta/facture/invoicetemplate_list.php @@ -135,14 +135,8 @@ $arrayfields = array( 'f.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index ca8ccb9bd7d..d273dd7cdf7 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -131,14 +131,8 @@ $arrayfields = array( 'status'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/contrat/services_list.php b/htdocs/contrat/services_list.php index 67b605d657f..4de651a24f9 100644 --- a/htdocs/contrat/services_list.php +++ b/htdocs/contrat/services_list.php @@ -130,14 +130,8 @@ $arrayfields = array( 'cd.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500) ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index d041aba45f4..2daf4c835e9 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -991,32 +991,23 @@ class ExtraFields else return ''; } - if (empty($morecss)) - { - if ($type == 'date') - { + if (empty($morecss)) { + if ($type == 'date') { $morecss = 'minwidth100imp'; - } elseif ($type == 'datetime' || $type == 'link') - { + } elseif ($type == 'datetime' || $type == 'link') { $morecss = 'minwidth200imp'; - } elseif (in_array($type, array('int', 'integer', 'double', 'price'))) - { + } elseif (in_array($type, array('int', 'integer', 'double', 'price'))) { $morecss = 'maxwidth75'; - } elseif ($type == 'password') - { + } elseif ($type == 'password') { $morecss = 'maxwidth100'; - } elseif ($type == 'url') - { + } elseif ($type == 'url') { $morecss = 'minwidth400'; - } elseif ($type == 'boolean') - { + } elseif ($type == 'boolean') { $morecss = ''; } else { - if (round($size) < 12) - { + if (empty($size) || round($size) < 12) { $morecss = 'minwidth100'; - } elseif (round($size) <= 48) - { + } elseif (round($size) <= 48) { $morecss = 'minwidth200'; } else { $morecss = 'minwidth400'; @@ -1024,8 +1015,7 @@ class ExtraFields } } - if (in_array($type, array('date', 'datetime'))) - { + if (in_array($type, array('date', 'datetime'))) { $tmp = explode(',', $size); $newsize = $tmp[0]; diff --git a/htdocs/core/tpl/extrafields_list_array_fields.tpl.php b/htdocs/core/tpl/extrafields_list_array_fields.tpl.php index 6e68dd94bea..d2d77cf3b5c 100644 --- a/htdocs/core/tpl/extrafields_list_array_fields.tpl.php +++ b/htdocs/core/tpl/extrafields_list_array_fields.tpl.php @@ -23,7 +23,7 @@ if (!empty($extrafieldsobjectkey)) // $extrafieldsobject is the $object->table_e 'label' => $extrafields->attributes[$extrafieldsobjectkey]['label'][$key], 'checked' => (($extrafields->attributes[$extrafieldsobjectkey]['list'][$key] < 0) ? 0 : 1), 'position' => $extrafields->attributes[$extrafieldsobjectkey]['pos'][$key], - 'enabled' => (abs($extrafields->attributes[$extrafieldsobjectkey]['list'][$key]) != 3 && $extrafields->attributes[$extrafieldsobjectkey]['perms'][$key]), + 'enabled' => (abs((int) $extrafields->attributes[$extrafieldsobjectkey]['list'][$key]) != 3 && $extrafields->attributes[$extrafieldsobjectkey]['perms'][$key]), 'langfile' => $extrafields->attributes[$extrafieldsobjectkey]['langfile'][$key], 'help' => $extrafields->attributes[$extrafieldsobjectkey]['help'][$key], ); diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 440fc4524a6..7afb464e4f4 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -140,14 +140,7 @@ $arrayfields = array( 'd.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; $canedituser = (!empty($user->admin) || $user->rights->user->user->creer); diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index bdf60e121e7..d054f5e5bcc 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -117,14 +117,8 @@ $arrayfields = array( 'fd.duree'=>array('label'=>'DurationOfLine', 'checked'=>1, 'enabled'=>empty($conf->global->FICHINTER_DISABLE_DETAILS) ? 1 : 0), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 12d3352205b..e680e55868a 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -168,14 +168,8 @@ $arrayfields = array( 'cf.billed'=>array('label'=>$langs->trans("Billed"), 'checked'=>1, 'position'=>1000, 'enabled'=>1) ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index d0dce03c87f..b0c58572955 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -189,14 +189,8 @@ $arrayfields = array( 'f.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php index 41ae8a6956f..cbd9b76e45e 100644 --- a/htdocs/holiday/list.php +++ b/htdocs/holiday/list.php @@ -143,14 +143,7 @@ $arrayfields = array( 'cp.statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; if (empty($conf->holiday->enabled)) { diff --git a/htdocs/intracommreport/list.php b/htdocs/intracommreport/list.php index d3346e344f4..e43dc33e700 100644 --- a/htdocs/intracommreport/list.php +++ b/htdocs/intracommreport/list.php @@ -132,7 +132,7 @@ if (is_array($extrafields->attributes[$object->table_element]['label']) && count foreach($extrafields->attributes[$object->table_element]['label'] as $key => $val) { if (! empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key]=array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key]<0)?0:1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key])!=3 && $extrafields->attributes[$object->table_element]['perms'][$key])); + $arrayfields["ef.".$key]=array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key]<0)?0:1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs((int) $extrafields->attributes[$object->table_element]['list'][$key])!=3 && $extrafields->attributes[$object->table_element]['perms'][$key])); } } */ diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 2ed8e4577fa..7d09667bd22 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -129,7 +129,7 @@ $arrayfields = array(); foreach ($object->fields as $key => $val) { // If $val['visible']==0, then we never show the field if (!empty($val['visible'])) { - $visible = dol_eval($val['visible'], 1); + $visible = (int) dol_eval($val['visible'], 1); $arrayfields['t.'.$key] = array( 'label'=>$val['label'], 'checked'=>(($visible < 0) ? 0 : 1), diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index 9e15a580358..24ac982896e 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -129,7 +129,7 @@ if (is_array($extrafields->attributes[$object->table_element]['label']) && count foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["efpt.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); + $arrayfields["efpt.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs((int) $extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); } } $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php index 8b49aa2e0c2..4f8fbb8d865 100644 --- a/htdocs/projet/activity/perweek.php +++ b/htdocs/projet/activity/perweek.php @@ -143,7 +143,7 @@ if (is_array($extrafields->attributes['projet_task']['label']) && count($extrafi foreach ($extrafields->attributes['projet_task']['label'] as $key => $val) { if (!empty($extrafields->attributes['projet_task']['list'][$key])) - $arrayfields["efpt.".$key] = array('label'=>$extrafields->attributes['projet_task']['label'][$key], 'checked'=>(($extrafields->attributes['projet_task']['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes['projet_task']['pos'][$key], 'enabled'=>(abs($extrafields->attributes['projet_task']['list'][$key]) != 3 && $extrafields->attributes['projet_task']['perms'][$key])); + $arrayfields["efpt.".$key] = array('label'=>$extrafields->attributes['projet_task']['label'][$key], 'checked'=>(($extrafields->attributes['projet_task']['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes['projet_task']['pos'][$key], 'enabled'=>(abs((int) $extrafields->attributes['projet_task']['list'][$key]) != 3 && $extrafields->attributes['projet_task']['perms'][$key])); } } $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index ba1840c4101..52e105c1443 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -119,14 +119,8 @@ if ($object->usage_bill_time) { } // Extra fields -if (is_array($extrafields->attributes[$taskstatic->table_element]['label']) && count($extrafields->attributes[$taskstatic->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$taskstatic->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$taskstatic->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$taskstatic->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$taskstatic->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$taskstatic->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$taskstatic->table_element]['list'][$key]) != 3 && $extrafields->attributes[$taskstatic->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $arrayfields = dol_sort_array($arrayfields, 'position'); $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index b9d1a19c629..1951df8c0e1 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -136,14 +136,8 @@ $arrayfields = array( //'t.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index c18ec6e4434..cb92be401c1 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -869,14 +869,8 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) $arrayfields['value'] = array('label'=>$langs->trans("Value"), 'checked'=>1, 'enabled'=>(empty($conf->salaries->enabled) ? 0 : 1)); $arrayfields['valuebilled'] = array('label'=>$langs->trans("Billed"), 'checked'=>1, 'enabled'=>(((!empty($conf->global->PROJECT_HIDE_TASKS) || empty($conf->global->PROJECT_BILL_TIME_SPENT)) ? 0 : 1) && $projectstatic->usage_bill_time)); // Extra fields - if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) - { - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } - } + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $arrayfields = dol_sort_array($arrayfields, 'position'); $param = ''; diff --git a/htdocs/reception/list.php b/htdocs/reception/list.php index e175437c0cc..ec08c7ba94a 100644 --- a/htdocs/reception/list.php +++ b/htdocs/reception/list.php @@ -110,15 +110,10 @@ $arrayfields = array( 'e.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), 'e.billed'=>array('label'=>$langs->trans("Billed"), 'checked'=>1, 'position'=>1000, 'enabled'=>(!empty($conf->global->WORKFLOW_BILL_ON_RECEPTION))) ); + // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index ccf061b50b7..c1b67edaa0e 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -121,14 +121,8 @@ $arrayfields = array( ), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/societe/website.php b/htdocs/societe/website.php index 69e8efd02e1..ff3108d2427 100644 --- a/htdocs/societe/website.php +++ b/htdocs/societe/website.php @@ -99,14 +99,8 @@ foreach ($objectwebsiteaccount->fields as $key => $val) } // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index 5fc27d63a8c..d74f2fbdec3 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -165,14 +165,8 @@ $arrayfields = array( 'sp.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), ); // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) -{ - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) - { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/zapier/hook_list.php b/htdocs/zapier/hook_list.php index 59432aea44b..93461517107 100644 --- a/htdocs/zapier/hook_list.php +++ b/htdocs/zapier/hook_list.php @@ -112,12 +112,8 @@ foreach ($object->fields as $key => $val) { if (!empty($val['visible'])) $arrayfields['t.'.$key] = array('label'=>$val['label'], 'checked'=>(($val['visible'] < 0) ? 0 : 1), 'enabled'=>$val['enabled'], 'position'=>$val['position']); } // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) { - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) - $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])); - } -} +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; + $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); From 940f0484eef2378727d27a1d21b656dcc0a78372 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 23 Dec 2020 22:17:05 +0100 Subject: [PATCH 05/20] FIX debug report expense/income --- .../bank/class/paymentvarious.class.php | 32 ++- htdocs/compta/bank/various_payment/card.php | 2 +- htdocs/compta/resultat/clientfourn.php | 267 ++++++++++-------- htdocs/core/class/commonobject.class.php | 2 +- htdocs/core/class/html.form.class.php | 33 ++- 5 files changed, 189 insertions(+), 147 deletions(-) diff --git a/htdocs/compta/bank/class/paymentvarious.class.php b/htdocs/compta/bank/class/paymentvarious.class.php index 5c8031f2702..6c2e12ba500 100644 --- a/htdocs/compta/bank/class/paymentvarious.class.php +++ b/htdocs/compta/bank/class/paymentvarious.class.php @@ -93,7 +93,18 @@ class PaymentVarious extends CommonObject public $fk_project; /** - * @var int ID + * @var int Bank account ID + */ + public $fk_account; + + /** + * @var int Bank account ID + * @deprecated See fk_account + */ + public $accountid; + + /** + * @var int ID record into llx_bank */ public $fk_bank; @@ -102,11 +113,6 @@ class PaymentVarious extends CommonObject */ public $categorie_transaction; - /** - * @var int Account ID - */ - public $accountid; - /** * @var int ID */ @@ -397,6 +403,10 @@ class PaymentVarious extends CommonObject $this->fk_bank = (int) $this->fk_bank; $this->fk_user_author = (int) $this->fk_user_author; $this->fk_user_modif = (int) $this->fk_user_modif; + $this->fk_account = (int) $this->fk_account; + if (empty($this->fk_account) && isset($this->accountid)) { // For compatibility + $this->fk_account = $this->accountid; + } // Check parameters if (!$this->label) @@ -409,9 +419,9 @@ class PaymentVarious extends CommonObject $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount")); return -5; } - if (!empty($conf->banque->enabled) && (empty($this->accountid) || $this->accountid <= 0)) + if (!empty($conf->banque->enabled) && (empty($this->fk_account) || $this->fk_account <= 0)) { - $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Account")); + $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("BankAccount")); return -6; } if (!empty($conf->banque->enabled) && (empty($this->type_payment) || $this->type_payment <= 0)) @@ -454,7 +464,7 @@ class PaymentVarious extends CommonObject $sql .= ", ".($this->fk_project > 0 ? $this->fk_project : 0); $sql .= ", ".$user->id; $sql .= ", '".$this->db->idate($now)."'"; - $sql .= ", NULL"; + $sql .= ", NULL"; // Filled later $sql .= ", ".$conf->entity; $sql .= ")"; @@ -473,7 +483,7 @@ class PaymentVarious extends CommonObject require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $acc = new Account($this->db); - $result = $acc->fetch($this->accountid); + $result = $acc->fetch($this->fk_account); if ($result <= 0) dol_print_error($this->db); // Insert payment into llx_bank @@ -495,7 +505,7 @@ class PaymentVarious extends CommonObject $this->datev ); - // Update fk_bank into llx_paiement. + // Update fk_bank into llx_payment_various // So we know the payment which has generate the banking ecriture if ($bank_line_id > 0) { $this->update_fk_bank($bank_line_id); diff --git a/htdocs/compta/bank/various_payment/card.php b/htdocs/compta/bank/various_payment/card.php index db539e060d2..dfdad0b589b 100644 --- a/htdocs/compta/bank/various_payment/card.php +++ b/htdocs/compta/bank/various_payment/card.php @@ -491,7 +491,7 @@ if ($id) ); $formquestion[] = array('type' => 'date', 'tdclass'=>'fieldrequired', 'name' => 'clone_date_payment', 'label' => $langs->trans("DatePayment"), 'value' => -1); $formquestion[] = array('type' => 'date', 'name' => 'clone_date_value', 'label' => $langs->trans("DateValue"), 'value' => -1); - $formquestion[] = array('type' => 'other', 'tdclass'=>'fieldrequired', 'name' => 'accountid', 'label' => $langs->trans("BankAccount"), 'value' => $form->select_comptes($accountid, "accountid", 0, '', 1)); + $formquestion[] = array('type' => 'other', 'tdclass'=>'fieldrequired', 'name' => 'accountid', 'label' => $langs->trans("BankAccount"), 'value' => $form->select_comptes($accountid, "accountid", 0, '', 1, '', 0, 'minwidth200', 1)); print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneVariousPayment', $object->ref), 'confirm_clone', $formquestion, 'yes', 1, 300); } diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 8a1655cdefb..3072dcdee2b 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -229,6 +229,8 @@ if ($modecompta == 'BOOKKEEPING') print "\n"; +$total_ht_outcome = $total_ttc_outcome = $total_ht_income = $total_ttc_income = 0; + if ($modecompta == 'BOOKKEEPING') { @@ -438,16 +440,97 @@ if ($modecompta == 'BOOKKEEPING') if ($total_ttc == 0) { print ' '; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } + $total_ht_income += $total_ht; + $total_ttc_income += $total_ttc; print ''; if ($modecompta == 'CREANCES-DETTES') print ''.price($total_ht).''; print ''.price($total_ttc).''; print ''; + /* + * Donations + */ + + if (!empty($conf->don->enabled)) + { + print ''.$langs->trans("Donations").''; + + if ($modecompta == 'CREANCES-DETTES' || $modecompta == 'RECETTES-DEPENSES') + { + if ($modecompta == 'CREANCES-DETTES') + { + $sql = "SELECT p.societe as name, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount"; + $sql .= " FROM ".MAIN_DB_PREFIX."don as p"; + $sql .= " WHERE p.entity IN (".getEntity('donation').")"; + $sql .= " AND fk_statut in (1,2)"; + } else { + $sql = "SELECT p.societe as nom, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount"; + $sql .= " FROM ".MAIN_DB_PREFIX."don as p"; + $sql .= " INNER JOIN ".MAIN_DB_PREFIX."payment_donation as pe ON pe.fk_donation = p.rowid"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as c ON pe.fk_typepayment = c.id"; + $sql .= " WHERE p.entity IN (".getEntity('donation').")"; + $sql .= " AND fk_statut >= 2"; + } + if (!empty($date_start) && !empty($date_end)) + $sql .= " AND p.datedon >= '".$db->idate($date_start)."' AND p.datedon <= '".$db->idate($date_end)."'"; + } + $sql .= " GROUP BY p.societe, p.firstname, p.lastname, dm"; + $newsortfield = $sortfield; + if ($newsortfield == 's.nom, s.rowid') $newsortfield = 'p.societe, p.firstname, p.lastname, dm'; + if ($newsortfield == 'amount_ht') $newsortfield = 'amount'; + if ($newsortfield == 'amount_ttc') $newsortfield = 'amount'; + $sql .= $db->order($newsortfield, $sortorder); + + dol_syslog("get dunning"); + $result = $db->query($sql); + $subtotal_ht = 0; + $subtotal_ttc = 0; + if ($result) + { + $num = $db->num_rows($result); + $i = 0; + if ($num) + { + while ($i < $num) + { + $obj = $db->fetch_object($result); + + $total_ht += $obj->amount; + $total_ttc += $obj->amount; + $subtotal_ht += $obj->amount; + $subtotal_ttc += $obj->amount; + + print ' '; + + print "".$langs->trans("Donation")." name."&search_name=".$obj->firstname." ".$obj->lastname."\">".$obj->name." ".$obj->firstname." ".$obj->lastname."\n"; + + if ($modecompta == 'CREANCES-DETTES') print ''.price($obj->amount).''; + print ''.price($obj->amount).''; + print ''; + $i++; + } + } else { + print ' '; + print ''.$langs->trans("None").''; + print ''; + } + } else { + dol_print_error($db); + } + + $total_ht_income += $subtotal_ht; + $total_ttc_income += $subtotal_ttc; + print ''; + if ($modecompta == 'CREANCES-DETTES') + print ''.price($subtotal_ht).''; + print ''.price($subtotal_ttc).''; + print ''; + } /* * Suppliers invoices @@ -515,7 +598,7 @@ if ($modecompta == 'BOOKKEEPING') } } else { print ' '; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } @@ -523,6 +606,9 @@ if ($modecompta == 'BOOKKEEPING') } else { dol_print_error($db); } + + $total_ht_outcome += $subtotal_ht; + $total_ttc_outcome += $subtotal_ttc; print ''; if ($modecompta == 'CREANCES-DETTES') print ''.price(-$subtotal_ht).''; @@ -530,7 +616,6 @@ if ($modecompta == 'BOOKKEEPING') print ''; - /* * Charges sociales non deductibles */ @@ -592,12 +677,15 @@ if ($modecompta == 'BOOKKEEPING') } } else { print ' '; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } } else { dol_print_error($db); } + + $total_ht_outcome += $subtotal_ht; + $total_ttc_outcome += $subtotal_ttc; print ''; if ($modecompta == 'CREANCES-DETTES') print ''.price(-$subtotal_ht).''; @@ -667,36 +755,21 @@ if ($modecompta == 'BOOKKEEPING') } } else { print ' '; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } } else { dol_print_error($db); } + + $total_ht_outcome += $subtotal_ht; + $total_ttc_outcome += $subtotal_ttc; print ''; if ($modecompta == 'CREANCES-DETTES') print ''.price(-$subtotal_ht).''; print ''.price(-$subtotal_ttc).''; print ''; - if ($mysoc->tva_assuj == 'franchise') // Non assujetti - { - // Total - print ''; - print ' '; - print ''; - - print ''.$langs->trans("Profit").''; - if ($modecompta == 'CREANCES-DETTES') - print ''.price($total_ht).''; - print ''.price($total_ttc).''; - print ''; - - print ''; - print ' '; - print ''; - } - /* * Salaries @@ -759,12 +832,15 @@ if ($modecompta == 'BOOKKEEPING') } } else { print ' '; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } } else { dol_print_error($db); } + + $total_ht_outcome += $subtotal_ht; + $total_ttc_outcome += $subtotal_ttc; print ''; if ($modecompta == 'CREANCES-DETTES') print ''.price(-$subtotal_ht).''; @@ -841,98 +917,26 @@ if ($modecompta == 'BOOKKEEPING') } } else { print ' '; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } } else { dol_print_error($db); } + + $total_ht_outcome += $subtotal_ht; + $total_ttc_outcome += $subtotal_ttc; print ''; if ($modecompta == 'CREANCES-DETTES') print ''.price(-$subtotal_ht).''; print ''.price(-$subtotal_ttc).''; print ''; } - /* - * Donations - */ - - if (!empty($conf->don->enabled)) - { - print ''.$langs->trans("Donations").''; - - if ($modecompta == 'CREANCES-DETTES' || $modecompta == 'RECETTES-DEPENSES') - { - if ($modecompta == 'CREANCES-DETTES') - { - $sql = "SELECT p.societe as name, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount"; - $sql .= " FROM ".MAIN_DB_PREFIX."don as p"; - $sql .= " WHERE p.entity IN (".getEntity('donation').")"; - $sql .= " AND fk_statut in (1,2)"; - } else { - $sql = "SELECT p.societe as nom, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount"; - $sql .= " FROM ".MAIN_DB_PREFIX."don as p"; - $sql .= " INNER JOIN ".MAIN_DB_PREFIX."payment_donation as pe ON pe.fk_donation = p.rowid"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as c ON pe.fk_typepayment = c.id"; - $sql .= " WHERE p.entity IN (".getEntity('donation').")"; - $sql .= " AND fk_statut >= 2"; - } - if (!empty($date_start) && !empty($date_end)) - $sql .= " AND p.datedon >= '".$db->idate($date_start)."' AND p.datedon <= '".$db->idate($date_end)."'"; - } - $sql .= " GROUP BY p.societe, p.firstname, p.lastname, dm"; - $newsortfield = $sortfield; - if ($newsortfield == 's.nom, s.rowid') $newsortfield = 'p.societe, p.firstname, p.lastname, dm'; - if ($newsortfield == 'amount_ht') $newsortfield = 'amount'; - if ($newsortfield == 'amount_ttc') $newsortfield = 'amount'; - $sql .= $db->order($newsortfield, $sortorder); - - dol_syslog("get dunning"); - $result = $db->query($sql); - $subtotal_ht = 0; - $subtotal_ttc = 0; - if ($result) - { - $num = $db->num_rows($result); - $i = 0; - if ($num) - { - while ($i < $num) - { - $obj = $db->fetch_object($result); - - $total_ht += $obj->amount; - $total_ttc += $obj->amount; - $subtotal_ht += $obj->amount; - $subtotal_ttc += $obj->amount; - - print ' '; - - print "".$langs->trans("Donation")." name."&search_name=".$obj->firstname." ".$obj->lastname."\">".$obj->name." ".$obj->firstname." ".$obj->lastname."\n"; - - if ($modecompta == 'CREANCES-DETTES') print ''.price($obj->amount).''; - print ''.price($obj->amount).''; - print ''; - $i++; - } - } else { - print ' '; - print ''.$langs->trans("None").''; - print ''; - } - } else { - dol_print_error($db); - } - print ''; - if ($modecompta == 'CREANCES-DETTES') - print ''.price($subtotal_ht).''; - print ''.price($subtotal_ttc).''; - print ''; - } /* * Various Payments */ + //$conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY = 1; if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->banque->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) { @@ -953,12 +957,14 @@ if ($modecompta == 'BOOKKEEPING') $result = $db->query($sql); if ($result) { - // Debit + // Debit (payment of suppliers for example) $obj = $db->fetch_object($result); if (isset($obj->amount)) { $subtotal_ht += -$obj->amount; $subtotal_ttc += -$obj->amount; + $total_ht_outcome += $obj->amount; + $total_ttc_outcome += $obj->amount; } print ' '; print "".$langs->trans("Debit")."\n"; @@ -966,12 +972,14 @@ if ($modecompta == 'BOOKKEEPING') print ''.price(-$obj->amount)."\n"; print "\n"; - // Credit + // Credit (payment received from customer for example) $obj = $db->fetch_object($result); if (isset($obj->amount)) { $subtotal_ht += $obj->amount; $subtotal_ttc += $obj->amount; + $total_ht_income += $obj->amount; + $total_ttc_income += $obj->amount; } print ' '; print "".$langs->trans("Credit")."\n"; @@ -1030,6 +1038,8 @@ if ($modecompta == 'BOOKKEEPING') } $total_ht += $subtotal_ht; $total_ttc += $subtotal_ttc; + $total_ht_income += $subtotal_ht; + $total_ttc_income += $subtotal_ttc; print ''; if ($modecompta == 'CREANCES-DETTES') print ''.price($subtotal_ht).''; @@ -1050,7 +1060,7 @@ if ($modecompta == 'BOOKKEEPING') { if ($modecompta == 'CREANCES-DETTES') { - // TVA a payer + // VAT to pay $amount = 0; $sql = "SELECT date_format(f.datef,'%Y-%m') as dm, sum(f.tva) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; @@ -1091,13 +1101,15 @@ if ($modecompta == 'BOOKKEEPING') } else { dol_print_error($db); } + $total_ht_outcome -= 0; + $total_ttc_outcome -= $amount; print ' '; print "".$langs->trans("VATToPay")."\n"; print ' '."\n"; print ''.price($amount)."\n"; print "\n"; - // TVA a recuperer + // VAT to retreive $amount = 0; $sql = "SELECT date_format(f.datef,'%Y-%m') as dm, sum(f.total_tva) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; @@ -1139,6 +1151,9 @@ if ($modecompta == 'BOOKKEEPING') } else { dol_print_error($db); } + $total_ht_income += 0; + $total_ttc_income += $amount; + print ' '; print ''.$langs->trans("VATToCollect")."\n"; print ' '."\n"; @@ -1182,10 +1197,12 @@ if ($modecompta == 'BOOKKEEPING') } else { dol_print_error($db); } + $total_ht_outcome -= 0; + $total_ttc_outcome -= $amount; print ' '; print "".$langs->trans("VATPaid")."\n"; if ($modecompta == 'CREANCES-DETTES') - print ''.price($amount)."\n"; + print ''."\n"; print ''.price($amount)."\n"; print "\n"; @@ -1226,16 +1243,18 @@ if ($modecompta == 'BOOKKEEPING') } else { dol_print_error($db); } + $total_ht_income += 0; + $total_ttc_income += $amount; print ' '; print "".$langs->trans("VATCollected")."\n"; if ($modecompta == 'CREANCES-DETTES') - print ''.price($amount)."\n"; + print ''."\n"; print ''.price($amount)."\n"; print "\n"; } } - if ($mysoc->tva_assuj != 'franchise') // Assujetti + if ($mysoc->tva_assuj != '0') // Assujetti { print ''; if ($modecompta == 'CREANCES-DETTES') @@ -1250,25 +1269,31 @@ $object = array(&$total_ht, &$total_ttc); $parameters["mode"] = $modecompta; $parameters["date_start"] = $date_start; $parameters["date_end"] = $date_end; -$parameters["bc"] = $bc; // Initialize technical object to manage hooks of expenses. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('externalbalance')); $reshook = $hookmanager->executeHooks('addBalanceLine', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks print $hookmanager->resPrint; -if ($mysoc->tva_assuj != 'franchise') // Assujetti -{ - // Total - print ''; - print ' '; - print ''; +// Total +print ''; +print ' '; +print ''; - print ''.$langs->trans("Profit").''; - if ($modecompta == 'CREANCES-DETTES') - print ''.price(price2num($total_ht, 'MT')).''; - print ''.price(price2num($total_ttc, 'MT')).''; - print ''; -} +print ''.$langs->trans("Outcome").''; +if ($modecompta == 'CREANCES-DETTES') + print ''.price(price2num(-$total_ht_outcome, 'MT')).''; +print ''.price(price2num(-$total_ttc_outcome, 'MT')).''; +print ''; +print ''.$langs->trans("Income").''; +if ($modecompta == 'CREANCES-DETTES') + print ''.price(price2num($total_ht_income, 'MT')).''; +print ''.price(price2num($total_ttc_income, 'MT')).''; +print ''; +print ''.$langs->trans("Profit").''; +if ($modecompta == 'CREANCES-DETTES') + print ''.price(price2num($total_ht, 'MT')).''; +print ''.price(price2num($total_ttc, 'MT')).''; +print ''; print ""; print '
'; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index bfdea016ea6..47c025b0c0a 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -355,7 +355,7 @@ abstract class CommonObject public $last_main_doc; /** - * @var int Bank account ID + * @var int Bank account ID sometimes, ID of record into llx_bank sometimes * @deprecated * @see $fk_account */ diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 14bbf007542..492a4899376 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -3939,13 +3939,16 @@ class Form * @param string $moreattrib To add more attribute on select * @param int $showcurrency Show currency in label * @param string $morecss More CSS + * @param int $nooutput 1=Return string, do not send to output * @return int <0 if error, Num of bank account found if OK (0, 1, 2, ...) */ - public function select_comptes($selected = '', $htmlname = 'accountid', $status = 0, $filtre = '', $useempty = 0, $moreattrib = '', $showcurrency = 0, $morecss = '') + public function select_comptes($selected = '', $htmlname = 'accountid', $status = 0, $filtre = '', $useempty = 0, $moreattrib = '', $showcurrency = 0, $morecss = '', $nooutput = 0) { // phpcs:enable global $langs, $conf; + $out = ''; + $langs->load("admin"); $num = 0; @@ -3964,10 +3967,10 @@ class Form $i = 0; if ($num) { - print ''; if ($useempty == 1 || ($useempty == 2 && $num > 1)) { - print ''; + $out .= ''; } while ($i < $num) @@ -3975,26 +3978,30 @@ class Form $obj = $this->db->fetch_object($result); if ($selected == $obj->rowid || ($useempty == 2 && $num == 1 && empty($selected))) { - print ''; + $out .= trim($obj->label); + if ($showcurrency) $out .= ' ('.$obj->currency_code.')'; + if ($status == 2 && $obj->status == 1) $out .= ' ('.$langs->trans("Closed").')'; + $out .= ''; $i++; } - print ""; - print ajax_combobox('select'.$htmlname); + $out .= ""; + $out .= ajax_combobox('select'.$htmlname); } else { - if ($status == 0) print ''.$langs->trans("NoActiveBankAccountDefined").''; - else print ''.$langs->trans("NoBankAccountFound").''; + if ($status == 0) $out .= ''.$langs->trans("NoActiveBankAccountDefined").''; + else $out .= ''.$langs->trans("NoBankAccountFound").''; } } else { dol_print_error($this->db); } + // Output or return + if (empty($nooutput)) print $out; + else return $out; + return $num; } From d0b646659591145afdf68f85898d4f0e45a468f4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 00:51:44 +0100 Subject: [PATCH 06/20] Prepare v13 packaging --- build/rpm/dolibarr_generic.spec | 1 + build/rpm/dolibarr_mandriva.spec | 1 + build/rpm/dolibarr_opensuse.spec | 1 + 3 files changed, 3 insertions(+) diff --git a/build/rpm/dolibarr_generic.spec b/build/rpm/dolibarr_generic.spec index f3c86419f8e..4541868a04f 100755 --- a/build/rpm/dolibarr_generic.spec +++ b/build/rpm/dolibarr_generic.spec @@ -292,6 +292,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/product %_datadir/dolibarr/htdocs/projet %_datadir/dolibarr/htdocs/public +%_datadir/dolibarr/htdocs/recruitment %_datadir/dolibarr/htdocs/reception %_datadir/dolibarr/htdocs/resource %_datadir/dolibarr/htdocs/salaries diff --git a/build/rpm/dolibarr_mandriva.spec b/build/rpm/dolibarr_mandriva.spec index 3c2b8adeb5b..d618b5729d5 100755 --- a/build/rpm/dolibarr_mandriva.spec +++ b/build/rpm/dolibarr_mandriva.spec @@ -209,6 +209,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/product %_datadir/dolibarr/htdocs/projet %_datadir/dolibarr/htdocs/public +%_datadir/dolibarr/htdocs/recruitment %_datadir/dolibarr/htdocs/reception %_datadir/dolibarr/htdocs/resource %_datadir/dolibarr/htdocs/salaries diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec index 71db3f43445..230a8946e99 100755 --- a/build/rpm/dolibarr_opensuse.spec +++ b/build/rpm/dolibarr_opensuse.spec @@ -220,6 +220,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/product %_datadir/dolibarr/htdocs/projet %_datadir/dolibarr/htdocs/public +%_datadir/dolibarr/htdocs/recruitment %_datadir/dolibarr/htdocs/reception %_datadir/dolibarr/htdocs/resource %_datadir/dolibarr/htdocs/salaries From 88e441412c23e1efeb8208220d4f4c10ae9104b2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 01:35:59 +0100 Subject: [PATCH 07/20] CSS --- htdocs/compta/bank/various_payment/list.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/bank/various_payment/list.php b/htdocs/compta/bank/various_payment/list.php index 48da6483152..9c936c1d943 100644 --- a/htdocs/compta/bank/various_payment/list.php +++ b/htdocs/compta/bank/various_payment/list.php @@ -466,14 +466,18 @@ if ($result) // Project if ($arrayfields['project']['checked']) { - $proj->fetch($obj->fk_project); - print ''.$proj->getNomUrl(1).''; + print ''; + if ($obj->fk_project > 0) { + $proj->fetch($obj->fk_project); + print $proj->getNomUrl(1); + } + print ''; if (!$i) $totalarray['nbfield']++; } // Bank account if ($arrayfields['bank']['checked']) { - print ''; + print ''; if ($obj->bid > 0) { $accountstatic->id = $obj->bid; From e590fb36adeb3338b8a3f50d7e85d07edb846b43 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 01:53:36 +0100 Subject: [PATCH 08/20] Log for debug --- test/phpunit/RestAPIUserTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/phpunit/RestAPIUserTest.php b/test/phpunit/RestAPIUserTest.php index 2bce51e2a05..979daa521b9 100644 --- a/test/phpunit/RestAPIUserTest.php +++ b/test/phpunit/RestAPIUserTest.php @@ -164,11 +164,11 @@ class RestAPIUserTest extends PHPUnit\Framework\TestCase print __METHOD__." Request GET url=".$url."\n"; $result=getURLContent($url, 'GET', '', 1, array(), array('http', 'https'), 2); - //print __METHOD__." Result for unexisting user: ".var_export($result, true)."\n"; + print __METHOD__." result for get on unexisting user: ".var_export($result, true)."\n"; print __METHOD__." curl_error_no: ".$result['curl_error_no']."\n"; $this->assertEquals($result['curl_error_no'], ''); $object=json_decode($result['content'], true); - $this->assertNotNull($object, "Parsing of json result must no be null"); + $this->assertNotNull($object, "Parsing of json result must not be null"); $this->assertEquals(404, $object['error']['code']); $url = $this->api_url.'/users/1?api_key='.$this->api_key; @@ -179,7 +179,7 @@ class RestAPIUserTest extends PHPUnit\Framework\TestCase print __METHOD__." curl_error_no: ".$result['curl_error_no']."\n"; $this->assertEquals($result['curl_error_no'], ''); $object=json_decode($result['content'], true); - $this->assertNotNull($object, "Parsing of json result must no be null"); + $this->assertNotNull($object, "Parsing of json result must not be null"); $this->assertEquals(1, $object['statut']); } @@ -222,7 +222,7 @@ class RestAPIUserTest extends PHPUnit\Framework\TestCase $body = json_encode($bodyobj); print __METHOD__." Request POST url=".$url."\n"; $result=getURLContent($url, 'POST', $body, 1, $addheaders, array('http', 'https'), 2); - print __METHOD__." Result code for creating user ".var_export($result, true)."\n"; + print __METHOD__." rclsesult code for creating user ".var_export($result, true)."\n"; print __METHOD__." curl_error_no: ".$result['curl_error_no']."\n"; $this->assertEquals($result['curl_error_no'], ''); $resid=json_decode($result['content'], true); From 11b15557ebcf0625e9645b61ad97176949fd3840 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 02:09:11 +0100 Subject: [PATCH 09/20] Clean code --- htdocs/user/class/api_users.class.php | 10 ++++++---- test/phpunit/RestAPIUserTest.php | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/htdocs/user/class/api_users.class.php b/htdocs/user/class/api_users.class.php index e68ecb8bc1d..eb377b7685e 100644 --- a/htdocs/user/class/api_users.class.php +++ b/htdocs/user/class/api_users.class.php @@ -314,11 +314,13 @@ class Users extends DolibarrApi /** * Update account * - * @param int $id Id of account to update - * @param array $request_data Datas - * @return array + * @param int $id Id of account to update + * @param array $request_data Datas + * @return array|mixed Record after update * - * @throws RestException + * @throws RestException 401 Not allowed + * @throws RestException 404 Not found + * @throws RestException 500 System error */ public function put($id, $request_data = null) { diff --git a/test/phpunit/RestAPIUserTest.php b/test/phpunit/RestAPIUserTest.php index 979daa521b9..d74ecb5534f 100644 --- a/test/phpunit/RestAPIUserTest.php +++ b/test/phpunit/RestAPIUserTest.php @@ -169,7 +169,7 @@ class RestAPIUserTest extends PHPUnit\Framework\TestCase $this->assertEquals($result['curl_error_no'], ''); $object=json_decode($result['content'], true); $this->assertNotNull($object, "Parsing of json result must not be null"); - $this->assertEquals(404, $object['error']['code']); + $this->assertEquals(404, $object['error']['code'], 'Error code is not 404'); $url = $this->api_url.'/users/1?api_key='.$this->api_key; From 65dc7667651a41c5b50d0481e95022b19c4a7d2c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 02:12:13 +0100 Subject: [PATCH 10/20] Code comment --- htdocs/api/class/api_login.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/api/class/api_login.class.php b/htdocs/api/class/api_login.class.php index 25765e7f7e5..17d8916b9aa 100644 --- a/htdocs/api/class/api_login.class.php +++ b/htdocs/api/class/api_login.class.php @@ -48,8 +48,8 @@ class Login * @param int $reset Reset token (0=get current token, 1=ask a new token and canceled old token. This means access using current existing API token of user will fails: new token will be required for new access) * @return array Response status and user token * - * @throws RestException 403 - * @throws RestException 500 + * @throws RestException 403 Access denied + * @throws RestException 500 System error * * @url GET / * @url POST / From e9129154e448392e115b3540d5d4485802016aa4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 02:16:22 +0100 Subject: [PATCH 11/20] Log --- test/phpunit/RestAPIUserTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/phpunit/RestAPIUserTest.php b/test/phpunit/RestAPIUserTest.php index d74ecb5534f..d2dd8660922 100644 --- a/test/phpunit/RestAPIUserTest.php +++ b/test/phpunit/RestAPIUserTest.php @@ -164,7 +164,7 @@ class RestAPIUserTest extends PHPUnit\Framework\TestCase print __METHOD__." Request GET url=".$url."\n"; $result=getURLContent($url, 'GET', '', 1, array(), array('http', 'https'), 2); - print __METHOD__." result for get on unexisting user: ".var_export($result, true)."\n"; + //print __METHOD__." result for get on unexisting user: ".var_export($result, true)."\n"; print __METHOD__." curl_error_no: ".$result['curl_error_no']."\n"; $this->assertEquals($result['curl_error_no'], ''); $object=json_decode($result['content'], true); @@ -175,7 +175,7 @@ class RestAPIUserTest extends PHPUnit\Framework\TestCase print __METHOD__." Request GET url=".$url."\n"; $result=getURLContent($url, 'GET', '', 1, array(), array('http', 'https'), 2); - //print __METHOD__." Result for existing user user: ".var_export($result, true)."\n"; + print __METHOD__." result for get on an existing user: ".var_export($result, true)."\n"; print __METHOD__." curl_error_no: ".$result['curl_error_no']."\n"; $this->assertEquals($result['curl_error_no'], ''); $object=json_decode($result['content'], true); From 11a122176d2587faeab5eeb86819a789ba11e3b3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 02:33:11 +0100 Subject: [PATCH 12/20] Clean code --- htdocs/api/class/api.class.php | 2 +- htdocs/user/class/api_users.class.php | 20 ++++++++++---------- test/phpunit/RestAPIUserTest.php | 1 - 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php index e101fb89602..89d170feb60 100644 --- a/htdocs/api/class/api.class.php +++ b/htdocs/api/class/api.class.php @@ -173,7 +173,7 @@ class DolibarrApi unset($object->name_bis); unset($object->newref); - if ($object->table_element != 'ticket') { + if (!isset($object->table_element) || $object->table_element != 'ticket') { unset($object->comments); } diff --git a/htdocs/user/class/api_users.class.php b/htdocs/user/class/api_users.class.php index eb377b7685e..d50fec76353 100644 --- a/htdocs/user/class/api_users.class.php +++ b/htdocs/user/class/api_users.class.php @@ -142,11 +142,11 @@ class Users extends DolibarrApi * Get properties of an user object * * @param int $id ID of user - * @param int $includepermissions Set this to 1 to have the array of permissions loaded (not done by default for performance purpose) - * @return array|mixed data without useless information + * @param int $includepermissions Set this to 1 to have the array of permissions loaded (not done by default for performance purpose) + * @return array|mixed data without useless information * - * @throws RestException 401 Insufficient rights - * @throws RestException 404 User or group not found + * @throws RestException 401 Insufficient rights + * @throws RestException 404 User or group not found */ public function get($id, $includepermissions = 0) { @@ -177,13 +177,13 @@ class Users extends DolibarrApi * Get properties of an user object by login * * @param string $login Login of user - * @param int $includepermissions Set this to 1 to have the array of permissions loaded (not done by default for performance purpose) - * @return array|mixed data without useless information + * @param int $includepermissions Set this to 1 to have the array of permissions loaded (not done by default for performance purpose) + * @return array|mixed Data without useless information * * @url GET login/{login} * - * @throws RestException 401 Insufficient rights - * @throws RestException 404 User or group not found + * @throws RestException 401 Insufficient rights + * @throws RestException 404 User or group not found */ public function getByLogin($login, $includepermissions = 0) { @@ -211,8 +211,8 @@ class Users extends DolibarrApi * Get properties of an user object by Email * * @param string $email Email of user - * @param int $includepermissions Set this to 1 to have the array of permissions loaded (not done by default for performance purpose) - * @return array|mixed data without useless information + * @param int $includepermissions Set this to 1 to have the array of permissions loaded (not done by default for performance purpose) + * @return array|mixed Data without useless information * * @url GET email/{email} * diff --git a/test/phpunit/RestAPIUserTest.php b/test/phpunit/RestAPIUserTest.php index d2dd8660922..6222f7fcaf7 100644 --- a/test/phpunit/RestAPIUserTest.php +++ b/test/phpunit/RestAPIUserTest.php @@ -190,7 +190,6 @@ class RestAPIUserTest extends PHPUnit\Framework\TestCase */ public function testRestCreateUser() { - // attemp to create without mandatory fields : $url = $this->api_url.'/users?api_key='.$this->api_key; $addheaders=array('Content-Type: application/json'); From ea0ae758a35cabf4715bb1f1c781cc3a8334678d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 02:48:32 +0100 Subject: [PATCH 13/20] Fix warnings --- htdocs/webservices/server_actioncomm.php | 8 ++++---- htdocs/webservices/server_contact.php | 8 ++++---- htdocs/webservices/server_order.php | 10 +++++----- htdocs/webservices/server_productorservice.php | 10 +++++----- htdocs/webservices/server_project.php | 6 +++--- htdocs/webservices/server_thirdparty.php | 10 +++++----- htdocs/webservices/server_user.php | 4 ++-- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/htdocs/webservices/server_actioncomm.php b/htdocs/webservices/server_actioncomm.php index 7864c93243f..140351e7d21 100644 --- a/htdocs/webservices/server_actioncomm.php +++ b/htdocs/webservices/server_actioncomm.php @@ -122,7 +122,7 @@ $extrafield_array = null; if (is_array($extrafields) && count($extrafields) > 0) { $extrafield_array = array(); } -if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) +if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -315,7 +315,7 @@ function getActionComm($authentication, $id) //Get extrafield values $actioncomm->fetch_optionals(); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -454,7 +454,7 @@ function createActionComm($authentication, $actioncomm) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -551,7 +551,7 @@ function updateActionComm($authentication, $actioncomm) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { diff --git a/htdocs/webservices/server_contact.php b/htdocs/webservices/server_contact.php index 9abc7b6088f..6fc521a43c7 100644 --- a/htdocs/webservices/server_contact.php +++ b/htdocs/webservices/server_contact.php @@ -127,7 +127,7 @@ $extrafield_array = null; if (is_array($extrafields) && count($extrafields) > 0) { $extrafield_array = array(); } -if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) +if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -319,7 +319,7 @@ function getContact($authentication, $id, $ref_ext) //Get extrafield values $contact->fetch_optionals(); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -424,7 +424,7 @@ function createContact($authentication, $contact) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -671,7 +671,7 @@ function updateContact($authentication, $contact) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { diff --git a/htdocs/webservices/server_order.php b/htdocs/webservices/server_order.php index 62e8dc99d72..30c105d7192 100644 --- a/htdocs/webservices/server_order.php +++ b/htdocs/webservices/server_order.php @@ -120,7 +120,7 @@ $extrafield_line_array = null; if (is_array($extrafields) && count($extrafields) > 0) { $extrafield_line_array = array(); } -if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) +if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -224,7 +224,7 @@ $extrafield_array = null; if (is_array($extrafields) && count($extrafields) > 0) { $extrafield_array = array(); } -if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) +if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -705,7 +705,7 @@ function createOrder($authentication, $order) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -743,7 +743,7 @@ function createOrder($authentication, $order) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -948,7 +948,7 @@ function updateOrder($authentication, $order) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { diff --git a/htdocs/webservices/server_productorservice.php b/htdocs/webservices/server_productorservice.php index f723dcfd054..f285d245030 100644 --- a/htdocs/webservices/server_productorservice.php +++ b/htdocs/webservices/server_productorservice.php @@ -142,7 +142,7 @@ $extrafield_array = null; if (is_array($extrafields) && count($extrafields) > 0) { $extrafield_array = array(); } -if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) +if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -436,7 +436,7 @@ function getProductOrService($authentication, $id = '', $ref = '', $ref_ext = '' //Get extrafield values $product->fetch_optionals(); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -563,7 +563,7 @@ function createProductOrService($authentication, $product) $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -719,7 +719,7 @@ function updateProductOrService($authentication, $product) $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -1090,7 +1090,7 @@ function getProductsForCategory($authentication, $id, $lang = '') //Get extrafield values $tmpproduct->fetch_optionals(); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { diff --git a/htdocs/webservices/server_project.php b/htdocs/webservices/server_project.php index 9d4c93c9ce9..0817332c09f 100644 --- a/htdocs/webservices/server_project.php +++ b/htdocs/webservices/server_project.php @@ -169,7 +169,7 @@ $extrafield_array = null; if (is_array($extrafields) && count($extrafields) > 0) { $extrafield_array = array(); } -if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) +if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -277,7 +277,7 @@ function createProject($authentication, $project) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -386,7 +386,7 @@ function getProject($authentication, $id = '', $ref = '') $extrafields->fetch_name_optionals_label($elementtype, true); //Get extrafield values - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { $project->fetch_optionals(); foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) diff --git a/htdocs/webservices/server_thirdparty.php b/htdocs/webservices/server_thirdparty.php index 3a1e911f510..5bde94cc0d5 100644 --- a/htdocs/webservices/server_thirdparty.php +++ b/htdocs/webservices/server_thirdparty.php @@ -130,7 +130,7 @@ $extrafield_array = null; if (is_array($extrafields) && count($extrafields) > 0) { $extrafield_array = array(); } -if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) +if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -365,7 +365,7 @@ function getThirdParty($authentication, $id = '', $ref = '', $ref_ext = '') //Get extrafield values $thirdparty->fetch_optionals(); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -481,7 +481,7 @@ function createThirdParty($authentication, $thirdparty) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -615,7 +615,7 @@ function updateThirdParty($authentication, $thirdparty) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -723,7 +723,7 @@ function getListOfThirdParties($authentication, $filterthirdparty) $extrafieldsOptions = array(); $obj = $db->fetch_object($resql); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { diff --git a/htdocs/webservices/server_user.php b/htdocs/webservices/server_user.php index 6f7ed5c10aa..25cb2324412 100644 --- a/htdocs/webservices/server_user.php +++ b/htdocs/webservices/server_user.php @@ -193,7 +193,7 @@ $extrafield_array = null; if (is_array($extrafields) && count($extrafields) > 0) { $extrafield_array = array(); } -if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) +if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { @@ -599,7 +599,7 @@ function createUserFromThirdparty($authentication, $thirdpartywithuser) // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($elementtype, true); - if (is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) + if (isset($extrafields->attributes[$elementtype]['label']) && is_array($extrafields->attributes[$elementtype]['label']) && count($extrafields->attributes[$elementtype]['label'])) { foreach ($extrafields->attributes[$elementtype]['label'] as $key=>$label) { From 3586da75a2c38d5ed74a551b6d02994d3019d786 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 02:52:49 +0100 Subject: [PATCH 14/20] Fix warning --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index dd80c660e71..884d8eac496 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4461,7 +4461,7 @@ function print_barre_liste($titre, $page, $file, $options = '', $sortfield = '', $savlimit = $limit; $savtotalnboflines = $totalnboflines; - $totalnboflines = abs($totalnboflines); + $totalnboflines = abs((int) $totalnboflines); if ($picto == 'setup') $picto = 'title_setup.png'; if (($conf->browser->name == 'ie') && $picto == 'generic') $picto = 'title.gif'; From 6c2a17b29ad629bc7922c1ee1891d8cda44026aa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 02:59:00 +0100 Subject: [PATCH 15/20] Fix warning --- htdocs/contrat/list.php | 6 +++--- htdocs/core/class/notify.class.php | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index d273dd7cdf7..72a8ec2974d 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -614,14 +614,14 @@ while ($i < min($num, $limit)) $socstatic->logo = $obj->logo; $socstatic->country_id = $obj->country_id; $socstatic->country_code = ''; - $socstatic->country_label = '';*/ + $socstatic->country = '';*/ if ($obj->country_id > 0) { if (!isset($cacheCountryIDCode[$obj->country_id]['code'])) { $tmparray = getCountry($obj->country_id, 'all'); $cacheCountryIDCode[$obj->country_id] = array('code'=> empty($tmparray['code']) ? '' : $tmparray['code'], 'label' => empty($tmparray['label']) ? '' : $tmparray['label']); } $socstatic->country_code = $cacheCountryIDCode[$obj->country_id]['code']; - $socstatic->country_label = $cacheCountryIDCode[$obj->country_id]['label']; + $socstatic->country = $cacheCountryIDCode[$obj->country_id]['label']; } @@ -695,7 +695,7 @@ while ($i < min($num, $limit)) if (!empty($arrayfields['country.code_iso']['checked'])) { print ''; - print $socstatic->country_label; + print $socstatic->country; print ''; if (!$i) $totalarray['nbfield']++; } diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index 6f60f6cdca6..f9f1c3b99ef 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -112,6 +112,7 @@ class Notify $listofnotiftodo = $this->getNotificationsArray($action, $socid, $object, 0); + $texte = ''; $nb = -1; if (is_array($listofnotiftodo)) { $nb = count($listofnotiftodo); @@ -170,6 +171,8 @@ class Notify if (is_object($object)) { $valueforthreshold = $object->total_ht; } + + $sqlnotifcode = ''; if ($notifcode) { if (is_numeric($notifcode)) { $sqlnotifcode = " AND n.fk_action = ".$notifcode; // Old usage From 5ef3ffbdc63e7fdeaab4e203f110c535c5cd99e0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 03:03:38 +0100 Subject: [PATCH 16/20] Fix warning --- htdocs/core/class/utils.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/utils.class.php b/htdocs/core/class/utils.class.php index 93eaeb6d4f2..07b67e30062 100644 --- a/htdocs/core/class/utils.class.php +++ b/htdocs/core/class/utils.class.php @@ -168,7 +168,7 @@ class Utils $this->output = $langs->trans("PurgeNDirectoriesDeleted", $countdeleted); if ($count > $countdeleted) $this->output .= '
'.$langs->trans("PurgeNDirectoriesFailed", ($count - $countdeleted)); } else { - $this->output = $langs->trans("PurgeNothingToDelete").($choice == 'tempfilesold' ? ' (older than 24h)' : ''); + $this->output = $langs->trans("PurgeNothingToDelete").(in_array('tempfilesold', $choicesarray) ? ' (older than 24h for temp files)' : ''); } // Recreate temp dir that are not automatically recreated by core code for performance purpose, we need them From a0440fbe8841a8a6b2582f2e10cab928bb85ba8a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 03:06:52 +0100 Subject: [PATCH 17/20] Removed warnings --- htdocs/core/boxes/box_funnel_of_prospection.php | 4 ++-- htdocs/core/boxes/modules_boxes.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/boxes/box_funnel_of_prospection.php b/htdocs/core/boxes/box_funnel_of_prospection.php index 6ffce6d781b..5b6130d8eb2 100644 --- a/htdocs/core/boxes/box_funnel_of_prospection.php +++ b/htdocs/core/boxes/box_funnel_of_prospection.php @@ -61,9 +61,9 @@ class box_funnel_of_prospection extends ModeleBoxes $this->db = $db; - $this->enabled = ($conf->global->MAIN_FEATURES_LEVEL >= 1); // Not enabled by default, still need some work + $this->enabled = ($conf->global->MAIN_FEATURES_LEVEL >= 1 ? 1 : 0); // Not enabled by default, still need some work - $this->hidden = !($user->rights->projet->lire); + $this->hidden = empty($user->rights->projet->lire); } /** diff --git a/htdocs/core/boxes/modules_boxes.php b/htdocs/core/boxes/modules_boxes.php index 1e32a28f25c..9faf45932e2 100644 --- a/htdocs/core/boxes/modules_boxes.php +++ b/htdocs/core/boxes/modules_boxes.php @@ -56,7 +56,7 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty" box /** * @var boolean Condition to have widget visible (in most cases, permissions) */ - public $hidden = 0; + public $hidden = false; /** * @var int Box definition database ID From 360a85cbbc76b26634578081254f68ea02150e0b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 12:32:34 +0100 Subject: [PATCH 18/20] FIX add autofix of count of email target when data is corrupted --- htdocs/comm/mailing/cibles.php | 38 ++++++++++++++++++--- htdocs/comm/mailing/class/mailing.class.php | 34 ++++++++++++++++++ 2 files changed, 67 insertions(+), 5 deletions(-) diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index d8d9873b88b..8bfa82260b9 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -481,11 +481,27 @@ if ($object->fetch($id) >= 0) $sql .= " mc.source_url, mc.source_id, mc.source_type, mc.error_text"; $sql .= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc"; $sql .= " WHERE mc.fk_mailing=".$object->id; - if ($search_lastname) $sql .= natural_search("mc.lastname", $search_lastname); - if ($search_firstname) $sql .= natural_search("mc.firstname", $search_firstname); - if ($search_email) $sql .= natural_search("mc.email", $search_email); - if ($search_other) $sql .= natural_search("mc.other", $search_other); - if ($search_dest_status != '' && $search_dest_status >= -1) $sql .= " AND mc.statut=".$db->escape($search_dest_status)." "; + $asearchcriteriahasbeenset = 0; + if ($search_lastname) { + $sql .= natural_search("mc.lastname", $search_lastname); + $asearchcriteriahasbeenset++; + } + if ($search_firstname) { + $sql .= natural_search("mc.firstname", $search_firstname); + $asearchcriteriahasbeenset++; + } + if ($search_email) { + $sql .= natural_search("mc.email", $search_email); + $asearchcriteriahasbeenset++; + } + if ($search_other) { + $sql .= natural_search("mc.other", $search_other); + $asearchcriteriahasbeenset++; + } + if ($search_dest_status != '' && $search_dest_status >= -1) { + $sql .= " AND mc.statut=".$db->escape($search_dest_status)." "; + $asearchcriteriahasbeenset++; + } $sql .= $db->order($sortfield, $sortorder); // Count total nb of records @@ -499,6 +515,18 @@ if ($object->fetch($id) >= 0) $page = 0; $offset = 0; } + + // Fix/update nbemail on emailing record if it differs (may happen if user edit lines from database directly) + if (empty($asearchcriteriahasbeenset)) { + if ($nbtotalofrecords != $object->email) { + dol_syslog("We found a difference in nb of record in target table and the property ->nbemail, we fix ->nbemail"); + //print "nbemail=".$object->nbemail." nbtotalofrecords=".$nbtotalofrecords; + $resultrefresh = $object->refreshNbOfTargets(); + if ($resultrefresh < 0) { + dol_print_error($db, $object->error, $object->errors); + } + } + } } //$nbtotalofrecords=$object->nbemail; // nbemail is a denormalized field storing nb of targets diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index 56a115a2fea..75efe1f07b2 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -461,6 +461,8 @@ class Mailing extends CommonObject $resql = $this->db->query($sql); if ($resql) { + $this->refreshNbOfTargets(); + return 1; } else @@ -532,6 +534,38 @@ class Mailing extends CommonObject return 0; } + /** + * Refresh denormalized value ->nbemail into emailing record + * Note: There is also the method update_nb into modules_mailings that is used for this. + * + * @return int <0 if KO, >0 if OK + */ + public function refreshNbOfTargets() + { + $sql = "SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX."mailing_cibles"; + $sql .= " WHERE fk_mailing = ".$this->id; + + $resql = $this->db->query($sql); + if ($resql) { + $obj = $this->db->fetch_object($resql); + if ($obj) { + $nbforupdate = $obj->nb; + + $sql = 'UPDATE '.MAIN_DB_PREFIX.'mailing SET nbemail = '.((int) $nbforupdate); + $sql .= ' WHERE rowid = '.$this->id; + + $resqlupdate = $this->db->query($sql); + if (! $resqlupdate) { + $this->error = $this->db->lasterror(); + return -1; + } + } + } else { + $this->error = $this->db->lasterror(); + return -1; + } + return 1; + } /** * Return a link to the object card (with optionally the picto) From 739695c442e40960dc5435c7033853419d7de3f0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 12:49:17 +0100 Subject: [PATCH 19/20] Fix delay to wait between email for emailing refused float. --- htdocs/admin/mailing.php | 2 +- htdocs/comm/mailing/card.php | 2 +- scripts/emailings/mailing-send.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/mailing.php b/htdocs/admin/mailing.php index 921a4a6338c..6e3341dcd8f 100644 --- a/htdocs/admin/mailing.php +++ b/htdocs/admin/mailing.php @@ -125,7 +125,7 @@ print ''; print ''; print $langs->trans("MailingDelay").''; -print ''; +print ''; print ''; diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php index e3cb5a9ad97..80692c1384d 100644 --- a/htdocs/comm/mailing/card.php +++ b/htdocs/comm/mailing/card.php @@ -346,7 +346,7 @@ if (empty($reshook)) if (!empty($conf->global->MAILING_DELAY)) { dol_syslog("Wait a delay of MAILING_DELAY=".$conf->global->MAILING_DELAY); - sleep($conf->global->MAILING_DELAY); + usleep((float) $conf->global->MAILING_DELAY * 1000000); } //test if CHECK READ change statut prospect contact diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index bc7efec7dba..0118697e5ec 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -318,7 +318,7 @@ if ($resql) { } if (!empty($conf->global->MAILING_DELAY)) { - sleep($conf->global->MAILING_DELAY); + usleep((float) $conf->global->MAILING_DELAY * 1000000); } } } else { From 3abceadb86445c021bac43139d5295f8f74adaf6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Dec 2020 13:02:45 +0100 Subject: [PATCH 20/20] Add info --- scripts/emailings/mailing-send.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index 0118697e5ec..5f93600f1be 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -60,6 +60,10 @@ $error = 0; @set_time_limit(0); print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; +if (!empty($conf->global->MAILING_DELAY)) { + print 'A delay of '.((float) $conf->global->MAILING_DELAY * 1000000).' millisecond has been set between each email'."\n"; +} + if ($conf->global->MAILING_LIMIT_SENDBYCLI == '-1') {} $user = new User($db);