mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-06 01:28:19 +01:00
371 lines
9.2 KiB
Plaintext
371 lines
9.2 KiB
Plaintext
|
||
This file describes changes made on external libraries after being included
|
||
in Dolibarr root.
|
||
|
||
|
||
ALL:
|
||
----
|
||
Check "@CHANGE"
|
||
|
||
|
||
|
||
PrestaShopWebservice:
|
||
---------------------
|
||
Replace
|
||
$params = array('filter', 'display', 'sort', 'limit', 'id_shop', 'id_group_shop');
|
||
With
|
||
$params = array('filter', 'display', 'sort', 'limit', 'id_shop', 'id_group_shop', 'date');
|
||
|
||
|
||
|
||
CKEDITOR (4.6.2):
|
||
-----------------
|
||
* In ckeditor/ckeditor/contents.css
|
||
Replace:
|
||
body { ... margin: 20px;
|
||
With
|
||
body { ... margin: 5px;
|
||
|
||
|
||
|
||
ESCPOS:
|
||
-------
|
||
Replace
|
||
private $connector;
|
||
With
|
||
protected $connector;
|
||
|
||
|
||
|
||
NUSOAP:
|
||
-------
|
||
* In file nusoap.php, to avoid a warning,
|
||
Replace
|
||
if (isset($this->methodreturn) && ((get_class($this->methodreturn) == 'soap_fault') || (get_class($this->methodreturn) == 'nusoap_fault'))) {
|
||
By
|
||
if (! is_array($this->methodreturn) && isset($this->methodreturn) && ((get_class($this->methodreturn) == 'soap_fault') || (get_class($this->methodreturn) == 'nusoap_fault'))) {
|
||
|
||
* In file nusoap.php, to avoid a warning,
|
||
Replace call to serialize_val with no bugged value
|
||
|
||
* In all files, replace constructor names into __construct. Replace also parent::constructor_name with parent::__construct
|
||
|
||
* Line 4222 of file nusoap.php
|
||
|
||
$rev = array();
|
||
preg_match('/\$Revision: ([^ ]+)/', $this->revision, $rev);
|
||
$this->outgoing_headers[] = "X-SOAP-Server: $this->title/$this->version (".(isset($rev[1]) ? $rev[1] : '').")";
|
||
|
||
|
||
|
||
|
||
TCPDF:
|
||
------
|
||
* Replace in tcpdf.php:
|
||
|
||
if (isset($this->imagekeys)) {
|
||
foreach($this->imagekeys as $file) {
|
||
unlink($file);
|
||
}
|
||
}
|
||
with
|
||
|
||
if (isset($this->imagekeys)) {
|
||
foreach($this->imagekeys as $file) {
|
||
// DOL CHANGE If we keep this, source image files are physically destroyed
|
||
// unlink($file);
|
||
}
|
||
}
|
||
|
||
* Replace in tcpdf.php
|
||
|
||
$preserve = array(
|
||
'file_id',
|
||
'internal_encoding',
|
||
'state',
|
||
'bufferlen',
|
||
'buffer',
|
||
'cached_files',
|
||
|
||
with
|
||
|
||
$preserve = array(
|
||
'file_id',
|
||
'internal_encoding',
|
||
'state',
|
||
'bufferlen',
|
||
'buffer',
|
||
'cached_files',
|
||
// @CHANGE DOL
|
||
'imagekeys',
|
||
|
||
* Replace in tcpdf.php
|
||
|
||
if (!@TCPDF_STATIC::file_exists($file)) {
|
||
return false;
|
||
}
|
||
|
||
with
|
||
|
||
if (!@TCPDF_STATIC::file_exists($file)) {
|
||
// DOL CHANGE If we keep this, the image is not visible on pages after the first one.
|
||
//var_dump($file.' '.(!@TCPDF_STATIC::file_exists($file)));
|
||
//return false;
|
||
$tfile = str_replace(' ', '%20', $file);
|
||
if (@TCPDF_STATIC::file_exists($tfile)) {
|
||
$file = $tfile;
|
||
}
|
||
}
|
||
|
||
* Replace in tcpdf.php
|
||
|
||
if (($imgsrc[0] === '/') AND !empty($_SERVER['DOCUMENT_ROOT']) AND ($_SERVER['DOCUMENT_ROOT'] != '/')) {
|
||
|
||
with
|
||
|
||
// @CHANGE LDR Add support for src="file://..." links
|
||
if (strpos($imgsrc, 'file://') === 0) {
|
||
$imgsrc = str_replace('file://', '/', $imgsrc);
|
||
$imgsrc = urldecode($imgsrc);
|
||
$testscrtype = @parse_url($imgsrc);
|
||
if (empty($testscrtype['query'])) {
|
||
// convert URL to server path
|
||
$imgsrc = str_replace(K_PATH_URL, K_PATH_MAIN, $imgsrc);
|
||
} elseif (preg_match('|^https?://|', $imgsrc) !== 1) {
|
||
// convert URL to server path
|
||
$imgsrc = str_replace(K_PATH_MAIN, K_PATH_URL, $imgsrc);
|
||
}
|
||
}
|
||
elseif (($imgsrc[0] === '/') AND !empty($_SERVER['DOCUMENT_ROOT']) AND ($_SERVER['DOCUMENT_ROOT'] != '/')) {
|
||
|
||
|
||
* In tecnickcom/tcpdf/include/tcpdf_static.php, in function fopenLocal, replace
|
||
|
||
if (strpos($filename, '://') === false) {
|
||
|
||
with
|
||
|
||
if (strpos($filename, '//') === 0) {
|
||
// Share folder on a (windows) server
|
||
// e.g.: "//[MyServerName]/[MySharedFolder]/"
|
||
//
|
||
// nothing to change
|
||
}
|
||
elseif (strpos($filename, '://') === false)
|
||
|
||
* To avoid to have QRcode changed because generated with a random mask, replace
|
||
define('QR_FIND_FROM_RANDOM', 2);
|
||
with
|
||
define('QR_FIND_FROM_RANDOM', false);
|
||
|
||
* Removed useless directories ("examples", "tools")
|
||
|
||
* Optionnaly, removed all fonts except
|
||
dejavusans* (used by greek, arab, persan, romanian, turkish),
|
||
freemono* (russian),
|
||
cid*+msungstdlight+stsongstdlight+uni2cid* (chinese),
|
||
helvetica* (all other languages),
|
||
zapfdingbats.php (for special chars like form checkboxes)
|
||
|
||
* Optionnaly, made freemono the default monotype font if we removed courier
|
||
In htdocs/includes/tecnickcom/tcpdf/tcpdf.php
|
||
- protected $default_monospaced_font = 'courier';
|
||
+ protected $default_monospaced_font = 'freemono';
|
||
|
||
* In tecnickcom/tcpdf/include/tcpdf_static, in function intToRoman, right at the beginning
|
||
of the function, replace:
|
||
|
||
$roman = '';
|
||
|
||
with:
|
||
|
||
$roman = '';
|
||
if ($number >= 4000) {
|
||
// do not represent numbers above 4000 in Roman numerals
|
||
return strval($number);
|
||
}
|
||
|
||
|
||
|
||
TCPDI:
|
||
------
|
||
Add file fpdf_tpl.php 1.2
|
||
|
||
Add file tcpdi.php
|
||
|
||
Add file tcpdi_parser.php and replace:
|
||
require_once(dirname(__FILE__).'/include/tcpdf_filters.php');
|
||
with:
|
||
require_once(dirname(__FILE__).'/../tecnickcom/tcpdf/include/tcpdf_filters.php');
|
||
|
||
|
||
* Fix syntax error by replacing
|
||
} elseif (($key == '/Index') AND ($v[0] == PDF_TYPE_ARRAY AND count($v[1] >= 2))) {
|
||
with
|
||
} elseif (($key == '/Index') AND ($v[0] == PDF_TYPE_ARRAY AND count($v[1]) >= 2)) {
|
||
|
||
* Fix php fatal error on php 8.0 on tcpdi.php
|
||
while (list($k, $v) = each($value[1])) {
|
||
with
|
||
foreach ($value[1] as $k => $v) {
|
||
|
||
* Fix by replacing
|
||
if ($res[0] == PDF_TYPE_OBJECT)
|
||
with
|
||
if (isset($res[0]) && $res[0] == PDF_TYPE_OBJECT)
|
||
|
||
|
||
|
||
JSGANTT:
|
||
--------
|
||
* Replace in function JSGantt.taskLink
|
||
var OpenWindow=window.open(pRef, "newwin", "height="+vHeight+",width="+vWidth);
|
||
with
|
||
// LDR To open in same window
|
||
//var OpenWindow=window.open(pRef, "newwin", "height="+vHeight+",width="+vWidth);
|
||
window.location.href=pRef
|
||
|
||
* Replace
|
||
vTmpDiv=this.newNode(vTmpCell, 'div', null, null, vTaskList[i].getResource());
|
||
with
|
||
var vTmpNode=this.newNode(vTmpCell, 'div', null, '');
|
||
vTmpNode=this.newNode(vTmpNode, 'a', null, '', vLangs[vLang]['moreinfo']);
|
||
vTmpNode.setAttribute('href',vTaskList[i].getLink());
|
||
|
||
* Replace '% Comp.' to have a smaller text column header
|
||
'comp':'% Comp.'
|
||
with
|
||
'comp':'%'
|
||
|
||
|
||
|
||
JCROP:
|
||
------
|
||
* Remove analytics tag into file index.html
|
||
|
||
|
||
|
||
JQUERYFILETREE:
|
||
---------------
|
||
* Remove directory htdocs/includes/jquery/plugins/jqueryFileTree/connectors
|
||
|
||
|
||
|
||
RESTLER:
|
||
--------
|
||
|
||
* Add line into Util.php to complete function
|
||
|
||
public static function getShortName($className)
|
||
{
|
||
// @CHANGE LDR
|
||
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;
|
||
|
||
* Replace
|
||
|
||
$loaders = array_unique(static::$rogueLoaders);
|
||
|
||
with
|
||
|
||
$loaders = array_unique(static::$rogueLoaders, SORT_REGULAR);
|
||
|
||
* Replace CommentParser.php line 423
|
||
elseif (count($value) && is_numeric($value[0]))
|
||
|
||
with
|
||
|
||
elseif (count($value) && isset($value[0]) && is_numeric($value[0]))
|
||
|
||
* Add CommentParser.php line 406 & 407 to remove a warning on api request in php 8.1
|
||
empty($value[0]) ? null :
|
||
empty($value[1]) ? null :
|
||
|
||
+With swagger 2 provided into /explorer:
|
||
----------------------------------------
|
||
|
||
Change content of file htdocs/includes/restler/framework/Luracast/Restler/explorer/index.html
|
||
|
||
|
||
|
||
PARSEDOWN
|
||
---------
|
||
|
||
* Add support of css by adding in Parsedown.php:
|
||
|
||
// @CHANGE LDR
|
||
'class' => $Link['element']['attributes']['class']
|
||
|
||
...
|
||
|
||
// @CHANGE LDR
|
||
if (preg_match('/{([^}]+)}/', $remainder, $matches2))
|
||
{
|
||
$Element['attributes']['class'] = $matches2[1];
|
||
$remainder = preg_replace('/{'.preg_quote($matches2[1],'/').'}/', '', $remainder);
|
||
}
|
||
|
||
|
||
// @CHANGE LDR
|
||
//$markup .= $this->{$Element['handler']}($Element['text']);
|
||
$markup .= preg_replace('/>{[^}]+}/', '>', $this->{$Element['handler']}($Element['text']));
|
||
|
||
|
||
|
||
* Fix to avoid fatal error when mb_strlen not available:
|
||
|
||
// @CHANGE LDR Fix when mb_strlen is not available
|
||
//$shortage = 4 - mb_strlen($line, 'utf-8') % 4;
|
||
if (function_exists('mb_strlen')) $len = mb_strlen($line, 'utf-8');
|
||
else $len = strlen($line);
|
||
$shortage = 4 - $len % 4;
|
||
|
||
|
||
|
||
OAUTH
|
||
-----
|
||
Add into Class Google of file OAuth2/Service/Google:
|
||
|
||
// LDR CHANGE Add approval_prompt to force the prompt if value is set to 'force' so it force return of a "refresh token" in addition to "standard token"
|
||
public $approvalPrompt='auto';
|
||
public function setApprouvalPrompt($prompt)
|
||
{
|
||
if (!in_array($prompt, array('auto', 'force'), true)) {
|
||
// @todo Maybe could we rename this exception
|
||
throw new InvalidAccessTypeException('Invalid approuvalPrompt, expected either auto or force.');
|
||
}
|
||
$this->approvalPrompt = $prompt;
|
||
}
|
||
|
||
|
||
|
||
JEDITABLE.JS
|
||
------------
|
||
|
||
* <button type="submit" /> => <button class="button" type="submit" />
|
||
* <button type="cancel" /> => <button class="button" type="cancel" />
|
||
|
||
|
||
|
||
SELECT2
|
||
-------
|
||
|
||
Edit CSS to restore line removed between 4.0.5 and 4.0.6. It generates this bug: https://github.com/select2/select2/issues/5832
|
||
|
||
.select2-hidden-accessible {
|
||
margin: -10000px !important; /* line to restore */
|
||
}
|
||
|
||
|