Skip to content

Commit

Permalink
Merge branch 'MDL-79665' of https://github.com/paulholden/moodle
Browse files Browse the repository at this point in the history
  • Loading branch information
sarjona committed Jan 24, 2024
2 parents e36bc60 + 5180861 commit d262a1c
Show file tree
Hide file tree
Showing 10 changed files with 79 additions and 52 deletions.
20 changes: 20 additions & 0 deletions lib/tcpdf/CHANGELOG.TXT
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
6.6.5 (2023-09-06)
- Fix corrupted file.

6.6.4 (2023-09-06)
- Fix GitHub automation tests.

6.6.3 (2023-09-06)
- Fix SPDX license ID (#591)
- Fix warning "array offset on value of type null" (#620)
- Improve the README about the status of this library (#589)
- Fix deprecation warning with PHP 8.1 (#614)
- Fixes for PHP 8.2 in tcpdf_fonts.php (#632)
- Fix some php 8+ edge cases (#630)
- Fix composite glyph output (#581)
- Fix "access array offset on value of type bool" with PDF/A (#583)
- Fix non-numeric value warning (#627)
- Fix issues with S25 barcode (#611)
- Fix return type annotations (#613)
- Fix some inconsistencies in type hints (#598)

6.6.2 (2022-12-17)
- Ensure pregSplit return type is always array.
- Add ability to run tests on various operating systems (#566)
Expand Down
2 changes: 1 addition & 1 deletion lib/tcpdf/LICENSE.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

2002-2022 Nicola Asuni - Tecnick.com LTD
2002-2023 Nicola Asuni - Tecnick.com LTD

**********************************************************************
**********************************************************************
Expand Down
7 changes: 3 additions & 4 deletions lib/tcpdf/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@

* **category** Library
* **author** Nicola Asuni <[email protected]>
* **copyright** 2002-2022 Nicola Asuni - Tecnick.com LTD
* **copyright** 2002-2023 Nicola Asuni - Tecnick.com LTD
* **license** http://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT)
* **link** http://www.tcpdf.org
* **source** https://github.com/tecnickcom/TCPDF


## IMPORTANT
A new version of this library is under development at https://github.com/tecnickcom/tc-lib-pdf and as a consequence this version will not receive any additional development or support.
This version should be considered obsolete, new projects should use the new version as soon it will become stable.
## NOTE
A new version of this library is under development at https://github.com/tecnickcom/tc-lib-pdf and as a consequence this library is in support only mode.



Expand Down
4 changes: 2 additions & 2 deletions lib/tcpdf/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
"barcodes"
],
"homepage": "http://www.tcpdf.org/",
"version": "6.6.2",
"license": "LGPL-3.0-only",
"version": "6.6.5",
"license": "LGPL-3.0-or-later",
"authors": [
{
"name": "Nicola Asuni",
Expand Down
1 change: 1 addition & 0 deletions lib/tcpdf/include/barcodes/qrcode.php
Original file line number Diff line number Diff line change
Expand Up @@ -888,6 +888,7 @@ protected function getCode() {
if ($col >= $this->rsblocks[0]['dataLength']) {
$row += $this->b1;
}
$row = (int) $row;
$ret = $this->rsblocks[$row]['data'][$col];
} elseif ($this->count < $this->dataLength + $this->eccLength) {
$row = ($this->count - $this->dataLength) % $this->blocks;
Expand Down
50 changes: 25 additions & 25 deletions lib/tcpdf/include/tcpdf_fonts.php
Original file line number Diff line number Diff line change
Expand Up @@ -1323,43 +1323,43 @@ public static function _getTrueTypeFontSubset($font, $subsetchars) {
// set the checkSumAdjustment to 0
$table[$tag]['data'] = substr($table[$tag]['data'], 0, 8)."\x0\x0\x0\x0".substr($table[$tag]['data'], 12);
}
$pad = 4 - ($table[$tag]['length'] % 4);
if ($pad != 4) {
// the length of a table must be a multiple of four bytes
$table[$tag]['length'] += $pad;
$table[$tag]['data'] .= str_repeat("\x0", $pad);
}
$table[$tag]['offset'] = $offset;
$offset += $table[$tag]['length'];
$numPad = ($offset + 3 & ~3) - $offset;
if($numPad > 0) {
$table[$tag]['data'] .= str_repeat("\x0", $numPad);
$offset += $numPad;
}
// check sum is not changed (so keep the following line commented)
//$table[$tag]['checkSum'] = self::_getTTFtableChecksum($table[$tag]['data'], $table[$tag]['length']);
//$table[$tag]['checkSum'] = self::_getTTFtableChecksum($table[$tag]['data'], $table[$tag]['length'] + $numPad);
} else {
unset($table[$tag]);
}
}
// add loca
$table['loca'] = array();
$table['loca']['data'] = $loca;
$table['loca']['length'] = strlen($loca);
$pad = 4 - ($table['loca']['length'] % 4);
if ($pad != 4) {
// the length of a table must be a multiple of four bytes
$table['loca']['length'] += $pad;
$table['loca']['data'] .= str_repeat("\x0", $pad);
}
$table['loca']['offset'] = $offset;
$table['loca']['checkSum'] = self::_getTTFtableChecksum($table['loca']['data'], $table['loca']['length']);
$offset += $table['loca']['length'];
$numPad = ($offset + 3 & ~3) - $offset;
if($numPad > 0) {
$table['loca']['data'] .= str_repeat("\x0", $numPad);
$offset += $numPad;
}
$table['loca']['checkSum'] = self::_getTTFtableChecksum($table['loca']['data'], $table['loca']['length'] + $numPad);
// add glyf
$table['glyf'] = array();
$table['glyf']['data'] = $glyf;
$table['glyf']['length'] = strlen($glyf);
$pad = 4 - ($table['glyf']['length'] % 4);
if ($pad != 4) {
// the length of a table must be a multiple of four bytes
$table['glyf']['length'] += $pad;
$table['glyf']['data'] .= str_repeat("\x0", $pad);
}
$table['glyf']['offset'] = $offset;
$table['glyf']['checkSum'] = self::_getTTFtableChecksum($table['glyf']['data'], $table['glyf']['length']);
$offset += $table['glyf']['length'];
$numPad = ($offset + 3 & ~3) - $offset;
if($numPad > 0) {
$table['glyf']['data'] .= str_repeat("\x0", $numPad);
$offset += $numPad;
}
$table['glyf']['checkSum'] = self::_getTTFtableChecksum($table['glyf']['data'], $table['glyf']['length'] + $numPad);
// rebuild font
$font = '';
$font .= pack('N', 0x10000); // sfnt version
Expand All @@ -1383,7 +1383,7 @@ public static function _getTrueTypeFontSubset($font, $subsetchars) {
}
// set checkSumAdjustment on head table
$checkSumAdjustment = 0xB1B0AFBA - self::_getTTFtableChecksum($font, strlen($font));
$font = substr($font, 0, $table['head']['offset'] + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + 12);
$font = substr($font, 0, $table['head']['offset'] + $offset + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + $offset + 12);
return $font;
}

Expand Down Expand Up @@ -1780,9 +1780,9 @@ public static function arrUTF8ToUTF16BE($unicode, $setbom=false) {
*/
public static function UTF8ArrayToUniArray($ta, $isunicode=true) {
if ($isunicode) {
return array_map(array('TCPDF_FONTS', 'unichrUnicode'), $ta);
return array_map(get_called_class().'::unichrUnicode', $ta);
}
return array_map(array('TCPDF_FONTS', 'unichrASCII'), $ta);
return array_map(get_called_class().'::unichrASCII', $ta);
}

/**
Expand Down Expand Up @@ -2002,7 +2002,7 @@ public static function UTF8StringToArray($str, $isunicode, &$currentfont) {
if ($isunicode) {
// requires PCRE unicode support turned on
$chars = TCPDF_STATIC::pregSplit('//','u', $str, -1, PREG_SPLIT_NO_EMPTY);
$carr = array_map(array('TCPDF_FONTS', 'uniord'), $chars);
$carr = array_map(get_called_class().'::uniord', $chars);
} else {
$chars = str_split($str);
$carr = array_map('ord', $chars);
Expand Down
8 changes: 4 additions & 4 deletions lib/tcpdf/include/tcpdf_static.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
// File name : tcpdf_static.php
// Version : 1.1.4
// Begin : 2002-08-03
// Last Update : 2022-08-12
// Last Update : 2023-09-06
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - [email protected]
// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
// -------------------------------------------------------------------
// Copyright (C) 2002-2022 Nicola Asuni - Tecnick.com LTD
// Copyright (C) 2002-2023 Nicola Asuni - Tecnick.com LTD
//
// This file is part of TCPDF software library.
//
Expand Down Expand Up @@ -55,7 +55,7 @@ class TCPDF_STATIC {
* Current TCPDF version.
* @private static
*/
private static $tcpdf_version = '6.6.2';
private static $tcpdf_version = '6.6.5';

/**
* String alias for total number of pages.
Expand Down Expand Up @@ -1780,7 +1780,7 @@ public static function pregSplit($pattern, $modifiers, $subject, $limit=NULL, $f
if ($ret === false) {
return array();
}
return $ret;
return is_array($ret) ? $ret : array();
}
// preg_split is bugged - try alternative solution
$ret = array();
Expand Down
28 changes: 17 additions & 11 deletions lib/tcpdf/tcpdf.php
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<?php
//============================================================+
// File name : tcpdf.php
// Version : 6.6.2
// Version : 6.6.5
// Begin : 2002-08-03
// Last Update : 2022-12-06
// Last Update : 2023-09-06
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - [email protected]
// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
// -------------------------------------------------------------------
// Copyright (C) 2002-2022 Nicola Asuni - Tecnick.com LTD
// Copyright (C) 2002-2023 Nicola Asuni - Tecnick.com LTD
//
// This file is part of TCPDF software library.
//
Expand Down Expand Up @@ -104,7 +104,7 @@
* Tools to encode your unicode fonts are on fonts/utils directory.</p>
* @package com.tecnick.tcpdf
* @author Nicola Asuni
* @version 6.6.2
* @version 6.6.5
*/

// TCPDF configuration
Expand All @@ -128,7 +128,7 @@
* TCPDF project (http://www.tcpdf.org) has been originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.<br>
* @package com.tecnick.tcpdf
* @brief PHP class for generating PDF documents without requiring external extensions.
* @version 6.6.2
* @version 6.6.5
* @author Nicola Asuni - [email protected]
* @IgnoreAnnotation("protected")
* @IgnoreAnnotation("public")
Expand Down Expand Up @@ -574,12 +574,14 @@ class TCPDF {
/**
* Minimum distance between header and top page margin.
* @protected
* @var float
*/
protected $header_margin;

/**
* Minimum distance between footer and bottom page margin.
* @protected
* @var float
*/
protected $footer_margin;

Expand Down Expand Up @@ -2461,7 +2463,7 @@ public function setLastH($h) {
*/
public function getCellHeight($fontsize, $padding=TRUE) {
$height = ($fontsize * $this->cell_height_ratio);
if ($padding) {
if ($padding && !empty($this->cell_padding)) {
$height += ($this->cell_padding['T'] + $this->cell_padding['B']);
}
return round($height, 6);
Expand Down Expand Up @@ -3372,7 +3374,7 @@ public function getHeaderData() {
/**
* Set header margin.
* (minimum distance between header and top page margin)
* @param int $hm distance in user units
* @param float $hm distance in user units
* @public
*/
public function setHeaderMargin($hm=10) {
Expand All @@ -3392,7 +3394,7 @@ public function getHeaderMargin() {
/**
* Set footer margin.
* (minimum distance between footer and bottom page margin)
* @param int $fm distance in user units
* @param float $fm distance in user units
* @public
*/
public function setFooterMargin($fm=10) {
Expand Down Expand Up @@ -4102,6 +4104,7 @@ public function setTextColor($col1=0, $col2=-1, $col3=-1, $col4=-1, $ret=false,
* @param float $fontsize Font size in points. The default value is the current size.
* @param boolean $getarray if true returns an array of characters widths, if false returns the total length.
* @return float[]|float total string length or array of characted widths
* @phpstan-return ($getarray is true ? float[] : float) total string length or array of characted widths
* @author Nicola Asuni
* @public
* @since 1.2
Expand All @@ -4118,6 +4121,7 @@ public function GetStringWidth($s, $fontname='', $fontstyle='', $fontsize=0, $ge
* @param float $fontsize Font size in points. The default value is the current size.
* @param boolean $getarray if true returns an array of characters widths, if false returns the total length.
* @return float[]|float total string length or array of characted widths
* @phpstan-return ($getarray is true ? float[] : float) total string length or array of characted widths
* @author Nicola Asuni
* @public
* @since 2.4.000 (2008-03-06)
Expand Down Expand Up @@ -6409,7 +6413,7 @@ public function Write($h, $txt, $link='', $fill=false, $align='', $ln=false, $st
// calculate maximum width for a single character on string
$chrw = $this->GetArrStringWidth($chars, '', '', 0, true);
array_walk($chrw, array($this, 'getRawCharWidth'));
$maxchwidth = max($chrw);
$maxchwidth = ((is_array($chrw) || $chrw instanceof Countable) && count($chrw) > 0) ? max($chrw) : 0;
// get array of chars
$uchars = TCPDF_FONTS::UTF8ArrayToUniArray($chars, $this->isunicode);
// get the number of characters
Expand Down Expand Up @@ -6872,6 +6876,8 @@ protected function fitBlock($w, $h, $x, $y, $fitonpage=false) {
}
// resize the block to be contained on the remaining available page or column space
if ($fitonpage) {
// fallback to avoid division by zero
$h = $h == 0 ? 1 : $h;
$ratio_wh = ($w / $h);
if (($y + $h) > $this->PageBreakTrigger) {
$h = $this->PageBreakTrigger - $y;
Expand Down Expand Up @@ -9925,7 +9931,7 @@ protected function _putcatalog() {
}
$out .= ' >> >>';
}
$font = $this->getFontBuffer('helvetica');
$font = $this->getFontBuffer((($this->pdfa_mode) ? 'pdfa' : '') .'helvetica');
$out .= ' /DA (/F'.$font['i'].' 0 Tf 0 g)';
$out .= ' /Q '.(($this->rtl)?'2':'0');
//$out .= ' /XFA ';
Expand Down Expand Up @@ -22055,7 +22061,7 @@ public function getNumberOfColumns() {
public function setTextRenderingMode($stroke=0, $fill=true, $clip=false) {
// Ref.: PDF 32000-1:2008 - 9.3.6 Text Rendering Mode
// convert text rendering parameters
if ($stroke < 0) {
if ($stroke < 0 || !is_numeric($stroke)) {
$stroke = 0;
}
if ($fill === true) {
Expand Down
6 changes: 3 additions & 3 deletions lib/tcpdf/tcpdf_barcodes_1d.php
Original file line number Diff line number Diff line change
Expand Up @@ -828,7 +828,7 @@ protected function barcode_s25($code, $checksum=false) {
$chr['5'] = '11101011101010';
$chr['6'] = '10111011101010';
$chr['7'] = '10101011101110';
$chr['8'] = '10101110111010';
$chr['8'] = '11101010111010';
$chr['9'] = '10111010111010';
if ($checksum) {
// add checksum
Expand All @@ -838,7 +838,7 @@ protected function barcode_s25($code, $checksum=false) {
// add leading zero if code-length is odd
$code = '0'.$code;
}
$seq = '11011010';
$seq = '1110111010';
$clen = strlen($code);
for ($i = 0; $i < $clen; ++$i) {
$digit = $code[$i];
Expand All @@ -848,7 +848,7 @@ protected function barcode_s25($code, $checksum=false) {
}
$seq .= $chr[$digit];
}
$seq .= '1101011';
$seq .= '111010111';
$bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
return $this->binseq_to_array($seq, $bararray);
}
Expand Down
5 changes: 3 additions & 2 deletions lib/thirdpartylibs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -175,12 +175,13 @@
<location>tcpdf</location>
<name>TCPDF</name>
<description>Class to generate PDF files</description>
<version>6.6.2</version>
<version>6.6.5</version>
<license>LGPL</license>
<licenseversion>3.0-only</licenseversion>
<licenseversion>3.0-or-later</licenseversion>
<repository>https://github.com/tecnickcom/TCPDF</repository>
<copyrights>
<copyright>Olivier PLATHEY</copyright>
<copyright>Nicola Asuni</copyright>
</copyrights>
<customised/>
</library>
Expand Down

0 comments on commit d262a1c

Please sign in to comment.