Changeset 124193 in spip-zone


Ignore:
Timestamp:
Apr 15, 2020, 9:18:41 AM (7 weeks ago)
Author:
tofulm
Message:

maj de la lib mpdf

Location:
_plugins_/spipdf/branches/mpdf
Files:
4 added
42 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spipdf/branches/mpdf

    • Property subgit:lock:f43edc7c3aeb13f032606d41c21c82113bf9818b set to 2020-04-15T11:18:37.426
  • _plugins_/spipdf/branches/mpdf/vendor/composer/installed.json

    r117543 r124193  
    22    {
    33        "name": "mpdf/mpdf",
    4         "version": "v8.0.2",
    5         "version_normalized": "8.0.2.0",
     4        "version": "v8.0.5",
     5        "version_normalized": "8.0.5.0",
    66        "source": {
    77            "type": "git",
    88            "url": "https://github.com/mpdf/mpdf.git",
    9             "reference": "ab0662606cc2396015616633946f3b8918d818a7"
    10         },
    11         "dist": {
    12             "type": "zip",
    13             "url": "https://api.github.com/repos/mpdf/mpdf/zipball/ab0662606cc2396015616633946f3b8918d818a7",
    14             "reference": "ab0662606cc2396015616633946f3b8918d818a7",
     9            "reference": "bad32aa9cd5958175aef185c02e032ddbadc56ea"
     10        },
     11        "dist": {
     12            "type": "zip",
     13            "url": "https://api.github.com/repos/mpdf/mpdf/zipball/bad32aa9cd5958175aef185c02e032ddbadc56ea",
     14            "reference": "bad32aa9cd5958175aef185c02e032ddbadc56ea",
    1515            "shasum": ""
    1616        },
     
    2020            "myclabs/deep-copy": "^1.7",
    2121            "paragonie/random_compat": "^1.4|^2.0|9.99.99",
    22             "php": "^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0",
     22            "php": "^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0",
    2323            "psr/log": "^1.0",
    2424            "setasign/fpdi": "^2.1"
     
    2828            "mpdf/qrcode": "^1.0.0",
    2929            "phpunit/phpunit": "^5.0",
    30             "squizlabs/php_codesniffer": "^2.7.0",
     30            "squizlabs/php_codesniffer": "^3.5.0",
    3131            "tracy/tracy": "^2.4"
    3232        },
     
    3636            "ext-zlib": "Needed for compression of embedded resources, such as fonts"
    3737        },
    38         "time": "2019-06-17T09:03:49+00:00",
     38        "time": "2020-02-05T08:43:46+00:00",
    3939        "type": "library",
    4040        "extra": {
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/.travis.yml

    r117543 r124193  
    66
    77php:
     8  - 7.3
     9  - 7.1
    810  - 5.6
     11  - 7.4
     12  - 7.2
    913  - 7.0
    10   - 7.1
    11   - 7.2
    12   - 7.3
    1314  - nightly
    1415
     
    3839  - |
    3940    if [[ "$LINT" == "1" ]]; then
    40       ./vendor/bin/phpcs -v --report-width=160 --standard=ruleset.xml --severity=1 --warning-severity=0 --extensions=php src utils tests
     41      composer cs
    4142    elif [[ "$COVERAGE" == "1" ]]; then
    42       vendor/bin/phpunit --coverage-text
     43      composer coverage
    4344    else
    44       vendor/bin/phpunit
     45      composer test
    4546    fi
    4647
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/CHANGELOG.md

    r117543 r124193  
     1mPDF 8.1.x
     2===========================
     3
     4
    15mPDF 8.0.x
    26===========================
    37
     8* Add C128RAW barcode type to create any barcode (ex: subtype change in middle of barcode) (#1124)
     9* Add proxy support to curl
     10* Fixed date and time format in the informations dictionary (#1083, @peterdevpl)
     11* Checking allowed stream wrappers in CssManager
     12* PHP 7.4 support (until final 7.4 release with composer --ignore-platform-reqs)
     13* Improve debugging of remote content issues (@ribeirobreno)
     14* Added `exposeVersion` configuration variable allowing to hide mPDF version from Producer tag and HTTP headers
    415* Added the check for JPEG SOF header 0xFF 0xC1 (extended) (@jamiejones85)
    516* Allows setting `none` as zoom mode in `SetDisplayMode` method, so that OpenAction is not written (#602)
     
    718* Fixed parsing of top-left-bottom-right CSS rules with !important (#1009)
    819* Fixed skipping ordered list numbering with page-break-inside: avoid (#339)
     20* Compound classes selector support, like `.one.two` or `div.message.special` (#538, @peterdevpl)
     21* Fixed CMYK colors in text-shadow (#1115, @lexilya)
    922
    1023mPDF 8.0.0
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/README.md

    r117543 r124193  
    55under the [GNU GPL v2 licence](LICENSE.txt).
    66
     7[![Latest Stable Version](https://poser.pugx.org/mpdf/mpdf/v/stable)](https://packagist.org/packages/mpdf/mpdf)
    78[![Build Status](https://travis-ci.org/mpdf/mpdf.svg?branch=development)](https://travis-ci.org/mpdf/mpdf)
     9[![Total Downloads](https://poser.pugx.org/mpdf/mpdf/downloads)](https://packagist.org/packages/mpdf/mpdf)
     10[![License](https://poser.pugx.org/mpdf/mpdf/license)](https://packagist.org/packages/mpdf/mpdf)
     11
    812
    913> Note: If you are viewing this file on mPDF GitHub repository homepage or on Packagist, please note that
     
    1317============
    1418
    15 **mPDF 7+** requires PHP `^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0`. PHP `mbstring` and `gd` extensions have to be loaded.
     19PHP versions and extensions
     20---------------------------
     21
     22- `mPDF >=7.0` is supported on PHP `^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0`
     23- `PHP 7.3` is supported since `mPDF v7.1.7`
     24- `PHP 7.4` is supported since `mPDF v8.0.4`
     25
     26
     27PHP `mbstring` and `gd` extensions have to be loaded.
    1628
    1729Additional extensions may be required for some advanced features such as `zlib` for compression of output and
    1830embedded resources such as fonts, `bcmath` for generating barcodes or `xml` for character set conversion
    1931and SVG handling.
     32
     33Known server caveats
     34--------------------
    2035
    2136mPDF has some problems with fetching external HTTP resources with single threaded servers such as `php -S`. A proper
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/composer.json

    r117543 r124193  
    3232        "require": {
    3333
    34                 "php": "^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0",
     34                "php": "^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0",
    3535
    3636                "ext-gd": "*",
     
    4848                "phpunit/phpunit": "^5.0",
    4949                "mockery/mockery": "^0.9.5",
    50                 "squizlabs/php_codesniffer": "^2.7.0",
     50                "squizlabs/php_codesniffer": "^3.5.0",
    5151                "tracy/tracy": "^2.4",
    5252                "mpdf/qrcode": "^1.0.0"
     
    8585                "post-install-cmd": [
    8686                        "php -r \"chmod('./tmp', 0777);\""
    87                 ]
     87                ],
     88                "cs": "@php vendor/bin/phpcs -v --report-width=160 --standard=ruleset.xml --severity=1 --warning-severity=0 --extensions=php src utils tests",
     89                "test": "@php vendor/bin/phpunit",
     90                "coverage": "@php vendor/bin/phpunit --coverage-text"
    8891        },
    8992
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/ruleset.xml

    r117543 r124193  
    22<ruleset name="PSR2Tabs">
    33    <description>PSR2 with tabs instead of spaces.</description>
    4     <arg name="tab-width" value="4"/>
     4    <arg name="tab-width" value="4" />
    55    <rule ref="PSR2">
    6         <exclude name="PSR2.Classes.ClassDeclaration.CloseBraceAfterBody"/>
    7         <exclude name="PSR2.Classes.PropertyDeclaration.ScopeMissing"/>
    8         <exclude name="PSR2.Classes.PropertyDeclaration.VarUsed"/>
    96
    10         <exclude name="PSR2.ControlStructures.SwitchDeclaration.BodyOnNextLineCASE"/>
     7        <exclude name="Generic.Commenting.DocComment" />
     8        <exclude name="Generic.Files.LineLength.TooLong" />
     9        <exclude name="Generic.Files.LineLength.MaxExceeded" />
     10        <exclude name="Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase)" />
     11        <exclude name="Generic.WhiteSpace.DisallowTabIndent" />
    1112
    12         <exclude name="PSR1.Methods.CamelCapsMethodName.NotCamelCaps"/>
     13        <exclude name="PSR1.Files.SideEffects.FoundWithSymbols" />
     14        <exclude name="PSR1.Methods.CamelCapsMethodName.NotCamelCaps" />
    1315
    14         <exclude name="Squiz.Scope.MethodScope.Missing"/>
     16        <exclude name="PSR2.Classes.ClassDeclaration.CloseBraceAfterBody" />
     17        <exclude name="PSR2.Classes.PropertyDeclaration.ScopeMissing" />
     18        <exclude name="PSR2.Classes.PropertyDeclaration.Underscore" />
     19        <exclude name="PSR2.Classes.PropertyDeclaration.VarUsed" />
     20        <exclude name="PSR2.ControlStructures.SwitchDeclaration.BodyOnNextLineCASE" />
     21        <exclude name="PSR2.Methods.MethodDeclaration.Underscore" />
    1522
    16         <exclude name="Squiz.WhiteSpace.ControlStructureSpacing.SpacingAfterOpen"/>
    17         <exclude name="Squiz.WhiteSpace.ControlStructureSpacing.SpacingBeforeClose"/>
     23        <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseBrace" />
     24        <exclude name="Squiz.Scope.MethodScope.Missing" />
     25        <exclude name="Squiz.WhiteSpace.ControlStructureSpacing.SpacingAfterOpen" />
     26        <exclude name="Squiz.WhiteSpace.ControlStructureSpacing.SpacingBeforeClose" />
    1827
    19         <exclude name="Generic.Commenting.DocComment"/>
    20         <exclude name="Generic.Files.LineLength.MaxExceeded"/>
    21         <exclude name="Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase)"/>
    22         <exclude name="Generic.WhiteSpace.DisallowTabIndent"/>
    2328    </rule>
    24     <rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/>
     29
     30    <rule ref="Generic.Formatting.SpaceAfterCast">
     31        <properties>
     32            <property name="spacing" value="1" />
     33        </properties>
     34    </rule>
     35
     36    <rule ref="Generic.WhiteSpace.DisallowSpaceIndent" />
    2537    <rule ref="Generic.WhiteSpace.ScopeIndent">
    2638        <properties>
    27             <property name="indent" value="4"/>
    28             <property name="tabIndent" value="true"/>
    29         </properties>
    30     </rule>
    31     <rule ref="Generic.Files.LineLength">
    32         <properties>
    33             <property name="lineLimit" value="160"/>
    34             <property name="absoluteLineLimit" value="200"/>
     39            <property name="indent" value="4" />
     40            <property name="tabIndent" value="true" />
    3541        </properties>
    3642    </rule>
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Barcode.php

    r117543 r124193  
    9797                                return new Barcode\Code128($code, 'C');
    9898
     99                        case 'C128RAW':  // CODE 128 RAW -- code is a space separated list of codes with startcode but without checkdigit,stop,end ex: "105 12 34"
     100                                return new Barcode\Code128($code, 'RAW');
     101
    99102                        case 'EAN128A':  // EAN 128 A
    100103                                return new Barcode\Code128($code, 'A', true);
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Barcode/Code128.php

    r117543 r124193  
    149149
    150150                switch (strtoupper($type)) {
     151                        case 'RAW':
     152                                $newCode='';
     153                                $startid = false;
     154                                foreach (explode(" ", $code) as $v) {
     155                                        if (is_numeric($v) && round($v, 0) == $v) {
     156                                                if ($v>=0 && $v<=105) {
     157                                                        if ($startid===false) {
     158                                                                $startid=$v;
     159                                                        } else {
     160                                                                $newCode.=chr($v);
     161                                                        }
     162                                                } else {
     163                                                        throw new \Mpdf\Barcode\BarcodeException('Invalid CODE128RAW barcode value. 0-105 needed');
     164                                                }
     165                                        } else {
     166                                                //double spaces generates empty $v any other is not allowed
     167                                                if ($v!='') {
     168                                                        throw new \Mpdf\Barcode\BarcodeException('Invalid CODE128RAW barcode value. 0-105 needed');
     169                                                }
     170                                        }
     171                                }
     172                                if ($startid<103 || $startid>105) {
     173                                        throw new \Mpdf\Barcode\BarcodeException('Invalid CODE128RAW startid value. Must 103,104 or 105 (for A,B or C)');
     174                                }
     175                                $keys='';
     176                                for ($i = 0; $i <= 105; ++$i) {
     177                                        $keys .= chr($i);
     178                                }
     179                                $code=$newCode;
     180                                break;
    151181                        case 'A':
    152182                                $startid = 103;
     
    173203                                $hclen = (strlen($code) / 2);
    174204                                for ($i = 0; $i < $hclen; ++$i) {
    175                                         $newCode .= chr((int) ($code{(2 * $i)} . $code{(2 * $i + 1)}));
     205                                        if ($code[2 * $i]<"0" || $code[2 * $i]>"9" || $code[2 * $i + 1]<"0" || $code[2 * $i + 1]>"9") {
     206                                                throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in CODE128C barcode value', $code[$i]));
     207                                        }
     208                                        $newCode .= chr((int) ($code[2 * $i] . $code[2 * $i + 1]));
    176209                                }
    177210                                $code = $newCode;
     
    193226                                $sum += 102;
    194227                        } else {
     228                                if (strpos($keys, $code[$i]) === false) {
     229                                        throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in CODE128'.$type.' barcode value', $code[$i]));
     230                                }
    195231                                $sum += (strpos($keys, $code[$i]) * ($i + 1));
    196232                        }
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Barcode/Code93.php

    r117543 r124193  
    120120
    121121                for ($i = 0; $i < $clen; ++$i) {
    122                         if (ord($code{$i}) > 127) {
    123                                 throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in Code93 barcode value', $code{$i}));
    124                         }
    125                         $code_ext .= $encode[$code{$i}];
     122                        if (ord($code[$i]) > 127) {
     123                                throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in Code93 barcode value', $code[$i]));
     124                        }
     125                        $code_ext .= $encode[$code[$i]];
    126126                }
    127127
     
    136136
    137137                for ($i = 0; $i < $clen; ++$i) {
    138                         $char = ord($code{$i});
     138                        $char = ord($code[$i]);
    139139                        if (!isset($chr[$char])) {
    140140                                // invalid character
     
    147147                                        $t = false; // space
    148148                                }
    149                                 $w = $chr[$char]{$j};
     149                                $w = $chr[$char][$j];
    150150                                $bararray['bcode'][$k] = ['t' => $t, 'w' => $w, 'h' => 1, 'p' => 0];
    151151                                $bararray['maxw'] += $w;
     
    184184                $check = 0;
    185185                for ($i = ($len - 1); $i >= 0; --$i) {
    186                         $k = array_keys($chars, $code{$i});
     186                        $k = array_keys($chars, $code[$i]);
    187187                        $check += ($k[0] * $p);
    188188                        ++$p;
     
    199199                $check = 0;
    200200                for ($i = $len; $i >= 0; --$i) {
    201                         $k = array_keys($chars, $code{$i});
     201                        $k = array_keys($chars, $code[$i]);
    202202                        $check += ($k[0] * $p);
    203203                        ++$p;
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Barcode/EanExt.php

    r117543 r124193  
    4444                        $r = $code % 4;
    4545                } elseif ($length == 5) {
    46                         $r = (3 * ($code{0} + $code{2} + $code{4})) + (9 * ($code{1} + $code{3}));
     46                        $r = (3 * ($code[0] + $code[2] + $code[4])) + (9 * ($code[1] + $code[3]));
    4747                        $r %= 10;
    4848                } else {
     
    9696                $p = $parities[$length][$r];
    9797                $seq = '1011'; // left guard bar
    98                 $seq .= $codes[$p[0]][$code{0}];
     98                $seq .= $codes[$p[0]][$code[0]];
    9999                for ($i = 1; $i < $length; ++$i) {
    100100                        $seq .= '01'; // separator
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Barcode/EanUpc.php

    r117543 r124193  
    3636        private function init($code, $length)
    3737        {
     38                if (preg_match('/[\D]+/', $code)) {
     39                        throw new \Mpdf\Barcode\BarcodeException('Invalid EAN UPC barcode value');
     40                }
     41
    3842                $upce = false;
    3943                $checkdigit = false;
     
    210214                if ($upce && isset($upceCode)) {
    211215                        $bararray = ['code' => $upceCode, 'maxw' => 0, 'maxh' => 1, 'bcode' => []];
    212                         $p = $upceParities[$code{1}][$r];
     216                        $p = $upceParities[$code[1]][$r];
    213217                        for ($i = 0; $i < 6; ++$i) {
    214218                                $seq .= $codes[$p[$i]][$upceCode[$i]];
     
    223227                                }
    224228                        } else {
    225                                 $p = $parities[$code{0}];
     229                                $p = $parities[$code[0]];
    226230                                for ($i = 1; $i < $halfLen; ++$i) {
    227231                                        $seq .= $codes[$p[$i - 1]][$code[$i]];
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Barcode/Imb.php

    r117543 r124193  
    113113
    114114                $binaryCode = bcmul($binaryCode, 10);
    115                 $binaryCode = bcadd($binaryCode, $trackingNumber{0});
     115                $binaryCode = bcadd($binaryCode, $trackingNumber[0]);
    116116                $binaryCode = bcmul($binaryCode, 5);
    117                 $binaryCode = bcadd($binaryCode, $trackingNumber{1});
     117                $binaryCode = bcadd($binaryCode, $trackingNumber[1]);
    118118
    119119                $binaryCode .= substr($trackingNumber, 2, 18);
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Cache.php

    r117543 r124193  
    1414        public function __construct($basePath, $cleanupInterval = 3600)
    1515        {
    16 
    1716                if (!$this->createBasePath($basePath)) {
    1817                        throw new \Mpdf\MpdfException(sprintf('Temporary files directory "%s" is not writable', $basePath));
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Color/ColorConverter.php

    r117543 r124193  
    6767                $this->ensureBinaryColorFormat($c);
    6868
    69                 if ($c{0} == static::MODE_RGB || $c{0} == static::MODE_RGBA) {
    70                         list($h, $s, $l) = $this->colorModeConverter->rgb2hsl(ord($c{1}) / 255, ord($c{2}) / 255, ord($c{3}) / 255);
     69                if ($c[0] == static::MODE_RGB || $c[0] == static::MODE_RGBA) {
     70                        list($h, $s, $l) = $this->colorModeConverter->rgb2hsl(ord($c[1]) / 255, ord($c[2]) / 255, ord($c[3]) / 255);
    7171                        $l += ((1 - $l) * 0.8);
    7272                        list($r, $g, $b) = $this->colorModeConverter->hsl2rgb($h, $s, $l);
    7373                        $ret = [3, $r, $g, $b];
    74                 } elseif ($c{0} == static::MODE_CMYK || $c{0} == static::MODE_CMYKA) {
    75                         $ret = [4, max(0, ord($c{1}) - 20), max(0, ord($c{2}) - 20), max(0, ord($c{3}) - 20), max(0, ord($c{4}) - 20)];
    76                 } elseif ($c{0} == static::MODE_GRAYSCALE) {
    77                         $ret = [1, min(255, ord($c{1}) + 32)];
     74                } elseif ($c[0] == static::MODE_CMYK || $c[0] == static::MODE_CMYKA) {
     75                        $ret = [4, max(0, ord($c[1]) - 20), max(0, ord($c[2]) - 20), max(0, ord($c[3]) - 20), max(0, ord($c[4]) - 20)];
     76                } elseif ($c[0] == static::MODE_GRAYSCALE) {
     77                        $ret = [1, min(255, ord($c[1]) + 32)];
    7878                }
    7979
     
    8888                $this->ensureBinaryColorFormat($c);
    8989
    90                 if ($c{0} == static::MODE_RGB || $c{0} == static::MODE_RGBA) {
    91                         list($h, $s, $l) = $this->colorModeConverter->rgb2hsl(ord($c{1}) / 255, ord($c{2}) / 255, ord($c{3}) / 255);
     90                if ($c[0] == static::MODE_RGB || $c[0] == static::MODE_RGBA) {
     91                        list($h, $s, $l) = $this->colorModeConverter->rgb2hsl(ord($c[1]) / 255, ord($c[2]) / 255, ord($c[3]) / 255);
    9292                        $s *= 0.25;
    9393                        $l *= 0.75;
    9494                        list($r, $g, $b) = $this->colorModeConverter->hsl2rgb($h, $s, $l);
    9595                        $ret = [3, $r, $g, $b];
    96                 } elseif ($c{0} == static::MODE_CMYK || $c{0} == static::MODE_CMYKA) {
    97                         $ret = [4, min(100, ord($c{1}) + 20), min(100, ord($c{2}) + 20), min(100, ord($c{3}) + 20), min(100, ord($c{4}) + 20)];
    98                 } elseif ($c{0} == static::MODE_GRAYSCALE) {
    99                         $ret = [1, max(0, ord($c{1}) - 32)];
     96                } elseif ($c[0] == static::MODE_CMYK || $c[0] == static::MODE_CMYKA) {
     97                        $ret = [4, min(100, ord($c[1]) + 20), min(100, ord($c[2]) + 20), min(100, ord($c[3]) + 20), min(100, ord($c[4]) + 20)];
     98                } elseif ($c[0] == static::MODE_GRAYSCALE) {
     99                        $ret = [1, max(0, ord($c[1]) - 32)];
    100100                }
    101101                $c = array_pad($ret, 6, 0);
     
    113113                $this->ensureBinaryColorFormat($c);
    114114
    115                 if ($c{0} == static::MODE_RGB || $c{0} == static::MODE_RGBA) {
    116                         return [3, 255 - ord($c{1}), 255 - ord($c{2}), 255 - ord($c{3})];
    117                 }
    118 
    119                 if ($c{0} == static::MODE_CMYK || $c{0} == static::MODE_CMYKA) {
    120                         return [4, 100 - ord($c{1}), 100 - ord($c{2}), 100 - ord($c{3}), 100 - ord($c{4})];
    121                 }
    122 
    123                 if ($c{0} == static::MODE_GRAYSCALE) {
    124                         return [1, 255 - ord($c{1})];
     115                if ($c[0] == static::MODE_RGB || $c[0] == static::MODE_RGBA) {
     116                        return [3, 255 - ord($c[1]), 255 - ord($c[2]), 255 - ord($c[3])];
     117                }
     118
     119                if ($c[0] == static::MODE_CMYK || $c[0] == static::MODE_CMYKA) {
     120                        return [4, 100 - ord($c[1]), 100 - ord($c[2]), 100 - ord($c[3]), 100 - ord($c[4])];
     121                }
     122
     123                if ($c[0] == static::MODE_GRAYSCALE) {
     124                        return [1, 255 - ord($c[1])];
    125125                }
    126126
     
    136136        public function colAtoString($c)
    137137        {
    138                 if ($c{0} == static::MODE_GRAYSCALE) {
    139                         return 'rgb(' . ord($c{1}) . ', ' . ord($c{1}) . ', ' . ord($c{1}) . ')';
    140                 }
    141 
    142                 if ($c{0} == static::MODE_SPOT) {
    143                         return 'spot(' . ord($c{1}) . ', ' . ord($c{2}) . ')';
    144                 }
    145 
    146                 if ($c{0} == static::MODE_RGB) {
    147                         return 'rgb(' . ord($c{1}) . ', ' . ord($c{2}) . ', ' . ord($c{3}) . ')';
    148                 }
    149 
    150                 if ($c{0} == static::MODE_CMYK) {
    151                         return 'cmyk(' . ord($c{1}) . ', ' . ord($c{2}) . ', ' . ord($c{3}) . ', ' . ord($c{4}) . ')';
    152                 }
    153 
    154                 if ($c{0} == static::MODE_RGBA) {
    155                         return 'rgba(' . ord($c{1}) . ', ' . ord($c{2}) . ', ' . ord($c{3}) . ', ' . sprintf('%0.2F', ord($c{4}) / 100) . ')';
    156                 }
    157 
    158                 if ($c{0} == static::MODE_CMYKA) {
    159                         return 'cmyka(' . ord($c{1}) . ', ' . ord($c{2}) . ', ' . ord($c{3}) . ', ' . ord($c{4}) . ', ' . sprintf('%0.2F', ord($c{5}) / 100) . ')';
     138                if ($c[0] == static::MODE_GRAYSCALE) {
     139                        return 'rgb(' . ord($c[1]) . ', ' . ord($c[1]) . ', ' . ord($c[1]) . ')';
     140                }
     141
     142                if ($c[0] == static::MODE_SPOT) {
     143                        return 'spot(' . ord($c[1]) . ', ' . ord($c[2]) . ')';
     144                }
     145
     146                if ($c[0] == static::MODE_RGB) {
     147                        return 'rgb(' . ord($c[1]) . ', ' . ord($c[2]) . ', ' . ord($c[3]) . ')';
     148                }
     149
     150                if ($c[0] == static::MODE_CMYK) {
     151                        return 'cmyk(' . ord($c[1]) . ', ' . ord($c[2]) . ', ' . ord($c[3]) . ', ' . ord($c[4]) . ')';
     152                }
     153
     154                if ($c[0] == static::MODE_RGBA) {
     155                        return 'rgba(' . ord($c[1]) . ', ' . ord($c[2]) . ', ' . ord($c[3]) . ', ' . sprintf('%0.2F', ord($c[4]) / 100) . ')';
     156                }
     157
     158                if ($c[0] == static::MODE_CMYKA) {
     159                        return 'cmyka(' . ord($c[1]) . ', ' . ord($c[2]) . ', ' . ord($c[3]) . ', ' . ord($c[4]) . ', ' . sprintf('%0.2F', ord($c[5]) / 100) . ')';
    160160                }
    161161
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Color/ColorModeConverter.php

    r117543 r124193  
    5353                        //else { return array (4,0,0,0,100); }
    5454                }
     55
    5556                $K = $min;
    5657                $black = 1 - $K;
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Color/ColorSpaceRestrictor.php

    r117543 r124193  
    5151         * @param string[] $PDFAXwarnings
    5252         *
    53          * @return float[]
     53         * @return float[]|mixed
    5454         */
    5555        public function restrictColorSpace($c, $color, &$PDFAXwarnings = [])
    5656        {
     57                if (!is_array($c)) {
     58                        return $c;
     59                }
     60
    5761                $mode = (int) $c[0];
    5862                switch ($mode) {
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Config/ConfigVariables.php

    • Property svn:executable deleted
    r117543 r124193  
    513513                        'curlCaCertificate' => '',
    514514                        'curlTimeout' => 5,
     515                        'curlProxy' => null,
     516                        'curlProxyAuth' => null,
     517
     518                        'exposeVersion' => true,
    515519                ];
    516520        }
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Config/FontVariables.php

    • Property svn:executable deleted
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/CssManager.php

    r117543 r124193  
    55use Mpdf\Color\ColorConverter;
    66use Mpdf\Css\TextVars;
    7 
     7use Mpdf\File\StreamWrapperChecker;
    88use Mpdf\Utils\Arrays;
    99use Mpdf\Utils\UtfString;
     
    144144
    145145                while ($match) {
     146
    146147                        $path = $CSSext[$ind];
    147148
     
    149150
    150151                        $this->mpdf->GetFullPath($path);
    151                         $CSSextblock = $this->_get_file($path);
     152
     153                        $CSSextblock = $this->getFileContents($path);
    152154                        if ($CSSextblock) {
    153155                                // look for embedded @import stylesheets in other stylesheets
     
    358360
    359361                                                        if (preg_match('/^[.](.*)$/', $t, $m)) {
    360                                                                 $tag = 'CLASS>>' . $m[1];
     362                                                                $classes = explode('.', $m[1]);
     363                                                                sort($classes);
     364                                                                $tag = 'CLASS>>' . join('.', $classes);
    361365                                                        } elseif (preg_match('/^[#](.*)$/', $t, $m)) {
    362366                                                                $tag = 'ID>>' . $m[1];
     
    366370                                                                $tag = 'LANG>>' . strtolower($m[1]);
    367371                                                        } elseif (preg_match('/^(' . $this->mpdf->allowedCSStags . ')[.](.*)$/', $t, $m)) { // mPDF 6  Special case for lang as attribute selector
    368                                                                 $tag = $m[1] . '>>CLASS>>' . $m[2];
     372                                                                $classes = explode('.', $m[2]);
     373                                                                sort($classes);
     374                                                                $tag = $m[1] . '>>CLASS>>' . join('.', $classes);
    369375                                                        } elseif (preg_match('/^(' . $this->mpdf->allowedCSStags . ')\s*:NTH-CHILD\((.*)\)$/', $t, $m)) {
    370376                                                                $tag = $m[1] . '>>SELECTORNTHCHILD>>' . $m[2];
     
    403409
    404410                                                                if (preg_match('/^[.](.*)$/', $t, $m)) {
    405                                                                         $tag = 'CLASS>>' . $m[1];
     411                                                                        $classes = explode('.', $m[1]);
     412                                                                        sort($classes);
     413                                                                        $tag = 'CLASS>>' . join('.', $classes);
    406414                                                                } elseif (preg_match('/^[#](.*)$/', $t, $m)) {
    407415                                                                        $tag = 'ID>>' . $m[1];
     
    411419                                                                        $tag = 'LANG>>' . strtolower($m[1]);
    412420                                                                } elseif (preg_match('/^(' . $this->mpdf->allowedCSStags . ')[.](.*)$/', $t, $m)) { // mPDF 6  Special case for lang as attribute selector
    413                                                                         $tag = $m[1] . '>>CLASS>>' . $m[2];
     421                                                                        $classes = explode('.', $m[2]);
     422                                                                        sort($classes);
     423                                                                        $tag = $m[1] . '>>CLASS>>' . join('.', $classes);
    414424                                                                } elseif (preg_match('/^(' . $this->mpdf->allowedCSStags . ')\s*:NTH-CHILD\((.*)\)$/', $t, $m)) {
    415425                                                                        $tag = $m[1] . '>>SELECTORNTHCHILD>>' . $m[2];
     
    11081118                $sh = [];
    11091119                $c = preg_match_all('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl)\(.*?\)/', $v, $x); // mPDF 5.6.05
     1120
    11101121                for ($i = 0; $i < $c; $i++) {
    1111                         $col = preg_replace('/,/', '*', $x[0][$i]);
     1122                        $col = preg_replace('/,\s/', '*', $x[0][$i]);
    11121123                        $v = str_replace($x[0][$i], $col, $v);
    11131124                }
     1125
    11141126                $ss = explode(',', $v);
     1127
    11151128                foreach ($ss as $s) {
     1129
    11161130                        $new = ['blur' => 0];
    11171131                        $p = explode(' ', trim($s));
     1132
    11181133                        if (isset($p[0])) {
    11191134                                $new['x'] = $this->sizeConverter->convert(trim($p[0]), $this->mpdf->FontSize, $this->mpdf->FontSize, false);
    11201135                        }
     1136
    11211137                        if (isset($p[1])) {
    11221138                                $new['y'] = $this->sizeConverter->convert(trim($p[1]), $this->mpdf->FontSize, $this->mpdf->FontSize, false);
    11231139                        }
     1140
    11241141                        if (isset($p[2])) {
     1142
    11251143                                if (preg_match('/^\s*[\.\-0-9]/', $p[2])) {
    1126                                         $new['blur'] = $this->sizeConverter->convert(trim($p[2]), $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false);
     1144
     1145                                        $new['blur'] = $this->sizeConverter->convert(
     1146                                                trim($p[2]),
     1147                                                isset($this->mpdf->blk[$this->mpdf->blklvl]['inner_width']) ? $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'] : 0,
     1148                                                $this->mpdf->FontSize,
     1149                                                false
     1150                                        );
     1151
    11271152                                } else {
    11281153                                        $new['col'] = $this->colorConverter->convert(preg_replace('/\*/', ',', $p[2]), $this->mpdf->PDFAXwarnings);
    11291154                                }
     1155
    11301156                                if (isset($p[3])) {
    11311157                                        $new['col'] = $this->colorConverter->convert(preg_replace('/\*/', ',', $p[3]), $this->mpdf->PDFAXwarnings);
    11321158                                }
    11331159                        }
     1160
    11341161                        if (!isset($new['col']) || !$new['col']) {
    11351162                                $new['col'] = $this->colorConverter->convert('#888888', $this->mpdf->PDFAXwarnings);
    11361163                        }
     1164
    11371165                        if (isset($new['y'])) {
    11381166                                array_unshift($sh, $new);
    11391167                        }
    1140                 }
     1168
     1169                }
     1170
    11411171                return $sh;
    11421172        }
     
    13311361                for ($i = 1; $i < $narrays; $i ++) {
    13321362                        foreach ($arrays[$i] as $key => $value) {
    1333                                 if (((string) $key) === ((string)((int) $key))) { // integer or string as integer key - append
     1363                                if (((string) $key) === ((string) ((int) $key))) { // integer or string as integer key - append
    13341364                                        $ret[] = $value;
    13351365                                } else { // string key - merge
     
    14851515                $classes = [];
    14861516                if (isset($attr['CLASS'])) {
    1487                         $classes = preg_split('/\s+/', $attr['CLASS']);
     1517                        $classes = array_map(function ($combination) {
     1518                                return join('.', $combination);
     1519                        }, Arrays::allUniqueSortedCombinations(preg_split('/\s+/', $attr['CLASS'])));
    14881520                }
    14891521                if (!isset($attr['ID'])) {
     
    21012133                $classes = [];
    21022134                if (isset($attr['CLASS'])) {
    2103                         $classes = preg_split('/\s+/', $attr['CLASS']);
     2135                        $classes = array_map(function ($combination) {
     2136                                return join('.', $combination);
     2137                        }, Arrays::allUniqueSortedCombinations(preg_split('/\s+/', $attr['CLASS'])));
    21042138                }
    21052139                //===============================================
     
    22402274        }
    22412275
    2242         private function _get_file($path)
     2276        private function getFileContents($path)
    22432277        {
    22442278                // If local file try using local path (? quicker, but also allowed even if allow_url_fopen false)
     2279                $wrapperChecker = new StreamWrapperChecker($this->mpdf);
     2280                if ($wrapperChecker->hasBlacklistedStreamWrapper($path)) {
     2281                        throw new \Mpdf\MpdfException('File contains an invalid stream. Only ' . implode(', ', $wrapperChecker->getWhitelistedStreamWrappers()) . ' streams are allowed.');
     2282                }
    22452283
    22462284                // mPDF 5.7.3
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Form.php

    r117543 r124193  
    251251                                $this->mpdf->SetFColor($this->colorConverter->convert(225, $this->mpdf->PDFAXwarnings));
    252252                                $this->mpdf->SetTColor($this->colorConverter->convert(127, $this->mpdf->PDFAXwarnings));
    253                         } else if (!empty($objattr['readonly'])) {
     253                        } elseif (!empty($objattr['readonly'])) {
    254254                                $this->mpdf->SetFColor($this->colorConverter->convert(225, $this->mpdf->PDFAXwarnings));
    255255                                $this->mpdf->SetTColor($this->colorConverter->convert(0, $this->mpdf->PDFAXwarnings));
     
    323323                                $this->mpdf->SetFColor($this->colorConverter->convert(225, $this->mpdf->PDFAXwarnings));
    324324                                $this->mpdf->SetTColor($this->colorConverter->convert(127, $this->mpdf->PDFAXwarnings));
    325                         } else if (!empty($objattr['readonly'])) {
     325                        } elseif (!empty($objattr['readonly'])) {
    326326                                $this->mpdf->SetFColor($this->colorConverter->convert(225, $this->mpdf->PDFAXwarnings));
    327327                                $this->mpdf->SetTColor($this->colorConverter->convert(0, $this->mpdf->PDFAXwarnings));
     
    492492                                        $this->SetFormButtonText($objattr['value']);
    493493                                        $this->SetFormReset($w, $h, $objattr['fieldname'], $objattr['value'], $objattr['title'], $flags, (isset($objattr['background-col']) ? $objattr['background-col'] : false), (isset($objattr['border-col']) ? $objattr['border-col'] : false), (isset($objattr['noprint']) ? $objattr['noprint'] : false));
    494                                 } else if ($objattr['subtype'] === 'SUBMIT') {
     494                                } elseif ($objattr['subtype'] === 'SUBMIT') {
    495495                                        $url = $this->formAction;
    496496                                        $type = $this->formExportType;
     
    498498                                        $this->SetFormButtonText($objattr['value']);
    499499                                        $this->SetFormSubmit($w, $h, $objattr['fieldname'], $objattr['value'], $url, $objattr['title'], $type, $method, $flags, (isset($objattr['background-col']) ? $objattr['background-col'] : false), (isset($objattr['border-col']) ? $objattr['border-col'] : false), (isset($objattr['noprint']) ? $objattr['noprint'] : false));
    500                                 } else if ($objattr['subtype'] === 'BUTTON') {
     500                                } elseif ($objattr['subtype'] === 'BUTTON') {
    501501                                        $this->SetFormButtonText($objattr['value']);
    502502                                        if (isset($objattr['onClick']) && $objattr['onClick']) {
     
    671671                        if ($form['subtype'] === 'radio') {
    672672                                $total+=2;
    673                         } else if ($form['subtype'] === 'checkbox') {
     673                        } elseif ($form['subtype'] === 'checkbox') {
    674674                                $total++;
    675675                                if (!$this->formUseZapD) {
     
    842842                if ($align === 'C') {
    843843                        $align = '1';
    844                 } else if ($align === 'R') {
     844                } elseif ($align === 'R') {
    845845                        $align = '2';
    846846                } else {
     
    914914                if ($this->mpdf->keep_block_together) {
    915915                        $this->mpdf->ktForms[] = $f;
    916                 } else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) {
     916                } elseif ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) {
    917917                        $this->mpdf->HTMLheaderPageForms[] = $f;
    918918                } else {
     
    925925                                        'h' => $h
    926926                                ];
    927                                 $this->mpdf->columnForms[$this->mpdf->CurrCol][(int)$this->mpdf->x][(int)$this->mpdf->y] = $this->formCount;
     927                                $this->mpdf->columnForms[$this->mpdf->CurrCol][(int) $this->mpdf->x][(int) $this->mpdf->y] = $this->formCount;
    928928                        }
    929929                        $this->forms[$this->formCount] = $f;
     
    994994                if ($this->mpdf->keep_block_together) {
    995995                        $this->mpdf->ktForms[] = $f;
    996                 } else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) {
     996                } elseif ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) {
    997997                        $this->mpdf->HTMLheaderPageForms[] = $f;
    998998                } else {
     
    10001000                                $this->mpdf->columnbuffer[] = ['s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
    10011001                                        'h' => $h];
    1002                                 $this->mpdf->columnForms[$this->mpdf->CurrCol][(int)$this->mpdf->x][(int)$this->mpdf->y] = $this->formCount;
     1002                                $this->mpdf->columnForms[$this->mpdf->CurrCol][(int) $this->mpdf->x][(int) $this->mpdf->y] = $this->formCount;
    10031003                        }
    10041004                        $this->forms[$this->formCount] = $f;
     
    11111111                        if ($type === 'checkbox') {
    11121112                                $uvalue = $this->writer->utf8ToUtf16BigEndian($value);
    1113                         } else if ($type === 'radio') {
     1113                        } elseif ($type === 'radio') {
    11141114                                $uvalue = $this->writer->utf8ToUtf16BigEndian($value);
    11151115                                $value = mb_convert_encoding($value, 'Windows-1252', 'UTF-8');
     
    11961196                if ($this->mpdf->keep_block_together) {
    11971197                        $this->mpdf->ktForms[] = $f;
    1198                 } else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) {
     1198                } elseif ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) {
    11991199                        $this->mpdf->HTMLheaderPageForms[] = $f;
    12001200                } else {
     
    12021202                                $this->mpdf->columnbuffer[] = ['s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
    12031203                                        'h' => $hh];
    1204                                 $this->mpdf->columnForms[$this->mpdf->CurrCol][(int)$this->mpdf->x][(int)$this->mpdf->y] = $this->formCount;
     1204                                $this->mpdf->columnForms[$this->mpdf->CurrCol][(int) $this->mpdf->x][(int) $this->mpdf->y] = $this->formCount;
    12051205                        }
    12061206                        $this->forms[$this->formCount] = $f;
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Gif/ImageHeader.php

    r117543 r124193  
    6363                }
    6464
    65                 $b = ord($lpData{8});
     65                $b = ord($lpData[8]);
    6666                $this->m_bLocalClr = ($b & 0x80) ? true : false;
    6767                $this->m_bInterlace = ($b & 0x40) ? true : false;
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Gradient.php

    r117543 r124193  
    518518                        // mPDF 5.3.74
    519519                        if ($colorspace === 'CMYK') {
    520                                 $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F %.3F %.3F %.3F', ord($stops[$i]['col']{1}) / 100, ord($stops[$i]['col']{2}) / 100, ord($stops[$i]['col']{3}) / 100, ord($stops[$i]['col']{4}) / 100);
     520                                $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F %.3F %.3F %.3F', ord($stops[$i]['col'][1]) / 100, ord($stops[$i]['col'][2]) / 100, ord($stops[$i]['col'][3]) / 100, ord($stops[$i]['col'][4]) / 100);
    521521                        } elseif ($colorspace === 'Gray') {
    522                                 $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F', ord($stops[$i]['col']{1}) / 255);
     522                                $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F', ord($stops[$i]['col'][1]) / 255);
    523523                        } else {
    524                                 $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F %.3F %.3F', ord($stops[$i]['col']{1}) / 255, ord($stops[$i]['col']{2}) / 255, ord($stops[$i]['col']{3}) / 255);
     524                                $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F %.3F %.3F', ord($stops[$i]['col'][1]) / 255, ord($stops[$i]['col'][2]) / 255, ord($stops[$i]['col'][3]) / 255);
    525525                        }
    526526                        if (!isset($stops[$i]['opacity'])) {
     
    713713                                $col = $this->colorConverter->convert(255, $this->mpdf->PDFAXwarnings);
    714714                        }
    715                         if ($col{0} == 1) {
     715                        if ($col[0] == 1) {
    716716                                $g['colorspace'] = 'Gray';
    717                         } elseif ($col{0} == 4 || $col{0} == 6) {
     717                        } elseif ($col[0] == 4 || $col[0] == 6) {
    718718                                $g['colorspace'] = 'CMYK';
    719719                        }
     
    857857                                $col = $this->colorConverter->convert(255, $this->mpdf->PDFAXwarnings);
    858858                        }
    859                         if ($col{0} == 1) {
     859                        if ($col[0] == 1) {
    860860                                $g['colorspace'] = 'Gray';
    861                         } elseif ($col{0} == 4 || $col{0} == 6) {
     861                        } elseif ($col[0] == 4 || $col[0] == 6) {
    862862                                $g['colorspace'] = 'CMYK';
    863863                        }
     
    873873                ];
    874874
    875                 if ($col{0} == 5) {
     875                if ($col[0] == 5) {
    876876                        // transparency from rgba()
    877                         $stop['opacity'] = ord($col{4}) / 100;
    878                 } elseif ($col{0} == 6) {
     877                        $stop['opacity'] = ord($col[4]) / 100;
     878                } elseif ($col[0] == 6) {
    879879                        // transparency from cmyka()
    880                         $stop['opacity'] = ord($col{5}) / 100;
    881                 } elseif ($col{0} == 1 && $col{2} == 1) {
     880                        $stop['opacity'] = ord($col[5]) / 100;
     881                } elseif ($col[0] == 1 && $col[2] == 1) {
    882882                        // transparency converted from rgba or cmyka()
    883                         $stop['opacity'] = ord($col{3}) / 100;
     883                        $stop['opacity'] = ord($col[3]) / 100;
    884884                }
    885885
     
    951951                        // mPDF 5.3.74
    952952                        $cor = $this->colorConverter->convert($bgr[1], $this->mpdf->PDFAXwarnings);
    953                         if ($cor{0} == 1) {
     953                        if ($cor[0] == 1) {
    954954                                $g['colorspace'] = 'Gray';
    955                         } elseif ($cor{0} == 4 || $cor{0} == 6) {
     955                        } elseif ($cor[0] == 4 || $cor[0] == 6) {
    956956                                $g['colorspace'] = 'CMYK';
    957957                        }
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Image/ImageProcessor.php

    r117543 r124193  
    99
    1010use Mpdf\CssManager;
     11
     12use Mpdf\File\StreamWrapperChecker;
    1113
    1214use Mpdf\Gif\Gif;
     
    152154        {
    153155                /**
    154                  * Prevents insecure PHP deserialization through phar:// wrapper
     156                 * Prevents insecure PHP object injection through phar:// wrapper
    155157                 * @see https://github.com/mpdf/mpdf/issues/949
    156158                 */
    157                 if ($this->hasBlacklistedStreamWrapper($file)) {
    158                         return $this->imageError($file, $firsttime, 'File contains an invalid stream. Only http://, https://, and file:// streams are valid.');
     159                $wrapperChecker = new StreamWrapperChecker($this->mpdf);
     160                if ($wrapperChecker->hasBlacklistedStreamWrapper($file)) {
     161                        return $this->imageError($file, $firsttime, 'File contains an invalid stream. Only ' . implode(', ', $wrapperChecker->getWhitelistedStreamWrappers()) . ' streams are allowed.');
    159162                }
    160163
     
    174177                }
    175178
    176                 if (preg_match('/data:image\/(gif|jpeg|png);base64,(.*)/', $file, $v)) {
     179                if (preg_match('/data:image\/(gif|jpe?g|png);base64,(.*)/', $file, $v)) {
    177180                        $type = $v[1];
    178181                        $data = base64_decode($v[2]);
     
    587590                                                        $n = $this->fourBytesToInt(substr($data, $p - 4, 4));
    588591                                                        $transparency = substr($data, $p + 4, $n);
    589                                                         // ord($transparency{$index}) = the alpha value for that index
     592                                                        // ord($transparency[$index]) = the alpha value for that index
    590593                                                        // generate alpha channel
    591594                                                        for ($ypx = 0; $ypx < $h; ++$ypx) {
     
    595598                                                                                $alpha = 255;
    596599                                                                        } else {
    597                                                                                 $alpha = ord($transparency{$colorindex});
     600                                                                                $alpha = ord($transparency[$colorindex]);
    598601                                                                        } // 0-255
    599602                                                                        if ($alpha > 0) {
     
    11041107                                                $n = $this->fourBytesToInt(substr($data, $p - 4, 4));
    11051108                                                $transparency = substr($data, $p + 4, $n);
    1106                                                 // ord($transparency{$index}) = the alpha value for that index
     1109                                                // ord($transparency[$index]) = the alpha value for that index
    11071110                                                // generate alpha channel
    11081111                                                for ($ypx = 0; $ypx < $h; ++$ypx) {
     
    11121115                                                                        $alpha = 255;
    11131116                                                                } else {
    1114                                                                         $alpha = ord($transparency{$colorindex});
     1117                                                                        $alpha = ord($transparency[$colorindex]);
    11151118                                                                } // 0-255
    11161119                                                                $mimgdata .= chr($alpha);
     
    14041407
    14051408                if ($firsttime && ($this->mpdf->showImageErrors || $this->mpdf->debug)) {
    1406                         throw new \Mpdf\MpdfImageException(sprintf('%s (%s)', $msg, $file));
     1409                        throw new \Mpdf\MpdfImageException(sprintf('%s (%s)', $msg, substr($file, 0, 256)));
    14071410                }
    14081411
     
    14301433        }
    14311434
    1432         /**
    1433          * @param string $filename
    1434          * @return bool
    1435          * @since 7.1.8
    1436          */
    1437         private function hasBlacklistedStreamWrapper($filename)
    1438         {
    1439                 if (strpos($filename, '://') > 0) {
    1440                         $wrappers = stream_get_wrappers();
    1441                         $whitelistStreamWrappers = array_diff($this->mpdf->whitelistStreamWrappers, ['phar']); /* remove `phar` (security issue) */
    1442                         foreach ($wrappers as $wrapper) {
    1443                                 if (in_array($wrapper, $whitelistStreamWrappers)) {
    1444                                         continue;
    1445                                 }
    1446 
    1447                                 if (stripos($filename, $wrapper . '://') === 0) {
    1448                                         return true;
    1449                                 }
    1450                         }
    1451                 }
    1452 
    1453                 return false;
    1454         }
    1455 
    14561435}
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Image/Svg.php

    r117543 r124193  
    311311                                        $img_h = $img_w * $info['h'] / $info['w'];
    312312                                }
    313                         } else if ($info['h'] / $info['w'] < $h / $w) {
     313                        } elseif ($info['h'] / $info['w'] < $h / $w) {
    314314                                if ($meetOrSlice == 'meet') { // the entire viewBox is visible within the viewport
    315315                                        $img_h = $img_w * $info['h'] / $info['w'];
     
    321321                                // do nothing to x
    322322                                // do nothing to y
    323                         } else if ($ar[0] == 'xmidymin') {
     323                        } elseif ($ar[0] == 'xmidymin') {
    324324                                $img_x += $w / 2 - $img_w / 2; // xMid
    325325                                // do nothing to y
    326                         } else if ($ar[0] == 'xmaxymin') {
     326                        } elseif ($ar[0] == 'xmaxymin') {
    327327                                $img_x += $w - $img_w; // xMax
    328328                                // do nothing to y
    329                         } else if ($ar[0] == 'xminymid') {
     329                        } elseif ($ar[0] == 'xminymid') {
    330330                                // do nothing to x
    331331                                $img_y += $h / 2 - $img_h / 2; // yMid
    332                         } else if ($ar[0] == 'xmaxymid') {
     332                        } elseif ($ar[0] == 'xmaxymid') {
    333333                                $img_x += $w - $img_w; // xMax
    334334                                $img_y += $h / 2 - $img_h / 2; // yMid
    335                         } else if ($ar[0] == 'xminymax') {
     335                        } elseif ($ar[0] == 'xminymax') {
    336336                                // do nothing to x
    337337                                $img_y += $h - $img_h; // yMax
    338                         } else if ($ar[0] == 'xmidymax') {
     338                        } elseif ($ar[0] == 'xmidymax') {
    339339                                $img_x += $w / 2 - $img_w / 2; // xMid
    340340                                $img_y += $h - $img_h; // yMax
    341                         } else if ($ar[0] == 'xmaxymax') {
     341                        } elseif ($ar[0] == 'xmaxymax') {
    342342                                $img_x += $w - $img_w; // xMax
    343343                                $img_y += $h - $img_h; // yMax
     
    382382                        $x_offset = $attribs['x'];
    383383                        $y_offset = $attribs['y'];
    384                 } else if ($element == 'ellipse') {
     384                } elseif ($element == 'ellipse') {
    385385                        $w = $attribs['rx'] * 2;
    386386                        $h = $attribs['ry'] * 2;
    387387                        $x_offset = $attribs['cx'] - $attribs['rx'];
    388388                        $y_offset = $attribs['cy'] - $attribs['ry'];
    389                 } else if ($element == 'circle') {
     389                } elseif ($element == 'circle') {
    390390                        $w = $attribs['r'] * 2;
    391391                        $h = $attribs['r'] * 2;
    392392                        $x_offset = $attribs['cx'] - $attribs['r'];
    393393                        $y_offset = $attribs['cy'] - $attribs['r'];
    394                 } else if ($element == 'polygon') {
     394                } elseif ($element == 'polygon') {
    395395                        $pts = preg_split('/[ ,]+/', trim($attribs['points']));
    396396                        $maxr = $maxb = 0;
     
    409409                        $x_offset = $minl;
    410410                        $y_offset = $mint;
    411                 } else if ($element == 'path') {
     411                } elseif ($element == 'path') {
    412412                        if (is_array($this->pathBBox) && $this->pathBBox[2] > 0) {
    413413                                $w = $this->pathBBox[2];
     
    476476                                                // cf svgDefineStyle()
    477477                                                $transformations .= sprintf(' %.3F %.3F %.3F %.3F %.3F %.3F cm ', $vv[0], -$vv[1], -$vv[2], $vv[3], $vv[4] * $this->kp, -$vv[5] * $this->kp);
    478                                         } else if ($c == 'translate' && count($vv)) {
     478                                        } elseif ($c == 'translate' && count($vv)) {
    479479                                                $tm[4] = $vv[0];
    480480                                                if (count($vv) == 2) {
     
    485485                                                $tm[5] = $t_y;
    486486                                                $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $tm[4] * $this->kp, $tm[5] * $this->kp);
    487                                         } else if ($c == 'scale' && count($vv)) {
     487                                        } elseif ($c == 'scale' && count($vv)) {
    488488                                                if (count($vv) == 2) {
    489489                                                        $s_y = $vv[1];
     
    494494                                                $tm[3] = $s_y;
    495495                                                $transformations .= sprintf(' %.3F 0 0 %.3F 0 0 cm ', $tm[0], $tm[3]);
    496                                         } else if ($c == 'rotate' && count($vv)) {
     496                                        } elseif ($c == 'rotate' && count($vv)) {
    497497                                                $tm[0] = cos(deg2rad(-$vv[0]));
    498498                                                $tm[1] = sin(deg2rad(-$vv[0]));
     
    506506                                                        $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', -$vv[1] * $this->kp, $vv[2] * $this->kp);
    507507                                                }
    508                                         } else if ($c == 'skewx' && count($vv)) {
     508                                        } elseif ($c == 'skewx' && count($vv)) {
    509509                                                $tm[2] = tan(deg2rad(-$vv[0]));
    510510                                                $transformations .= sprintf(' 1 0 %.3F 1 0 0 cm ', $tm[2]);
    511                                         } else if ($c == 'skewy' && count($vv)) {
     511                                        } elseif ($c == 'skewy' && count($vv)) {
    512512                                                $tm[1] = tan(deg2rad(-$vv[0]));
    513513                                                $transformations .= sprintf(' 1 %.3F 0 1 0 0 cm ', $tm[1]);
     
    530530                                $spread = 'F';
    531531                        } // reflect
    532                         else if (strtolower($gradient_info['spread']) == 'repeat') {
     532                        elseif (strtolower($gradient_info['spread']) == 'repeat') {
    533533                                $spread = 'R';
    534534                        } // repeat
     
    631631                                if ($angle < 0) {
    632632                                        $angle += 360;
    633                                 } else if ($angle > 360) {
     633                                } elseif ($angle > 360) {
    634634                                        $angle -= 360;
    635635                                }
     
    766766                                        if ($gradient_info['colorspace'] == 'RGB') {
    767767                                                $gradient_info['color'][$i]['color'] = '0 0 0';
    768                                         } else if ($gradient_info['colorspace'] == 'Gray') {
     768                                        } elseif ($gradient_info['colorspace'] == 'Gray') {
    769769                                                $gradient_info['color'][$i]['color'] = '0';
    770                                         } else if ($gradient_info['colorspace'] == 'CMYK') {
     770                                        } elseif ($gradient_info['colorspace'] == 'CMYK') {
    771771                                                $gradient_info['color'][$i]['color'] = '1 1 1 1';
    772772                                        }
     
    800800                        $return .= ' /Sh' . ($n) . ' sh ';
    801801                        $return .= " Q\n";
    802                 } else if ($gradient_info['type'] == 'radial') {
     802                } elseif ($gradient_info['type'] == 'radial') {
    803803                        if (isset($gradient_info['units']) && strtolower($gradient_info['units']) == 'userspaceonuse') {
    804804                                if ($w > $h) {
     
    839839                        if (isset($gradient_info['info']['rx'])) {
    840840                                $rx = $gradient_info['info']['rx'];
    841                         } else if (isset($gradient_info['info']['r'])) {
     841                        } elseif (isset($gradient_info['info']['r'])) {
    842842                                $rx = $gradient_info['info']['r'];
    843843                        } else {
     
    846846                        if (isset($gradient_info['info']['ry'])) {
    847847                                $ry = $gradient_info['info']['ry'];
    848                         } else if (isset($gradient_info['info']['r'])) {
     848                        } elseif (isset($gradient_info['info']['r'])) {
    849849                                $ry = $gradient_info['info']['r'];
    850850                        } else {
     
    900900                                if ($angle < 0) {
    901901                                        $angle += 360;
    902                                 } else if ($angle > 360) {
     902                                } elseif ($angle > 360) {
    903903                                        $angle -= 360;
    904904                                }
     
    995995                                        if ($gradient_info['colorspace'] == 'RGB') {
    996996                                                $gradient_info['color'][$i]['color'] = '0 0 0';
    997                                         } else if ($gradient_info['colorspace'] == 'Gray') {
     997                                        } elseif ($gradient_info['colorspace'] == 'Gray') {
    998998                                                $gradient_info['color'][$i]['color'] = '0';
    999                                         } else if ($gradient_info['colorspace'] == 'CMYK') {
     999                                        } elseif ($gradient_info['colorspace'] == 'CMYK') {
    10001000                                                $gradient_info['color'][$i]['color'] = '1 1 1 1';
    10011001                                        }
     
    10661066                                $this->kp *= ($svg_w / 0.2645) / $this->svg_info['w'];
    10671067                                $this->kf = ($svg_w / 0.2645) / $this->svg_info['w'];
    1068                         } else if ($svg_h) {
     1068                        } elseif ($svg_h) {
    10691069                                $this->kp *= ($svg_h / 0.2645) / $this->svg_info['h'];
    10701070                                $this->kf = ($svg_h / 0.2645) / $this->svg_info['h'];
     
    11731173                                                  // $transformations .= sprintf(' %.3F %.3F %.3F %.3F %.3F %.3F cm ', $ma, $mb, $mc, $md, $vv[4]*$this->kp, -$vv[5]*$this->kp);
    11741174                                                 */
    1175                                         } else if ($c == 'translate' && count($vv)) {
     1175                                        } elseif ($c == 'translate' && count($vv)) {
    11761176                                                $tm[4] = $vv[0];
    11771177                                                if (count($vv) == 2) {
     
    11821182                                                $tm[5] = $t_y;
    11831183                                                $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $tm[4] * $this->kp, $tm[5] * $this->kp);
    1184                                         } else if ($c == 'scale' && count($vv)) {
     1184                                        } elseif ($c == 'scale' && count($vv)) {
    11851185                                                if (count($vv) == 2) {
    11861186                                                        $s_y = $vv[1];
     
    11911191                                                $tm[3] = $s_y;
    11921192                                                $transformations .= sprintf(' %.3F 0 0 %.3F 0 0 cm ', $tm[0], $tm[3]);
    1193                                         } else if ($c == 'rotate' && count($vv)) {
     1193                                        } elseif ($c == 'rotate' && count($vv)) {
    11941194                                                $tm[0] = cos(deg2rad(-$vv[0]));
    11951195                                                $tm[1] = sin(deg2rad(-$vv[0]));
     
    12031203                                                        $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', -$vv[1] * $this->kp, $vv[2] * $this->kp);
    12041204                                                }
    1205                                         } else if ($c == 'skewx' && count($vv)) {
     1205                                        } elseif ($c == 'skewx' && count($vv)) {
    12061206                                                $tm[2] = tan(deg2rad(-$vv[0]));
    12071207                                                $transformations .= sprintf(' 1 0 %.3F 1 0 0 cm ', $tm[2]);
    1208                                         } else if ($c == 'skewy' && count($vv)) {
     1208                                        } elseif ($c == 'skewy' && count($vv)) {
    12091209                                                $tm[1] = tan(deg2rad(-$vv[0]));
    12101210                                                $transformations .= sprintf(' 1 %.3F 0 1 0 0 cm ', $tm[1]);
     
    13671367                        }
    13681368                } // Used as indirect setting for currentColor
    1369                 else if (strtolower($critere_style['fill']) == 'currentcolor' && $element != 'line') {
     1369                elseif (strtolower($critere_style['fill']) == 'currentcolor' && $element != 'line') {
    13701370                        $col = $this->colorConverter->convert($critere_style['color'], $this->mpdf->PDFAXwarnings);
    13711371                        if ($col) {
    1372                                 if ($col{0} == 5 && is_numeric($col{4})) {
    1373                                         $critere_style['fill-opacity'] = ord($col{4} / 100);
     1372                                if ($col[0] == 5 && is_numeric($col[4])) {
     1373                                        $critere_style['fill-opacity'] = ord($col[4] / 100);
    13741374                                } // RGBa
    1375                                 if ($col{0} == 6 && is_numeric($col{5})) {
    1376                                         $critere_style['fill-opacity'] = ord($col{5} / 100);
     1375                                if ($col[0] == 6 && is_numeric($col[5])) {
     1376                                        $critere_style['fill-opacity'] = ord($col[5] / 100);
    13771377                                } // CMYKa
    13781378                                $path_style .= $this->mpdf->SetFColor($col, true) . ' ';
    13791379                                $style .= 'F';
    13801380                        }
    1381                 } else if ($critere_style['fill'] != 'none' && $element != 'line') {
     1381                } elseif ($critere_style['fill'] != 'none' && $element != 'line') {
    13821382                        $col = $this->colorConverter->convert($critere_style['fill'], $this->mpdf->PDFAXwarnings);
    13831383                        if ($col) {
    1384                                 if ($col{0} == 5 && is_numeric($col{4})) {
    1385                                         $critere_style['fill-opacity'] = ord($col{4} / 100);
     1384                                if ($col[0] == 5 && is_numeric($col[4])) {
     1385                                        $critere_style['fill-opacity'] = ord($col[4] / 100);
    13861386                                } // RGBa
    1387                                 if ($col{0} == 6 && is_numeric($col{5})) {
    1388                                         $critere_style['fill-opacity'] = ord($col{5} / 100);
     1387                                if ($col[0] == 6 && is_numeric($col[5])) {
     1388                                        $critere_style['fill-opacity'] = ord($col[5] / 100);
    13891389                                } // CMYKa
    13901390                                $path_style .= $this->mpdf->SetFColor($col, true) . ' ';
     
    14081408                         */
    14091409                } // Used as indirect setting for currentColor
    1410                 else if (strtolower($critere_style['stroke']) == 'currentcolor') {
     1410                elseif (strtolower($critere_style['stroke']) == 'currentcolor') {
    14111411                        $col = $this->colorConverter->convert($critere_style['color'], $this->mpdf->PDFAXwarnings);
    14121412                        if ($col) {
    1413                                 if ($col{0} == 5 && is_numeric($col{4})) {
    1414                                         $critere_style['stroke-opacity'] = ord($col{4} / 100);
     1413                                if ($col[0] == 5 && is_numeric($col[4])) {
     1414                                        $critere_style['stroke-opacity'] = ord($col[4] / 100);
    14151415                                } // RGBa
    1416                                 if ($col{0} == 6 && is_numeric($col{5})) {
    1417                                         $critere_style['stroke-opacity'] = ord($col{5} / 100);
     1416                                if ($col[0] == 6 && is_numeric($col[5])) {
     1417                                        $critere_style['stroke-opacity'] = ord($col[5] / 100);
    14181418                                } // CMYKa
    14191419                                $path_style .= $this->mpdf->SetDColor($col, true) . ' ';
     
    14221422                                $path_style .= sprintf('%.3F w ', $lw * $this->kp);
    14231423                        }
    1424                 } else if ($critere_style['stroke'] != 'none') {
     1424                } elseif ($critere_style['stroke'] != 'none') {
    14251425                        $col = $this->colorConverter->convert($critere_style['stroke'], $this->mpdf->PDFAXwarnings);
    14261426                        if ($col) {
    14271427                                // mPDF 5.0.051
    14281428                                // mPDF 5.3.74
    1429                                 if ($col{0} == 5 && is_numeric($col{4})) {
    1430                                         $critere_style['stroke-opacity'] = ord($col{4} / 100);
     1429                                if ($col[0] == 5 && is_numeric($col[4])) {
     1430                                        $critere_style['stroke-opacity'] = ord($col[4] / 100);
    14311431                                } // RGBa
    1432                                 if ($col{0} == 6 && is_numeric($col{5})) {
    1433                                         $critere_style['stroke-opacity'] = ord($col{5} / 100);
     1432                                if ($col[0] == 6 && is_numeric($col[5])) {
     1433                                        $critere_style['stroke-opacity'] = ord($col[5] / 100);
    14341434                                } // CMYKa
    14351435                                $path_style .= $this->mpdf->SetDColor($col, true) . ' ';
     
    14441444                        if ($critere_style['stroke-linejoin'] == 'miter') {
    14451445                                $path_style .= ' 0 j ';
    1446                         } else if ($critere_style['stroke-linejoin'] == 'round') {
     1446                        } elseif ($critere_style['stroke-linejoin'] == 'round') {
    14471447                                $path_style .= ' 1 j ';
    1448                         } else if ($critere_style['stroke-linejoin'] == 'bevel') {
     1448                        } elseif ($critere_style['stroke-linejoin'] == 'bevel') {
    14491449                                $path_style .= ' 2 j ';
    14501450                        }
     
    14521452                        if ($critere_style['stroke-linecap'] == 'butt') {
    14531453                                $path_style .= ' 0 J ';
    1454                         } else if ($critere_style['stroke-linecap'] == 'round') {
     1454                        } elseif ($critere_style['stroke-linecap'] == 'round') {
    14551455                                $path_style .= ' 1 J ';
    1456                         } else if ($critere_style['stroke-linecap'] == 'square') {
     1456                        } elseif ($critere_style['stroke-linecap'] == 'square') {
    14571457                                $path_style .= ' 2 J ';
    14581458                        }
     
    14601460                        if (isset($critere_style['stroke-miterlimit'])) {
    14611461                                if ($critere_style['stroke-miterlimit'] == 'none') {
    1462                                 } else if (preg_match('/^[\d.]+$/', $critere_style['stroke-miterlimit'])) {
     1462                                } elseif (preg_match('/^[\d.]+$/', $critere_style['stroke-miterlimit'])) {
    14631463                                        $path_style .= sprintf('%.2F M ', $critere_style['stroke-miterlimit']);
    14641464                                }
     
    14951495                        if ($critere_style['fill-opacity'] == 0) {
    14961496                                $opacity = 0;
    1497                         } else if ($critere_style['fill-opacity'] > 1) {
     1497                        } elseif ($critere_style['fill-opacity'] > 1) {
    14981498                                $opacity = 1;
    1499                         } else if ($critere_style['fill-opacity'] > 0) {
     1499                        } elseif ($critere_style['fill-opacity'] > 0) {
    15001500                                $opacity = $critere_style['fill-opacity'];
    1501                         } else if ($critere_style['fill-opacity'] < 0) {
     1501                        } elseif ($critere_style['fill-opacity'] < 0) {
    15021502                                $opacity = 0;
    15031503                        }
     
    15111511                        if ($critere_style['stroke-opacity'] == 0) {
    15121512                                $opacity = 0;
    1513                         } else if ($critere_style['stroke-opacity'] > 1) {
     1513                        } elseif ($critere_style['stroke-opacity'] > 1) {
    15141514                                $opacity = 1;
    1515                         } else if ($critere_style['stroke-opacity'] > 0) {
     1515                        } elseif ($critere_style['stroke-opacity'] > 0) {
    15161516                                $opacity = $critere_style['stroke-opacity'];
    1517                         } else if ($critere_style['stroke-opacity'] < 0) {
     1517                        } elseif ($critere_style['stroke-opacity'] < 0) {
    15181518                                $opacity = 0;
    15191519                        }
     
    19981998                if (!$sweepFlag && $dtheta > 0) {
    19991999                        $dtheta -= 2.0 * M_PI;
    2000                 } else if ($sweepFlag && $dtheta < 0) {
     2000                } elseif ($sweepFlag && $dtheta < 0) {
    20012001                        $dtheta += 2.0 * M_PI;
    20022002                }
     
    20712071                if ($maxsize == 'y') {
    20722072                        $maxsize = $this->svg_info['h'];
    2073                 } else if ($maxsize == 'x') {
     2073                } elseif ($maxsize == 'x') {
    20742074                        $maxsize = $this->svg_info['w'];
    20752075                }
     
    22612261                                if (isset($this->svg_font[$current_style['font-family']][$style])) {
    22622262                                        $svg_font = $this->svg_font[$current_style['font-family']][$style];
    2263                                 } else if (isset($this->svg_font[$current_style['font-family']]['R'])) {
     2263                                } elseif (isset($this->svg_font[$current_style['font-family']]['R'])) {
    22642264                                        $svg_font = $this->svg_font[$current_style['font-family']]['R'];
    22652265                                }
     
    22782278                                        if ($current_style['fill-opacity'] == 0) {
    22792279                                                $fopacity = 0;
    2280                                         } else if ($current_style['fill-opacity'] > 1) {
     2280                                        } elseif ($current_style['fill-opacity'] > 1) {
    22812281                                                $fopacity = 1;
    2282                                         } else if ($current_style['fill-opacity'] > 0) {
     2282                                        } elseif ($current_style['fill-opacity'] > 0) {
    22832283                                                $fopacity = $current_style['fill-opacity'];
    2284                                         } else if ($current_style['fill-opacity'] < 0) {
     2284                                        } elseif ($current_style['fill-opacity'] < 0) {
    22852285                                                $fopacity = 0;
    22862286                                        }
     
    22902290                                        if ($current_style['stroke-opacity'] == 0) {
    22912291                                                $sopacity = 0;
    2292                                         } else if ($current_style['stroke-opacity'] > 1) {
     2292                                        } elseif ($current_style['stroke-opacity'] > 1) {
    22932293                                                $sopacity = 1;
    2294                                         } else if ($current_style['stroke-opacity'] > 0) {
     2294                                        } elseif ($current_style['stroke-opacity'] > 0) {
    22952295                                                $sopacity = $current_style['stroke-opacity'];
    2296                                         } else if ($current_style['stroke-opacity'] < 0) {
     2296                                        } elseif ($current_style['stroke-opacity'] < 0) {
    22972297                                                $sopacity = 0;
    22982298                                        }
     
    24352435                                if ($current_style['fill-opacity'] == 0) {
    24362436                                        $fopacity = 0;
    2437                                 } else if ($current_style['fill-opacity'] > 1) {
     2437                                } elseif ($current_style['fill-opacity'] > 1) {
    24382438                                        $fopacity = 1;
    2439                                 } else if ($current_style['fill-opacity'] > 0) {
     2439                                } elseif ($current_style['fill-opacity'] > 0) {
    24402440                                        $fopacity = $current_style['fill-opacity'];
    2441                                 } else if ($current_style['fill-opacity'] < 0) {
     2441                                } elseif ($current_style['fill-opacity'] < 0) {
    24422442                                        $fopacity = 0;
    24432443                                }
     
    24472447                                if ($current_style['stroke-opacity'] == 0) {
    24482448                                        $sopacity = 0;
    2449                                 } else if ($current_style['stroke-opacity'] > 1) {
     2449                                } elseif ($current_style['stroke-opacity'] > 1) {
    24502450                                        $sopacity = 1;
    2451                                 } else if ($current_style['stroke-opacity'] > 0) {
     2451                                } elseif ($current_style['stroke-opacity'] > 0) {
    24522452                                        $sopacity = $current_style['stroke-opacity'];
    2453                                 } else if ($current_style['stroke-opacity'] < 0) {
     2453                                } elseif ($current_style['stroke-opacity'] < 0) {
    24542454                                        $sopacity = 0;
    24552455                                }
     
    30873087                                                        $scriptblock = $sbl;
    30883088                                                        $scriptblocks[$subchunk] = $scriptblock;
    3089                                                 } else if ($scriptblock > 0 && $scriptblock != $sbl) {
     3089                                                } elseif ($scriptblock > 0 && $scriptblock != $sbl) {
    30903090                                                        // NEW (non-common) Script encountered in this chunk.
    30913091                                                        // Start a new subchunk
     
    31373137                                                        $lang = "vi";
    31383138                                                } // Check Arabic for different languages if Arabic script - even if Basescript
    3139                                                 else if ($scriptblocks[$sch] == Ucdn::SCRIPT_ARABIC && $this->mpdf->autoArabic) {
     3139                                                elseif ($scriptblocks[$sch] == Ucdn::SCRIPT_ARABIC && $this->mpdf->autoArabic) {
    31403140                                                        if (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('sindhi') . "]/u", $s)) {
    31413141                                                                $lang = "sd";
    3142                                                         } else if (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('urdu') . "]/u", $s)) {
     3142                                                        } elseif (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('urdu') . "]/u", $s)) {
    31433143                                                                $lang = "ur";
    3144                                                         } else if (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('pashto') . "]/u", $s)) {
     3144                                                        } elseif (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('pashto') . "]/u", $s)) {
    31453145                                                                $lang = "ps";
    3146                                                         } else if (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('persian') . "]/u", $s)) {
     3146                                                        } elseif (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('persian') . "]/u", $s)) {
    31473147                                                                $lang = "fa";
    3148                                                         } else if ($this->mpdf->baseScript != Ucdn::SCRIPT_ARABIC && $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch])) {
     3148                                                        } elseif ($this->mpdf->baseScript != Ucdn::SCRIPT_ARABIC && $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch])) {
    31493149                                                                $lang = "'." . $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch]) . "'";
    31503150                                                        }
    31513151                                                } // Identify Script block if not Basescript, and mark up as language
    3152                                                 else if ($scriptblocks[$sch] > 0 && $scriptblocks[$sch] != $this->mpdf->baseScript && $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch])) {
     3152                                                elseif ($scriptblocks[$sch] > 0 && $scriptblocks[$sch] != $this->mpdf->baseScript && $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch])) {
    31533153                                                        $lang = $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch]);
    31543154                                                }
     
    31813181                        return;
    31823182                } // mPDF 6
    3183                 else if (strtolower($name) == 'font-face') {
     3183                elseif (strtolower($name) == 'font-face') {
    31843184                        $last_svg_fontstyle = 'R';
    31853185                        $last_svg_fontstyle .= (isset($attribs['font-weight']) && $attribs['font-weight'] == 'bold') ? 'B' : '';
     
    32033203                        return;
    32043204                } // mPDF 6
    3205                 else if (strtolower($name) == 'missing-glyph') {
     3205                elseif (strtolower($name) == 'missing-glyph') {
    32063206                        if ($last_svg_fontid && isset($attribs['horiz-adv-x'])) {
    32073207                                $this->svg_font[$last_svg_fontid][$last_svg_fontstyle]['horiz-adv-x'] = (isset($attribs['horiz-adv-x']) ? $attribs['horiz-adv-x'] : '');
     
    32103210                        return;
    32113211                } // mPDF 6
    3212                 else if (strtolower($name) == 'glyph') {
     3212                elseif (strtolower($name) == 'glyph') {
    32133213                        if ($last_svg_fontid && isset($attribs['unicode'])) {
    32143214                                $this->svg_font[$last_svg_fontid][$last_svg_fontstyle]['glyphs'][$attribs['unicode']] = [
     
    32193219                        return;
    32203220                } // mPDF 5.7.2
    3221                 else if (strtolower($name) == 'lineargradient') {
     3221                elseif (strtolower($name) == 'lineargradient') {
    32223222                        $tmp_gradient = [
    32233223                                'type' => 'linear',
     
    32423242                        $this->svgAddGradient($attribs['id'], $tmp_gradient);
    32433243                        return;
    3244                 } else if (strtolower($name) == 'radialgradient') {
     3244                } elseif (strtolower($name) == 'radialgradient') {
    32453245                        $tmp_gradient = [
    32463246                                'type' => 'radial',
     
    32683268                        $this->svgAddGradient($attribs['id'], $tmp_gradient);
    32693269                        return;
    3270                 } else if (strtolower($name) == 'stop') {
     3270                } elseif (strtolower($name) == 'stop') {
    32713271                        if (!$last_gradid) {
    32723272                                return;
     
    32753275                        if (isset($attribs['style']) and preg_match('/stop-color:\s*([^;]*)/i', $attribs['style'], $m)) {
    32763276                                $color = trim($m[1]);
    3277                         } else if (isset($attribs['stop-color']) && $attribs['stop-color']) {
     3277                        } elseif (isset($attribs['stop-color']) && $attribs['stop-color']) {
    32783278                                $color = $attribs['stop-color'];
    32793279                        }
     
    32823282                                $col = $this->colorConverter->convert('#000000', $this->mpdf->PDFAXwarnings);
    32833283                        } // In case "transparent" or "inherit" returned
    3284                         if ($col{0} == 3 || $col{0} == 5) { // RGB
    3285                                 $color_final = sprintf('%.3F %.3F %.3F', ord($col{1}) / 255, ord($col{2}) / 255, ord($col{3}) / 255);
     3284                        if ($col[0] == 3 || $col[0] == 5) { // RGB
     3285                                $color_final = sprintf('%.3F %.3F %.3F', ord($col[1]) / 255, ord($col[2]) / 255, ord($col[3]) / 255);
    32863286                                $this->svg_gradient[$last_gradid]['colorspace'] = 'RGB';
    3287                         } else if ($col{0} == 4 || $col{0} == 6) { // CMYK
    3288                                 $color_final = sprintf('%.3F %.3F %.3F %.3F', ord($col{1}) / 100, ord($col{2}) / 100, ord($col{3}) / 100, ord($col{4}) / 100);
     3287                        } elseif ($col[0] == 4 || $col[0] == 6) { // CMYK
     3288                                $color_final = sprintf('%.3F %.3F %.3F %.3F', ord($col[1]) / 100, ord($col[2]) / 100, ord($col[3]) / 100, ord($col[4]) / 100);
    32893289                                $this->svg_gradient[$last_gradid]['colorspace'] = 'CMYK';
    3290                         } else if ($col{0} == 1) { // Grayscale
    3291                                 $color_final = sprintf('%.3F', ord($col{1}) / 255);
     3290                        } elseif ($col[0] == 1) { // Grayscale
     3291                                $color_final = sprintf('%.3F', ord($col[1]) / 255);
    32923292                                $this->svg_gradient[$last_gradid]['colorspace'] = 'Gray';
    32933293                        }
     
    32963296                        if (isset($attribs['style']) and preg_match('/stop-opacity:\s*([0-9.]*)/i', $attribs['style'], $m)) {
    32973297                                $stop_opacity = $m[1];
    3298                         } else if (isset($attribs['stop-opacity'])) {
     3298                        } elseif (isset($attribs['stop-opacity'])) {
    32993299                                $stop_opacity = $attribs['stop-opacity'];
    3300                         } else if ($col{0} == 5) { // RGBa
    3301                                 $stop_opacity = ord($col{4} / 100);
    3302                         } else if ($col{0} == 6) { // CMYKa
    3303                                 $stop_opacity = ord($col{5} / 100);
     3300                        } elseif ($col[0] == 5) { // RGBa
     3301                                $stop_opacity = ord($col[4] / 100);
     3302                        } elseif ($col[0] == 6) { // CMYKa
     3303                                $stop_opacity = ord($col[5] / 100);
    33043304                        }
    33053305
     
    36413641                                        if ($this->textanchor == 'end') {
    36423642                                                $tx = -$this->texttotallength;
    3643                                         } else if ($this->textanchor == 'middle') {
     3643                                        } elseif ($this->textanchor == 'middle') {
    36443644                                                $tx = -$this->texttotallength / 2;
    36453645                                        } else {
     
    38043804                                if ($this->textanchor == 'end') {
    38053805                                        $tx = -$this->texttotallength;
    3806                                 } else if ($this->textanchor == 'middle') {
     3806                                } elseif ($this->textanchor == 'middle') {
    38073807                                        $tx = -$this->texttotallength / 2;
    38083808                                } else {
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Image/Wmf.php

    r117543 r124193  
    183183                                        if ($func == 0x0325) {
    184184                                                $op = 's';
    185                                         } else if ($func == 0x0324) {
     185                                        } elseif ($func == 0x0324) {
    186186                                                if ($nullPen) {
    187187                                                        if ($nullBrush) {
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Mpdf.php

    r117543 r124193  
    4040        use FpdiTrait;
    4141
    42         const VERSION = '8.0.0';
     42        const VERSION = '8.0.5';
    4343
    4444        const SCALE = 72 / 25.4;
     
    702702        var $curlAllowUnsafeSslRequests;
    703703
     704        /**
     705         * Set the proxy for cURL.
     706         *
     707         * @see https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html
     708         *
     709         * @var string
     710         */
     711        var $curlProxy;
     712
     713        /**
     714         * Set the proxy auth for cURL.
     715         *
     716         * @see https://curl.haxx.se/libcurl/c/CURLOPT_PROXYUSERPWD.html
     717         *
     718         * @var string
     719         */
     720        var $curlProxyAuth;
     721
    704722        // Private properties FROM FPDF
    705723        var $DisplayPreferences;
     
    798816        var $innerblocktags;
    799817
     818        public $exposeVersion;
     819
    800820        /**
    801821         * @var string
     
    10531073                $this->tableBackgrounds = [];
    10541074                $this->uniqstr = '20110230'; // mPDF 5.7.2
    1055                 $this->kt_y00 = '';
    1056                 $this->kt_p00 = '';
     1075                $this->kt_y00 = 0;
     1076                $this->kt_p00 = 0;
    10571077                $this->BMPonly = [];
    10581078                $this->page = 0;
     
    22112231                if ($this->bodyBackgroundColor) {
    22122232                        $s .= 'q ' . $this->SetFColor($this->bodyBackgroundColor, true) . "\n";
    2213                         if ($this->bodyBackgroundColor{0} == 5) { // RGBa
    2214                                 $s .= $this->SetAlpha(ord($this->bodyBackgroundColor{4}) / 100, 'Normal', true, 'F') . "\n";
    2215                         } elseif ($this->bodyBackgroundColor{0} == 6) { // CMYKa
    2216                                 $s .= $this->SetAlpha(ord($this->bodyBackgroundColor{5}) / 100, 'Normal', true, 'F') . "\n";
     2233                        if ($this->bodyBackgroundColor[0] == 5) { // RGBa
     2234                                $s .= $this->SetAlpha(ord($this->bodyBackgroundColor[4]) / 100, 'Normal', true, 'F') . "\n";
     2235                        } elseif ($this->bodyBackgroundColor[0] == 6) { // CMYKa
     2236                                $s .= $this->SetAlpha(ord($this->bodyBackgroundColor[5]) / 100, 'Normal', true, 'F') . "\n";
    22172237                        }
    22182238                        $s .= sprintf('%.3F %.3F %.3F %.3F re f Q', ($clx * Mpdf::SCALE), ($cly * Mpdf::SCALE), $clw * Mpdf::SCALE, $clh * Mpdf::SCALE) . "\n";
     
    23002320                                        $s .= 'q ' . $this->SetFColor($pb['col'], true) . "\n";
    23012321
    2302                                         if ($pb['col'] && $pb['col']{0} === '5') { // RGBa
    2303                                                 $s .= $this->SetAlpha(ord($pb['col']{4}) / 100, 'Normal', true, 'F') . "\n";
    2304                                         } elseif ($pb['col'] && $pb['col']{0} === '6') { // CMYKa
    2305                                                 $s .= $this->SetAlpha(ord($pb['col']{5}) / 100, 'Normal', true, 'F') . "\n";
     2322                                        if ($pb['col'] && $pb['col'][0] === '5') { // RGBa
     2323                                                $s .= $this->SetAlpha(ord($pb['col'][4]) / 100, 'Normal', true, 'F') . "\n";
     2324                                        } elseif ($pb['col'] && $pb['col'][0] === '6') { // CMYKa
     2325                                                $s .= $this->SetAlpha(ord($pb['col'][5]) / 100, 'Normal', true, 'F') . "\n";
    23062326                                        }
    23072327
     
    25382558                                if ((!isset($pb['gradient']) || !$pb['gradient']) && (!isset($pb['image_id']) || !$pb['image_id'])) {
    25392559                                        $s .= 'q ' . $this->SetFColor($pb['col'], true) . "\n";
    2540                                         if ($pb['col']{0} == 5) { // RGBa
    2541                                                 $s .= $this->SetAlpha(ord($pb['col']{4}) / 100, 'Normal', true, 'F') . "\n";
    2542                                         } elseif ($pb['col']{0} == 6) { // CMYKa
    2543                                                 $s .= $this->SetAlpha(ord($pb['col']{5}) / 100, 'Normal', true, 'F') . "\n";
     2560                                        if ($pb['col'][0] == 5) { // RGBa
     2561                                                $s .= $this->SetAlpha(ord($pb['col'][4]) / 100, 'Normal', true, 'F') . "\n";
     2562                                        } elseif ($pb['col'][0] == 6) { // CMYKa
     2563                                                $s .= $this->SetAlpha(ord($pb['col'][5]) / 100, 'Normal', true, 'F') . "\n";
    25442564                                        }
    25452565                                        $s .= sprintf('%.3F %.3F %.3F %.3F re %s Q', $pb['x'] * Mpdf::SCALE, ($this->h - $pb['y']) * Mpdf::SCALE, $pb['w'] * Mpdf::SCALE, -$pb['h'] * Mpdf::SCALE, 'f') . "\n";
     
    33023322                        return '';
    33033323                } // mPDF 6
    3304                 if ($col{0} == 3 || $col{0} == 5) { // RGB / RGBa
    3305                         $out = sprintf('%.3F %.3F %.3F rg', ord($col{1}) / 255, ord($col{2}) / 255, ord($col{3}) / 255);
    3306                 } elseif ($col{0} == 1) { // GRAYSCALE
    3307                         $out = sprintf('%.3F g', ord($col{1}) / 255);
    3308                 } elseif ($col{0} == 2) { // SPOT COLOR
    3309                         $out = sprintf('/CS%d cs %.3F scn', ord($col{1}), ord($col{2}) / 100);
    3310                 } elseif ($col{0} == 4 || $col{0} == 6) { // CMYK / CMYKa
    3311                         $out = sprintf('%.3F %.3F %.3F %.3F k', ord($col{1}) / 100, ord($col{2}) / 100, ord($col{3}) / 100, ord($col{4}) / 100);
     3324                if ($col[0] == 3 || $col[0] == 5) { // RGB / RGBa
     3325                        $out = sprintf('%.3F %.3F %.3F rg', ord($col[1]) / 255, ord($col[2]) / 255, ord($col[3]) / 255);
     3326                } elseif ($col[0] == 1) { // GRAYSCALE
     3327                        $out = sprintf('%.3F g', ord($col[1]) / 255);
     3328                } elseif ($col[0] == 2) { // SPOT COLOR
     3329                        $out = sprintf('/CS%d cs %.3F scn', ord($col[1]), ord($col[2]) / 100);
     3330                } elseif ($col[0] == 4 || $col[0] == 6) { // CMYK / CMYKa
     3331                        $out = sprintf('%.3F %.3F %.3F %.3F k', ord($col[1]) / 100, ord($col[2]) / 100, ord($col[3]) / 100, ord($col[4]) / 100);
    33123332                }
    33133333                if ($type == 'Draw') {
     
    45634583                        for ($c = 0; $c < count($cOTLdata); $c++) {
    45644584                                for ($i = 0; $i < strlen($cOTLdata[$c]['group']); $i++) {
    4565                                         if ($cOTLdata[$c]['group']{$i} == 'S') {
     4585                                        if ($cOTLdata[$c]['group'][$i] == 'S') {
    45664586                                                // Save from last word
    45674587                                                if ($max_kashida_in_word) {
     
    53035323                                        $s .= ' q ';
    53045324                                        $s .= $this->SetTColor($ts['col'], true) . "\n";
    5305                                         if ($ts['col']{0} == 5 && ord($ts['col']{4}) < 100) { // RGBa
    5306                                                 $s .= $this->SetAlpha(ord($ts['col']{4}) / 100, 'Normal', true, 'F') . "\n";
    5307                                         } elseif ($ts['col']{0} == 6 && ord($ts['col']{5}) < 100) { // CMYKa
    5308                                                 $s .= $this->SetAlpha(ord($ts['col']{5}) / 100, 'Normal', true, 'F') . "\n";
    5309                                         } elseif ($ts['col']{0} == 1 && $ts['col']{2} == 1 && ord($ts['col']{3}) < 100) { // Gray
    5310                                                 $s .= $this->SetAlpha(ord($ts['col']{3}) / 100, 'Normal', true, 'F') . "\n";
     5325                                        if ($ts['col'][0] == 5 && ord($ts['col'][4]) < 100) { // RGBa
     5326                                                $s .= $this->SetAlpha(ord($ts['col'][4]) / 100, 'Normal', true, 'F') . "\n";
     5327                                        } elseif ($ts['col'][0] == 6 && ord($ts['col'][5]) < 100) { // CMYKa
     5328                                                $s .= $this->SetAlpha(ord($ts['col'][5]) / 100, 'Normal', true, 'F') . "\n";
     5329                                        } elseif ($ts['col'][0] == 1 && $ts['col'][2] == 1 && ord($ts['col'][3]) < 100) { // Gray
     5330                                                $s .= $this->SetAlpha(ord($ts['col'][3]) / 100, 'Normal', true, 'F') . "\n";
    53115331                                        }
    53125332                                        $s .= sprintf(' 1 0 0 1 %.4F %.4F cm', $ts['x'] * Mpdf::SCALE, -$ts['y'] * Mpdf::SCALE) . "\n";
     
    55905610                                // Get YPlacement from next Base character
    55915611                                $nextbase = $i + 1;
    5592                                 while ($OTLdata['group']{$nextbase} != 'C') {
     5612                                while ($OTLdata['group'][$nextbase] != 'C') {
    55935613                                        $nextbase++;
    55945614                                }
     
    94119431                                        header('Cache-Control: public, must-revalidate, max-age=0');
    94129432                                        header('Pragma: public');
    9413                                         header('X-Generator: mPDF ' . static::VERSION);
     9433                                        header('X-Generator: mPDF' . ($this->exposeVersion ? (' ' . static::VERSION) : ''));
    94149434                                        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
    94159435                                        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
     
    94309450                                header('Cache-Control: public, must-revalidate, max-age=0');
    94319451                                header('Pragma: public');
    9432                                 header('X-Generator: mPDF ' . static::VERSION);
     9452                                header('X-Generator: mPDF' . ($this->exposeVersion ? (' ' . static::VERSION) : ''));
    94339453                                header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
    94349454                                header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
     
    1092010940                // If an inline element has a font-size less than the block element, and the line-height is set as an em or % value
    1092110941                // it will add too much leading below the font and expand the height of the line - so just use the block element exttop/extbottom:
    10922                 if (preg_match('/mm/', $CSSlineheight) && $ypos['boxtop'] < $blockYpos['boxtop'] && $ypos['boxbottom'] > $blockYpos['boxbottom']) {
     10942                if (preg_match('/mm/', $CSSlineheight)
     10943                                && ($blockYpos && $ypos['boxtop'] < $blockYpos['boxtop'])
     10944                                && ($blockYpos && $ypos['boxbottom'] > $blockYpos['boxbottom'])) {
     10945
    1092310946                        $ypos['exttop'] = $blockYpos['exttop'];
    1092410947                        $ypos['extbottom'] = $blockYpos['extbottom'];
     10948
    1092510949                } else {
     10950
    1092610951                        $leading += ($lineheight - $fontheight);
    1092710952
     
    1124311268                }
    1124411269                if (!$str) {
    11245                         if ($_SERVER['SCRIPT_NAME']) {
     11270                        if (isset($_SERVER['SCRIPT_NAME'])) {
    1124611271                                $currentPath = dirname($_SERVER['SCRIPT_NAME']);
    1124711272                        } else {
     
    1365613681                        // Create Internal Links, if needed
    1365713682                        if (!empty($this->internallink)) {
     13683
    1365813684                                foreach ($this->internallink as $k => $v) {
     13685
    1365913686                                        if (strpos($k, "#") !== false) {
    1366013687                                                continue;
    13661                                         } // ignore
     13688                                        }
     13689
     13690                                        if (!is_array($v)) {
     13691                                                continue;
     13692                                        }
     13693
    1366213694                                        $ypos = $v['Y'];
    1366313695                                        $pagenum = $v['PAGE'];
    1366413696                                        $sharp = "#";
     13697
    1366513698                                        while (array_key_exists($sharp . $k, $this->internallink)) {
    1366613699                                                $internallink = $this->internallink[$sharp . $k];
     
    1463314666                        }
    1463414667                } else {
    14635                         return [];
     14668                        return ['w' => 0, 's' => 0];
    1463614669                }
    1463714670                // Size
     
    1698717020                        foreach ($this->blk[$blvl]['box_shadow'] as $sh) {
    1698817021                                // Colors
    16989                                 if ($sh['col']{0} == 1) {
     17022                                if ($sh['col'][0] == 1) {
    1699017023                                        $colspace = 'Gray';
    16991                                         if ($sh['col']{2} == 1) {
     17024                                        if ($sh['col'][2] == 1) {
    1699217025                                                $col1 = '1' . $sh['col'][1] . '1' . $sh['col'][3];
    1699317026                                        } else {
     
    1699517028                                        }
    1699617029                                        $col2 = '1' . $sh['col'][1] . '1' . chr(0);
    16997                                 } elseif ($sh['col']{0} == 4) { // CMYK
     17030                                } elseif ($sh['col'][0] == 4) { // CMYK
    1699817031                                        $colspace = 'CMYK';
    1699917032                                        $col1 = '6' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . $sh['col'][4] . chr(100);
    1700017033                                        $col2 = '6' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . $sh['col'][4] . chr(0);
    17001                                 } elseif ($sh['col']{0} == 5) { // RGBa
     17034                                } elseif ($sh['col'][0] == 5) { // RGBa
    1700217035                                        $colspace = 'RGB';
    1700317036                                        $col1 = '5' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . $sh['col'][4];
    1700417037                                        $col2 = '5' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . chr(0);
    17005                                 } elseif ($sh['col']{0} == 6) { // CMYKa
     17038                                } elseif ($sh['col'][0] == 6) { // CMYKa
    1700617039                                        $colspace = 'CMYK';
    1700717040                                        $col1 = '6' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . $sh['col'][4] . $sh['col'][5];
     
    1703317066                                $shadow .= ' q 0 w ';
    1703417067                                $shadow .= $this->SetFColor($col1, true) . "\n";
    17035                                 if ($col1{0} == 5 && ord($col1{4}) < 100) { // RGBa
    17036                                         $shadow .= $this->SetAlpha(ord($col1{4}) / 100, 'Normal', true, 'F') . "\n";
    17037                                 } elseif ($col1{0} == 6 && ord($col1{5}) < 100) { // CMYKa
    17038                                         $shadow .= $this->SetAlpha(ord($col1{5}) / 100, 'Normal', true, 'F') . "\n";
    17039                                 } elseif ($col1{0} == 1 && $col1{2} == 1 && ord($col1{3}) < 100) { // Gray
    17040                                         $shadow .= $this->SetAlpha(ord($col1{3}) / 100, 'Normal', true, 'F') . "\n";
     17068                                if ($col1[0] == 5 && ord($col1[4]) < 100) { // RGBa
     17069                                        $shadow .= $this->SetAlpha(ord($col1[4]) / 100, 'Normal', true, 'F') . "\n";
     17070                                } elseif ($col1[0] == 6 && ord($col1[5]) < 100) { // CMYKa
     17071                                        $shadow .= $this->SetAlpha(ord($col1[5]) / 100, 'Normal', true, 'F') . "\n";
     17072                                } elseif ($col1[0] == 1 && $col1[2] == 1 && ord($col1[3]) < 100) { // Gray
     17073                                        $shadow .= $this->SetAlpha(ord($col1[3]) / 100, 'Normal', true, 'F') . "\n";
    1704117074                                }
    1704217075
     
    2056320596                                        $coldom = 0;
    2056420597                                        if (isset($details[$side]['c']) && is_array($details[$side]['c'])) {
    20565                                                 if ($details[$side]['c']{0} == 3) {  // RGB
    20566                                                         $coldom = 10 - (((ord($details[$side]['c']{1}) * 1.00) + (ord($details[$side]['c']{2}) * 1.00) + (ord($details[$side]['c']{3}) * 1.00)) / 76.5);
     20598                                                if ($details[$side]['c'][0] == 3) {  // RGB
     20599                                                        $coldom = 10 - (((ord($details[$side]['c'][1]) * 1.00) + (ord($details[$side]['c'][2]) * 1.00) + (ord($details[$side]['c'][3]) * 1.00)) / 76.5);
    2056720600                                                }
    2056820601                                        } // 10 black - 0 white
     
    2140521438                                        // ['border_details']['mbw']['LT'] = meeting border width - Left border - Top end
    2140621439                                        if (!$table['borders_separate']) {
     21440
    2140721441                                                $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $cbord['border_details']['L']['w']);
    2140821442                                                $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $cbord['border_details']['R']['w']);
     
    2141321447                                                $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $cbord['border_details']['T']['w']);
    2141421448                                                $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $cbord['border_details']['B']['w']);
     21449
    2141521450                                                if (($i + $crowsp) < $numrows && isset($cells[$i + $crowsp][$j])) { // Has Bottom adjoining cell
     21451
    2141621452                                                        if ($this->packTableData) {
    2141721453                                                                $adjc = $cells[$i + $crowsp][$j];
     
    2142021456                                                                $celladj = & $cells[$i + $crowsp][$j];
    2142121457                                                        }
    21422                                                         $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $celladj['border_details']['L']['w'], $celladj['border_details']['mbw']['TL']);
    21423                                                         $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $celladj['border_details']['R']['w'], $celladj['border_details']['mbw']['TR']);
    21424                                                         $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $celladj['border_details']['mbw']['LT']);
    21425                                                         $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $celladj['border_details']['mbw']['RT']);
     21458
     21459                                                        $cbord['border_details']['mbw']['BL'] = max(
     21460                                                                $cbord['border_details']['mbw']['BL'],
     21461                                                                $celladj ? $celladj['border_details']['L']['w'] : 0,
     21462                                                                $celladj ? $celladj['border_details']['mbw']['TL']: 0
     21463                                                        );
     21464
     21465                                                        $cbord['border_details']['mbw']['BR'] = max(
     21466                                                                $cbord['border_details']['mbw']['BR'],
     21467                                                                $celladj ? $celladj['border_details']['R']['w'] : 0,
     21468                                                                $celladj ? $celladj['border_details']['mbw']['TR']: 0
     21469                                                        );
     21470
     21471                                                        $cbord['border_details']['mbw']['LB'] = max(
     21472                                                                $cbord['border_details']['mbw']['LB'],
     21473                                                                $celladj ? $celladj['border_details']['mbw']['LT'] : 0
     21474                                                        );
     21475
     21476                                                        $cbord['border_details']['mbw']['RB'] = max(
     21477                                                                $cbord['border_details']['mbw']['RB'],
     21478                                                                $celladj ? $celladj['border_details']['mbw']['RT'] : 0
     21479                                                        );
     21480
    2142621481                                                        unset($celladj);
    2142721482                                                }
     21483
    2142821484                                                if (($j + $ccolsp) < $numcols && isset($cells[$i][$j + $ccolsp])) { // Has Right adjoining cell
     21485
    2142921486                                                        if ($this->packTableData) {
    2143021487                                                                $adjc = $cells[$i][$j + $ccolsp];
     
    2143321490                                                                $celladj = & $cells[$i][$j + $ccolsp];
    2143421491                                                        }
    21435                                                         $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $celladj['border_details']['T']['w'], $celladj['border_details']['mbw']['LT']);
    21436                                                         $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $celladj['border_details']['B']['w'], $celladj['border_details']['mbw']['LB']);
    21437                                                         $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $celladj['border_details']['mbw']['TL']);
    21438                                                         $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $celladj['border_details']['mbw']['BL']);
     21492
     21493                                                        $cbord['border_details']['mbw']['RT'] = max(
     21494                                                                $cbord['border_details']['mbw']['RT'],
     21495                                                                $celladj ? $celladj['border_details']['T']['w'] : 0,
     21496                                                                $celladj ? $celladj['border_details']['mbw']['LT'] : 0
     21497                                                        );
     21498
     21499                                                        $cbord['border_details']['mbw']['RB'] = max(
     21500                                                                $cbord['border_details']['mbw']['RB'],
     21501                                                                $celladj ? $celladj['border_details']['B']['w'] : 0,
     21502                                                                $celladj ? $celladj['border_details']['mbw']['LB'] : 0
     21503                                                        );
     21504
     21505                                                        $cbord['border_details']['mbw']['TR'] = max(
     21506                                                                $cbord['border_details']['mbw']['TR'],
     21507                                                                $celladj ? $celladj['border_details']['mbw']['TL'] : 0
     21508                                                        );
     21509
     21510                                                        $cbord['border_details']['mbw']['BR'] = max(
     21511                                                                $cbord['border_details']['mbw']['BR'],
     21512                                                                $celladj ? $celladj['border_details']['mbw']['BL'] : 0
     21513                                                        );
     21514
    2143921515                                                        unset($celladj);
    2144021516                                                }
    2144121517
    21442                                                 if ($i > 0 && isset($cells[$i - 1][$j]) && (($this->packTableData && $cells[$i - 1][$j]['borderbin']) || $cells[$i - 1][$j]['border'])) { // Has Top adjoining cell
     21518                                                if ($i > 0 && isset($cells[$i - 1][$j]) && is_array($cells[$i - 1][$j]) && (($this->packTableData && $cells[$i - 1][$j]['borderbin']) || $cells[$i - 1][$j]['border'])) { // Has Top adjoining cell
     21519
    2144321520                                                        if ($this->packTableData) {
    2144421521                                                                $adjc = $cells[$i - 1][$j];
     
    2144721524                                                                $celladj = & $cells[$i - 1][$j];
    2144821525                                                        }
    21449                                                         $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['L']['w'], $celladj['border_details']['mbw']['BL']);
    21450                                                         $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $celladj['border_details']['R']['w'], $celladj['border_details']['mbw']['BR']);
    21451                                                         $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $celladj['border_details']['mbw']['LB']);
    21452                                                         $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $celladj['border_details']['mbw']['RB']);
     21526
     21527                                                        $cbord['border_details']['mbw']['TL'] = max(
     21528                                                                $cbord['border_details']['mbw']['TL'],
     21529                                                                $celladj ? $celladj['border_details']['L']['w'] : 0,
     21530                                                                $celladj ? $celladj['border_details']['mbw']['BL'] : 0
     21531                                                        );
     21532
     21533                                                        $cbord['border_details']['mbw']['TR'] = max(
     21534                                                                $cbord['border_details']['mbw']['TR'],
     21535                                                                $celladj ? $celladj['border_details']['R']['w'] : 0,
     21536                                                                $celladj ? $celladj['border_details']['mbw']['BR'] : 0
     21537                                                        );
     21538
     21539                                                        $cbord['border_details']['mbw']['LT'] = max(
     21540                                                                $cbord['border_details']['mbw']['LT'],
     21541                                                                $celladj ? $celladj['border_details']['mbw']['LB'] : 0
     21542                                                        );
     21543
     21544                                                        $cbord['border_details']['mbw']['RT'] = max(
     21545                                                                $cbord['border_details']['mbw']['RT'],
     21546                                                                $celladj ? $celladj['border_details']['mbw']['RB'] : 0
     21547                                                        );
    2145321548
    2145421549                                                        if ($celladj['border_details']['mbw']['BL']) {
    2145521550                                                                $celladj['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['BL']);
    2145621551                                                        }
     21552
    2145721553                                                        if ($celladj['border_details']['mbw']['BR']) {
    2145821554                                                                $celladj['border_details']['mbw']['BR'] = max($celladj['border_details']['mbw']['BR'], $cbord['border_details']['mbw']['TR']);
    2145921555                                                        }
     21556
    2146021557                                                        if ($this->packTableData) {
    2146121558                                                                $cells[$i - 1][$j]['borderbin'] = $this->_packCellBorder($celladj);
     
    2146321560                                                        unset($celladj);
    2146421561                                                }
    21465                                                 if ($j > 0 && isset($cells[$i][$j - 1]) && (($this->packTableData && $cells[$i][$j - 1]['borderbin']) || $cells[$i][$j - 1]['border'])) { // Has Left adjoining cell
     21562
     21563                                                if ($j > 0 && isset($cells[$i][$j - 1]) && is_array($cells[$i][$j - 1]) && (($this->packTableData && $cells[$i][$j - 1]['borderbin']) || $cells[$i][$j - 1]['border'])) { // Has Left adjoining cell
     21564
    2146621565                                                        if ($this->packTableData) {
    2146721566                                                                $adjc = $cells[$i][$j - 1];
     
    2147021569                                                                $celladj = & $cells[$i][$j - 1];
    2147121570                                                        }
    21472                                                         $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $celladj['border_details']['T']['w'], $celladj['border_details']['mbw']['RT']);
    21473                                                         $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $celladj['border_details']['B']['w'], $celladj['border_details']['mbw']['RB']);
    21474                                                         $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $celladj['border_details']['mbw']['BR']);
    21475                                                         $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['TR']);
     21571
     21572                                                        $cbord['border_details']['mbw']['LT'] = max(
     21573                                                                $cbord['border_details']['mbw']['LT'],
     21574                                                                $celladj ? $celladj['border_details']['T']['w'] : 0,
     21575                                                                $celladj ? $celladj['border_details']['mbw']['RT'] : 0
     21576                                                        );
     21577
     21578                                                        $cbord['border_details']['mbw']['LB'] = max(
     21579                                                                $cbord['border_details']['mbw']['LB'],
     21580                                                                $celladj ? $celladj['border_details']['B']['w'] : 0,
     21581                                                                $celladj ? $celladj['border_details']['mbw']['RB'] : 0
     21582                                                        );
     21583
     21584                                                        $cbord['border_details']['mbw']['BL'] = max(
     21585                                                                $cbord['border_details']['mbw']['BL'],
     21586                                                                $celladj ? $celladj['border_details']['mbw']['BR'] : 0
     21587                                                        );
     21588
     21589                                                        $cbord['border_details']['mbw']['TL'] = max(
     21590                                                                $cbord['border_details']['mbw']['TL'],
     21591                                                                $celladj ? $celladj['border_details']['mbw']['TR'] : 0
     21592                                                        );
    2147621593
    2147721594                                                        if ($celladj['border_details']['mbw']['RT']) {
    2147821595                                                                $celladj['border_details']['mbw']['RT'] = max($celladj['border_details']['mbw']['RT'], $cbord['border_details']['mbw']['LT']);
    2147921596                                                        }
     21597
    2148021598                                                        if ($celladj['border_details']['mbw']['RB']) {
    2148121599                                                                $celladj['border_details']['mbw']['RB'] = max($celladj['border_details']['mbw']['RB'], $cbord['border_details']['mbw']['LB']);
    2148221600                                                        }
     21601
    2148321602                                                        if ($this->packTableData) {
    2148421603                                                                $cells[$i][$j - 1]['borderbin'] = $this->_packCellBorder($celladj);
    2148521604                                                        }
     21605
    2148621606                                                        unset($celladj);
    2148721607                                                }
     
    2335923479                if (count($this->internallink)) {
    2336023480                        foreach ($this->internallink as $key => $o) {
    23361                                 if ($o['PAGE'] >= $start_page && $o['PAGE'] <= $end_page) {
     23481                                if (is_array($o) && $o['PAGE'] >= $start_page && $o['PAGE'] <= $end_page) {
    2336223482                                        $this->internallink[$key]['PAGE'] += ($target_page - $start_page);
    23363                                 } elseif ($o['PAGE'] >= $target_page && $o['PAGE'] < $start_page) {
     23483                                } elseif (is_array($o) && $o['PAGE'] >= $target_page && $o['PAGE'] < $start_page) {
    2336423484                                        $this->internallink[$key]['PAGE'] += $n_toc;
    2336523485                                }
     
    2369023810                } // *OTL*
    2369123811                $this->Reference[] = ['t' => $txta . ' - see ' . $txtb, 'p' => []];
     23812        }
     23813
     23814        private function filesInDir($directory)
     23815        {
     23816                $files = [];
     23817                foreach ((new \DirectoryIterator($directory)) as $v) {
     23818                        if ($v->isDir() || $v->isDot()) {
     23819                                continue;
     23820                        }
     23821
     23822                        $files[] = $v->getPathname();
     23823                }
     23824
     23825                return $files;
    2369223826        }
    2369323827
     
    2372823862
    2372923863                if ($usedivletters) {
    23730                         if ($indexCollationGroup) {
     23864                        if ($indexCollationGroup && \in_array(strtolower($indexCollationGroup), array_map(function ($v) {
     23865                                        return strtolower(basename($v, '.php'));
     23866                        }, $this->filesInDir(__DIR__ . '/../data/collations/')))) {
    2373123867                                $collation = require __DIR__ . '/../data/collations/' . $indexCollationGroup . '.php';
    2373223868                        } else {
     
    2618326319                        $tlm = $blm = $arrcode['quietTB'] / $k;
    2618426320                        $height = 1;  // Overrides
    26185                 } elseif (in_array($btype, ['C128A', 'C128B', 'C128C', 'EAN128A', 'EAN128B', 'EAN128C', 'C39', 'C39+', 'C39E', 'C39E+', 'S25', 'S25+', 'I25', 'I25+', 'I25B', 'I25B+', 'C93', 'MSI', 'MSI+', 'CODABAR', 'CODE11'])) {
     26321                } elseif (in_array($btype, ['C128A', 'C128B', 'C128C', 'C128RAW', 'EAN128A', 'EAN128B', 'EAN128C', 'C39', 'C39+', 'C39E', 'C39E+', 'S25', 'S25+', 'I25', 'I25+', 'I25B', 'I25B+', 'C93', 'MSI', 'MSI+', 'CODABAR', 'CODE11'])) {
    2618626322                        $llm = $arrcode['lightmL'] * $xres; // Left Quiet margin
    2618726323                        $rlm = $arrcode['lightmR'] * $xres; // Right Quiet margin
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Otl.php

    r117543 r124193  
    31023102                $matches = [];
    31033103                while ($ok) {
    3104                         $x = ord($dict{$dictptr});
     3104                        $x = ord($dict[$dictptr]);
    31053105                        $c = $this->OTLdata[$ptr]['uni'] & 0xFF;
    31063106                        if ($x == static::_DICT_INTERMEDIATE_MATCH) {
     
    31213121//echo "DICT_NODE_TYPE_LINEAR: ".dechex($c).'<br />';
    31223122                                $dictptr++;
    3123                                 $m = ord($dict{$dictptr});
     3123                                $m = ord($dict[$dictptr]);
    31243124                                if ($c == $m) {
    31253125                                        $ptr++;
    31263126                                        if ($ptr > count($this->OTLdata) - 1) {
    3127                                                 $next = ord($dict{$dictptr + 1});
     3127                                                $next = ord($dict[$dictptr + 1]);
    31283128                                                if ($next == static::_DICT_INTERMEDIATE_MATCH || $next == static::_DICT_FINAL_MATCH) {
    31293129                                                        // Do not match if next character in text is a Mark
     
    31433143//echo "DICT_NODE_TYPE_SPLIT ON ".dechex($d).": ".dechex($c).'<br />';
    31443144                                $dictptr++;
    3145                                 $d = ord($dict{$dictptr});
     3145                                $d = ord($dict[$dictptr]);
    31463146                                if ($c < $d) {
    31473147                                        $dictptr += 5;
     
    31493149                                        $dictptr++;
    31503150                                        // Unsigned long 32-bit offset
    3151                                         $offset = (ord($dict{$dictptr}) * 16777216) + (ord($dict{$dictptr + 1}) << 16) + (ord($dict{$dictptr + 2}) << 8) + ord($dict{$dictptr + 3});
     3151                                        $offset = (ord($dict[$dictptr]) * 16777216) + (ord($dict[$dictptr + 1]) << 16) + (ord($dict[$dictptr + 2]) << 8) + ord($dict[$dictptr + 3]);
    31523152                                        $dictptr = $offset;
    31533153                                }
     
    46814681                                        $gpos = '';
    46824682                                }
    4683                                 $chardata[] = ['char' => $chunkOTLdata['char_data'][$i]['uni'], 'level' => $cel, 'type' => $chardir, 'group' => $chunkOTLdata['group']{$i}, 'GPOSinfo' => $gpos];
     4683                                $chardata[] = ['char' => $chunkOTLdata['char_data'][$i]['uni'], 'level' => $cel, 'type' => $chardir, 'group' => $chunkOTLdata['group'][$i], 'GPOSinfo' => $gpos];
    46844684                        }
    46854685                }
     
    55915591                                        $carac['orig_type'] = $cOTLdata[$nc]['char_data'][$i]['orig_type'];
    55925592                                }
    5593                                 $carac['group'] = $cOTLdata[$nc]['group']{$i};
     5593                                $carac['group'] = $cOTLdata[$nc]['group'][$i];
    55945594                                $carac['chunkid'] = $chunkorder[$nc]; // gives font id and/or object ID
    55955595
     
    57925792        public function trimOTLdata(&$cOTLdata, $Left = true, $Right = true)
    57935793        {
    5794                 $len = $cOTLdata['char_data'] === null ? 0 : count($cOTLdata['char_data']);
     5794                $len = (!is_array($cOTLdata) || $cOTLdata['char_data'] === null) ? 0 : count($cOTLdata['char_data']);
    57955795                $nLeft = 0;
    57965796                $nRight = 0;
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Pdf/Protection.php

    r117543 r124193  
    271271                                $key = '';
    272272                                for ($j = 0; $j < $len; ++$j) {
    273                                         $key .= chr(ord($owner_rc4_key{$j}) ^ $i);
     273                                        $key .= chr(ord($owner_rc4_key[$j]) ^ $i);
    274274                                }
    275275                                $enc = $this->rc4($key, $enc);
     
    289289                                $key = '';
    290290                                for ($j = 0; $j < $len; ++$j) {
    291                                         $key .= chr(ord($this->encryptionKey{$j}) ^ $i);
     291                                        $key .= chr(ord($this->encryptionKey[$j]) ^ $i);
    292292                                }
    293293                                $enc = $this->rc4($key, $enc);
     
    353353                }
    354354                for ($i = 0; $i < $len; $i += 2) {
    355                         $s .= chr(hexdec($hs{$i} . $hs{($i + 1)}));
     355                        $s .= chr(hexdec($hs[$i] . $hs[($i + 1)]));
    356356                }
    357357
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/RemoteContentFetcher.php

    r117543 r124193  
    5151                }
    5252
     53                if ($this->mpdf->curlProxy) {
     54                        curl_setopt($ch, CURLOPT_PROXY, $this->mpdf->curlProxy);
     55                        if ($this->mpdf->curlProxyAuth) {
     56                                curl_setopt($ch, CURLOPT_PROXYUSERPWD, $this->mpdf->curlProxyAuth);
     57                        }
     58                }
     59
    5360                $data = curl_exec($ch);
    5461
    5562                if (curl_error($ch)) {
    56                         $this->logger->error(sprintf('cURL error: "%s"', curl_error($ch)), ['context' => LogContext::REMOTE_CONTENT]);
     63                        $message = sprintf('cURL error: "%s"', curl_error($ch));
     64                        $this->logger->error($message, ['context' => LogContext::REMOTE_CONTENT]);
     65
     66                        if ($this->mpdf->debug) {
     67                                throw new \Mpdf\MpdfException($message);
     68                        }
     69                }
     70
     71                $info = curl_getinfo($ch);
     72                if (isset($info['http_code']) && $info['http_code'] !== 200) {
     73                        $message = sprintf('HTTP error: %d', $info['http_code']);
     74                        $this->logger->error($message, ['context' => LogContext::REMOTE_CONTENT]);
     75
     76                        if ($this->mpdf->debug) {
     77                                throw new \Mpdf\MpdfException($message);
     78                        }
    5779                }
    5880
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Shaper/Indic.php

    r117543 r124193  
    150150                if ($u == 0x200C) {
    151151                        $cat = self::OT_ZWNJ;
    152                 } else if ($u == 0x200D) {
     152                } elseif ($u == 0x200D) {
    153153                        $cat = self::OT_ZWJ;
    154                 } else if ($u == 0x25CC) {
     154                } elseif ($u == 0x25CC) {
    155155                        $cat = self::OT_DOTTEDCIRCLE;
    156                 } else if ($u == 0x0A71) {
     156                } elseif ($u == 0x0A71) {
    157157                        $cat = self::OT_SM;
    158158                } /* GURMUKHI ADDAK.    More like consonant medial. like 0A75. */
     
    185185                                $cat = self::OT_RA;
    186186                        }
    187                 } else if ($cat == self::OT_M) {
     187                } elseif ($cat == self::OT_M) {
    188188                        $pos = self::matra_position($u, $pos);
    189                 } else if ($cat == self::OT_SM || $cat == self::OT_VD) {
     189                } elseif ($cat == self::OT_SM || $cat == self::OT_VD) {
    190190                        $pos = self::POS_SMVD;
    191191                }
     
    225225                        } // VOWEL_SYLLABLE Vowel-based syllable
    226226                        // From OT spec:
    227                         else if (preg_match('/^(RH|r)?V[N]?([ZJ]?H[CR]m*|J[CR]m*)?([M]*[N]?[H]?)?[S]?[v]{0,2}/', substr($s, $ptr), $ma)) {
     227                        elseif (preg_match('/^(RH|r)?V[N]?([ZJ]?H[CR]m*|J[CR]m*)?([M]*[N]?[H]?)?[S]?[v]{0,2}/', substr($s, $ptr), $ma)) {
    228228                                // From HarfBuzz:
    229229                                //else if (preg_match('/^(RH|r)?V(Z?[N]{0,2})?(J|([ZJ]?H(J[N]?)?[CR]J?(Z?[N]{0,2})?){0,4}((([ZJ]?H(J[N]?)?)|HZ)|(HJ)?([ZJ]{0,3}M[N]?(H|JHJR)?){0,4})?(S[Z]?)?[v]{0,2})/', substr($s,$ptr), $ma)) {
     
    233233                        // STANDALONE_CLUSTER Stand Alone syllable at start of word
    234234                        // From OT spec:
    235                         else if (($ptr == 0 ||
     235                        elseif (($ptr == 0 ||
    236236                                $o[$ptr - 1]['general_category'] < Ucdn::UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER ||
    237237                                $o[$ptr - 1]['general_category'] > Ucdn::UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK
     
    242242                                $syllable_type = self::STANDALONE_CLUSTER;
    243243                        } // BROKEN_CLUSTER syllable
    244                         else if (preg_match('/^(RH|r)?[N]?([ZJ]?H[CR])?([M]*[N]?[H]?)?[S]?[v]{0,2}/', substr($s, $ptr), $ma)) {
     244                        elseif (preg_match('/^(RH|r)?[N]?([ZJ]?H[CR])?([M]*[N]?[H]?)?[S]?[v]{0,2}/', substr($s, $ptr), $ma)) {
    245245                                // From HarfBuzz:
    246246                                //else if (preg_match('/^(RH|r)?(Z?[N]{0,2})?(([ZJ]?H(J[N]?)?)[CR]J?(Z?[N]{0,2})?){0,4}((([ZJ]?H(J[N]?)?)|HZ)|(HJ)?([ZJ]{0,3}M[N]?(H|JHJR)?){0,4})(S[Z]?)?[v]{0,2}/', substr($s,$ptr), $ma)) {
     
    280280                        } // VOWEL_SYLLABLE Vowel-based syllable
    281281                        // From OT spec:
    282                         else if (preg_match('/^V[S]{0,1}/', substr($s, $ptr), $ma)) {
     282                        elseif (preg_match('/^V[S]{0,1}/', substr($s, $ptr), $ma)) {
    283283                                $syllable_length = strlen($ma[0]);
    284284                                $syllable_type = self::VOWEL_SYLLABLE;
     
    311311                                $syllable_type = self::CONSONANT_SYLLABLE;
    312312                        } // VOWEL_SYLLABLE Vowel-based syllable
    313                         else if (preg_match('/^(RH|r)?V((Z?F)?[N]{0,2})?(J|([ZJ]?G(JN?)?[CR]J?((Z?F)?[N]{0,2})?){0,4}((([ZJ]?G(JN?)?)|GZ)|(GJ)?([ZJ]{0,3}MN?(H|JHJR)?){0,4})?(G([CR]J?((Z?F)?[N]{0,2})?|V))?(SZ?)?[v]{0,2})/', substr($s, $ptr), $ma)) {
     313                        elseif (preg_match('/^(RH|r)?V((Z?F)?[N]{0,2})?(J|([ZJ]?G(JN?)?[CR]J?((Z?F)?[N]{0,2})?){0,4}((([ZJ]?G(JN?)?)|GZ)|(GJ)?([ZJ]{0,3}MN?(H|JHJR)?){0,4})?(G([CR]J?((Z?F)?[N]{0,2})?|V))?(SZ?)?[v]{0,2})/', substr($s, $ptr), $ma)) {
    314314                                $syllable_length = strlen($ma[0]);
    315315                                $syllable_type = self::VOWEL_SYLLABLE;
    316316                        } // BROKEN_CLUSTER syllable
    317                         else if (preg_match('/^(RH|r)?((Z?F)?[N]{0,2})?(([ZJ]?G(JN?)?)[CR]J?((Z?F)?[N]{0,2})?){0,4}((([ZJ]?G(JN?)?)|GZ)|(GJ)?([ZJ]{0,3}MN?(H|JHJR)?){0,4})(G([CR]J?((Z?F)?[N]{0,2})?|V))?(SZ?)?[v]{0,2}/', substr($s, $ptr), $ma)) {
     317                        elseif (preg_match('/^(RH|r)?((Z?F)?[N]{0,2})?(([ZJ]?G(JN?)?)[CR]J?((Z?F)?[N]{0,2})?){0,4}((([ZJ]?G(JN?)?)|GZ)|(GJ)?([ZJ]{0,3}MN?(H|JHJR)?){0,4})(G([CR]J?((Z?F)?[N]{0,2})?|V))?(SZ?)?[v]{0,2}/', substr($s, $ptr), $ma)) {
    318318                                if (strlen($ma[0])) { // May match blank
    319319                                        $syllable_length = strlen($ma[0]);
     
    368368                                if (isset($GSUBdata['pref'][$c])) {
    369369                                        $info[$i]['indic_position'] = self::POS_POST_C;
    370                                 } else if (isset($GSUBdata['blwf'][$c])) {
     370                                } elseif (isset($GSUBdata['blwf'][$c])) {
    371371                                        $info[$i]['indic_position'] = self::POS_BELOW_C;
    372                                 } else if (isset($GSUBdata['pstf'][$c])) {
     372                                } elseif (isset($GSUBdata['pstf'][$c])) {
    373373                                        $info[$i]['indic_position'] = self::POS_POST_C;
    374374                                }
     
    474474                                        $has_reph = true;
    475475                                }
    476                         } else if ($indic_config[4] == self::REPH_MODE_LOG_REPHA && $info[$start]['indic_category'] == self::OT_REPHA) {
     476                        } elseif ($indic_config[4] == self::REPH_MODE_LOG_REPHA && $info[$start]['indic_category'] == self::OT_REPHA) {
    477477                                $limit += 1;
    478478                                while ($limit < $end && self::is_joiner($info[$limit])) {
     
    682682                                        }
    683683                                }
    684                         } else if ($info[$i]['indic_position'] != self::POS_SMVD) {
     684                        } elseif ($info[$i]['indic_position'] != self::POS_SMVD) {
    685685                                $last_pos = $info[$i]['indic_position'];
    686686                        }
     
    692692                        if (self::is_halant_or_coeng($info[$i])) {
    693693                                $last_halant = $i;
    694                         } else if (self::is_consonant($info[$i])) {
     694                        } elseif (self::is_consonant($info[$i])) {
    695695                                for ($j = $last_halant; $j < $i; $j++) {
    696696                                        if ($info[$j]['indic_position'] != self::POS_SMVD) {
     
    806806                                                                        $info[$i + 1]['mask'] |= self::FLAG(self::BLWF);
    807807                                                                        $info[$i + 2]['mask'] |= self::FLAG(self::BLWF);
    808                                                                 } /* If would not substitute as blwf, mark Ra+Halant for RPHF using following Halant (if present) */ else if (self::is_halant_or_coeng($info[$i + 3])) {
     808                                                                } /* If would not substitute as blwf, mark Ra+Halant for RPHF using following Halant (if present) */ elseif (self::is_halant_or_coeng($info[$i + 3])) {
    809809                                                                        $info[$i + 2]['mask'] |= self::FLAG(self::RPHF);
    810810                                                                        $info[$i + 3]['mask'] |= self::FLAG(self::RPHF);
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Shaper/Myanmar.php

    r117543 r124193  
    123123                if (self::in_range($u, 0xFE00, 0xFE0F)) {
    124124                        $cat = self::OT_VS;
    125                 } else if ($u == 0x200C) {
     125                } elseif ($u == 0x200C) {
    126126                        $cat = self::OT_ZWNJ;
    127                 } else if ($u == 0x200D) {
     127                } elseif ($u == 0x200D) {
    128128                        $cat = self::OT_ZWJ;
    129129                }
     
    276276                                $syllable_type = self::CONSONANT_SYLLABLE;
    277277                        } // BROKEN_CLUSTER syllable
    278                         else if (preg_match('/^(RaH)?s?(H|[a]*[n]?[l]?((m[k]?|k)[a]?)?[e]*[v]*[b]*[A]*(N[a]?)?(t[k]?[a]*[v]*[A]*(N[a]?)?)*(p[A]*(N[a]?)?)*S*[J|Z]?)/', substr($s, $ptr), $ma)) {
     278                        elseif (preg_match('/^(RaH)?s?(H|[a]*[n]?[l]?((m[k]?|k)[a]?)?[e]*[v]*[b]*[A]*(N[a]?)?(t[k]?[a]*[v]*[A]*(N[a]?)?)*(p[A]*(N[a]?)?)*S*[J|Z]?)/', substr($s, $ptr), $ma)) {
    279279                                if (strlen($ma[0])) { // May match blank
    280280                                        $syllable_length = strlen($ma[0]);
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Shaper/Sea.php

    r117543 r124193  
    184184                                $syllable_type = self::CONSONANT_SYLLABLE;
    185185                        } // BROKEN_CLUSTER syllable
    186                         else if (preg_match('/^(p|a|b|t|HC|M|R|T|A)+/', substr($s, $ptr), $ma)) {
     186                        elseif (preg_match('/^(p|a|b|t|HC|M|R|T|A)+/', substr($s, $ptr), $ma)) {
    187187                                $syllable_length = strlen($ma[0]);
    188188                                $syllable_type = self::BROKEN_CLUSTER;
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/TTFontFileAnalysis.php

    r117543 r124193  
    153153                                $this->_pos = $opos;
    154154                                $this->seek($opos);
    155                         } else if ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name
     155                        } elseif ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name
    156156                                $opos = $this->_pos;
    157157                                $N = $this->get_chunk($string_data_offset + $offset, $length);
     
    169169                if ($names[6]) {
    170170                        $psName = preg_replace('/ /', '-', $names[6]);
    171                 } else if ($names[4]) {
     171                } elseif ($names[4]) {
    172172                        $psName = preg_replace('/ /', '-', $names[4]);
    173                 } else if ($names[1]) {
     173                } elseif ($names[1]) {
    174174                        $psName = preg_replace('/ /', '-', $names[1]);
    175175                } else {
     
    265265                                        }
    266266                                }
    267                         } else if ((($platformID == 3 && $encodingID == 10) || $platformID == 0)) { // Microsoft, Unicode Format 12 table HKCS
     267                        } elseif ((($platformID == 3 && $encodingID == 10) || $platformID == 0)) { // Microsoft, Unicode Format 12 table HKCS
    268268                                $format = $this->get_ushort($cmap_offset + $offset);
    269269                                if ($format == 12) {
     
    405405                        $bold = true;
    406406                } // bit 0 bold
    407                 else if ($fsSelection & (1 << 5)) {
     407                elseif ($fsSelection & (1 << 5)) {
    408408                        $bold = true;
    409409                } // 5  BOLD    Characters are emboldened
     
    412412                        $italic = true;
    413413                } // bit 1 italic
    414                 else if ($fsSelection & (1 << 0)) {
     414                elseif ($fsSelection & (1 << 0)) {
    415415                        $italic = true;
    416416                } // 0  ITALIC  Font contains Italic characters, otherwise they are upright
    417                 else if ($this->italicAngle <> 0) {
     417                elseif ($this->italicAngle <> 0) {
    418418                        $italic = true;
    419419                }
     
    421421                if ($isFixedPitch) {
    422422                        $ftype = 'mono';
    423                 } else if ($sFamily > 0 && $sFamily < 8) {
     423                } elseif ($sFamily > 0 && $sFamily < 8) {
    424424                        $ftype = 'serif';
    425                 } else if ($sFamily == 8) {
     425                } elseif ($sFamily == 8) {
    426426                        $ftype = 'sans';
    427                 } else if ($sFamily == 10) {
     427                } elseif ($sFamily == 10) {
    428428                        $ftype = 'cursive';
    429429                }
     
    436436                                        if ($bSerifStyle > 1 && $bSerifStyle < 11) {
    437437                                                $ftype = 'serif';
    438                                         } else if ($bSerifStyle > 10) {
     438                                        } elseif ($bSerifStyle > 10) {
    439439                                                $ftype = 'sans';
    440440                                        }
     
    444444                                        $ftype = 'mono';
    445445                                } // ==1 i.e. No Fit needed for OCR-a and -b
    446                         } else if ($bFamilyType == 3) {
     446                        } elseif ($bFamilyType == 3) {
    447447                                $ftype = 'cursive';
    448448                        }
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/TableOfContents.php

    r117543 r124193  
    149149                if (strtoupper($toc_id) == 'ALL') {
    150150                        $toc_id = '_mpdf_all';
    151                 } else if (!$toc_id) {
     151                } elseif (!$toc_id) {
    152152                        $toc_id = 0;
    153153                } else {
     
    260260                if (strtoupper($toc_id) == 'ALL') {
    261261                        $toc_id = '_mpdf_all';
    262                 } else if (!$toc_id) {
     262                } elseif (!$toc_id) {
    263263                        $toc_id = 0;
    264264                } else {
     
    706706                        if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE'] == '1' || strtoupper($attr['TOC-ODD-HEADER-VALUE']) == 'ON')) {
    707707                                $this->m_TOC[$toc_id]['TOC_odd_header_value'] = 1;
    708                         } else if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-HEADER-VALUE']) == 'OFF')) {
     708                        } elseif (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-HEADER-VALUE']) == 'OFF')) {
    709709                                $this->m_TOC[$toc_id]['TOC_odd_header_value'] = -1;
    710710                        }
    711711                        if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE'] == '1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE']) == 'ON')) {
    712712                                $this->m_TOC[$toc_id]['TOC_even_header_value'] = 1;
    713                         } else if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE']) == 'OFF')) {
     713                        } elseif (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE']) == 'OFF')) {
    714714                                $this->m_TOC[$toc_id]['TOC_even_header_value'] = -1;
    715715                        }
    716716                        if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE'] == '1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE']) == 'ON')) {
    717717                                $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = 1;
    718                         } else if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE']) == 'OFF')) {
     718                        } elseif (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE']) == 'OFF')) {
    719719                                $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = -1;
    720720                        }
    721721                        if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE'] == '1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE']) == 'ON')) {
    722722                                $this->m_TOC[$toc_id]['TOC_even_footer_value'] = 1;
    723                         } else if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE']) == 'OFF')) {
     723                        } elseif (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE']) == 'OFF')) {
    724724                                $this->m_TOC[$toc_id]['TOC_even_footer_value'] = -1;
    725725                        }
     
    818818                        if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE'] == '1' || strtoupper($attr['TOC-ODD-HEADER-VALUE']) == 'ON')) {
    819819                                $this->TOC_odd_header_value = 1;
    820                         } else if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-HEADER-VALUE']) == 'OFF')) {
     820                        } elseif (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-HEADER-VALUE']) == 'OFF')) {
    821821                                $this->TOC_odd_header_value = -1;
    822822                        }
    823823                        if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE'] == '1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE']) == 'ON')) {
    824824                                $this->TOC_even_header_value = 1;
    825                         } else if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE']) == 'OFF')) {
     825                        } elseif (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE']) == 'OFF')) {
    826826                                $this->TOC_even_header_value = -1;
    827827                        }
     
    829829                        if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE'] == '1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE']) == 'ON')) {
    830830                                $this->TOC_odd_footer_value = 1;
    831                         } else if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE']) == 'OFF')) {
     831                        } elseif (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE']) == 'OFF')) {
    832832                                $this->TOC_odd_footer_value = -1;
    833833                        }
    834834                        if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE'] == '1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE']) == 'ON')) {
    835835                                $this->TOC_even_footer_value = 1;
    836                         } else if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE']) == 'OFF')) {
     836                        } elseif (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE']) == 'OFF')) {
    837837                                $this->TOC_even_footer_value = -1;
    838838                        }
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Tag/BarCode.php

    r117543 r124193  
    206206                                $h = ($arrcode['nom-H'] * $objattr['bsize']) + (2 * $arrcode['quietTB']);
    207207
    208                         } elseif (in_array($objattr['btype'], ['C128A', 'C128B', 'C128C', 'EAN128A', 'EAN128B', 'EAN128C',
     208                        } elseif (in_array($objattr['btype'], ['C128A', 'C128B', 'C128C', 'C128RAW', 'EAN128A', 'EAN128B', 'EAN128C',
    209209                                'C39', 'C39+', 'C39E', 'C39E+', 'S25', 'S25+', 'I25', 'I25+', 'I25B',
    210210                                'I25B+', 'C93', 'MSI', 'MSI+', 'CODABAR', 'CODE11'])) {
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Tag/BlockTag.php

    r117543 r124193  
    448448                        // Cancel Keep-Block-together
    449449                        $currblk['keep_block_together'] = false;
    450                         $this->mpdf->kt_y00 = '';
     450                        $this->mpdf->kt_y00 = 0;
    451451                        $this->mpdf->keep_block_together = 0;
    452452
     
    499499                        // Cancel Keep-Block-together
    500500                        $currblk['keep_block_together'] = false;
    501                         $this->mpdf->kt_y00 = '';
     501                        $this->mpdf->kt_y00 = 0;
    502502                        $this->mpdf->keep_block_together = 0;
    503503
     
    12581258
    12591259                        $this->mpdf->y = $this->mpdf->kt_y00;
     1260
    12601261                        $ihtml = $this->mpdf->blk[$this->mpdf->blklvl]['array_i'] - 1;
    12611262
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Tag/Meter.php

    r117543 r124193  
    349349                                if ($min != $low && $value < $low) {
    350350                                        $col = 'orange';
    351                                 } else if ($max != $high && $value > $high) {
     351                                } elseif ($max != $high && $value > $high) {
    352352                                        $col = 'orange';
    353353                                } else {
     
    365365
    366366                        $svg .= '</g></svg>';
    367                 } else if ($type == '3') {
     367                } elseif ($type == '3') {
    368368                        /////////////////////////////////////////////////////////////////////////////////////
    369369                        ///////// CUSTOM <meter type="2">
     
    410410                                if ($min != $low && $value < $low) {
    411411                                        $col = 'orange';
    412                                 } else if ($max != $high && $value > $high) {
     412                                } elseif ($max != $high && $value > $high) {
    413413                                        $col = 'orange';
    414414                                } else {
     
    483483                                        if ($value < $low) {
    484484                                                $barcol = 'url(#GrGREEN)';
    485                                         } else if ($value > $high) {
     485                                        } elseif ($value > $high) {
    486486                                                $barcol = 'url(#GrRED)';
    487487                                        } else {
    488488                                                $barcol = 'url(#GrORANGE)';
    489489                                        }
    490                                 } else if ($optimum > $high) {
     490                                } elseif ($optimum > $high) {
    491491                                        if ($value < $low) {
    492492                                                $barcol = 'url(#GrRED)';
    493                                         } else if ($value > $high) {
     493                                        } elseif ($value > $high) {
    494494                                                $barcol = 'url(#GrGREEN)';
    495495                                        } else {
     
    499499                                        if ($value < $low) {
    500500                                                $barcol = 'url(#GrORANGE)';
    501                                         } else if ($value > $high) {
     501                                        } elseif ($value > $high) {
    502502                                                $barcol = 'url(#GrORANGE)';
    503503                                        } else {
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Tag/Table.php

    r117543 r124193  
    277277                if (isset($properties['FONT-SIZE'])) {
    278278                        if ($this->mpdf->tableLevel > 1) {
    279                                 $mmsize = $this->sizeConverter->convert($properties['FONT-SIZE'], $this->mpdf->base_table_properties['FONT-SIZE']);
     279                                $tableFontSize = $this->sizeConverter->convert($this->mpdf->base_table_properties['FONT-SIZE']);
     280                                $mmsize = $this->sizeConverter->convert($properties['FONT-SIZE'], $tableFontSize);
    280281                        } else {
    281282                                $mmsize = $this->sizeConverter->convert($properties['FONT-SIZE'], $this->mpdf->default_font_size / Mpdf::SCALE);
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Tag/Td.php

    r117543 r124193  
    1313        {
    1414                $tag = $this->getTagName();
     15
    1516                $this->mpdf->ignorefollowingspaces = true;
    1617                $this->mpdf->lastoptionaltag = $tag; // Save current HTML specified optional endtag
     18
    1719                $this->cssManager->tbCSSlvl++;
     20
    1821                $this->mpdf->InlineProperties = [];
    1922                $this->mpdf->InlineBDF = []; // mPDF 6
     
    2124                $this->mpdf->tdbegin = true;
    2225                $this->mpdf->col++;
     26
    2327                while (isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col])) {
    2428                        $this->mpdf->col++;
    2529                }
    2630
    27                 //Update number column
     31                // Update number column
    2832                if ($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nc'] < $this->mpdf->col + 1) {
    2933                        $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nc'] = $this->mpdf->col + 1;
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Utils/Arrays.php

    r117543 r124193  
    1818                return $default;
    1919        }
     20
     21        /**
     22         * Returns an array of all k-combinations from an input array of n elements, where k equals 1..n.
     23         * Elements will be sorted and unique in every combination.
     24         *
     25         * Example: array[one, two] will give:
     26         * [
     27         *     [one],
     28         *     [two],
     29         *     [one, two]
     30         * ]
     31         * @param array $array
     32         * @return array
     33         */
     34        public static function allUniqueSortedCombinations($array)
     35        {
     36                $input = array_unique($array);
     37                if (count($input) <= 1) {
     38                        return [$input];
     39                }
     40
     41                sort($input);
     42                $combinations = [];
     43                foreach ($input as $value) {
     44                        $combinations[] = [$value];
     45                }
     46
     47                $n = count($input);
     48                for ($k = 2; $k <= $n; $k++) {
     49                        $combinations = array_merge($combinations, self::combinations($input, $k));
     50                }
     51
     52                return $combinations;
     53        }
     54
     55        /**
     56         * Returns an array of unique k-combinations from an input array.
     57         *
     58         * Example: array=[one, two, three] and k=2 will give:
     59         * [
     60         *     [one, two],
     61         *     [one, three]
     62         * ]
     63         * @param array $array
     64         * @param int $k
     65         * @return array
     66         */
     67        public static function combinations($array, $k)
     68        {
     69                $n = count($array);
     70                $combinations = [];
     71                $indexes = range(0, $k - 1);
     72                $maxIndexes = range($n - $k, $n - 1);
     73                do {
     74                        $combination = [];
     75                        foreach ($indexes as $index) {
     76                                $combination[] = $array[$index];
     77                        }
     78                        $combinations[] = $combination;
     79
     80                        $anotherCombination = false;
     81                        for ($i = $k - 1; $i >= 0; $i--) {
     82                                if ($indexes[$i] < $maxIndexes[$i]) {
     83                                        $indexes[$i]++;
     84                                        $anotherCombination = true;
     85                                        break;
     86                                }
     87                        }
     88                } while ($anotherCombination);
     89
     90                return $combinations;
     91        }
    2092}
  • _plugins_/spipdf/branches/mpdf/vendor/mpdf/mpdf/src/Writer/MetadataWriter.php

    r117543 r124193  
    5555                $this->writer->object();
    5656                $this->mpdf->MetadataRoot = $this->mpdf->n;
    57                 $Producer = 'mPDF ' . Mpdf::VERSION;
     57                $Producer = 'mPDF' . ($this->mpdf->exposeVersion ? (' ' . Mpdf::VERSION) : '');
    5858                $z = date('O'); // +0200
    5959                $offset = substr($z, 0, 3) . ':' . substr($z, 3, 2);
     
    152152        public function writeInfo() // _putinfo
    153153        {
    154                 $this->writer->write('/Producer ' . $this->writer->utf16BigEndianTextString('mPDF ' . $this->getVersionString()));
     154                $this->writer->write('/Producer ' . $this->writer->utf16BigEndianTextString('mPDF' . ($this->mpdf->exposeVersion ? (' ' . $this->getVersionString()) : '')));
    155155
    156156                if (!empty($this->mpdf->title)) {
     
    178178                }
    179179
    180                 $z = date('O'); // +0200
    181                 $offset = substr($z, 0, 3) . "'" . substr($z, 3, 2) . "'";
    182                 $this->writer->write('/CreationDate ' . $this->writer->string(date('YmdHis') . $offset));
    183                 $this->writer->write('/ModDate ' . $this->writer->string(date('YmdHis') . $offset));
     180                $now = PdfDate::format(time());
     181                $this->writer->write('/CreationDate ' . $this->writer->string('D:' . $now));
     182                $this->writer->write('/ModDate ' . $this->writer->string('D:' . $now));
    184183                if ($this->mpdf->PDFX) {
    185184                        $this->writer->write('/Trapped/False');
     
    457456
    458457                if ($this->mpdf->hasOC || count($this->mpdf->layers)) {
     458
    459459                        $p = $v = $h = $l = $loff = $lall = $as = '';
     460
    460461                        if ($this->mpdf->hasOC) {
     462
    461463                                if (($this->mpdf->hasOC & 1) === 1) {
    462464                                        $p = $this->mpdf->n_ocg_print . ' 0 R';
    463465                                }
     466
    464467                                if (($this->mpdf->hasOC & 2) === 2) {
    465468                                        $v = $this->mpdf->n_ocg_view . ' 0 R';
    466469                                }
     470
    467471                                if (($this->mpdf->hasOC & 4) === 4) {
    468472                                        $h = $this->mpdf->n_ocg_hidden . ' 0 R';
    469473                                }
     474
    470475                                $as = "<</Event /Print /OCGs [$p $v $h] /Category [/Print]>> <</Event /View /OCGs [$p $v $h] /Category [/View]>>";
    471476                        }
     
    473478                        if (count($this->mpdf->layers)) {
    474479                                foreach ($this->mpdf->layers as $k => $layer) {
    475                                         if (strtolower($this->mpdf->layerDetails[$k]['state']) === 'hidden') {
     480                                        if (isset($this->mpdf->layerDetails[$k]) && strtolower($this->mpdf->layerDetails[$k]['state']) === 'hidden') {
    476481                                                $loff .= $layer['n'] . ' 0 R ';
    477482                                        } else {
     
    481486                                }
    482487                        }
     488
    483489                        $this->writer->write("/OCProperties <</OCGs [$p $v $h $lall] /D <</ON [$p $l] /OFF [$v $h $loff] ");
    484490                        $this->writer->write("/Order [$v $p $h $lall] ");
     491
    485492                        if ($as) {
    486493                                $this->writer->write("/AS [$as] ");
    487494                        }
     495
    488496                        $this->writer->write('>>>>');
    489497                }
     
    645653                                                if (isset($pl['opt']['c']) && $pl['opt']['c']) {
    646654                                                        $col = $pl['opt']['c'];
    647                                                         if ($col{0} == 3 || $col{0} == 5) {
    648                                                                 $annotcolor .= sprintf('%.3F %.3F %.3F', ord($col{1}) / 255, ord($col{2}) / 255, ord($col{3}) / 255);
    649                                                         } elseif ($col{0} == 1) {
    650                                                                 $annotcolor .= sprintf('%.3F', ord($col{1}) / 255);
    651                                                         } elseif ($col{0} == 4 || $col{0} == 6) {
    652                                                                 $annotcolor .= sprintf('%.3F %.3F %.3F %.3F', ord($col{1}) / 100, ord($col{2}) / 100, ord($col{3}) / 100, ord($col{4}) / 100);
     655                                                        if ($col[0] == 3 || $col[0] == 5) {
     656                                                                $annotcolor .= sprintf('%.3F %.3F %.3F', ord($col[1]) / 255, ord($col[2]) / 255, ord($col[3]) / 255);
     657                                                        } elseif ($col[0] == 1) {
     658                                                                $annotcolor .= sprintf('%.3F', ord($col[1]) / 255);
     659                                                        } elseif ($col[0] == 4 || $col[0] == 6) {
     660                                                                $annotcolor .= sprintf('%.3F %.3F %.3F %.3F', ord($col[1]) / 100, ord($col[2]) / 100, ord($col[3]) / 100, ord($col[4]) / 100);
    653661                                                        } else {
    654662                                                                $annotcolor .= '1 1 0';
Note: See TracChangeset for help on using the changeset viewer.