Download libs/HTML/QuickForm2/Element/InputFile.php from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 12.3 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/libs/HTML/QuickForm2/Element/InputFile.php
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/libs/HTML/QuickForm2/Element/InputFile.php
-
curl -L -o InputFile.php https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/libs/HTML/QuickForm2/Element/InputFile.php
12.3 kB
| /** | |
| * Class for <input type="file" /> elements | |
| * | |
| * PHP version 5 | |
| * | |
| * LICENSE: | |
| * | |
| * Copyright (c) 2006-2010, Alexey Borzov <avb@php.net>, | |
| * Bertrand Mansion <golgote@mamasam.com> | |
| * All rights reserved. | |
| * | |
| * Redistribution and use in source and binary forms, with or without | |
| * modification, are permitted provided that the following conditions | |
| * are met: | |
| * | |
| * * Redistributions of source code must retain the above copyright | |
| * notice, this list of conditions and the following disclaimer. | |
| * * Redistributions in binary form must reproduce the above copyright | |
| * notice, this list of conditions and the following disclaimer in the | |
| * documentation and/or other materials provided with the distribution. | |
| * * The names of the authors may not be used to endorse or promote products | |
| * derived from this software without specific prior written permission. | |
| * | |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS | |
| * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | |
| * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |
| * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| * | |
| * @category HTML | |
| * @package HTML_QuickForm2 | |
| * @author Alexey Borzov <avb@php.net> | |
| * @author Bertrand Mansion <golgote@mamasam.com> | |
| * @license http://opensource.org/licenses/bsd-license.php New BSD License | |
| * @version SVN: $Id: InputFile.php 300722 2010-06-24 10:15:52Z mansion $ | |
| * @link http://pear.php.net/package/HTML_QuickForm2 | |
| */ | |
| /** | |
| * Base class for <input> elements | |
| */ | |
| // require_once 'HTML/QuickForm2/Element/Input.php'; | |
| /** | |
| * Class for <input type="file" /> elements | |
| * | |
| * @category HTML | |
| * @package HTML_QuickForm2 | |
| * @author Alexey Borzov <avb@php.net> | |
| * @author Bertrand Mansion <golgote@mamasam.com> | |
| * @version Release: @package_version@ | |
| */ | |
| class HTML_QuickForm2_Element_InputFile extends HTML_QuickForm2_Element_Input | |
| { | |
| /** | |
| * Default language for error messages | |
| */ | |
| const DEFAULT_LANGUAGE = 'en'; | |
| /** | |
| * Localized error messages for PHP's file upload errors | |
| * @var array | |
| */ | |
| protected $errorMessages = array( | |
| 'en' => array( | |
| UPLOAD_ERR_INI_SIZE => 'The uploaded file exceeds size permitted by PHP configuration (%d bytes)', | |
| UPLOAD_ERR_FORM_SIZE => 'The uploaded file exceeds the MAX_FILE_SIZE directive in HTML form (%d bytes)', | |
| UPLOAD_ERR_PARTIAL => 'The file was only partially uploaded', | |
| UPLOAD_ERR_NO_TMP_DIR => 'Server error: temporary directory is missing', | |
| UPLOAD_ERR_CANT_WRITE => 'Server error: failed to write the file to disk', | |
| UPLOAD_ERR_EXTENSION => 'File upload was stopped by extension' | |
| ), | |
| 'fr' => array( | |
| UPLOAD_ERR_INI_SIZE => 'Le fichier envoyé excède la taille autorisée par la configuration de PHP (%d octets)', | |
| UPLOAD_ERR_FORM_SIZE => 'Le fichier envoyé excède la taille de MAX_FILE_SIZE spécifiée dans le formulaire HTML (%d octets)', | |
| UPLOAD_ERR_PARTIAL => 'Le fichier n\'a été que partiellement téléchargé', | |
| UPLOAD_ERR_NO_TMP_DIR => 'Erreur serveur: le répertoire temporaire est manquant', | |
| UPLOAD_ERR_CANT_WRITE => 'Erreur serveur: échec de l\'écriture du fichier sur le disque', | |
| UPLOAD_ERR_EXTENSION => 'L\'envoi de fichier est arrêté par l\'extension' | |
| ), | |
| 'ru' => array( | |
| UPLOAD_ERR_INI_SIZE => 'Размер загруженного файла превосходит максимально разрешённый настройками PHP (%d байт)', | |
| UPLOAD_ERR_FORM_SIZE => 'Размер загруженного файла превосходит директиву MAX_FILE_SIZE, указанную в форме (%d байт)', | |
| UPLOAD_ERR_PARTIAL => 'Файл был загружен не полностью', | |
| UPLOAD_ERR_NO_TMP_DIR => 'Ошибка на сервере: отсутствует каталог для временных файлов', | |
| UPLOAD_ERR_CANT_WRITE => 'Ошибка на сервере: не удалось записать файл на диск', | |
| UPLOAD_ERR_EXTENSION => 'Загрузка файла была остановлена расширением' | |
| ) | |
| ); | |
| /** | |
| * Language to display error messages in | |
| * @var string | |
| */ | |
| protected $language; | |
| /** | |
| * Information on uploaded file, from submit data source | |
| * @var array | |
| */ | |
| protected $value = null; | |
| protected $attributes = array('type' => 'file'); | |
| /** | |
| * Class constructor | |
| * | |
| * Possible keys in $data array are: | |
| * - 'language': language to display error messages in, it should either be | |
| * already available in the class or provided in 'errorMessages' | |
| * - 'errorMessages': an array of error messages with the following format | |
| * <pre> | |
| * 'language code 1' => array( | |
| * UPLOAD_ERR_... => 'message', | |
| * ... | |
| * UPLOAD_ERR_... => 'message' | |
| * ), | |
| * ... | |
| * 'language code N' => array( | |
| * ... | |
| * ) | |
| * </pre> | |
| * Note that error messages for UPLOAD_ERR_INI_SIZE and UPLOAD_ERR_FORM_SIZE | |
| * may contain '%d' placeholders that will be automatically replaced by the | |
| * appropriate size limits. Note also that you don't need to provide messages | |
| * for every possible error code in the arrays, you may e.g. override just | |
| * one error message for a particular language. | |
| * | |
| * @param string Element name | |
| * @param mixed Attributes (either a string or an array) | |
| * @param array Data used to set up error messages for PHP's file | |
| * upload errors. | |
| */ | |
| public function __construct($name = null, $attributes = null, array $data = array()) | |
| { | |
| if (isset($data['errorMessages'])) { | |
| // neither array_merge() nor array_merge_recursive will do | |
| foreach ($data['errorMessages'] as $lang => $ary) { | |
| foreach ($ary as $code => $message) { | |
| $this->errorMessages[$lang][$code] = $message; | |
| } | |
| } | |
| unset($data['errorMessages']); | |
| } | |
| if (!isset($data['language'])) { | |
| $this->language = self::DEFAULT_LANGUAGE; | |
| } else { | |
| $this->language = isset($this->errorMessages[$data['language']])? | |
| $data['language']: self::DEFAULT_LANGUAGE; | |
| unset($data['language']); | |
| } | |
| parent::__construct($name, $attributes, $data); | |
| } | |
| /** | |
| * File upload elements cannot be frozen | |
| * | |
| * To properly "freeze" a file upload element one has to store the uploaded | |
| * file somewhere and store the file info in session. This is way outside | |
| * the scope of this class. | |
| * | |
| * @param bool Whether element should be frozen or editable. This | |
| * parameter is ignored in case of file uploads | |
| * @return bool Always returns false | |
| */ | |
| public function toggleFrozen($freeze = null) | |
| { | |
| return false; | |
| } | |
| /** | |
| * Returns the information on uploaded file | |
| * | |
| * @return array|null | |
| */ | |
| public function getValue() | |
| { | |
| return $this->value; | |
| } | |
| /** | |
| * File upload's value cannot be set here | |
| * | |
| * @param mixed Value for file element, this parameter is ignored | |
| * @return HTML_QuickForm2_Element_InputFile | |
| */ | |
| public function setValue($value) | |
| { | |
| return $this; | |
| } | |
| public function updateValue() | |
| { | |
| foreach ($this->getDataSources() as $ds) { | |
| if ($ds instanceof HTML_QuickForm2_DataSource_Submit) { | |
| $value = $ds->getUpload($this->getName()); | |
| if (null !== $value) { | |
| $this->value = $value; | |
| return; | |
| } | |
| } | |
| } | |
| $this->value = null; | |
| } | |
| /** | |
| * Performs the server-side validation | |
| * | |
| * Before the Rules added to the element kick in, the element checks the | |
| * error code added to the $_FILES array by PHP. If the code isn't | |
| * UPLOAD_ERR_OK or UPLOAD_ERR_NO_FILE then a built-in error message will be | |
| * displayed and no further validation will take place. | |
| * | |
| * @return boolean Whether the element is valid | |
| */ | |
| protected function validate() | |
| { | |
| if (strlen($this->error ?? '')) { | |
| return false; | |
| } | |
| if (isset($this->value['error']) && | |
| !in_array($this->value['error'], array(UPLOAD_ERR_OK, UPLOAD_ERR_NO_FILE))) | |
| { | |
| if (isset($this->errorMessages[$this->language][$this->value['error']])) { | |
| $errorMessage = $this->errorMessages[$this->language][$this->value['error']]; | |
| } else { | |
| $errorMessage = $this->errorMessages[self::DEFAULT_LANGUAGE][$this->value['error']]; | |
| } | |
| if (UPLOAD_ERR_INI_SIZE == $this->value['error']) { | |
| $iniSize = ini_get('upload_max_filesize'); | |
| $size = intval($iniSize); | |
| switch (strtoupper(substr($iniSize, -1))) { | |
| case 'G': $size *= 1024; | |
| case 'M': $size *= 1024; | |
| case 'K': $size *= 1024; | |
| } | |
| } elseif (UPLOAD_ERR_FORM_SIZE == $this->value['error']) { | |
| foreach ($this->getDataSources() as $ds) { | |
| if ($ds instanceof HTML_QuickForm2_DataSource_Submit) { | |
| $size = intval($ds->getValue('MAX_FILE_SIZE')); | |
| break; | |
| } | |
| } | |
| } | |
| $this->error = isset($size)? sprintf($errorMessage, $size): $errorMessage; | |
| return false; | |
| } | |
| return parent::validate(); | |
| } | |
| public function addFilter($callback, ?array $options = null, $recursive = true) | |
| { | |
| throw new HTML_QuickForm2_Exception( | |
| 'InputFile elements do not support filters' | |
| ); | |
| } | |
| } | |