From aa404ff469731d7818088a36502dac8cd02112f2 Mon Sep 17 00:00:00 2001
From: pero1203
Date: Mon, 19 Sep 2022 15:18:44 +0200
Subject: [PATCH] Composer - update, prenova map v mojih anketah - V DELU
---
admin/survey/SurveyAdmin.php | 2 +-
admin/survey/ajax.php | 4 +
admin/survey/classes/class.SurveyList.php | 20 +
.../classes/class.SurveyListFolders.php | 2239 +++++++++
composer.lock | 316 +-
public/css/admin_new.css | 2926 +++++------
.../pages/my_surveys/survey_list_folders.scss | 57 +
vendor/composer/ClassLoader.php | 42 +-
vendor/composer/autoload_classmap.php | 2 +
vendor/composer/autoload_real.php | 6 +-
vendor/composer/autoload_static.php | 2 +
vendor/composer/installed.json | 4374 +++++++++--------
vendor/composer/installed.php | 34 +-
vendor/geoip2/geoip2/CHANGELOG.md | 41 +
vendor/geoip2/geoip2/README.md | 65 +-
vendor/geoip2/geoip2/composer.json | 13 +-
vendor/geoip2/geoip2/examples/benchmark.php | 3 +-
vendor/geoip2/geoip2/src/Database/Reader.php | 104 +-
.../Exception/AddressNotFoundException.php | 2 +
.../src/Exception/AuthenticationException.php | 2 +
.../geoip2/src/Exception/GeoIp2Exception.php | 2 +
.../geoip2/src/Exception/HttpException.php | 10 +-
.../src/Exception/InvalidRequestException.php | 12 +-
.../src/Exception/OutOfQueriesException.php | 2 +
.../geoip2/geoip2/src/Model/AbstractModel.php | 27 +-
.../geoip2/geoip2/src/Model/AnonymousIp.php | 41 +-
vendor/geoip2/geoip2/src/Model/Asn.php | 21 +-
vendor/geoip2/geoip2/src/Model/City.php | 45 +-
.../geoip2/src/Model/ConnectionType.php | 17 +-
vendor/geoip2/geoip2/src/Model/Country.php | 39 +-
vendor/geoip2/geoip2/src/Model/Domain.php | 17 +-
vendor/geoip2/geoip2/src/Model/Enterprise.php | 7 +-
vendor/geoip2/geoip2/src/Model/Insights.php | 9 +-
vendor/geoip2/geoip2/src/Model/Isp.php | 47 +-
.../geoip2/geoip2/src/ProviderInterface.php | 6 +-
.../geoip2/src/Record/AbstractPlaceRecord.php | 25 +-
.../geoip2/src/Record/AbstractRecord.php | 30 +-
vendor/geoip2/geoip2/src/Record/City.php | 6 +-
vendor/geoip2/geoip2/src/Record/Continent.php | 4 +
vendor/geoip2/geoip2/src/Record/Country.php | 4 +
vendor/geoip2/geoip2/src/Record/Location.php | 4 +
vendor/geoip2/geoip2/src/Record/MaxMind.php | 4 +
vendor/geoip2/geoip2/src/Record/Postal.php | 4 +
.../geoip2/src/Record/RepresentedCountry.php | 7 +
.../geoip2/geoip2/src/Record/Subdivision.php | 4 +
vendor/geoip2/geoip2/src/Record/Traits.php | 58 +-
vendor/geoip2/geoip2/src/Util.php | 7 +-
.../geoip2/geoip2/src/WebService/Client.php | 118 +-
vendor/guzzlehttp/promises/CHANGELOG.md | 9 +-
vendor/guzzlehttp/promises/Makefile | 13 -
vendor/guzzlehttp/promises/README.md | 57 +-
.../guzzlehttp/promises/src/EachPromise.php | 8 -
vendor/maxmind-db/reader/CHANGELOG.md | 50 +
vendor/maxmind-db/reader/README.md | 17 +-
vendor/maxmind-db/reader/autoload.php | 12 +-
vendor/maxmind-db/reader/composer.json | 13 +-
vendor/maxmind-db/reader/ext/config.w32 | 10 +
vendor/maxmind-db/reader/ext/maxminddb.c | 593 ++-
vendor/maxmind-db/reader/ext/php_maxminddb.h | 2 +-
vendor/maxmind-db/reader/package.xml | 63 +
.../reader/src/MaxMind/Db/Reader.php | 144 +-
.../reader/src/MaxMind/Db/Reader/Decoder.php | 206 +-
.../Db/Reader/InvalidDatabaseException.php | 2 +
.../reader/src/MaxMind/Db/Reader/Metadata.php | 148 +-
.../reader/src/MaxMind/Db/Reader/Util.php | 10 +-
.../maxmind/web-service-common/CHANGELOG.md | 20 +
vendor/maxmind/web-service-common/README.md | 2 +-
.../maxmind/web-service-common/composer.json | 9 +-
.../web-service-common/dev-bin/release.sh | 6 +-
.../maxmind/web-service-common/phpstan.neon | 7 +
.../src/Exception/AuthenticationException.php | 2 +
.../src/Exception/HttpException.php | 14 +-
.../Exception/InsufficientFundsException.php | 2 +
.../src/Exception/InvalidInputException.php | 2 +
.../src/Exception/InvalidRequestException.php | 16 +-
.../Exception/IpAddressNotFoundException.php | 2 +
.../Exception/PermissionRequiredException.php | 2 +
.../src/Exception/WebServiceException.php | 2 +
.../src/WebService/Client.php | 180 +-
.../src/WebService/Http/CurlRequest.php | 74 +-
.../src/WebService/Http/Request.php | 20 +-
.../src/WebService/Http/RequestFactory.php | 15 +-
.../sodium_compat/.github/workflows/ci.yml | 68 -
.../sodium_compat/.github/workflows/psalm.yml | 33 -
vendor/paragonie/sodium_compat/.gitignore | 9 -
vendor/paragonie/sodium_compat/appveyor.yml | 27 -
.../paragonie/sodium_compat/autoload-fast.php | 4 -
.../sodium_compat/autoload-pedantic.php | 6 -
.../sodium_compat/autoload-phpunit.php | 8 -
vendor/paragonie/sodium_compat/autoload.php | 5 +-
vendor/paragonie/sodium_compat/build-phar.sh | 8 -
vendor/paragonie/sodium_compat/dist/Makefile | 39 -
vendor/paragonie/sodium_compat/dist/box.json | 32 -
.../sodium_compat/lib/stream-xchacha20.php | 16 +
.../paragonie/sodium_compat/phpunit.xml.dist | 16 -
.../paragonie/sodium_compat/psalm-above-3.xml | 56 -
.../paragonie/sodium_compat/psalm-below-3.xml | 42 -
vendor/paragonie/sodium_compat/src/Compat.php | 49 +
.../sodium_compat/src/Core/Base64/Common.php | 213 -
.../sodium_compat/src/Core/Ed25519.php | 3 +
.../sodium_compat/src/Core32/Ed25519.php | 3 +
vendor/phpmailer/phpmailer/README.md | 1 +
vendor/phpmailer/phpmailer/VERSION | 2 +-
.../phpmailer/language/phpmailer.lang-el.php | 41 +-
vendor/phpmailer/phpmailer/src/PHPMailer.php | 20 +-
vendor/phpmailer/phpmailer/src/POP3.php | 2 +-
vendor/phpmailer/phpmailer/src/SMTP.php | 2 +-
.../google-authenticator/Makefile | 60 -
.../google-authenticator/composer.json | 4 +-
.../google-authenticator/phpunit.xml.dist | 40 -
.../google-authenticator/sample/web/Users.php | 10 +-
.../google-authenticator/sample/web/index.php | 6 +-
.../src/FixedBitNotation.php | 28 +-
.../src/GoogleAuthenticator.php | 73 +-
.../src/GoogleAuthenticatorInterface.php | 6 +-
.../google-authenticator/src/GoogleQrUrl.php | 9 +-
116 files changed, 8149 insertions(+), 5355 deletions(-)
create mode 100644 admin/survey/classes/class.SurveyListFolders.php
delete mode 100644 vendor/guzzlehttp/promises/Makefile
create mode 100644 vendor/maxmind-db/reader/ext/config.w32
create mode 100644 vendor/maxmind-db/reader/package.xml
create mode 100644 vendor/maxmind/web-service-common/phpstan.neon
delete mode 100644 vendor/paragonie/sodium_compat/.github/workflows/ci.yml
delete mode 100644 vendor/paragonie/sodium_compat/.github/workflows/psalm.yml
delete mode 100644 vendor/paragonie/sodium_compat/.gitignore
delete mode 100644 vendor/paragonie/sodium_compat/appveyor.yml
delete mode 100644 vendor/paragonie/sodium_compat/autoload-fast.php
delete mode 100644 vendor/paragonie/sodium_compat/autoload-pedantic.php
delete mode 100644 vendor/paragonie/sodium_compat/autoload-phpunit.php
delete mode 100644 vendor/paragonie/sodium_compat/build-phar.sh
delete mode 100644 vendor/paragonie/sodium_compat/dist/Makefile
delete mode 100644 vendor/paragonie/sodium_compat/dist/box.json
delete mode 100644 vendor/paragonie/sodium_compat/phpunit.xml.dist
delete mode 100644 vendor/paragonie/sodium_compat/psalm-above-3.xml
delete mode 100644 vendor/paragonie/sodium_compat/psalm-below-3.xml
delete mode 100644 vendor/paragonie/sodium_compat/src/Core/Base64/Common.php
delete mode 100644 vendor/sonata-project/google-authenticator/Makefile
delete mode 100644 vendor/sonata-project/google-authenticator/phpunit.xml.dist
diff --git a/admin/survey/SurveyAdmin.php b/admin/survey/SurveyAdmin.php
index d0ef23512..367040fcf 100644
--- a/admin/survey/SurveyAdmin.php
+++ b/admin/survey/SurveyAdmin.php
@@ -3548,7 +3548,7 @@ class SurveyAdmin
// VSEBINA POSAMEZNEGA TABA PRI MOJIH ANKETAH
- echo '';
+ echo '';
+ }
+
+ public function displayListQickInfo() {
+ # prikažemo hitri povzetek anket uporabnika
+
+ # preštejemo zadnje ankete v 12 urah
+ $ank1hour = "SELECT id FROM srv_anketa sa WHERE sa.backup='0' AND sa.id > 0 AND sa.active >= 0 AND invisible = '0' AND (sa.insert_time > (DATE_SUB(CURDATE(), INTERVAL 1 HOUR)) || sa.edit_time > (DATE_SUB(CURDATE(), INTERVAL 1 HOUR)) ) ".$this->getDostopAnketa();
+ $ank12hour = "SELECT id FROM srv_anketa sa WHERE sa.backup='0' AND sa.id > 0 AND sa.active >= 0 AND invisible = '0' AND (sa.insert_time > (DATE_SUB(CURDATE(), INTERVAL 12 HOUR)) || sa.edit_time > (DATE_SUB(CURDATE(), INTERVAL 12 HOUR)) ) ".$this->getDostopAnketa();
+ $ank24hour = "SELECT id FROM srv_anketa sa WHERE sa.backup='0' AND sa.id > 0 AND sa.active >= 0 AND invisible = '0' AND (sa.insert_time > (DATE_SUB(CURDATE(), INTERVAL 24 HOUR)) || sa.edit_time > (DATE_SUB(CURDATE(), INTERVAL 23 HOUR)) ) ".$this->getDostopAnketa();
+
+ $qry1hour = sisplet_query($ank1hour);
+ $qry12hour = sisplet_query($ank12hour);
+ $qry24hour = sisplet_query($ank24hour);
+
+ $cnt1hour = mysqli_num_rows($qry1hour);
+ $cnt12hour = mysqli_num_rows($qry12hour);
+ $cnt24hour = mysqli_num_rows($qry24hour);
+
+
+ }
+
+
+ // Vrne stevilo vseh anket
+ public function countSurveys() {
+ return count($this->surveys_ids);
+ }
+
+ // Vrne stevilo vseh anket v rootu (ce imamo folderje)
+ public function countRootSurveys() {
+ global $global_user_id;
+
+ // Poiscemo vse ankete v custom folderjih
+ $sql = sisplet_query("SELECT ank_id FROM srv_mysurvey_anketa WHERE usr_id='$global_user_id'");
+
+ // Vrnemo razliko v stevilu anket (odstejemo ankete v custom folderjih)
+ $survey_count = count($this->surveys_ids);
+ if(mysqli_num_rows($sql) > 0)
+ $survey_count -= mysqli_num_rows($sql);
+
+ return $survey_count;
+ }
+
+ /** Anketam ki so potekle popravimo aktivnost
+ *
+ */
+ public function checkSurveyExpire() {
+ //v primeru maza moramo sporociti vsem aplikacijam deaktivacijo ankete
+ if(Common::checkModule('maza')){
+ $maza = new MAZA();
+ $maza -> maza_check_expired_surveys();
+ }
+
+ # Anketam ki so potekle popravimo aktivnost
+ sisplet_query("UPDATE srv_anketa SET active = '0' WHERE active = '1' AND expire < CURDATE()");
+ // vsilimo refresh podatkov
+ SurveyInfo :: getInstance()->resetSurveyData();
+ }
+
+ /** GETERS && SETTERS **/
+ /* GETERS */
+ private function getParentFolder() { return $this->parentFolder; }
+ private function getCurrentFolder() { return $this->currentFolder; }
+ public function getDef_Rows_per_page() { return SRV_LIST_REC_PER_PAGE; }
+
+ /** vrne sql pogoj za folderje na podlagi trenutnega folderja */
+ private function getFolderCondition () {
+ if ($this->folderCondition == null) {
+ $resultString = " AND 0";
+ #$this->folders = array();
+ $folderArray = $this->getFolderTreeAsArray($this->getCurrentFolder());
+ if ( count( $folderArray ) > 0) {
+ $prefix="";
+ $resultString = " AND sa.folder IN (";
+ foreach ($folderArray as $fid => $fname) {
+ $resultString .= $prefix.$fid;
+ $prefix=",";
+ }
+ $resultString .=") ";
+ }
+ $this->folderCondition = $resultString;
+ }
+ return $this->folderCondition;
+ }
+
+ /** vrne array z folderjem in subfolderji (če je SRV_LIST_GET_SUB_FOLDERS = true) */
+ function getFolderTreeAsArray($parent) {
+ # če ni dodan parent ga dodamo
+ if (!isset($this->folders[$parent])) {
+ $parentSql = sisplet_query('SELECT id, naslov FROM srv_folder WHERE id="'.$parent.'";');
+ if (mysqli_num_rows($parentSql)>0) {
+ $rowParent = mysqli_fetch_assoc($parentSql);
+ $this->folders[$rowParent['id']] = $rowParent['naslov'];
+ }
+ }
+ if (SRV_LIST_GET_SUB_FOLDERS || $parent == 0) {
+ $result = sisplet_query('SELECT id, naslov FROM srv_folder WHERE parent="'.$parent.'";');
+ while ($row = mysqli_fetch_array($result)) {
+ $this->folders[$row['id']] = $row['naslov'];
+ $this->getFolderTreeAsArray($row['id']);
+ }
+ }
+ return $this->folders;
+ }
+
+ /** vrne sql pogoj za ankete v moji knjiznici na podlagi trenutnega folderja */
+ private function getLibraryCondition () {
+
+ if ($this->currentLibrary == null) {
+ $resultString = '';
+ }
+ else{
+ $children = array();
+ $children = $this->getLibraryChildren($this->currentLibrary, $children);
+
+ $childrenString = '';
+ if(!empty($children))
+ $childrenString = ','.implode(',', $children);
+
+ //$resultString = " AND sla.ank_id=sa.id AND sla.folder='".$this->currentLibrary."'";
+ $resultString = " AND sla.ank_id=sa.id AND sla.folder IN (".$this->currentLibrary . $childrenString.")";
+ }
+
+ $this->libraryCondition = $resultString;
+
+ return $this->libraryCondition;
+ }
+
+ private function getLibraryChildren($folder_id, $children){
+
+ // Pridobimo vse childe
+ $sql = sisplet_query("SELECT id, parent FROM srv_library_folder WHERE parent='".$folder_id."'");
+
+ // Izstopni pogoj
+ if(mysqli_num_rows($sql) == 0)
+ return ($children);
+
+ while($row = mysqli_fetch_array($sql)){
+ $children[] = $row['id'];
+ $children2 = $this->getLibraryChildren($row['id'], $children);
+
+ $children = array_merge($children, $children2);
+ }
+
+ return array_unique($children);
+ }
+
+ /** vrne sql string za omejevanje dostopa uporabniku */
+ function getLanguageLimit() {
+ global $global_admin_type;
+
+ if ((int)$this->lang_id > 0) {
+ return " AND lang_admin ='".(int)$this->lang_id."'";
+ }
+ }
+
+ /** vrne sql string za omejevanje dostopa uporabniku */
+ function getDostopAnketa() {
+ global $global_admin_type;
+ global $global_user_id;
+
+ if ($this->dostopCondition == null) {
+ // posebej za managerje, ki vidijo ankete svojih uporabnikov
+ $manage = '';
+
+ #generalni dostop glede na tip uporabnikov --> $admin_type <= $row['dostop']
+ # posebej dostop za vsazga userja posebej --> sisplet_query("SELECT * FROM srv_dostop WHERE ank_id = '$anketa' AND uid='$uid'") -> if (mysqli_num_rows($sql) > 0)
+ if ($this->user_id == null) {
+ if ($this->g_adminType == 1 || $this->g_adminType == 0)
+ $manage = " OR uid IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT user FROM srv_dostop_manage WHERE manager = '".$this->g_uid."' ")).") ";
+
+ $this->dostopCondition = (SRV_LIST_CHECK_DOSTOP ? " AND (sa.id IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT ank_id FROM srv_dostop WHERE uid='".$this->g_uid."' $manage"))."))" : "");
+ }
+ else {
+ if ($this->g_adminType == 1 || $this->g_adminType == 0)
+ $manage = " OR uid IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT user FROM srv_dostop_manage WHERE manager = '".$this->g_uid."'")).") ";
+
+ $this->dostopCondition = (SRV_LIST_CHECK_DOSTOP ? " AND (insert_uid = '".$this->user_id."') AND (sa.id IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT ank_id FROM srv_dostop WHERE uid='".$this->g_uid."' $manage"))."))" : "");
+ }
+
+ # če ni admin odstranimo ankete kjer je uporabnik označen samo kot anketar
+ if ( true /*$this->g_adminType != '0'*/ ) {
+ $this->dostopCondition .= " AND sa.id".($this->onlyPhone == false ? " NOT":"")." IN"
+ ." (SELECT ank_id FROM srv_dostop AS sd WHERE sd.aktiven = '1' AND sd.uid = '$this->g_uid' AND FIND_IN_SET('phone',sd.dostop )>0 AND FIND_IN_SET('edit',sd.dostop ) = 0) ";
+ }
+ else {
+ }
+ }
+
+
+ // meta admin vidi kao spet vse
+ if ( Dostop::isMetaAdmin() ) {
+
+ if ($this->user_id == null) {
+ $this->dostopCondition = (SRV_LIST_CHECK_DOSTOP ? " AND (sa.dostop >= '".$this->g_adminType."' OR sa.id IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT ank_id FROM srv_dostop WHERE uid='".$this->g_uid."' $manage"))."))" : "");
+ }
+ // filtriranje
+ else {
+ $manage = " OR uid IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT user FROM srv_dostop_manage WHERE manager = '".$this->g_uid."'")).") ";
+ $this->dostopCondition = (SRV_LIST_CHECK_DOSTOP ? " AND (insert_uid = '".$this->user_id."') AND (sa.id IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT ank_id FROM srv_dostop WHERE uid='".$this->g_uid."' $manage"))."))" : "");
+ }
+
+ // Včasih se za meta admina nekaj porusi in ne prikaze nobene ankete...
+ //$this->dostopCondition = '';
+ }
+
+ return $this->dostopCondition;
+ }
+
+ /** vrne order string za SQL s katerim sortiramo */
+ private function getOrderString() {
+
+ if (!isset($this->sortby) || (int)$this->sortby == 0) {
+ $this->sortby = SRV_LIST_ORDER_BY;
+ }
+
+ if (isset($this->order_by_options[$this->sortby])) {
+ $order_by = $this->order_by_options[$this->sortby];
+ } else {
+ $order_by = $this->order_by_options[SRV_LIST_ORDER_BY];
+ }
+
+ // UPPER damo, ker drugace sortira najprej vlke crke potem pa male
+ if($this->sortby == 1 || $this->sortby == 7 || $this->sortby == 11){
+ // Zamenjamo nacin sortiranja pri besedilu (drugace zacnemo od zadaj)
+ $sorttype = ($this->sorttype == 1) ? 2 : 1;
+ $result = " ORDER BY upper(" . $order_by . ") " . $this->sort_types_options[$sorttype];
+ }
+ // Dodamo opcije sortiranja pri statusu (18), ker ni dovolj sortiranje po "expired"
+ elseif($this->sortby == 18){
+ $sorttypeReverse = ($this->sorttype == 1) ? 2 : 1;
+ $result = " ORDER BY
+ sa.active ".$this->sort_types_options[$this->sorttype].",
+ (SELECT IF(COUNT(sac.sid) > 0, 1, 0) FROM srv_activity sac WHERE sac.sid=sa.id) ".$this->sort_types_options[$this->sorttype].",
+ ".$order_by." ".$this->sort_types_options[$sorttypeReverse];
+ }
+ else
+ $result = " ORDER BY " . $order_by . " ".$this->sort_types_options[$this->sorttype];
+
+ return $result;
+ }
+
+ /** vrne Limit string za SQL s katerim prika?emo posamezno stran */
+ private function getLimitString() {
+ $result = " LIMIT " . ($this->pageno * $this->rec_per_page - $this->rec_per_page) . ", " . $this->rec_per_page;
+ return $result;
+ }
+
+ // vrne sql string za search po anketah glede na nastavitve searcha
+ private function getSearchString(){
+
+ $search_text = mysqli_real_escape_string($GLOBALS['connect_db'], $this->searchString);
+ $search_text = stripslashes(stripslashes($search_text));
+
+ // Vse gre v lowerstring
+ $search_text = strtolower($search_text);
+
+ // Ce gre za string v narekovajih
+ if($search_text[0] == '"' && $search_text[strlen($search_text) - 1] == '"'){
+ $search_text = trim($search_text, '"');
+ $this->searchStringProcessed[] = $search_text;
+ $search_text = '%'.$search_text.'%';
+ }
+ else{
+ // Sklanjamo po search besedi - ce gre za search po naslovu ali kljucnih besedah
+ if ($this->searchSettings['stype'] == '0' || $this->searchSettings['stype'] == '2') {
+
+ // odstrani vse zvezdice in pluse in skrajsaj besede za dva znaka, dodaj *.
+ $search_text = explode (" ", $search_text);
+
+ for ($a=0; $a 5)
+ $search_text[$a] = substr ($search_text[$a], 0, -2);
+ elseif (strlen ($search_text[$a]) > 2)
+ $search_text[$a] = substr ($search_text[$a], 0, -1);
+ else
+ $search_text[$a] = $search_text[$a];
+
+ $this->searchStringProcessed[$a] = $search_text[$a];
+ $search_text[$a] = '%'.$search_text[$a].'%';
+ }
+
+ $search_text = implode(" ", $search_text);
+ }
+ else{
+ $this->searchStringProcessed[] = $search_text;
+ $search_text = '%'.$search_text.'%';
+ }
+ }
+
+ // Search po avtorju
+ if($this->searchSettings['stype'] == '1'){
+ $result = " AND (i_name LIKE '".$search_text."' OR i_surname LIKE '".$search_text."' OR i_email LIKE '".$search_text."')";
+ }
+ // Search po kljucnih besedah znotraj vprasanj (naslovi vprasanj in vrednosti)
+ elseif($this->searchSettings['stype'] == '2'){
+ $result = " AND (LOWER(introduction) LIKE LOWER('".$search_text."')
+ OR LOWER(conclusion) LIKE LOWER('".$search_text."')
+ OR LOWER(ss.naslov) LIKE LOWER('".$search_text."')
+ OR LOWER(sv.naslov) LIKE LOWER('".$search_text."'))";
+ }
+ // Search po naslovu
+ else{
+ $result = " AND (LOWER(sa.naslov) LIKE LOWER('".$search_text."') OR LOWER(sa.akronim) LIKE LOWER('".$search_text."') OR LOWER(nl.link) LIKE LOWER('".$search_text."'))";
+ }
+
+ // Search po statusu (aktivne, neaktivne)
+ if($this->searchSettings['sstatus'] == '1')
+ $result .= " AND active > '0'";
+ if($this->searchSettings['sstatus'] == '2')
+ $result .= " AND active = '0'";
+
+ // Search po datumu ustvarjanja (od)
+ if($this->searchSettings['sidatefrom'] != ''){
+ $date = date('Y-m-d H:i:s', strtotime($this->searchSettings['sidatefrom']));
+ $result .= " AND insert_time >= '".$date."'";
+ }
+ // Search po datumu ustvarjanja (do)
+ if($this->searchSettings['sidateto'] != ''){
+ $date = date('Y-m-d H:i:s', strtotime($this->searchSettings['sidateto']));
+ $result .= " AND insert_time <= '".$date."'";
+ }
+
+ // Search po datumu zadnjega urejanja (od)
+ if($this->searchSettings['sedatefrom'] != ''){
+ $date = date('Y-m-d H:i:s', strtotime($this->searchSettings['sedatefrom']));
+ $result .= " AND edit_time >= '".$date."'";
+ }
+ // Search po datumu zadnjega urejanja (do)
+ if($this->searchSettings['sedateto'] != ''){
+ $date = date('Y-m-d H:i:s', strtotime($this->searchSettings['sedateto']));
+ $result .= " AND edit_time <= '".$date."'";
+ }
+
+ // Dodaten search po avtorju samo za metaadmine
+ if($this->searchSettings['onlyAuthor'] != ''){
+ $onlyAuthorString = mysqli_real_escape_string($GLOBALS['connect_db'], $this->searchSettings['onlyAuthor']);
+ $onlyAuthorString = stripslashes(stripslashes($onlyAuthorString));
+
+ $result .= " AND (i_name LIKE '%".$onlyAuthorString."%'
+ OR i_surname LIKE '%".$onlyAuthorString."%'
+ OR i_email LIKE '%".$onlyAuthorString."%')";
+ }
+
+ return $result;
+ }
+
+ // Dobimo vse parametri searcha
+ private function getSearchParams(){
+ global $site_url;
+
+ $params = '';
+
+ if($this->isSearch == 1){
+ $params .= 'search='.urlencode($this->searchString);
+
+ if(!empty($this->searchSettings)){
+ foreach($this->searchSettings as $key => $val){
+ $params .= '&'.$key.'='.urlencode($val);
+ }
+ }
+ }
+
+ return $params;
+ }
+
+
+ /**
+ * shranimo širine celic
+ */
+ public function saveCssSettings($data) {
+ $new_data = array();
+ if (isset($data) && $data != null) {
+ $new_data = $this->getCssSetings();
+ // nato popravimo vrednost
+ $_tmp_new_data = array_unique(explode(",",$data));
+ $new_data[$_tmp_new_data[0]] = $_tmp_new_data[1];
+ // nato zdru?imo v primerno obliko in shranimo
+ $saveString = "";
+ $saveStringPrefix = "";
+ if (isset($new_data) && $new_data != null && count($new_data) > 0) {
+ foreach ( $new_data as $tmp_new_key => $tmp_new_data ) {
+ $saveString .= $saveStringPrefix.$tmp_new_key.",".$tmp_new_data;
+ $saveStringPrefix = ";";
+ }
+ }
+ UserSetting::getInstance()->setUserSetting('survey_list_widths', $saveString);
+ } else {
+ UserSetting::getInstance()->setUserSetting('survey_list_widths', "");
+ }
+ // shranimo
+ UserSetting::getInstance()->saveUserSetting('survey_list_widths', $saveString);
+ }
+ /* SETERS */
+ private function setParentFolder($parentFolder = 0) { $this->parentFolder = $parentFolder; }
+ private function setCurrentFolder($currentFolder = 0) { $this->currentFolder = $currentFolder; }
+
+ private function UpdateSystemLibrary () {
+ global $lang, $site_url;
+
+ $anketa = $_POST['anketa'];
+
+ echo '';
+
+ $sql = sisplet_query("SELECT * FROM srv_library_anketa WHERE ank_id='$anketa' AND uid='0'");
+ if (mysqli_num_rows($sql) == 0) {
+ $sql1 = sisplet_query("SELECT * FROM srv_library_folder WHERE uid='0' AND tip='1' AND parent='0' AND lang='$lang[id]'");
+ $row1 = mysqli_fetch_array($sql1);
+ sisplet_query("INSERT INTO srv_library_anketa (ank_id, uid, folder) VALUES ('$anketa', '0', '$row1[id]')");
+ echo ' ';
+ } else {
+ sisplet_query("DELETE FROM srv_library_anketa WHERE ank_id='$anketa' AND uid='0'");
+ echo ' ';
+ }
+
+ echo ' ';
+ }
+
+ private function UpdateUserLibrary () {
+ global $global_user_id, $site_url, $lang;
+
+ $anketa = $_POST['anketa'];
+
+ echo '';
+
+ $sql = sisplet_query("SELECT * FROM srv_library_anketa WHERE ank_id='$anketa' AND uid='$global_user_id'");
+ if (mysqli_num_rows($sql) > 0) {
+ sisplet_query("DELETE FROM srv_library_anketa WHERE ank_id='$anketa' AND uid='$global_user_id'");
+ echo ' ';
+ } else {
+ $sql1 = sisplet_query("SELECT * FROM srv_library_folder WHERE uid='$global_user_id' AND tip='1' AND parent='0'");
+ $row1 = mysqli_fetch_array($sql1);
+ sisplet_query("INSERT INTO srv_library_anketa (ank_id, uid, folder) VALUES ('$anketa', '$global_user_id', '$row1[id]')");
+ echo ' ';
+ }
+
+ echo ' ';
+ }
+
+ private function UpdateSystemLibraryNew () {
+ global $lang, $site_url;
+
+ $anketa = $_POST['anketa'];
+
+ $sql = sisplet_query("SELECT * FROM srv_library_anketa WHERE ank_id='$anketa' AND uid='0'");
+
+ if (mysqli_num_rows($sql) == 0) {
+ $sql1 = sisplet_query("SELECT * FROM srv_library_folder WHERE uid='0' AND tip='1' AND parent='0' AND lang='$lang[id]'");
+ $row1 = mysqli_fetch_array($sql1);
+
+ sisplet_query("INSERT INTO srv_library_anketa (ank_id, uid, folder) VALUES ('$anketa', '0', '$row1[id]')");
+ sisplet_query("UPDATE srv_survey_list SET lib_glb='1' WHERE id='$anketa'");
+ }
+ else {
+ sisplet_query("DELETE FROM srv_library_anketa WHERE ank_id='$anketa' AND uid='0'");
+ sisplet_query("UPDATE srv_survey_list SET lib_glb='0' WHERE id='$anketa'");
+ }
+ }
+
+ private function UpdateUserLibraryNew () {
+ global $global_user_id, $site_url;
+
+ $anketa = $_POST['anketa'];
+
+ $sql = sisplet_query("SELECT * FROM srv_library_anketa WHERE ank_id='$anketa' AND uid='$global_user_id'");
+
+ if (mysqli_num_rows($sql) > 0) {
+ sisplet_query("DELETE FROM srv_library_anketa WHERE ank_id='$anketa' AND uid='$global_user_id'");
+ sisplet_query("UPDATE srv_survey_list SET lib_usr='0' WHERE id='$anketa'");
+ }
+ else {
+ $sql1 = sisplet_query("SELECT * FROM srv_library_folder WHERE uid='$global_user_id' AND tip='1' AND parent='0'");
+ $row1 = mysqli_fetch_array($sql1);
+
+ sisplet_query("INSERT INTO srv_library_anketa (ank_id, uid, folder) VALUES ('$anketa', '$global_user_id', '$row1[id]')");
+ sisplet_query("UPDATE srv_survey_list SET lib_usr='1' WHERE id='$anketa'");
+ }
+ }
+
+ private function DisplayInfo () {
+ global $global_user_id, $site_url;
+
+ $anketa = $_POST['anketa'];
+ SurveyInfo::getInstance()->SurveyInit($anketa);
+
+ SurveyInfo::DisplayInfoBox();
+ }
+
+ // ajax, ki poskrbi za vse update glelde razvrscanja mojih anket v folderje
+ private function updateMySurveyFolders(){
+ global $global_user_id, $site_url, $lang;
+
+ // Prenesli smo anketo v drug folder
+ if($_GET['a'] == 'survey_dropped'){
+ $parent = isset($_POST['parent']) ? $_POST['parent'] : '0';
+ $drag_survey = isset($_POST['drag_survey']) ? $_POST['drag_survey'] : '0';
+
+ // Ce smo spustili v root folder samo pobrisemo anketo
+ if($parent == '0'){
+ $sql = sisplet_query("DELETE FROM srv_mysurvey_anketa WHERE ank_id='".$drag_survey."' AND usr_id='$global_user_id'");
+ }
+ else{
+ // Razpremo parent folder
+ $sql = sisplet_query("UPDATE srv_mysurvey_folder SET open='1' WHERE id='".$parent."' AND usr_id='$global_user_id'");
+
+ $sql = sisplet_query("INSERT INTO srv_mysurvey_anketa (ank_id, usr_id, folder) VALUES ('".$drag_survey."', '".$global_user_id."', '".$parent."') ON DUPLICATE KEY UPDATE folder='".$parent."'");
+ }
+ }
+
+ // Prenesli smo celoten folder v drug folder
+ elseif($_GET['a'] == 'folder_dropped'){
+ $parent = isset($_POST['parent']) ? $_POST['parent'] : '0';
+ $drag_folder = isset($_POST['drag_folder']) ? $_POST['drag_folder'] : '0';
+
+ // Preverimo da nismo slucajno prenesli v child folder - ne pustimo, ker drugace se zadeva porusi
+ $sql = sisplet_query("SELECT * FROM srv_mysurvey_folder WHERE id='".$parent."' AND parent='".$drag_folder."' AND usr_id='$global_user_id'");
+ if(mysqli_num_rows($sql) == 0){
+ // Razpremo parent folder
+ $sql = sisplet_query("UPDATE srv_mysurvey_folder SET open='1' WHERE id='".$parent."' AND usr_id='$global_user_id'");
+
+ $sql = sisplet_query("UPDATE srv_mysurvey_folder SET parent='".$parent."' WHERE id='".$drag_folder."' AND usr_id='$global_user_id'");
+ }
+ }
+
+ // prikazemo/skrijemo ankete znotraj folderja
+ elseif($_GET['a'] == 'folder_toggle'){
+ $folder = isset($_POST['folder']) ? $_POST['folder'] : '0';
+ $open = isset($_POST['open']) ? $_POST['open'] : '0';
+
+ $sql = sisplet_query("UPDATE srv_mysurvey_folder SET open='".$open."' WHERE id='".$folder."' AND usr_id='$global_user_id'");
+ }
+
+ // Ustvarili smo nov folder
+ elseif($_GET['a'] == 'folder_create'){
+ $parent = isset($_POST['parent']) ? $_POST['parent'] : '0';
+
+ // Razpremo parent folder
+ $sql = sisplet_query("UPDATE srv_mysurvey_folder SET open='1' WHERE id='".$parent."' AND usr_id='$global_user_id'");
+
+ $sql = sisplet_query("INSERT INTO srv_mysurvey_folder (usr_id, parent, naslov) VALUES ('".$global_user_id."','".$parent."', '".$lang['srv_mySurvey_new_folder']."')");
+
+ $new_folder_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ $SL = new SurveyList();
+ $SL->getSurveys();
+
+ echo ' ';
+ }
+
+ // Pobrisali smo obstojec folder
+ elseif($_GET['a'] == 'folder_delete'){
+ $folder = isset($_POST['folder']) ? $_POST['folder'] : '0';
+
+ //Pobrisemo ankete ki so bile znotraj folderja
+ $sql = sisplet_query("DELETE FROM srv_mysurvey_anketa WHERE folder='".$folder."' AND usr_id='$global_user_id'");
+
+ // Na koncu se pobrisemo prazen folder
+ $sql = sisplet_query("DELETE FROM srv_mysurvey_folder WHERE id='".$folder."' AND usr_id='$global_user_id'");
+
+ // Rekurzivno pobrisemo vse poddirektorije z anketami - TODO!!!
+ }
+
+ // Preimenovali smo obstojec folder
+ elseif($_GET['a'] == 'folder_rename'){
+ $folder = isset($_POST['folder']) ? $_POST['folder'] : '0';
+ $text = isset($_POST['text']) ? $_POST['text'] : '';
+ $text = strip_tags($text);
+
+ $sql = sisplet_query("UPDATE srv_mysurvey_folder SET naslov='".$text."' WHERE id='".$folder."' AND usr_id='$global_user_id'");
+ }
+
+ // Kopiramo obstojec folder z vsemi anketami
+ elseif($_GET['a'] == 'folder_copy'){
+
+ $folder = isset($_POST['folder']) ? $_POST['folder'] : '0';
+ if($folder > 0)
+ $this->copyMySurveyFolder($folder);
+ }
+ }
+
+ // Kopiramo obstojec folder z vsemi folderji in anketami (rekurzivno)
+ private function copyMySurveyFolder($folder_id, $parent=0){
+ global $global_user_id;
+
+ $sql = sisplet_query("SELECT * FROM srv_mysurvey_folder WHERE id='".$folder_id."' AND usr_id='".$global_user_id."'");
+ if(mysqli_num_rows($sql) == 0)
+ return;
+
+ $row = mysqli_fetch_array($sql);
+
+ // Najprej ustvarimo kopijo folderja
+ if($parent == 0)
+ $sql2 = sisplet_query("INSERT INTO srv_mysurvey_folder (usr_id, parent, naslov, open) VALUES ('".$global_user_id."', '".$row['parent']."', '".$row['naslov']."_copy', '1')");
+ else
+ $sql2 = sisplet_query("INSERT INTO srv_mysurvey_folder (usr_id, parent, naslov, open) VALUES ('".$global_user_id."', '".$parent."', '".$row['naslov']."_copy', '1')");
+
+ $new_folder_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ // Loop cez ankete v folderju
+ $sqlA = sisplet_query("SELECT * FROM srv_mysurvey_anketa WHERE folder='".$folder_id."'");
+ while($rowA = mysqli_fetch_array($sqlA)){
+
+ // Kopiramo anketo
+ $sas = new SurveyAdminSettings();
+ $ank_id = $sas->anketa_copy($rowA['ank_id']);
+
+ // Kopirano anketo vstavimo v nov folder
+ $sql2 = sisplet_query("INSERT INTO srv_mysurvey_anketa (ank_id, usr_id, folder) VALUES ('".$ank_id."', '".$global_user_id."', '".$new_folder_id."')");
+ }
+
+ // Na koncu rekurzivno kopiramo se vse notranje folderje
+ $sqlF = sisplet_query("SELECT id FROM srv_mysurvey_folder WHERE parent='".$folder_id."' AND usr_id='".$global_user_id."'");
+ while($rowF = mysqli_fetch_array($sqlF)){
+
+ $this->copyMySurveyFolder($rowF['id'], $new_folder_id);
+ }
+
+ return;
+ }
+
+
+ /** Funkcija ki kiče podfunkcije za ajax del
+ *
+ */
+ public function Ajax() {
+ switch ( $_GET['a'] ) {
+ case 'surveyList_knjiznica':
+ $this->UpdateSystemLibrary();
+ break;
+ case 'surveyList_myknjiznica':
+ $this->UpdateUserLibrary();
+ break;
+ case 'surveyList_myknjiznica_new':
+ $this->UpdateUserLibraryNew();
+ break;
+ case 'surveyList_knjiznica_new':
+ $this->UpdateSystemLibraryNew();
+ break;
+ case 'surveyList_display_info':
+ $this->DisplayInfo();
+ break;
+ case 'survey_dropped':
+ case 'folder_dropped':
+ case 'folder_create':
+ case 'folder_delete':
+ case 'folder_toggle':
+ case 'folder_rename':
+ case 'folder_copy':
+ $this->updateMySurveyFolders();
+ break;
+ case 'language_change':
+ $this->switch_language();
+ break;
+ default:
+ print_r($_POST);
+ print_r($_GET);
+ break;
+ }
+ }
+
+
+ /** Osveži datoteko z dodatnimi podatki anket
+ * za tiste ankete ki so bile spremenjene ali so imele kakšne vnose
+ */
+ private function refreshData() {
+
+ # polovimo vse obstoječe podatke v združeni datoteki
+ if (count($this->surveys_ids)>0 ) {
+
+ // Metaadmin updata samo svoje ankete (drugace jih je prevec in lahko zasteka)
+ if(Dostop::isMetaAdmin()){
+
+ # polovimo seznam metaadminovih anket
+ $meta_surveys_ids = array();
+ $dostopCondition = (SRV_LIST_CHECK_DOSTOP ? " AND (insert_uid = '".$this->user_id."') AND (sa.id IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT ank_id FROM srv_dostop WHERE uid='".$this->g_uid."'"))."))" : "");
+ $stringSurveyList = "SELECT id, backup, active, folder, dostop FROM srv_anketa sa WHERE sa.backup='0' AND sa.id > 0 AND sa.active >= 0 AND sa.invisible = '0' ".$dostopCondition;
+ $sqlSurveyList = sisplet_query($stringSurveyList);
+ while ( $rowSurveyList = mysqli_fetch_assoc($sqlSurveyList)) {
+ $meta_surveys_ids[$rowSurveyList['id']] = $rowSurveyList['id'];
+ }
+
+ $to_update = $meta_surveys_ids;
+
+ if(!empty($meta_surveys_ids)){
+
+ # poiščemmo katere ankete so OK, in jih odstranimo iz seznama anket potrebnih za update
+ $sqlSurveyList = sisplet_query("SELECT id
+ FROM srv_survey_list
+ WHERE id IN (".implode(',', $meta_surveys_ids).")
+ AND updated = '0' AND last_updated IS NOT NULL
+ ");
+ while ( $rowSurveyList = mysqli_fetch_assoc($sqlSurveyList)) {
+ if (isset($to_update[$rowSurveyList['id']])) {
+ unset($to_update[$rowSurveyList['id']]);
+ }
+ }
+ }
+
+ }
+ else{
+ $to_update = $this->surveys_ids;
+
+ # poiščemmo katere ankete so OK, in jih odstranimo iz seznama anket potrebnih za update
+ $sqlSurveyList = sisplet_query("SELECT id
+ FROM srv_survey_list
+ WHERE id IN (".implode(',', $this->surveys_ids).")
+ AND updated = '0' AND last_updated IS NOT NULL
+ ");
+ while ( $rowSurveyList = mysqli_fetch_assoc($sqlSurveyList)) {
+ if (isset($to_update[$rowSurveyList['id']])) {
+ unset($to_update[$rowSurveyList['id']]);
+ }
+ }
+ }
+
+ # če je treba kaj updejtat
+ if (count($to_update) > 0) {
+ $stringUpdateList =
+ " SELECT sa.id, "
+
+ . ' IF(ISNULL(sla1.lib_glb),0,sla1.lib_glb) AS lib_glb,'
+ . ' IF(ISNULL(sla2.lib_usr),0,sla2.lib_usr) AS lib_usr,'
+
+ . " us3.vnos_time_first AS v_time_first, us3.vnos_time_last AS v_time_last,"
+ . ' IF(ISNULL(us3.answers),0,us3.answers) as answers,'
+ . ' IF(ISNULL(g.variables),0,g.variables) as variables,'
+ . ' IF(ISNULL(us5.approp),0,us5.approp) as approp'
+
+ . ' FROM srv_anketa sa'
+
+ . " LEFT OUTER JOIN ( SELECT ank_id, uid, COUNT(*) AS lib_glb FROM srv_library_anketa as sla WHERE sla.uid = '0' AND sla.ank_id IN (".implode(',', $to_update).") GROUP BY ank_id )
+ AS sla1 ON sla1.ank_id = sa.id"
+ . " LEFT OUTER JOIN ( SELECT ank_id, uid, COUNT(*) AS lib_usr FROM srv_library_anketa as sla WHERE sla.uid = '".$this->g_uid."' AND sla.ank_id IN (".implode(',', $to_update).") GROUP BY ank_id )
+ AS sla2 ON sla2.ank_id = sa.id"
+
+ . ' LEFT OUTER JOIN ( SELECT us3.ank_id, COUNT(us3.ank_id) as answers, MIN( us3.time_insert ) as vnos_time_first, MAX( us3.time_insert ) as vnos_time_last, preview FROM srv_user as us3 WHERE us3.ank_id IN ('.implode(',', $to_update).') AND us3.preview = \'0\' AND us3.deleted=\'0\' AND us3.testdata=\'0\' AND (us3.last_status=\'5\' OR us3.last_status=\'6\') AND us3.lurker=\'0\' GROUP BY us3.ank_id )
+ AS us3 ON us3.ank_id = sa.id'
+
+ . ' LEFT OUTER JOIN ( SELECT g.ank_id, COUNT(s.gru_id) as variables FROM srv_grupa g, srv_spremenljivka s WHERE g.id = s.gru_id AND g.ank_id IN ('.implode(',', $to_update).') GROUP BY g.ank_id )
+ AS g ON g.ank_id = sa.id'
+
+ . ' LEFT OUTER JOIN ( SELECT us5.ank_id, COUNT(us5.ank_id) as approp, preview FROM srv_user as us5 WHERE last_status IN (' . $this->appropriateStatus . ') AND us5.ank_id IN ('.implode(',', $to_update).') AND us5.preview =\'0\' AND us5.deleted=\'0\' GROUP BY us5.ank_id )
+ AS us5 ON us5.ank_id = sa.id'
+
+ . ' WHERE sa.id IN ('.implode(',', $to_update).')';
+
+ $sqlUpdateList = sisplet_query($stringUpdateList);
+ if (!$sqlUpdateList) echo mysqli_error($GLOBALS['connect_db']);
+
+ if (mysqli_num_rows($sqlUpdateList) > 0) {
+
+ // Po novem zakesiramo podatke iz tabele "users" posebej (da ne zaklene zgornji query tabele za dalj casa)
+ $users = array();
+ $sqlUsers = sisplet_query("SELECT sa.id AS ank_id, sa.edit_uid, us1.name AS e_name, us1.surname AS e_surname, us1.email AS e_email,
+ sa.insert_uid, us2.name AS i_name, us2.surname AS i_surname, us2.email AS i_email
+ FROM srv_anketa sa
+ LEFT OUTER JOIN users AS us1 ON us1.id = sa.edit_uid
+ LEFT OUTER JOIN users AS us2 ON us2.id = sa.insert_uid
+ WHERE sa.id IN (".implode(',', $to_update).")");
+ while($rowUsers = mysqli_fetch_array($sqlUsers)){
+ $users[$rowUsers['ank_id']] = $rowUsers;
+ }
+
+ $values = array();
+ while ( $row = mysqli_fetch_assoc($sqlUpdateList)) {
+
+ $row['i_name'] = mysqli_real_escape_string($GLOBALS['connect_db'], $users[$row['id']]['i_name']);
+ $row['i_surname'] = mysqli_real_escape_string($GLOBALS['connect_db'], $users[$row['id']]['i_surname']);
+ $row['i_email'] = mysqli_real_escape_string($GLOBALS['connect_db'], $users[$row['id']]['i_email']);
+ $row['e_name'] = mysqli_real_escape_string($GLOBALS['connect_db'], $users[$row['id']]['e_name']);
+ $row['e_surname'] = mysqli_real_escape_string($GLOBALS['connect_db'], $users[$row['id']]['e_surname']);
+ $row['e_email'] = mysqli_real_escape_string($GLOBALS['connect_db'], $users[$row['id']]['e_email']);
+
+ $values[] = "('$row[id]','$row[lib_glb]','$row[lib_usr]','$row[answers]','$row[variables]','$row[approp]','$row[i_name]','$row[i_surname]','$row[i_email]','$row[e_name]','$row[e_surname]','$row[e_email]','$row[v_time_first]','$row[v_time_last]','0', NOW())";
+ }
+
+ $updateString = "INSERT INTO srv_survey_list (id, lib_glb, lib_usr, answers, variables, approp, i_name, i_surname, i_email, e_name, e_surname, e_email, a_first, a_last, updated, last_updated) "
+ ." VALUES ".implode(',', $values)." ON DUPLICATE KEY UPDATE id=VALUES(id), lib_glb=VALUES(lib_glb), lib_usr=VALUES(lib_usr), answers=VALUES(answers), variables=VALUES(variables), approp=VALUES(approp), i_name=VALUES(i_name), i_surname=VALUES(i_surname), i_email=VALUES(i_email), e_name=VALUES(e_name), e_surname=VALUES(e_surname), e_email=VALUES(e_email), a_first=VALUES(a_first), a_last=VALUES(a_last), updated='0', last_updated=NOW()";
+
+ sisplet_query($updateString);
+
+ }
+ sisplet_query("COMMIT");
+ }
+ }
+
+ # polovimo nastavitve uporabnika
+ $this->settingsArray = $this->getSettings();
+
+
+ # koliko imamo strani
+ $this->max_pages = (int)$this->rec_per_page > 0 ? ceil($this->countSurveys() / $this->rec_per_page) : 1;
+
+ # ce imamo direktorije, imamo manj strani zaradi anket v direktorijih
+ if($this->show_folders == 1 && $this->max_pages > 1){
+ $this->max_pages = ceil($this->countRootSurveys() / $this->rec_per_page);
+ }
+
+ # katera je trenutna stran
+ if (isset($_GET['pageno']) && (int)$_GET['pageno'] > 0) {
+ # izbrana stran ne more biti večja, kot pa imamo vseh strani
+ $this->pageno = min((int)$_GET['pageno'], $this->max_pages );
+ }
+ }
+
+ function setFilter() {
+ if (isset($_POST['sl_filter']) && trim($_POST['sl_filter']) != "") {
+ $this->filter = trim($_POST['sl_filter']);
+ }
+ }
+
+ public function countPhoneSurveys() {
+ # če ni admin odstranimo ankete kjer je uporabnik označen samo kot anketar
+
+ $stringSurveyList = "SELECT count(*) FROM srv_anketa sa WHERE sa.backup='0' AND sa.id > 0 AND sa.active >= 0 AND sa.invisible = '0' "
+ .$this->getFolderCondition();
+ if ($this->g_adminType != '0') {
+ $stringSurveyList .= " AND sa.id IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT ank_id FROM srv_dostop AS sd WHERE sd.aktiven = '1' AND sd.uid = '$this->g_uid' AND FIND_IN_SET('phone',sd.dostop )>0 AND FIND_IN_SET('edit',sd.dostop ) = 0")).")";
+ } else {
+ $stringSurveyList .= " AND sa.id IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT ank_id FROM srv_dostop AS sd WHERE sd.aktiven = '1' AND FIND_IN_SET('phone',sd.dostop )>0 AND FIND_IN_SET('edit',sd.dostop ) = 0")).")";
+ }
+
+ $sqlSurveyList = sisplet_query($stringSurveyList);
+ [$count] = mysqli_fetch_row($sqlSurveyList);
+
+ return (int)$count;
+ }
+
+ // Preklopimo jezik
+ private function switch_language(){
+ global $global_user_id;
+
+ $lang = $_POST['lang'];
+
+ sisplet_query("UPDATE users SET lang = '$lang' WHERE id = '$global_user_id'");
+ }
+}
+?>
\ No newline at end of file
diff --git a/composer.lock b/composer.lock
index e6c815b36..d2f06634a 100644
--- a/composer.lock
+++ b/composer.lock
@@ -61,6 +61,11 @@
"ssl",
"tls"
],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/ca-bundle/issues",
+ "source": "https://github.com/composer/ca-bundle/tree/1.3.3"
+ },
"funding": [
{
"url": "https://packagist.com",
@@ -154,27 +159,28 @@
},
{
"name": "geoip2/geoip2",
- "version": "v2.10.0",
+ "version": "v2.13.0",
"source": {
"type": "git",
- "url": "https://github.com/maxmind/GeoIP2-php.git",
- "reference": "419557cd21d9fe039721a83490701a58c8ce784a"
+ "url": "git@github.com:maxmind/GeoIP2-php.git",
+ "reference": "6a41d8fbd6b90052bc34dff3b4252d0f88067b23"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/419557cd21d9fe039721a83490701a58c8ce784a",
- "reference": "419557cd21d9fe039721a83490701a58c8ce784a",
+ "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/6a41d8fbd6b90052bc34dff3b4252d0f88067b23",
+ "reference": "6a41d8fbd6b90052bc34dff3b4252d0f88067b23",
"shasum": ""
},
"require": {
"ext-json": "*",
- "maxmind-db/reader": "~1.5",
- "maxmind/web-service-common": "~0.6",
- "php": ">=5.6"
+ "maxmind-db/reader": "~1.8",
+ "maxmind/web-service-common": "~0.8",
+ "php": ">=7.2"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "2.*",
- "phpunit/phpunit": "5.*",
+ "friendsofphp/php-cs-fixer": "3.*",
+ "phpstan/phpstan": "*",
+ "phpunit/phpunit": "^8.0 || ^9.0",
"squizlabs/php_codesniffer": "3.*"
},
"type": "library",
@@ -203,7 +209,7 @@
"geolocation",
"maxmind"
],
- "time": "2019-12-12T18:48:39+00:00"
+ "time": "2022-08-05T20:32:58+00:00"
},
{
"name": "guzzlehttp/guzzle",
@@ -322,16 +328,16 @@
},
{
"name": "guzzlehttp/promises",
- "version": "1.5.1",
+ "version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
+ "reference": "b94b2807d85443f9719887892882d0329d1e2598"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
+ "reference": "b94b2807d85443f9719887892882d0329d1e2598",
"shasum": ""
},
"require": {
@@ -347,12 +353,12 @@
}
},
"autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
"files": [
"src/functions_include.php"
- ]
+ ],
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -386,7 +392,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.5.1"
+ "source": "https://github.com/guzzle/promises/tree/1.5.2"
},
"funding": [
{
@@ -402,7 +408,7 @@
"type": "tidelift"
}
],
- "time": "2021-10-22T20:56:57+00:00"
+ "time": "2022-08-28T14:55:35+00:00"
},
{
"name": "guzzlehttp/psr7",
@@ -516,29 +522,30 @@
},
{
"name": "maxmind-db/reader",
- "version": "v1.6.0",
+ "version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
- "reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4"
+ "reference": "b1f3c0699525336d09cc5161a2861268d9f2ae5b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/febd4920bf17c1da84cef58e56a8227dfb37fbe4",
- "reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4",
+ "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/b1f3c0699525336d09cc5161a2861268d9f2ae5b",
+ "reference": "b1f3c0699525336d09cc5161a2861268d9f2ae5b",
"shasum": ""
},
"require": {
- "php": ">=5.6"
+ "php": ">=7.2"
},
"conflict": {
- "ext-maxminddb": "<1.6.0,>=2.0.0"
+ "ext-maxminddb": "<1.10.1,>=2.0.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "2.*",
+ "friendsofphp/php-cs-fixer": "3.*",
"php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpcov": "^3.0",
- "phpunit/phpunit": "5.*",
+ "phpstan/phpstan": "*",
+ "phpunit/phpcov": ">=6.0.0",
+ "phpunit/phpunit": ">=8.0.0,<10.0.0",
"squizlabs/php_codesniffer": "3.*"
},
"suggest": {
@@ -572,31 +579,36 @@
"geolocation",
"maxmind"
],
- "time": "2019-12-19T22:59:03+00:00"
+ "support": {
+ "issues": "https://github.com/maxmind/MaxMind-DB-Reader-php/issues",
+ "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.11.0"
+ },
+ "time": "2021-10-18T15:23:10+00:00"
},
{
"name": "maxmind/web-service-common",
- "version": "v0.7.0",
+ "version": "v0.9.0",
"source": {
"type": "git",
"url": "https://github.com/maxmind/web-service-common-php.git",
- "reference": "74c996c218ada5c639c8c2f076756e059f5552fc"
+ "reference": "4dc5a3e8df38aea4ca3b1096cee3a038094e9b53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/74c996c218ada5c639c8c2f076756e059f5552fc",
- "reference": "74c996c218ada5c639c8c2f076756e059f5552fc",
+ "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/4dc5a3e8df38aea4ca3b1096cee3a038094e9b53",
+ "reference": "4dc5a3e8df38aea4ca3b1096cee3a038094e9b53",
"shasum": ""
},
"require": {
"composer/ca-bundle": "^1.0.3",
"ext-curl": "*",
"ext-json": "*",
- "php": ">=5.6"
+ "php": ">=7.2"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "2.*",
- "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0",
+ "friendsofphp/php-cs-fixer": "3.*",
+ "phpstan/phpstan": "*",
+ "phpunit/phpunit": "^8.0 || ^9.0",
"squizlabs/php_codesniffer": "3.*"
},
"type": "library",
@@ -618,7 +630,11 @@
],
"description": "Internal MaxMind Web Service API",
"homepage": "https://github.com/maxmind/web-service-common-php",
- "time": "2020-05-06T14:07:26+00:00"
+ "support": {
+ "issues": "https://github.com/maxmind/web-service-common-php/issues",
+ "source": "https://github.com/maxmind/web-service-common-php/tree/v0.9.0"
+ },
+ "time": "2022-03-28T17:43:20+00:00"
},
{
"name": "minishlink/web-push",
@@ -674,6 +690,10 @@
"push",
"web"
],
+ "support": {
+ "issues": "https://github.com/web-push-libs/web-push-php/issues",
+ "source": "https://github.com/web-push-libs/web-push-php/tree/v5.2.5"
+ },
"time": "2020-08-02T08:58:01+00:00"
},
{
@@ -719,20 +739,25 @@
"pseudorandom",
"random"
],
+ "support": {
+ "email": "info@paragonie.com",
+ "issues": "https://github.com/paragonie/random_compat/issues",
+ "source": "https://github.com/paragonie/random_compat"
+ },
"time": "2020-10-15T08:29:30+00:00"
},
{
"name": "paragonie/sodium_compat",
- "version": "v1.17.1",
+ "version": "v1.18.0",
"source": {
"type": "git",
"url": "https://github.com/paragonie/sodium_compat.git",
- "reference": "ac994053faac18d386328c91c7900f930acadf1e"
+ "reference": "906e0b925895d3a5941eda25f371fbafb3cbc22f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/ac994053faac18d386328c91c7900f930acadf1e",
- "reference": "ac994053faac18d386328c91c7900f930acadf1e",
+ "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/906e0b925895d3a5941eda25f371fbafb3cbc22f",
+ "reference": "906e0b925895d3a5941eda25f371fbafb3cbc22f",
"shasum": ""
},
"require": {
@@ -803,9 +828,9 @@
],
"support": {
"issues": "https://github.com/paragonie/sodium_compat/issues",
- "source": "https://github.com/paragonie/sodium_compat/tree/v1.17.1"
+ "source": "https://github.com/paragonie/sodium_compat/tree/v1.18.0"
},
- "time": "2022-03-23T19:32:04+00:00"
+ "time": "2022-09-13T20:54:27+00:00"
},
{
"name": "paypal/paypal-checkout-sdk",
@@ -830,8 +855,8 @@
"type": "library",
"autoload": {
"psr-4": {
- "PayPalCheckoutSdk\\": "lib/PayPalCheckoutSdk",
- "Sample\\": "samples/"
+ "Sample\\": "samples/",
+ "PayPalCheckoutSdk\\": "lib/PayPalCheckoutSdk"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -857,6 +882,7 @@
"support": {
"source": "https://github.com/paypal/Checkout-PHP-SDK/tree/1.0.2"
},
+ "abandoned": true,
"time": "2021-09-21T20:57:38+00:00"
},
{
@@ -904,16 +930,16 @@
},
{
"name": "phpmailer/phpmailer",
- "version": "v6.6.3",
+ "version": "v6.6.4",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
- "reference": "9400f305a898f194caff5521f64e5dfa926626f3"
+ "reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/9400f305a898f194caff5521f64e5dfa926626f3",
- "reference": "9400f305a898f194caff5521f64e5dfa926626f3",
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a94fdebaea6bd17f51be0c2373ab80d3d681269b",
+ "reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b",
"shasum": ""
},
"require": {
@@ -970,7 +996,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues",
- "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.3"
+ "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.4"
},
"funding": [
{
@@ -978,7 +1004,7 @@
"type": "github"
}
],
- "time": "2022-06-20T09:21:02+00:00"
+ "time": "2022-08-22T09:22:00+00:00"
},
{
"name": "psr/http-message",
@@ -1028,6 +1054,9 @@
"request",
"response"
],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/master"
+ },
"time": "2016-08-06T14:39:51+00:00"
},
{
@@ -1068,27 +1097,31 @@
}
],
"description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
"time": "2019-03-08T08:55:37+00:00"
},
{
"name": "sonata-project/google-authenticator",
- "version": "2.2.0",
+ "version": "2.3.1",
"source": {
"type": "git",
"url": "https://github.com/sonata-project/GoogleAuthenticator.git",
- "reference": "feda53899b26af24e3db2fe7a3e5f053ca483762"
+ "reference": "71a4189228f93a9662574dc8c65e77ef55061b59"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sonata-project/GoogleAuthenticator/zipball/feda53899b26af24e3db2fe7a3e5f053ca483762",
- "reference": "feda53899b26af24e3db2fe7a3e5f053ca483762",
+ "url": "https://api.github.com/repos/sonata-project/GoogleAuthenticator/zipball/71a4189228f93a9662574dc8c65e77ef55061b59",
+ "reference": "71a4189228f93a9662574dc8c65e77ef55061b59",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": "^7.3 || ^8.0"
},
"require-dev": {
- "symfony/phpunit-bridge": "^4.0"
+ "symfony/phpunit-bridge": "^5.1.8"
},
"type": "library",
"extra": {
@@ -1107,6 +1140,10 @@
"MIT"
],
"authors": [
+ {
+ "name": "Thomas Rabaix",
+ "email": "thomas.rabaix@gmail.com"
+ },
{
"name": "Christian Stocker",
"email": "me@chregu.tv"
@@ -1114,10 +1151,6 @@
{
"name": "Andre DeMarre",
"homepage": "http://www.devnetwork.net/viewtopic.php?f=50&t=94989"
- },
- {
- "name": "Thomas Rabaix",
- "email": "thomas.rabaix@gmail.com"
}
],
"description": "Library to integrate Google Authenticator into a PHP project",
@@ -1125,8 +1158,30 @@
"keywords": [
"google authenticator"
],
+ "support": {
+ "issues": "https://github.com/sonata-project/GoogleAuthenticator/issues",
+ "source": "https://github.com/sonata-project/GoogleAuthenticator/tree/2.3.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/OskarStark",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/VincentLanglet",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/core23",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/wbloszyk",
+ "type": "github"
+ }
+ ],
"abandoned": true,
- "time": "2018-07-18T22:08:02+00:00"
+ "time": "2021-02-15T19:23:18+00:00"
},
{
"name": "spomky-labs/base64url",
@@ -1177,6 +1232,20 @@
"safe",
"url"
],
+ "support": {
+ "issues": "https://github.com/Spomky-Labs/base64url/issues",
+ "source": "https://github.com/Spomky-Labs/base64url/tree/v2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Spomky",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
"time": "2020-11-03T09:10:25+00:00"
},
{
@@ -1559,6 +1628,15 @@
"jwt",
"symfony"
],
+ "support": {
+ "source": "https://github.com/web-token/jwt-core/tree/v1.3.10"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
"time": "2020-03-20T13:29:04+00:00"
},
{
@@ -1636,6 +1714,15 @@
"jwt",
"symfony"
],
+ "support": {
+ "source": "https://github.com/web-token/jwt-key-mgmt/tree/v1.3.10"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
"time": "2020-03-20T13:29:04+00:00"
},
{
@@ -1716,6 +1803,15 @@
"jwt",
"symfony"
],
+ "support": {
+ "source": "https://github.com/web-token/jwt-signature/tree/v1.3.10"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
"time": "2020-03-20T13:29:04+00:00"
},
{
@@ -1783,6 +1879,15 @@
"jwt",
"symfony"
],
+ "support": {
+ "source": "https://github.com/web-token/jwt-signature-algorithm-ecdsa/tree/v1.3.10"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
"time": "2020-03-20T13:29:04+00:00"
},
{
@@ -1850,6 +1955,15 @@
"jwt",
"symfony"
],
+ "support": {
+ "source": "https://github.com/web-token/jwt-signature-algorithm-eddsa/tree/v1.3.10"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
"time": "2020-03-20T13:29:04+00:00"
},
{
@@ -1917,6 +2031,15 @@
"jwt",
"symfony"
],
+ "support": {
+ "source": "https://github.com/web-token/jwt-signature-algorithm-hmac/tree/v1.3"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
"time": "2020-03-20T13:29:04+00:00"
},
{
@@ -1984,6 +2107,15 @@
"jwt",
"symfony"
],
+ "support": {
+ "source": "https://github.com/web-token/jwt-signature-algorithm-none/tree/v1.3"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
"time": "2020-03-20T13:29:04+00:00"
},
{
@@ -2051,6 +2183,15 @@
"jwt",
"symfony"
],
+ "support": {
+ "source": "https://github.com/web-token/jwt-signature-algorithm-rsa/tree/v1.3"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
"time": "2020-03-20T13:29:04+00:00"
},
{
@@ -2120,6 +2261,15 @@
"jwt",
"symfony"
],
+ "support": {
+ "source": "https://github.com/web-token/jwt-util-ecc/tree/v1.3"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
"time": "2020-03-20T13:29:04+00:00"
}
],
@@ -2183,6 +2333,10 @@
"throwable",
"whoops"
],
+ "support": {
+ "issues": "https://github.com/filp/whoops/issues",
+ "source": "https://github.com/filp/whoops/tree/2.14.5"
+ },
"funding": [
{
"url": "https://github.com/denis-sokolov",
@@ -2240,20 +2394,24 @@
"kint",
"php"
],
+ "support": {
+ "issues": "https://github.com/kint-php/kint/issues",
+ "source": "https://github.com/kint-php/kint/tree/1.1"
+ },
"time": "2017-01-15T14:23:43+00:00"
},
{
"name": "maximebf/debugbar",
- "version": "v1.18.0",
+ "version": "v1.18.1",
"source": {
"type": "git",
"url": "https://github.com/maximebf/php-debugbar.git",
- "reference": "0d44b75f3b5d6d41ae83b79c7a4bceae7fbc78b6"
+ "reference": "ba0af68dd4316834701ecb30a00ce9604ced3ee9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/0d44b75f3b5d6d41ae83b79c7a4bceae7fbc78b6",
- "reference": "0d44b75f3b5d6d41ae83b79c7a4bceae7fbc78b6",
+ "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/ba0af68dd4316834701ecb30a00ce9604ced3ee9",
+ "reference": "ba0af68dd4316834701ecb30a00ce9604ced3ee9",
"shasum": ""
},
"require": {
@@ -2273,7 +2431,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.17-dev"
+ "dev-master": "1.18-dev"
}
},
"autoload": {
@@ -2302,7 +2460,11 @@
"debug",
"debugbar"
],
- "time": "2021-12-27T18:49:48+00:00"
+ "support": {
+ "issues": "https://github.com/maximebf/php-debugbar/issues",
+ "source": "https://github.com/maximebf/php-debugbar/tree/v1.18.1"
+ },
+ "time": "2022-03-31T14:55:54+00:00"
},
{
"name": "psr/log",
@@ -2349,6 +2511,9 @@
"psr",
"psr-3"
],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
+ },
"time": "2021-05-03T11:20:27+00:00"
},
{
@@ -2415,6 +2580,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2495,6 +2663,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2581,6 +2752,9 @@
"debug",
"dump"
],
+ "support": {
+ "source": "https://github.com/symfony/var-dumper/tree/v4.4.44"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2607,5 +2781,5 @@
"php": "^5.5|^7.0"
},
"platform-dev": [],
- "plugin-api-version": "1.1.0"
+ "plugin-api-version": "2.1.0"
}
diff --git a/public/css/admin_new.css b/public/css/admin_new.css
index 06ff2f03e..be726d73a 100644
--- a/public/css/admin_new.css
+++ b/public/css/admin_new.css
@@ -214,4767 +214,4767 @@
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.fa-500px:before {
- content: "\f26e";
+ content: "";
}
.fa-accessible-icon:before {
- content: "\f368";
+ content: "";
}
.fa-accusoft:before {
- content: "\f369";
+ content: "";
}
.fa-ad:before {
- content: "\f641";
+ content: "";
}
.fa-address-book:before {
- content: "\f2b9";
+ content: "";
}
.fa-address-card:before {
- content: "\f2bb";
+ content: "";
}
.fa-adjust:before {
- content: "\f042";
+ content: "";
}
.fa-adn:before {
- content: "\f170";
+ content: "";
}
.fa-adversal:before {
- content: "\f36a";
+ content: "";
}
.fa-affiliatetheme:before {
- content: "\f36b";
+ content: "";
}
.fa-air-freshener:before {
- content: "\f5d0";
+ content: "";
}
.fa-algolia:before {
- content: "\f36c";
+ content: "";
}
.fa-align-center:before {
- content: "\f037";
+ content: "";
}
.fa-align-justify:before {
- content: "\f039";
+ content: "";
}
.fa-align-left:before {
- content: "\f036";
+ content: "";
}
.fa-align-right:before {
- content: "\f038";
+ content: "";
}
.fa-alipay:before {
- content: "\f642";
+ content: "";
}
.fa-allergies:before {
- content: "\f461";
+ content: "";
}
.fa-amazon:before {
- content: "\f270";
+ content: "";
}
.fa-amazon-pay:before {
- content: "\f42c";
+ content: "";
}
.fa-ambulance:before {
- content: "\f0f9";
+ content: "";
}
.fa-american-sign-language-interpreting:before {
- content: "\f2a3";
+ content: "";
}
.fa-amilia:before {
- content: "\f36d";
+ content: "";
}
.fa-anchor:before {
- content: "\f13d";
+ content: "";
}
.fa-android:before {
- content: "\f17b";
+ content: "";
}
.fa-angellist:before {
- content: "\f209";
+ content: "";
}
.fa-angle-double-down:before {
- content: "\f103";
+ content: "";
}
.fa-angle-double-left:before {
- content: "\f100";
+ content: "";
}
.fa-angle-double-right:before {
- content: "\f101";
+ content: "";
}
.fa-angle-double-up:before {
- content: "\f102";
+ content: "";
}
.fa-angle-down:before {
- content: "\f107";
+ content: "";
}
.fa-angle-left:before {
- content: "\f104";
+ content: "";
}
.fa-angle-right:before {
- content: "\f105";
+ content: "";
}
.fa-angle-up:before {
- content: "\f106";
+ content: "";
}
.fa-angry:before {
- content: "\f556";
+ content: "";
}
.fa-angrycreative:before {
- content: "\f36e";
+ content: "";
}
.fa-angular:before {
- content: "\f420";
+ content: "";
}
.fa-ankh:before {
- content: "\f644";
+ content: "";
}
.fa-app-store:before {
- content: "\f36f";
+ content: "";
}
.fa-app-store-ios:before {
- content: "\f370";
+ content: "";
}
.fa-apper:before {
- content: "\f371";
+ content: "";
}
.fa-apple:before {
- content: "\f179";
+ content: "";
}
.fa-apple-alt:before {
- content: "\f5d1";
+ content: "";
}
.fa-apple-pay:before {
- content: "\f415";
+ content: "";
}
.fa-archive:before {
- content: "\f187";
+ content: "";
}
.fa-archway:before {
- content: "\f557";
+ content: "";
}
.fa-arrow-alt-circle-down:before {
- content: "\f358";
+ content: "";
}
.fa-arrow-alt-circle-left:before {
- content: "\f359";
+ content: "";
}
.fa-arrow-alt-circle-right:before {
- content: "\f35a";
+ content: "";
}
.fa-arrow-alt-circle-up:before {
- content: "\f35b";
+ content: "";
}
.fa-arrow-circle-down:before {
- content: "\f0ab";
+ content: "";
}
.fa-arrow-circle-left:before {
- content: "\f0a8";
+ content: "";
}
.fa-arrow-circle-right:before {
- content: "\f0a9";
+ content: "";
}
.fa-arrow-circle-up:before {
- content: "\f0aa";
+ content: "";
}
.fa-arrow-down:before {
- content: "\f063";
+ content: "";
}
.fa-arrow-left:before {
- content: "\f060";
+ content: "";
}
.fa-arrow-right:before {
- content: "\f061";
+ content: "";
}
.fa-arrow-up:before {
- content: "\f062";
+ content: "";
}
.fa-arrows-alt:before {
- content: "\f0b2";
+ content: "";
}
.fa-arrows-alt-h:before {
- content: "\f337";
+ content: "";
}
.fa-arrows-alt-v:before {
- content: "\f338";
+ content: "";
}
.fa-assistive-listening-systems:before {
- content: "\f2a2";
+ content: "";
}
.fa-asterisk:before {
- content: "\f069";
+ content: "";
}
.fa-asymmetrik:before {
- content: "\f372";
+ content: "";
}
.fa-at:before {
- content: "\f1fa";
+ content: "";
}
.fa-atlas:before {
- content: "\f558";
+ content: "";
}
.fa-atom:before {
- content: "\f5d2";
+ content: "";
}
.fa-audible:before {
- content: "\f373";
+ content: "";
}
.fa-audio-description:before {
- content: "\f29e";
+ content: "";
}
.fa-autoprefixer:before {
- content: "\f41c";
+ content: "";
}
.fa-avianex:before {
- content: "\f374";
+ content: "";
}
.fa-aviato:before {
- content: "\f421";
+ content: "";
}
.fa-award:before {
- content: "\f559";
+ content: "";
}
.fa-aws:before {
- content: "\f375";
+ content: "";
}
.fa-backspace:before {
- content: "\f55a";
+ content: "";
}
.fa-backward:before {
- content: "\f04a";
+ content: "";
}
.fa-balance-scale:before {
- content: "\f24e";
+ content: "";
}
.fa-ban:before {
- content: "\f05e";
+ content: "";
}
.fa-band-aid:before {
- content: "\f462";
+ content: "";
}
.fa-bandcamp:before {
- content: "\f2d5";
+ content: "";
}
.fa-barcode:before {
- content: "\f02a";
+ content: "";
}
.fa-bars:before {
- content: "\f0c9";
+ content: "";
}
.fa-baseball-ball:before {
- content: "\f433";
+ content: "";
}
.fa-basketball-ball:before {
- content: "\f434";
+ content: "";
}
.fa-bath:before {
- content: "\f2cd";
+ content: "";
}
.fa-battery-empty:before {
- content: "\f244";
+ content: "";
}
.fa-battery-full:before {
- content: "\f240";
+ content: "";
}
.fa-battery-half:before {
- content: "\f242";
+ content: "";
}
.fa-battery-quarter:before {
- content: "\f243";
+ content: "";
}
.fa-battery-three-quarters:before {
- content: "\f241";
+ content: "";
}
.fa-bed:before {
- content: "\f236";
+ content: "";
}
.fa-beer:before {
- content: "\f0fc";
+ content: "";
}
.fa-behance:before {
- content: "\f1b4";
+ content: "";
}
.fa-behance-square:before {
- content: "\f1b5";
+ content: "";
}
.fa-bell:before {
- content: "\f0f3";
+ content: "";
}
.fa-bell-slash:before {
- content: "\f1f6";
+ content: "";
}
.fa-bezier-curve:before {
- content: "\f55b";
+ content: "";
}
.fa-bible:before {
- content: "\f647";
+ content: "";
}
.fa-bicycle:before {
- content: "\f206";
+ content: "";
}
.fa-bimobject:before {
- content: "\f378";
+ content: "";
}
.fa-binoculars:before {
- content: "\f1e5";
+ content: "";
}
.fa-birthday-cake:before {
- content: "\f1fd";
+ content: "";
}
.fa-bitbucket:before {
- content: "\f171";
+ content: "";
}
.fa-bitcoin:before {
- content: "\f379";
+ content: "";
}
.fa-bity:before {
- content: "\f37a";
+ content: "";
}
.fa-black-tie:before {
- content: "\f27e";
+ content: "";
}
.fa-blackberry:before {
- content: "\f37b";
+ content: "";
}
.fa-blender:before {
- content: "\f517";
+ content: "";
}
.fa-blind:before {
- content: "\f29d";
+ content: "";
}
.fa-blogger:before {
- content: "\f37c";
+ content: "";
}
.fa-blogger-b:before {
- content: "\f37d";
+ content: "";
}
.fa-bluetooth:before {
- content: "\f293";
+ content: "";
}
.fa-bluetooth-b:before {
- content: "\f294";
+ content: "";
}
.fa-bold:before {
- content: "\f032";
+ content: "";
}
.fa-bolt:before {
- content: "\f0e7";
+ content: "";
}
.fa-bomb:before {
- content: "\f1e2";
+ content: "";
}
.fa-bone:before {
- content: "\f5d7";
+ content: "";
}
.fa-bong:before {
- content: "\f55c";
+ content: "";
}
.fa-book:before {
- content: "\f02d";
+ content: "";
}
.fa-book-open:before {
- content: "\f518";
+ content: "";
}
.fa-book-reader:before {
- content: "\f5da";
+ content: "";
}
.fa-bookmark:before {
- content: "\f02e";
+ content: "";
}
.fa-bowling-ball:before {
- content: "\f436";
+ content: "";
}
.fa-box:before {
- content: "\f466";
+ content: "";
}
.fa-box-open:before {
- content: "\f49e";
+ content: "";
}
.fa-boxes:before {
- content: "\f468";
+ content: "";
}
.fa-braille:before {
- content: "\f2a1";
+ content: "";
}
.fa-brain:before {
- content: "\f5dc";
+ content: "";
}
.fa-briefcase:before {
- content: "\f0b1";
+ content: "";
}
.fa-briefcase-medical:before {
- content: "\f469";
+ content: "";
}
.fa-broadcast-tower:before {
- content: "\f519";
+ content: "";
}
.fa-broom:before {
- content: "\f51a";
+ content: "";
}
.fa-brush:before {
- content: "\f55d";
+ content: "";
}
.fa-btc:before {
- content: "\f15a";
+ content: "";
}
.fa-bug:before {
- content: "\f188";
+ content: "";
}
.fa-building:before {
- content: "\f1ad";
+ content: "";
}
.fa-bullhorn:before {
- content: "\f0a1";
+ content: "";
}
.fa-bullseye:before {
- content: "\f140";
+ content: "";
}
.fa-burn:before {
- content: "\f46a";
+ content: "";
}
.fa-buromobelexperte:before {
- content: "\f37f";
+ content: "";
}
.fa-bus:before {
- content: "\f207";
+ content: "";
}
.fa-bus-alt:before {
- content: "\f55e";
+ content: "";
}
.fa-business-time:before {
- content: "\f64a";
+ content: "";
}
.fa-buysellads:before {
- content: "\f20d";
+ content: "";
}
.fa-calculator:before {
- content: "\f1ec";
+ content: "";
}
.fa-calendar:before {
- content: "\f133";
+ content: "";
}
.fa-calendar-alt:before {
- content: "\f073";
+ content: "";
}
.fa-calendar-check:before {
- content: "\f274";
+ content: "";
}
.fa-calendar-minus:before {
- content: "\f272";
+ content: "";
}
.fa-calendar-plus:before {
- content: "\f271";
+ content: "";
}
.fa-calendar-times:before {
- content: "\f273";
+ content: "";
}
.fa-camera:before {
- content: "\f030";
+ content: "";
}
.fa-camera-retro:before {
- content: "\f083";
+ content: "";
}
.fa-cannabis:before {
- content: "\f55f";
+ content: "";
}
.fa-capsules:before {
- content: "\f46b";
+ content: "";
}
.fa-car:before {
- content: "\f1b9";
+ content: "";
}
.fa-car-alt:before {
- content: "\f5de";
+ content: "";
}
.fa-car-battery:before {
- content: "\f5df";
+ content: "";
}
.fa-car-crash:before {
- content: "\f5e1";
+ content: "";
}
.fa-car-side:before {
- content: "\f5e4";
+ content: "";
}
.fa-caret-down:before {
- content: "\f0d7";
+ content: "";
}
.fa-caret-left:before {
- content: "\f0d9";
+ content: "";
}
.fa-caret-right:before {
- content: "\f0da";
+ content: "";
}
.fa-caret-square-down:before {
- content: "\f150";
+ content: "";
}
.fa-caret-square-left:before {
- content: "\f191";
+ content: "";
}
.fa-caret-square-right:before {
- content: "\f152";
+ content: "";
}
.fa-caret-square-up:before {
- content: "\f151";
+ content: "";
}
.fa-caret-up:before {
- content: "\f0d8";
+ content: "";
}
.fa-cart-arrow-down:before {
- content: "\f218";
+ content: "";
}
.fa-cart-plus:before {
- content: "\f217";
+ content: "";
}
.fa-cc-amazon-pay:before {
- content: "\f42d";
+ content: "";
}
.fa-cc-amex:before {
- content: "\f1f3";
+ content: "";
}
.fa-cc-apple-pay:before {
- content: "\f416";
+ content: "";
}
.fa-cc-diners-club:before {
- content: "\f24c";
+ content: "";
}
.fa-cc-discover:before {
- content: "\f1f2";
+ content: "";
}
.fa-cc-jcb:before {
- content: "\f24b";
+ content: "";
}
.fa-cc-mastercard:before {
- content: "\f1f1";
+ content: "";
}
.fa-cc-paypal:before {
- content: "\f1f4";
+ content: "";
}
.fa-cc-stripe:before {
- content: "\f1f5";
+ content: "";
}
.fa-cc-visa:before {
- content: "\f1f0";
+ content: "";
}
.fa-centercode:before {
- content: "\f380";
+ content: "";
}
.fa-certificate:before {
- content: "\f0a3";
+ content: "";
}
.fa-chalkboard:before {
- content: "\f51b";
+ content: "";
}
.fa-chalkboard-teacher:before {
- content: "\f51c";
+ content: "";
}
.fa-charging-station:before {
- content: "\f5e7";
+ content: "";
}
.fa-chart-area:before {
- content: "\f1fe";
+ content: "";
}
.fa-chart-bar:before {
- content: "\f080";
+ content: "";
}
.fa-chart-line:before {
- content: "\f201";
+ content: "";
}
.fa-chart-pie:before {
- content: "\f200";
+ content: "";
}
.fa-check:before {
- content: "\f00c";
+ content: "";
}
.fa-check-circle:before {
- content: "\f058";
+ content: "";
}
.fa-check-double:before {
- content: "\f560";
+ content: "";
}
.fa-check-square:before {
- content: "\f14a";
+ content: "";
}
.fa-chess:before {
- content: "\f439";
+ content: "";
}
.fa-chess-bishop:before {
- content: "\f43a";
+ content: "";
}
.fa-chess-board:before {
- content: "\f43c";
+ content: "";
}
.fa-chess-king:before {
- content: "\f43f";
+ content: "";
}
.fa-chess-knight:before {
- content: "\f441";
+ content: "";
}
.fa-chess-pawn:before {
- content: "\f443";
+ content: "";
}
.fa-chess-queen:before {
- content: "\f445";
+ content: "";
}
.fa-chess-rook:before {
- content: "\f447";
+ content: "";
}
.fa-chevron-circle-down:before {
- content: "\f13a";
+ content: "";
}
.fa-chevron-circle-left:before {
- content: "\f137";
+ content: "";
}
.fa-chevron-circle-right:before {
- content: "\f138";
+ content: "";
}
.fa-chevron-circle-up:before {
- content: "\f139";
+ content: "";
}
.fa-chevron-down:before {
- content: "\f078";
+ content: "";
}
.fa-chevron-left:before {
- content: "\f053";
+ content: "";
}
.fa-chevron-right:before {
- content: "\f054";
+ content: "";
}
.fa-chevron-up:before {
- content: "\f077";
+ content: "";
}
.fa-child:before {
- content: "\f1ae";
+ content: "";
}
.fa-chrome:before {
- content: "\f268";
+ content: "";
}
.fa-church:before {
- content: "\f51d";
+ content: "";
}
.fa-circle:before {
- content: "\f111";
+ content: "";
}
.fa-circle-notch:before {
- content: "\f1ce";
+ content: "";
}
.fa-city:before {
- content: "\f64f";
+ content: "";
}
.fa-clipboard:before {
- content: "\f328";
+ content: "";
}
.fa-clipboard-check:before {
- content: "\f46c";
+ content: "";
}
.fa-clipboard-list:before {
- content: "\f46d";
+ content: "";
}
.fa-clock:before {
- content: "\f017";
+ content: "";
}
.fa-clone:before {
- content: "\f24d";
+ content: "";
}
.fa-closed-captioning:before {
- content: "\f20a";
+ content: "";
}
.fa-cloud:before {
- content: "\f0c2";
+ content: "";
}
.fa-cloud-download-alt:before {
- content: "\f381";
+ content: "";
}
.fa-cloud-upload-alt:before {
- content: "\f382";
+ content: "";
}
.fa-cloudscale:before {
- content: "\f383";
+ content: "";
}
.fa-cloudsmith:before {
- content: "\f384";
+ content: "";
}
.fa-cloudversify:before {
- content: "\f385";
+ content: "";
}
.fa-cocktail:before {
- content: "\f561";
+ content: "";
}
.fa-code:before {
- content: "\f121";
+ content: "";
}
.fa-code-branch:before {
- content: "\f126";
+ content: "";
}
.fa-codepen:before {
- content: "\f1cb";
+ content: "";
}
.fa-codiepie:before {
- content: "\f284";
+ content: "";
}
.fa-coffee:before {
- content: "\f0f4";
+ content: "";
}
.fa-cog:before {
- content: "\f013";
+ content: "";
}
.fa-cogs:before {
- content: "\f085";
+ content: "";
}
.fa-coins:before {
- content: "\f51e";
+ content: "";
}
.fa-columns:before {
- content: "\f0db";
+ content: "";
}
.fa-comment:before {
- content: "\f075";
+ content: "";
}
.fa-comment-alt:before {
- content: "\f27a";
+ content: "";
}
.fa-comment-dollar:before {
- content: "\f651";
+ content: "";
}
.fa-comment-dots:before {
- content: "\f4ad";
+ content: "";
}
.fa-comment-slash:before {
- content: "\f4b3";
+ content: "";
}
.fa-comments:before {
- content: "\f086";
+ content: "";
}
.fa-comments-dollar:before {
- content: "\f653";
+ content: "";
}
.fa-compact-disc:before {
- content: "\f51f";
+ content: "";
}
.fa-compass:before {
- content: "\f14e";
+ content: "";
}
.fa-compress:before {
- content: "\f066";
+ content: "";
}
.fa-concierge-bell:before {
- content: "\f562";
+ content: "";
}
.fa-connectdevelop:before {
- content: "\f20e";
+ content: "";
}
.fa-contao:before {
- content: "\f26d";
+ content: "";
}
.fa-cookie:before {
- content: "\f563";
+ content: "";
}
.fa-cookie-bite:before {
- content: "\f564";
+ content: "";
}
.fa-copy:before {
- content: "\f0c5";
+ content: "";
}
.fa-copyright:before {
- content: "\f1f9";
+ content: "";
}
.fa-couch:before {
- content: "\f4b8";
+ content: "";
}
.fa-cpanel:before {
- content: "\f388";
+ content: "";
}
.fa-creative-commons:before {
- content: "\f25e";
+ content: "";
}
.fa-creative-commons-by:before {
- content: "\f4e7";
+ content: "";
}
.fa-creative-commons-nc:before {
- content: "\f4e8";
+ content: "";
}
.fa-creative-commons-nc-eu:before {
- content: "\f4e9";
+ content: "";
}
.fa-creative-commons-nc-jp:before {
- content: "\f4ea";
+ content: "";
}
.fa-creative-commons-nd:before {
- content: "\f4eb";
+ content: "";
}
.fa-creative-commons-pd:before {
- content: "\f4ec";
+ content: "";
}
.fa-creative-commons-pd-alt:before {
- content: "\f4ed";
+ content: "";
}
.fa-creative-commons-remix:before {
- content: "\f4ee";
+ content: "";
}
.fa-creative-commons-sa:before {
- content: "\f4ef";
+ content: "";
}
.fa-creative-commons-sampling:before {
- content: "\f4f0";
+ content: "";
}
.fa-creative-commons-sampling-plus:before {
- content: "\f4f1";
+ content: "";
}
.fa-creative-commons-share:before {
- content: "\f4f2";
+ content: "";
}
.fa-credit-card:before {
- content: "\f09d";
+ content: "";
}
.fa-crop:before {
- content: "\f125";
+ content: "";
}
.fa-crop-alt:before {
- content: "\f565";
+ content: "";
}
.fa-cross:before {
- content: "\f654";
+ content: "";
}
.fa-crosshairs:before {
- content: "\f05b";
+ content: "";
}
.fa-crow:before {
- content: "\f520";
+ content: "";
}
.fa-crown:before {
- content: "\f521";
+ content: "";
}
.fa-css3:before {
- content: "\f13c";
+ content: "";
}
.fa-css3-alt:before {
- content: "\f38b";
+ content: "";
}
.fa-cube:before {
- content: "\f1b2";
+ content: "";
}
.fa-cubes:before {
- content: "\f1b3";
+ content: "";
}
.fa-cut:before {
- content: "\f0c4";
+ content: "";
}
.fa-cuttlefish:before {
- content: "\f38c";
+ content: "";
}
.fa-d-and-d:before {
- content: "\f38d";
+ content: "";
}
.fa-dashcube:before {
- content: "\f210";
+ content: "";
}
.fa-database:before {
- content: "\f1c0";
+ content: "";
}
.fa-deaf:before {
- content: "\f2a4";
+ content: "";
}
.fa-delicious:before {
- content: "\f1a5";
+ content: "";
}
.fa-deploydog:before {
- content: "\f38e";
+ content: "";
}
.fa-deskpro:before {
- content: "\f38f";
+ content: "";
}
.fa-desktop:before {
- content: "\f108";
+ content: "";
}
.fa-deviantart:before {
- content: "\f1bd";
+ content: "";
}
.fa-dharmachakra:before {
- content: "\f655";
+ content: "";
}
.fa-diagnoses:before {
- content: "\f470";
+ content: "";
}
.fa-dice:before {
- content: "\f522";
+ content: "";
}
.fa-dice-five:before {
- content: "\f523";
+ content: "";
}
.fa-dice-four:before {
- content: "\f524";
+ content: "";
}
.fa-dice-one:before {
- content: "\f525";
+ content: "";
}
.fa-dice-six:before {
- content: "\f526";
+ content: "";
}
.fa-dice-three:before {
- content: "\f527";
+ content: "";
}
.fa-dice-two:before {
- content: "\f528";
+ content: "";
}
.fa-digg:before {
- content: "\f1a6";
+ content: "";
}
.fa-digital-ocean:before {
- content: "\f391";
+ content: "";
}
.fa-digital-tachograph:before {
- content: "\f566";
+ content: "";
}
.fa-directions:before {
- content: "\f5eb";
+ content: "";
}
.fa-discord:before {
- content: "\f392";
+ content: "";
}
.fa-discourse:before {
- content: "\f393";
+ content: "";
}
.fa-divide:before {
- content: "\f529";
+ content: "";
}
.fa-dizzy:before {
- content: "\f567";
+ content: "";
}
.fa-dna:before {
- content: "\f471";
+ content: "";
}
.fa-dochub:before {
- content: "\f394";
+ content: "";
}
.fa-docker:before {
- content: "\f395";
+ content: "";
}
.fa-dollar-sign:before {
- content: "\f155";
+ content: "";
}
.fa-dolly:before {
- content: "\f472";
+ content: "";
}
.fa-dolly-flatbed:before {
- content: "\f474";
+ content: "";
}
.fa-donate:before {
- content: "\f4b9";
+ content: "";
}
.fa-door-closed:before {
- content: "\f52a";
+ content: "";
}
.fa-door-open:before {
- content: "\f52b";
+ content: "";
}
.fa-dot-circle:before {
- content: "\f192";
+ content: "";
}
.fa-dove:before {
- content: "\f4ba";
+ content: "";
}
.fa-download:before {
- content: "\f019";
+ content: "";
}
.fa-draft2digital:before {
- content: "\f396";
+ content: "";
}
.fa-drafting-compass:before {
- content: "\f568";
+ content: "";
}
.fa-draw-polygon:before {
- content: "\f5ee";
+ content: "";
}
.fa-dribbble:before {
- content: "\f17d";
+ content: "";
}
.fa-dribbble-square:before {
- content: "\f397";
+ content: "";
}
.fa-dropbox:before {
- content: "\f16b";
+ content: "";
}
.fa-drum:before {
- content: "\f569";
+ content: "";
}
.fa-drum-steelpan:before {
- content: "\f56a";
+ content: "";
}
.fa-drupal:before {
- content: "\f1a9";
+ content: "";
}
.fa-dumbbell:before {
- content: "\f44b";
+ content: "";
}
.fa-dyalog:before {
- content: "\f399";
+ content: "";
}
.fa-earlybirds:before {
- content: "\f39a";
+ content: "";
}
.fa-ebay:before {
- content: "\f4f4";
+ content: "";
}
.fa-edge:before {
- content: "\f282";
+ content: "";
}
.fa-edit:before {
- content: "\f044";
+ content: "";
}
.fa-eject:before {
- content: "\f052";
+ content: "";
}
.fa-elementor:before {
- content: "\f430";
+ content: "";
}
.fa-ellipsis-h:before {
- content: "\f141";
+ content: "";
}
.fa-ellipsis-v:before {
- content: "\f142";
+ content: "";
}
.fa-ello:before {
- content: "\f5f1";
+ content: "";
}
.fa-ember:before {
- content: "\f423";
+ content: "";
}
.fa-empire:before {
- content: "\f1d1";
+ content: "";
}
.fa-envelope:before {
- content: "\f0e0";
+ content: "";
}
.fa-envelope-open:before {
- content: "\f2b6";
+ content: "";
}
.fa-envelope-open-text:before {
- content: "\f658";
+ content: "";
}
.fa-envelope-square:before {
- content: "\f199";
+ content: "";
}
.fa-envira:before {
- content: "\f299";
+ content: "";
}
.fa-equals:before {
- content: "\f52c";
+ content: "";
}
.fa-eraser:before {
- content: "\f12d";
+ content: "";
}
.fa-erlang:before {
- content: "\f39d";
+ content: "";
}
.fa-ethereum:before {
- content: "\f42e";
+ content: "";
}
.fa-etsy:before {
- content: "\f2d7";
+ content: "";
}
.fa-euro-sign:before {
- content: "\f153";
+ content: "";
}
.fa-exchange-alt:before {
- content: "\f362";
+ content: "";
}
.fa-exclamation:before {
- content: "\f12a";
+ content: "";
}
.fa-exclamation-circle:before {
- content: "\f06a";
+ content: "";
}
.fa-exclamation-triangle:before {
- content: "\f071";
+ content: "";
}
.fa-expand:before {
- content: "\f065";
+ content: "";
}
.fa-expand-arrows-alt:before {
- content: "\f31e";
+ content: "";
}
.fa-expeditedssl:before {
- content: "\f23e";
+ content: "";
}
.fa-external-link-alt:before {
- content: "\f35d";
+ content: "";
}
.fa-external-link-square-alt:before {
- content: "\f360";
+ content: "";
}
.fa-eye:before {
- content: "\f06e";
+ content: "";
}
.fa-eye-dropper:before {
- content: "\f1fb";
+ content: "";
}
.fa-eye-slash:before {
- content: "\f070";
+ content: "";
}
.fa-facebook:before {
- content: "\f09a";
+ content: "";
}
.fa-facebook-f:before {
- content: "\f39e";
+ content: "";
}
.fa-facebook-messenger:before {
- content: "\f39f";
+ content: "";
}
.fa-facebook-square:before {
- content: "\f082";
+ content: "";
}
.fa-fast-backward:before {
- content: "\f049";
+ content: "";
}
.fa-fast-forward:before {
- content: "\f050";
+ content: "";
}
.fa-fax:before {
- content: "\f1ac";
+ content: "";
}
.fa-feather:before {
- content: "\f52d";
+ content: "";
}
.fa-feather-alt:before {
- content: "\f56b";
+ content: "";
}
.fa-female:before {
- content: "\f182";
+ content: "";
}
.fa-fighter-jet:before {
- content: "\f0fb";
+ content: "";
}
.fa-file:before {
- content: "\f15b";
+ content: "";
}
.fa-file-alt:before {
- content: "\f15c";
+ content: "";
}
.fa-file-archive:before {
- content: "\f1c6";
+ content: "";
}
.fa-file-audio:before {
- content: "\f1c7";
+ content: "";
}
.fa-file-code:before {
- content: "\f1c9";
+ content: "";
}
.fa-file-contract:before {
- content: "\f56c";
+ content: "";
}
.fa-file-download:before {
- content: "\f56d";
+ content: "";
}
.fa-file-excel:before {
- content: "\f1c3";
+ content: "";
}
.fa-file-export:before {
- content: "\f56e";
+ content: "";
}
.fa-file-image:before {
- content: "\f1c5";
+ content: "";
}
.fa-file-import:before {
- content: "\f56f";
+ content: "";
}
.fa-file-invoice:before {
- content: "\f570";
+ content: "";
}
.fa-file-invoice-dollar:before {
- content: "\f571";
+ content: "";
}
.fa-file-medical:before {
- content: "\f477";
+ content: "";
}
.fa-file-medical-alt:before {
- content: "\f478";
+ content: "";
}
.fa-file-pdf:before {
- content: "\f1c1";
+ content: "";
}
.fa-file-powerpoint:before {
- content: "\f1c4";
+ content: "";
}
.fa-file-prescription:before {
- content: "\f572";
+ content: "";
}
.fa-file-signature:before {
- content: "\f573";
+ content: "";
}
.fa-file-upload:before {
- content: "\f574";
+ content: "";
}
.fa-file-video:before {
- content: "\f1c8";
+ content: "";
}
.fa-file-word:before {
- content: "\f1c2";
+ content: "";
}
.fa-fill:before {
- content: "\f575";
+ content: "";
}
.fa-fill-drip:before {
- content: "\f576";
+ content: "";
}
.fa-film:before {
- content: "\f008";
+ content: "";
}
.fa-filter:before {
- content: "\f0b0";
+ content: "";
}
.fa-fingerprint:before {
- content: "\f577";
+ content: "";
}
.fa-fire:before {
- content: "\f06d";
+ content: "";
}
.fa-fire-extinguisher:before {
- content: "\f134";
+ content: "";
}
.fa-firefox:before {
- content: "\f269";
+ content: "";
}
.fa-first-aid:before {
- content: "\f479";
+ content: "";
}
.fa-first-order:before {
- content: "\f2b0";
+ content: "";
}
.fa-first-order-alt:before {
- content: "\f50a";
+ content: "";
}
.fa-firstdraft:before {
- content: "\f3a1";
+ content: "";
}
.fa-fish:before {
- content: "\f578";
+ content: "";
}
.fa-flag:before {
- content: "\f024";
+ content: "";
}
.fa-flag-checkered:before {
- content: "\f11e";
+ content: "";
}
.fa-flask:before {
- content: "\f0c3";
+ content: "";
}
.fa-flickr:before {
- content: "\f16e";
+ content: "";
}
.fa-flipboard:before {
- content: "\f44d";
+ content: "";
}
.fa-flushed:before {
- content: "\f579";
+ content: "";
}
.fa-fly:before {
- content: "\f417";
+ content: "";
}
.fa-folder:before {
- content: "\f07b";
+ content: "";
}
.fa-folder-minus:before {
- content: "\f65d";
+ content: "";
}
.fa-folder-open:before {
- content: "\f07c";
+ content: "";
}
.fa-folder-plus:before {
- content: "\f65e";
+ content: "";
}
.fa-font:before {
- content: "\f031";
+ content: "";
}
.fa-font-awesome:before {
- content: "\f2b4";
+ content: "";
}
.fa-font-awesome-alt:before {
- content: "\f35c";
+ content: "";
}
.fa-font-awesome-flag:before {
- content: "\f425";
+ content: "";
}
.fa-font-awesome-logo-full:before {
- content: "\f4e6";
+ content: "";
}
.fa-fonticons:before {
- content: "\f280";
+ content: "";
}
.fa-fonticons-fi:before {
- content: "\f3a2";
+ content: "";
}
.fa-football-ball:before {
- content: "\f44e";
+ content: "";
}
.fa-fort-awesome:before {
- content: "\f286";
+ content: "";
}
.fa-fort-awesome-alt:before {
- content: "\f3a3";
+ content: "";
}
.fa-forumbee:before {
- content: "\f211";
+ content: "";
}
.fa-forward:before {
- content: "\f04e";
+ content: "";
}
.fa-foursquare:before {
- content: "\f180";
+ content: "";
}
.fa-free-code-camp:before {
- content: "\f2c5";
+ content: "";
}
.fa-freebsd:before {
- content: "\f3a4";
+ content: "";
}
.fa-frog:before {
- content: "\f52e";
+ content: "";
}
.fa-frown:before {
- content: "\f119";
+ content: "";
}
.fa-frown-open:before {
- content: "\f57a";
+ content: "";
}
.fa-fulcrum:before {
- content: "\f50b";
+ content: "";
}
.fa-funnel-dollar:before {
- content: "\f662";
+ content: "";
}
.fa-futbol:before {
- content: "\f1e3";
+ content: "";
}
.fa-galactic-republic:before {
- content: "\f50c";
+ content: "";
}
.fa-galactic-senate:before {
- content: "\f50d";
+ content: "";
}
.fa-gamepad:before {
- content: "\f11b";
+ content: "";
}
.fa-gas-pump:before {
- content: "\f52f";
+ content: "";
}
.fa-gavel:before {
- content: "\f0e3";
+ content: "";
}
.fa-gem:before {
- content: "\f3a5";
+ content: "";
}
.fa-genderless:before {
- content: "\f22d";
+ content: "";
}
.fa-get-pocket:before {
- content: "\f265";
+ content: "";
}
.fa-gg:before {
- content: "\f260";
+ content: "";
}
.fa-gg-circle:before {
- content: "\f261";
+ content: "";
}
.fa-gift:before {
- content: "\f06b";
+ content: "";
}
.fa-git:before {
- content: "\f1d3";
+ content: "";
}
.fa-git-square:before {
- content: "\f1d2";
+ content: "";
}
.fa-github:before {
- content: "\f09b";
+ content: "";
}
.fa-github-alt:before {
- content: "\f113";
+ content: "";
}
.fa-github-square:before {
- content: "\f092";
+ content: "";
}
.fa-gitkraken:before {
- content: "\f3a6";
+ content: "";
}
.fa-gitlab:before {
- content: "\f296";
+ content: "";
}
.fa-gitter:before {
- content: "\f426";
+ content: "";
}
.fa-glass-martini:before {
- content: "\f000";
+ content: "";
}
.fa-glass-martini-alt:before {
- content: "\f57b";
+ content: "";
}
.fa-glasses:before {
- content: "\f530";
+ content: "";
}
.fa-glide:before {
- content: "\f2a5";
+ content: "";
}
.fa-glide-g:before {
- content: "\f2a6";
+ content: "";
}
.fa-globe:before {
- content: "\f0ac";
+ content: "";
}
.fa-globe-africa:before {
- content: "\f57c";
+ content: "";
}
.fa-globe-americas:before {
- content: "\f57d";
+ content: "";
}
.fa-globe-asia:before {
- content: "\f57e";
+ content: "";
}
.fa-gofore:before {
- content: "\f3a7";
+ content: "";
}
.fa-golf-ball:before {
- content: "\f450";
+ content: "";
}
.fa-goodreads:before {
- content: "\f3a8";
+ content: "";
}
.fa-goodreads-g:before {
- content: "\f3a9";
+ content: "";
}
.fa-google:before {
- content: "\f1a0";
+ content: "";
}
.fa-google-drive:before {
- content: "\f3aa";
+ content: "";
}
.fa-google-play:before {
- content: "\f3ab";
+ content: "";
}
.fa-google-plus:before {
- content: "\f2b3";
+ content: "";
}
.fa-google-plus-g:before {
- content: "\f0d5";
+ content: "";
}
.fa-google-plus-square:before {
- content: "\f0d4";
+ content: "";
}
.fa-google-wallet:before {
- content: "\f1ee";
+ content: "";
}
.fa-gopuram:before {
- content: "\f664";
+ content: "";
}
.fa-graduation-cap:before {
- content: "\f19d";
+ content: "";
}
.fa-gratipay:before {
- content: "\f184";
+ content: "";
}
.fa-grav:before {
- content: "\f2d6";
+ content: "";
}
.fa-greater-than:before {
- content: "\f531";
+ content: "";
}
.fa-greater-than-equal:before {
- content: "\f532";
+ content: "";
}
.fa-grimace:before {
- content: "\f57f";
+ content: "";
}
.fa-grin:before {
- content: "\f580";
+ content: "";
}
.fa-grin-alt:before {
- content: "\f581";
+ content: "";
}
.fa-grin-beam:before {
- content: "\f582";
+ content: "";
}
.fa-grin-beam-sweat:before {
- content: "\f583";
+ content: "";
}
.fa-grin-hearts:before {
- content: "\f584";
+ content: "";
}
.fa-grin-squint:before {
- content: "\f585";
+ content: "";
}
.fa-grin-squint-tears:before {
- content: "\f586";
+ content: "";
}
.fa-grin-stars:before {
- content: "\f587";
+ content: "";
}
.fa-grin-tears:before {
- content: "\f588";
+ content: "";
}
.fa-grin-tongue:before {
- content: "\f589";
+ content: "";
}
.fa-grin-tongue-squint:before {
- content: "\f58a";
+ content: "";
}
.fa-grin-tongue-wink:before {
- content: "\f58b";
+ content: "";
}
.fa-grin-wink:before {
- content: "\f58c";
+ content: "";
}
.fa-grip-horizontal:before {
- content: "\f58d";
+ content: "";
}
.fa-grip-vertical:before {
- content: "\f58e";
+ content: "";
}
.fa-gripfire:before {
- content: "\f3ac";
+ content: "";
}
.fa-grunt:before {
- content: "\f3ad";
+ content: "";
}
.fa-gulp:before {
- content: "\f3ae";
+ content: "";
}
.fa-h-square:before {
- content: "\f0fd";
+ content: "";
}
.fa-hacker-news:before {
- content: "\f1d4";
+ content: "";
}
.fa-hacker-news-square:before {
- content: "\f3af";
+ content: "";
}
.fa-hackerrank:before {
- content: "\f5f7";
+ content: "";
}
.fa-hamsa:before {
- content: "\f665";
+ content: "";
}
.fa-hand-holding:before {
- content: "\f4bd";
+ content: "";
}
.fa-hand-holding-heart:before {
- content: "\f4be";
+ content: "";
}
.fa-hand-holding-usd:before {
- content: "\f4c0";
+ content: "";
}
.fa-hand-lizard:before {
- content: "\f258";
+ content: "";
}
.fa-hand-paper:before {
- content: "\f256";
+ content: "";
}
.fa-hand-peace:before {
- content: "\f25b";
+ content: "";
}
.fa-hand-point-down:before {
- content: "\f0a7";
+ content: "";
}
.fa-hand-point-left:before {
- content: "\f0a5";
+ content: "";
}
.fa-hand-point-right:before {
- content: "\f0a4";
+ content: "";
}
.fa-hand-point-up:before {
- content: "\f0a6";
+ content: "";
}
.fa-hand-pointer:before {
- content: "\f25a";
+ content: "";
}
.fa-hand-rock:before {
- content: "\f255";
+ content: "";
}
.fa-hand-scissors:before {
- content: "\f257";
+ content: "";
}
.fa-hand-spock:before {
- content: "\f259";
+ content: "";
}
.fa-hands:before {
- content: "\f4c2";
+ content: "";
}
.fa-hands-helping:before {
- content: "\f4c4";
+ content: "";
}
.fa-handshake:before {
- content: "\f2b5";
+ content: "";
}
.fa-hashtag:before {
- content: "\f292";
+ content: "";
}
.fa-haykal:before {
- content: "\f666";
+ content: "";
}
.fa-hdd:before {
- content: "\f0a0";
+ content: "";
}
.fa-heading:before {
- content: "\f1dc";
+ content: "";
}
.fa-headphones:before {
- content: "\f025";
+ content: "";
}
.fa-headphones-alt:before {
- content: "\f58f";
+ content: "";
}
.fa-headset:before {
- content: "\f590";
+ content: "";
}
.fa-heart:before {
- content: "\f004";
+ content: "";
}
.fa-heartbeat:before {
- content: "\f21e";
+ content: "";
}
.fa-helicopter:before {
- content: "\f533";
+ content: "";
}
.fa-highlighter:before {
- content: "\f591";
+ content: "";
}
.fa-hips:before {
- content: "\f452";
+ content: "";
}
.fa-hire-a-helper:before {
- content: "\f3b0";
+ content: "";
}
.fa-history:before {
- content: "\f1da";
+ content: "";
}
.fa-hockey-puck:before {
- content: "\f453";
+ content: "";
}
.fa-home:before {
- content: "\f015";
+ content: "";
}
.fa-hooli:before {
- content: "\f427";
+ content: "";
}
.fa-hornbill:before {
- content: "\f592";
+ content: "";
}
.fa-hospital:before {
- content: "\f0f8";
+ content: "";
}
.fa-hospital-alt:before {
- content: "\f47d";
+ content: "";
}
.fa-hospital-symbol:before {
- content: "\f47e";
+ content: "";
}
.fa-hot-tub:before {
- content: "\f593";
+ content: "";
}
.fa-hotel:before {
- content: "\f594";
+ content: "";
}
.fa-hotjar:before {
- content: "\f3b1";
+ content: "";
}
.fa-hourglass:before {
- content: "\f254";
+ content: "";
}
.fa-hourglass-end:before {
- content: "\f253";
+ content: "";
}
.fa-hourglass-half:before {
- content: "\f252";
+ content: "";
}
.fa-hourglass-start:before {
- content: "\f251";
+ content: "";
}
.fa-houzz:before {
- content: "\f27c";
+ content: "";
}
.fa-html5:before {
- content: "\f13b";
+ content: "";
}
.fa-hubspot:before {
- content: "\f3b2";
+ content: "";
}
.fa-i-cursor:before {
- content: "\f246";
+ content: "";
}
.fa-id-badge:before {
- content: "\f2c1";
+ content: "";
}
.fa-id-card:before {
- content: "\f2c2";
+ content: "";
}
.fa-id-card-alt:before {
- content: "\f47f";
+ content: "";
}
.fa-image:before {
- content: "\f03e";
+ content: "";
}
.fa-images:before {
- content: "\f302";
+ content: "";
}
.fa-imdb:before {
- content: "\f2d8";
+ content: "";
}
.fa-inbox:before {
- content: "\f01c";
+ content: "";
}
.fa-indent:before {
- content: "\f03c";
+ content: "";
}
.fa-industry:before {
- content: "\f275";
+ content: "";
}
.fa-infinity:before {
- content: "\f534";
+ content: "";
}
.fa-info:before {
- content: "\f129";
+ content: "";
}
.fa-info-circle:before {
- content: "\f05a";
+ content: "";
}
.fa-instagram:before {
- content: "\f16d";
+ content: "";
}
.fa-internet-explorer:before {
- content: "\f26b";
+ content: "";
}
.fa-ioxhost:before {
- content: "\f208";
+ content: "";
}
.fa-italic:before {
- content: "\f033";
+ content: "";
}
.fa-itunes:before {
- content: "\f3b4";
+ content: "";
}
.fa-itunes-note:before {
- content: "\f3b5";
+ content: "";
}
.fa-java:before {
- content: "\f4e4";
+ content: "";
}
.fa-jedi:before {
- content: "\f669";
+ content: "";
}
.fa-jedi-order:before {
- content: "\f50e";
+ content: "";
}
.fa-jenkins:before {
- content: "\f3b6";
+ content: "";
}
.fa-joget:before {
- content: "\f3b7";
+ content: "";
}
.fa-joint:before {
- content: "\f595";
+ content: "";
}
.fa-joomla:before {
- content: "\f1aa";
+ content: "";
}
.fa-journal-whills:before {
- content: "\f66a";
+ content: "";
}
.fa-js:before {
- content: "\f3b8";
+ content: "";
}
.fa-js-square:before {
- content: "\f3b9";
+ content: "";
}
.fa-jsfiddle:before {
- content: "\f1cc";
+ content: "";
}
.fa-kaaba:before {
- content: "\f66b";
+ content: "";
}
.fa-kaggle:before {
- content: "\f5fa";
+ content: "";
}
.fa-key:before {
- content: "\f084";
+ content: "";
}
.fa-keybase:before {
- content: "\f4f5";
+ content: "";
}
.fa-keyboard:before {
- content: "\f11c";
+ content: "";
}
.fa-keycdn:before {
- content: "\f3ba";
+ content: "";
}
.fa-khanda:before {
- content: "\f66d";
+ content: "";
}
.fa-kickstarter:before {
- content: "\f3bb";
+ content: "";
}
.fa-kickstarter-k:before {
- content: "\f3bc";
+ content: "";
}
.fa-kiss:before {
- content: "\f596";
+ content: "";
}
.fa-kiss-beam:before {
- content: "\f597";
+ content: "";
}
.fa-kiss-wink-heart:before {
- content: "\f598";
+ content: "";
}
.fa-kiwi-bird:before {
- content: "\f535";
+ content: "";
}
.fa-korvue:before {
- content: "\f42f";
+ content: "";
}
.fa-landmark:before {
- content: "\f66f";
+ content: "";
}
.fa-language:before {
- content: "\f1ab";
+ content: "";
}
.fa-laptop:before {
- content: "\f109";
+ content: "";
}
.fa-laptop-code:before {
- content: "\f5fc";
+ content: "";
}
.fa-laravel:before {
- content: "\f3bd";
+ content: "";
}
.fa-lastfm:before {
- content: "\f202";
+ content: "";
}
.fa-lastfm-square:before {
- content: "\f203";
+ content: "";
}
.fa-laugh:before {
- content: "\f599";
+ content: "";
}
.fa-laugh-beam:before {
- content: "\f59a";
+ content: "";
}
.fa-laugh-squint:before {
- content: "\f59b";
+ content: "";
}
.fa-laugh-wink:before {
- content: "\f59c";
+ content: "";
}
.fa-layer-group:before {
- content: "\f5fd";
+ content: "";
}
.fa-leaf:before {
- content: "\f06c";
+ content: "";
}
.fa-leanpub:before {
- content: "\f212";
+ content: "";
}
.fa-lemon:before {
- content: "\f094";
+ content: "";
}
.fa-less:before {
- content: "\f41d";
+ content: "";
}
.fa-less-than:before {
- content: "\f536";
+ content: "";
}
.fa-less-than-equal:before {
- content: "\f537";
+ content: "";
}
.fa-level-down-alt:before {
- content: "\f3be";
+ content: "";
}
.fa-level-up-alt:before {
- content: "\f3bf";
+ content: "";
}
.fa-life-ring:before {
- content: "\f1cd";
+ content: "";
}
.fa-lightbulb:before {
- content: "\f0eb";
+ content: "";
}
.fa-line:before {
- content: "\f3c0";
+ content: "";
}
.fa-link:before {
- content: "\f0c1";
+ content: "";
}
.fa-linkedin:before {
- content: "\f08c";
+ content: "";
}
.fa-linkedin-in:before {
- content: "\f0e1";
+ content: "";
}
.fa-linode:before {
- content: "\f2b8";
+ content: "";
}
.fa-linux:before {
- content: "\f17c";
+ content: "";
}
.fa-lira-sign:before {
- content: "\f195";
+ content: "";
}
.fa-list:before {
- content: "\f03a";
+ content: "";
}
.fa-list-alt:before {
- content: "\f022";
+ content: "";
}
.fa-list-ol:before {
- content: "\f0cb";
+ content: "";
}
.fa-list-ul:before {
- content: "\f0ca";
+ content: "";
}
.fa-location-arrow:before {
- content: "\f124";
+ content: "";
}
.fa-lock:before {
- content: "\f023";
+ content: "";
}
.fa-lock-open:before {
- content: "\f3c1";
+ content: "";
}
.fa-long-arrow-alt-down:before {
- content: "\f309";
+ content: "";
}
.fa-long-arrow-alt-left:before {
- content: "\f30a";
+ content: "";
}
.fa-long-arrow-alt-right:before {
- content: "\f30b";
+ content: "";
}
.fa-long-arrow-alt-up:before {
- content: "\f30c";
+ content: "";
}
.fa-low-vision:before {
- content: "\f2a8";
+ content: "";
}
.fa-luggage-cart:before {
- content: "\f59d";
+ content: "";
}
.fa-lyft:before {
- content: "\f3c3";
+ content: "";
}
.fa-magento:before {
- content: "\f3c4";
+ content: "";
}
.fa-magic:before {
- content: "\f0d0";
+ content: "";
}
.fa-magnet:before {
- content: "\f076";
+ content: "";
}
.fa-mail-bulk:before {
- content: "\f674";
+ content: "";
}
.fa-mailchimp:before {
- content: "\f59e";
+ content: "";
}
.fa-male:before {
- content: "\f183";
+ content: "";
}
.fa-mandalorian:before {
- content: "\f50f";
+ content: "";
}
.fa-map:before {
- content: "\f279";
+ content: "";
}
.fa-map-marked:before {
- content: "\f59f";
+ content: "";
}
.fa-map-marked-alt:before {
- content: "\f5a0";
+ content: "";
}
.fa-map-marker:before {
- content: "\f041";
+ content: "";
}
.fa-map-marker-alt:before {
- content: "\f3c5";
+ content: "";
}
.fa-map-pin:before {
- content: "\f276";
+ content: "";
}
.fa-map-signs:before {
- content: "\f277";
+ content: "";
}
.fa-markdown:before {
- content: "\f60f";
+ content: "";
}
.fa-marker:before {
- content: "\f5a1";
+ content: "";
}
.fa-mars:before {
- content: "\f222";
+ content: "";
}
.fa-mars-double:before {
- content: "\f227";
+ content: "";
}
.fa-mars-stroke:before {
- content: "\f229";
+ content: "";
}
.fa-mars-stroke-h:before {
- content: "\f22b";
+ content: "";
}
.fa-mars-stroke-v:before {
- content: "\f22a";
+ content: "";
}
.fa-mastodon:before {
- content: "\f4f6";
+ content: "";
}
.fa-maxcdn:before {
- content: "\f136";
+ content: "";
}
.fa-medal:before {
- content: "\f5a2";
+ content: "";
}
.fa-medapps:before {
- content: "\f3c6";
+ content: "";
}
.fa-medium:before {
- content: "\f23a";
+ content: "";
}
.fa-medium-m:before {
- content: "\f3c7";
+ content: "";
}
.fa-medkit:before {
- content: "\f0fa";
+ content: "";
}
.fa-medrt:before {
- content: "\f3c8";
+ content: "";
}
.fa-meetup:before {
- content: "\f2e0";
+ content: "";
}
.fa-megaport:before {
- content: "\f5a3";
+ content: "";
}
.fa-meh:before {
- content: "\f11a";
+ content: "";
}
.fa-meh-blank:before {
- content: "\f5a4";
+ content: "";
}
.fa-meh-rolling-eyes:before {
- content: "\f5a5";
+ content: "";
}
.fa-memory:before {
- content: "\f538";
+ content: "";
}
.fa-menorah:before {
- content: "\f676";
+ content: "";
}
.fa-mercury:before {
- content: "\f223";
+ content: "";
}
.fa-microchip:before {
- content: "\f2db";
+ content: "";
}
.fa-microphone:before {
- content: "\f130";
+ content: "";
}
.fa-microphone-alt:before {
- content: "\f3c9";
+ content: "";
}
.fa-microphone-alt-slash:before {
- content: "\f539";
+ content: "";
}
.fa-microphone-slash:before {
- content: "\f131";
+ content: "";
}
.fa-microscope:before {
- content: "\f610";
+ content: "";
}
.fa-microsoft:before {
- content: "\f3ca";
+ content: "";
}
.fa-minus:before {
- content: "\f068";
+ content: "";
}
.fa-minus-circle:before {
- content: "\f056";
+ content: "";
}
.fa-minus-square:before {
- content: "\f146";
+ content: "";
}
.fa-mix:before {
- content: "\f3cb";
+ content: "";
}
.fa-mixcloud:before {
- content: "\f289";
+ content: "";
}
.fa-mizuni:before {
- content: "\f3cc";
+ content: "";
}
.fa-mobile:before {
- content: "\f10b";
+ content: "";
}
.fa-mobile-alt:before {
- content: "\f3cd";
+ content: "";
}
.fa-modx:before {
- content: "\f285";
+ content: "";
}
.fa-monero:before {
- content: "\f3d0";
+ content: "";
}
.fa-money-bill:before {
- content: "\f0d6";
+ content: "";
}
.fa-money-bill-alt:before {
- content: "\f3d1";
+ content: "";
}
.fa-money-bill-wave:before {
- content: "\f53a";
+ content: "";
}
.fa-money-bill-wave-alt:before {
- content: "\f53b";
+ content: "";
}
.fa-money-check:before {
- content: "\f53c";
+ content: "";
}
.fa-money-check-alt:before {
- content: "\f53d";
+ content: "";
}
.fa-monument:before {
- content: "\f5a6";
+ content: "";
}
.fa-moon:before {
- content: "\f186";
+ content: "";
}
.fa-mortar-pestle:before {
- content: "\f5a7";
+ content: "";
}
.fa-mosque:before {
- content: "\f678";
+ content: "";
}
.fa-motorcycle:before {
- content: "\f21c";
+ content: "";
}
.fa-mouse-pointer:before {
- content: "\f245";
+ content: "";
}
.fa-music:before {
- content: "\f001";
+ content: "";
}
.fa-napster:before {
- content: "\f3d2";
+ content: "";
}
.fa-neos:before {
- content: "\f612";
+ content: "";
}
.fa-neuter:before {
- content: "\f22c";
+ content: "";
}
.fa-newspaper:before {
- content: "\f1ea";
+ content: "";
}
.fa-nimblr:before {
- content: "\f5a8";
+ content: "";
}
.fa-nintendo-switch:before {
- content: "\f418";
+ content: "";
}
.fa-node:before {
- content: "\f419";
+ content: "";
}
.fa-node-js:before {
- content: "\f3d3";
+ content: "";
}
.fa-not-equal:before {
- content: "\f53e";
+ content: "";
}
.fa-notes-medical:before {
- content: "\f481";
+ content: "";
}
.fa-npm:before {
- content: "\f3d4";
+ content: "";
}
.fa-ns8:before {
- content: "\f3d5";
+ content: "";
}
.fa-nutritionix:before {
- content: "\f3d6";
+ content: "";
}
.fa-object-group:before {
- content: "\f247";
+ content: "";
}
.fa-object-ungroup:before {
- content: "\f248";
+ content: "";
}
.fa-odnoklassniki:before {
- content: "\f263";
+ content: "";
}
.fa-odnoklassniki-square:before {
- content: "\f264";
+ content: "";
}
.fa-oil-can:before {
- content: "\f613";
+ content: "";
}
.fa-old-republic:before {
- content: "\f510";
+ content: "";
}
.fa-om:before {
- content: "\f679";
+ content: "";
}
.fa-opencart:before {
- content: "\f23d";
+ content: "";
}
.fa-openid:before {
- content: "\f19b";
+ content: "";
}
.fa-opera:before {
- content: "\f26a";
+ content: "";
}
.fa-optin-monster:before {
- content: "\f23c";
+ content: "";
}
.fa-osi:before {
- content: "\f41a";
+ content: "";
}
.fa-outdent:before {
- content: "\f03b";
+ content: "";
}
.fa-page4:before {
- content: "\f3d7";
+ content: "";
}
.fa-pagelines:before {
- content: "\f18c";
+ content: "";
}
.fa-paint-brush:before {
- content: "\f1fc";
+ content: "";
}
.fa-paint-roller:before {
- content: "\f5aa";
+ content: "";
}
.fa-palette:before {
- content: "\f53f";
+ content: "";
}
.fa-palfed:before {
- content: "\f3d8";
+ content: "";
}
.fa-pallet:before {
- content: "\f482";
+ content: "";
}
.fa-paper-plane:before {
- content: "\f1d8";
+ content: "";
}
.fa-paperclip:before {
- content: "\f0c6";
+ content: "";
}
.fa-parachute-box:before {
- content: "\f4cd";
+ content: "";
}
.fa-paragraph:before {
- content: "\f1dd";
+ content: "";
}
.fa-parking:before {
- content: "\f540";
+ content: "";
}
.fa-passport:before {
- content: "\f5ab";
+ content: "";
}
.fa-pastafarianism:before {
- content: "\f67b";
+ content: "";
}
.fa-paste:before {
- content: "\f0ea";
+ content: "";
}
.fa-patreon:before {
- content: "\f3d9";
+ content: "";
}
.fa-pause:before {
- content: "\f04c";
+ content: "";
}
.fa-pause-circle:before {
- content: "\f28b";
+ content: "";
}
.fa-paw:before {
- content: "\f1b0";
+ content: "";
}
.fa-paypal:before {
- content: "\f1ed";
+ content: "";
}
.fa-peace:before {
- content: "\f67c";
+ content: "";
}
.fa-pen:before {
- content: "\f304";
+ content: "";
}
.fa-pen-alt:before {
- content: "\f305";
+ content: "";
}
.fa-pen-fancy:before {
- content: "\f5ac";
+ content: "";
}
.fa-pen-nib:before {
- content: "\f5ad";
+ content: "";
}
.fa-pen-square:before {
- content: "\f14b";
+ content: "";
}
.fa-pencil-alt:before {
- content: "\f303";
+ content: "";
}
.fa-pencil-ruler:before {
- content: "\f5ae";
+ content: "";
}
.fa-people-carry:before {
- content: "\f4ce";
+ content: "";
}
.fa-percent:before {
- content: "\f295";
+ content: "";
}
.fa-percentage:before {
- content: "\f541";
+ content: "";
}
.fa-periscope:before {
- content: "\f3da";
+ content: "";
}
.fa-phabricator:before {
- content: "\f3db";
+ content: "";
}
.fa-phoenix-framework:before {
- content: "\f3dc";
+ content: "";
}
.fa-phoenix-squadron:before {
- content: "\f511";
+ content: "";
}
.fa-phone:before {
- content: "\f095";
+ content: "";
}
.fa-phone-slash:before {
- content: "\f3dd";
+ content: "";
}
.fa-phone-square:before {
- content: "\f098";
+ content: "";
}
.fa-phone-volume:before {
- content: "\f2a0";
+ content: "";
}
.fa-php:before {
- content: "\f457";
+ content: "";
}
.fa-pied-piper:before {
- content: "\f2ae";
+ content: "";
}
.fa-pied-piper-alt:before {
- content: "\f1a8";
+ content: "";
}
.fa-pied-piper-hat:before {
- content: "\f4e5";
+ content: "";
}
.fa-pied-piper-pp:before {
- content: "\f1a7";
+ content: "";
}
.fa-piggy-bank:before {
- content: "\f4d3";
+ content: "";
}
.fa-pills:before {
- content: "\f484";
+ content: "";
}
.fa-pinterest:before {
- content: "\f0d2";
+ content: "";
}
.fa-pinterest-p:before {
- content: "\f231";
+ content: "";
}
.fa-pinterest-square:before {
- content: "\f0d3";
+ content: "";
}
.fa-place-of-worship:before {
- content: "\f67f";
+ content: "";
}
.fa-plane:before {
- content: "\f072";
+ content: "";
}
.fa-plane-arrival:before {
- content: "\f5af";
+ content: "";
}
.fa-plane-departure:before {
- content: "\f5b0";
+ content: "";
}
.fa-play:before {
- content: "\f04b";
+ content: "";
}
.fa-play-circle:before {
- content: "\f144";
+ content: "";
}
.fa-playstation:before {
- content: "\f3df";
+ content: "";
}
.fa-plug:before {
- content: "\f1e6";
+ content: "";
}
.fa-plus:before {
- content: "\f067";
+ content: "";
}
.fa-plus-circle:before {
- content: "\f055";
+ content: "";
}
.fa-plus-square:before {
- content: "\f0fe";
+ content: "";
}
.fa-podcast:before {
- content: "\f2ce";
+ content: "";
}
.fa-poll:before {
- content: "\f681";
+ content: "";
}
.fa-poll-h:before {
- content: "\f682";
+ content: "";
}
.fa-poo:before {
- content: "\f2fe";
+ content: "";
}
.fa-poop:before {
- content: "\f619";
+ content: "";
}
.fa-portrait:before {
- content: "\f3e0";
+ content: "";
}
.fa-pound-sign:before {
- content: "\f154";
+ content: "";
}
.fa-power-off:before {
- content: "\f011";
+ content: "";
}
.fa-pray:before {
- content: "\f683";
+ content: "";
}
.fa-praying-hands:before {
- content: "\f684";
+ content: "";
}
.fa-prescription:before {
- content: "\f5b1";
+ content: "";
}
.fa-prescription-bottle:before {
- content: "\f485";
+ content: "";
}
.fa-prescription-bottle-alt:before {
- content: "\f486";
+ content: "";
}
.fa-print:before {
- content: "\f02f";
+ content: "";
}
.fa-procedures:before {
- content: "\f487";
+ content: "";
}
.fa-product-hunt:before {
- content: "\f288";
+ content: "";
}
.fa-project-diagram:before {
- content: "\f542";
+ content: "";
}
.fa-pushed:before {
- content: "\f3e1";
+ content: "";
}
.fa-puzzle-piece:before {
- content: "\f12e";
+ content: "";
}
.fa-python:before {
- content: "\f3e2";
+ content: "";
}
.fa-qq:before {
- content: "\f1d6";
+ content: "";
}
.fa-qrcode:before {
- content: "\f029";
+ content: "";
}
.fa-question:before {
- content: "\f128";
+ content: "";
}
.fa-question-circle:before {
- content: "\f059";
+ content: "";
}
.fa-quidditch:before {
- content: "\f458";
+ content: "";
}
.fa-quinscape:before {
- content: "\f459";
+ content: "";
}
.fa-quora:before {
- content: "\f2c4";
+ content: "";
}
.fa-quote-left:before {
- content: "\f10d";
+ content: "";
}
.fa-quote-right:before {
- content: "\f10e";
+ content: "";
}
.fa-quran:before {
- content: "\f687";
+ content: "";
}
.fa-r-project:before {
- content: "\f4f7";
+ content: "";
}
.fa-random:before {
- content: "\f074";
+ content: "";
}
.fa-ravelry:before {
- content: "\f2d9";
+ content: "";
}
.fa-react:before {
- content: "\f41b";
+ content: "";
}
.fa-readme:before {
- content: "\f4d5";
+ content: "";
}
.fa-rebel:before {
- content: "\f1d0";
+ content: "";
}
.fa-receipt:before {
- content: "\f543";
+ content: "";
}
.fa-recycle:before {
- content: "\f1b8";
+ content: "";
}
.fa-red-river:before {
- content: "\f3e3";
+ content: "";
}
.fa-reddit:before {
- content: "\f1a1";
+ content: "";
}
.fa-reddit-alien:before {
- content: "\f281";
+ content: "";
}
.fa-reddit-square:before {
- content: "\f1a2";
+ content: "";
}
.fa-redo:before {
- content: "\f01e";
+ content: "";
}
.fa-redo-alt:before {
- content: "\f2f9";
+ content: "";
}
.fa-registered:before {
- content: "\f25d";
+ content: "";
}
.fa-rendact:before {
- content: "\f3e4";
+ content: "";
}
.fa-renren:before {
- content: "\f18b";
+ content: "";
}
.fa-reply:before {
- content: "\f3e5";
+ content: "";
}
.fa-reply-all:before {
- content: "\f122";
+ content: "";
}
.fa-replyd:before {
- content: "\f3e6";
+ content: "";
}
.fa-researchgate:before {
- content: "\f4f8";
+ content: "";
}
.fa-resolving:before {
- content: "\f3e7";
+ content: "";
}
.fa-retweet:before {
- content: "\f079";
+ content: "";
}
.fa-rev:before {
- content: "\f5b2";
+ content: "";
}
.fa-ribbon:before {
- content: "\f4d6";
+ content: "";
}
.fa-road:before {
- content: "\f018";
+ content: "";
}
.fa-robot:before {
- content: "\f544";
+ content: "";
}
.fa-rocket:before {
- content: "\f135";
+ content: "";
}
.fa-rocketchat:before {
- content: "\f3e8";
+ content: "";
}
.fa-rockrms:before {
- content: "\f3e9";
+ content: "";
}
.fa-route:before {
- content: "\f4d7";
+ content: "";
}
.fa-rss:before {
- content: "\f09e";
+ content: "";
}
.fa-rss-square:before {
- content: "\f143";
+ content: "";
}
.fa-ruble-sign:before {
- content: "\f158";
+ content: "";
}
.fa-ruler:before {
- content: "\f545";
+ content: "";
}
.fa-ruler-combined:before {
- content: "\f546";
+ content: "";
}
.fa-ruler-horizontal:before {
- content: "\f547";
+ content: "";
}
.fa-ruler-vertical:before {
- content: "\f548";
+ content: "";
}
.fa-rupee-sign:before {
- content: "\f156";
+ content: "";
}
.fa-sad-cry:before {
- content: "\f5b3";
+ content: "";
}
.fa-sad-tear:before {
- content: "\f5b4";
+ content: "";
}
.fa-safari:before {
- content: "\f267";
+ content: "";
}
.fa-sass:before {
- content: "\f41e";
+ content: "";
}
.fa-save:before {
- content: "\f0c7";
+ content: "";
}
.fa-schlix:before {
- content: "\f3ea";
+ content: "";
}
.fa-school:before {
- content: "\f549";
+ content: "";
}
.fa-screwdriver:before {
- content: "\f54a";
+ content: "";
}
.fa-scribd:before {
- content: "\f28a";
+ content: "";
}
.fa-search:before {
- content: "\f002";
+ content: "";
}
.fa-search-dollar:before {
- content: "\f688";
+ content: "";
}
.fa-search-location:before {
- content: "\f689";
+ content: "";
}
.fa-search-minus:before {
- content: "\f010";
+ content: "";
}
.fa-search-plus:before {
- content: "\f00e";
+ content: "";
}
.fa-searchengin:before {
- content: "\f3eb";
+ content: "";
}
.fa-seedling:before {
- content: "\f4d8";
+ content: "";
}
.fa-sellcast:before {
- content: "\f2da";
+ content: "";
}
.fa-sellsy:before {
- content: "\f213";
+ content: "";
}
.fa-server:before {
- content: "\f233";
+ content: "";
}
.fa-servicestack:before {
- content: "\f3ec";
+ content: "";
}
.fa-shapes:before {
- content: "\f61f";
+ content: "";
}
.fa-share:before {
- content: "\f064";
+ content: "";
}
.fa-share-alt:before {
- content: "\f1e0";
+ content: "";
}
.fa-share-alt-square:before {
- content: "\f1e1";
+ content: "";
}
.fa-share-square:before {
- content: "\f14d";
+ content: "";
}
.fa-shekel-sign:before {
- content: "\f20b";
+ content: "";
}
.fa-shield-alt:before {
- content: "\f3ed";
+ content: "";
}
.fa-ship:before {
- content: "\f21a";
+ content: "";
}
.fa-shipping-fast:before {
- content: "\f48b";
+ content: "";
}
.fa-shirtsinbulk:before {
- content: "\f214";
+ content: "";
}
.fa-shoe-prints:before {
- content: "\f54b";
+ content: "";
}
.fa-shopping-bag:before {
- content: "\f290";
+ content: "";
}
.fa-shopping-basket:before {
- content: "\f291";
+ content: "";
}
.fa-shopping-cart:before {
- content: "\f07a";
+ content: "";
}
.fa-shopware:before {
- content: "\f5b5";
+ content: "";
}
.fa-shower:before {
- content: "\f2cc";
+ content: "";
}
.fa-shuttle-van:before {
- content: "\f5b6";
+ content: "";
}
.fa-sign:before {
- content: "\f4d9";
+ content: "";
}
.fa-sign-in-alt:before {
- content: "\f2f6";
+ content: "";
}
.fa-sign-language:before {
- content: "\f2a7";
+ content: "";
}
.fa-sign-out-alt:before {
- content: "\f2f5";
+ content: "";
}
.fa-signal:before {
- content: "\f012";
+ content: "";
}
.fa-signature:before {
- content: "\f5b7";
+ content: "";
}
.fa-simplybuilt:before {
- content: "\f215";
+ content: "";
}
.fa-sistrix:before {
- content: "\f3ee";
+ content: "";
}
.fa-sitemap:before {
- content: "\f0e8";
+ content: "";
}
.fa-sith:before {
- content: "\f512";
+ content: "";
}
.fa-skull:before {
- content: "\f54c";
+ content: "";
}
.fa-skyatlas:before {
- content: "\f216";
+ content: "";
}
.fa-skype:before {
- content: "\f17e";
+ content: "";
}
.fa-slack:before {
- content: "\f198";
+ content: "";
}
.fa-slack-hash:before {
- content: "\f3ef";
+ content: "";
}
.fa-sliders-h:before {
- content: "\f1de";
+ content: "";
}
.fa-slideshare:before {
- content: "\f1e7";
+ content: "";
}
.fa-smile:before {
- content: "\f118";
+ content: "";
}
.fa-smile-beam:before {
- content: "\f5b8";
+ content: "";
}
.fa-smile-wink:before {
- content: "\f4da";
+ content: "";
}
.fa-smoking:before {
- content: "\f48d";
+ content: "";
}
.fa-smoking-ban:before {
- content: "\f54d";
+ content: "";
}
.fa-snapchat:before {
- content: "\f2ab";
+ content: "";
}
.fa-snapchat-ghost:before {
- content: "\f2ac";
+ content: "";
}
.fa-snapchat-square:before {
- content: "\f2ad";
+ content: "";
}
.fa-snowflake:before {
- content: "\f2dc";
+ content: "";
}
.fa-socks:before {
- content: "\f696";
+ content: "";
}
.fa-solar-panel:before {
- content: "\f5ba";
+ content: "";
}
.fa-sort:before {
- content: "\f0dc";
+ content: "";
}
.fa-sort-alpha-down:before {
- content: "\f15d";
+ content: "";
}
.fa-sort-alpha-up:before {
- content: "\f15e";
+ content: "";
}
.fa-sort-amount-down:before {
- content: "\f160";
+ content: "";
}
.fa-sort-amount-up:before {
- content: "\f161";
+ content: "";
}
.fa-sort-down:before {
- content: "\f0dd";
+ content: "";
}
.fa-sort-numeric-down:before {
- content: "\f162";
+ content: "";
}
.fa-sort-numeric-up:before {
- content: "\f163";
+ content: "";
}
.fa-sort-up:before {
- content: "\f0de";
+ content: "";
}
.fa-soundcloud:before {
- content: "\f1be";
+ content: "";
}
.fa-spa:before {
- content: "\f5bb";
+ content: "";
}
.fa-space-shuttle:before {
- content: "\f197";
+ content: "";
}
.fa-speakap:before {
- content: "\f3f3";
+ content: "";
}
.fa-spinner:before {
- content: "\f110";
+ content: "";
}
.fa-splotch:before {
- content: "\f5bc";
+ content: "";
}
.fa-spotify:before {
- content: "\f1bc";
+ content: "";
}
.fa-spray-can:before {
- content: "\f5bd";
+ content: "";
}
.fa-square:before {
- content: "\f0c8";
+ content: "";
}
.fa-square-full:before {
- content: "\f45c";
+ content: "";
}
.fa-square-root-alt:before {
- content: "\f698";
+ content: "";
}
.fa-squarespace:before {
- content: "\f5be";
+ content: "";
}
.fa-stack-exchange:before {
- content: "\f18d";
+ content: "";
}
.fa-stack-overflow:before {
- content: "\f16c";
+ content: "";
}
.fa-stamp:before {
- content: "\f5bf";
+ content: "";
}
.fa-star:before {
- content: "\f005";
+ content: "";
}
.fa-star-and-crescent:before {
- content: "\f699";
+ content: "";
}
.fa-star-half:before {
- content: "\f089";
+ content: "";
}
.fa-star-half-alt:before {
- content: "\f5c0";
+ content: "";
}
.fa-star-of-david:before {
- content: "\f69a";
+ content: "";
}
.fa-star-of-life:before {
- content: "\f621";
+ content: "";
}
.fa-staylinked:before {
- content: "\f3f5";
+ content: "";
}
.fa-steam:before {
- content: "\f1b6";
+ content: "";
}
.fa-steam-square:before {
- content: "\f1b7";
+ content: "";
}
.fa-steam-symbol:before {
- content: "\f3f6";
+ content: "";
}
.fa-step-backward:before {
- content: "\f048";
+ content: "";
}
.fa-step-forward:before {
- content: "\f051";
+ content: "";
}
.fa-stethoscope:before {
- content: "\f0f1";
+ content: "";
}
.fa-sticker-mule:before {
- content: "\f3f7";
+ content: "";
}
.fa-sticky-note:before {
- content: "\f249";
+ content: "";
}
.fa-stop:before {
- content: "\f04d";
+ content: "";
}
.fa-stop-circle:before {
- content: "\f28d";
+ content: "";
}
.fa-stopwatch:before {
- content: "\f2f2";
+ content: "";
}
.fa-store:before {
- content: "\f54e";
+ content: "";
}
.fa-store-alt:before {
- content: "\f54f";
+ content: "";
}
.fa-strava:before {
- content: "\f428";
+ content: "";
}
.fa-stream:before {
- content: "\f550";
+ content: "";
}
.fa-street-view:before {
- content: "\f21d";
+ content: "";
}
.fa-strikethrough:before {
- content: "\f0cc";
+ content: "";
}
.fa-stripe:before {
- content: "\f429";
+ content: "";
}
.fa-stripe-s:before {
- content: "\f42a";
+ content: "";
}
.fa-stroopwafel:before {
- content: "\f551";
+ content: "";
}
.fa-studiovinari:before {
- content: "\f3f8";
+ content: "";
}
.fa-stumbleupon:before {
- content: "\f1a4";
+ content: "";
}
.fa-stumbleupon-circle:before {
- content: "\f1a3";
+ content: "";
}
.fa-subscript:before {
- content: "\f12c";
+ content: "";
}
.fa-subway:before {
- content: "\f239";
+ content: "";
}
.fa-suitcase:before {
- content: "\f0f2";
+ content: "";
}
.fa-suitcase-rolling:before {
- content: "\f5c1";
+ content: "";
}
.fa-sun:before {
- content: "\f185";
+ content: "";
}
.fa-superpowers:before {
- content: "\f2dd";
+ content: "";
}
.fa-superscript:before {
- content: "\f12b";
+ content: "";
}
.fa-supple:before {
- content: "\f3f9";
+ content: "";
}
.fa-surprise:before {
- content: "\f5c2";
+ content: "";
}
.fa-swatchbook:before {
- content: "\f5c3";
+ content: "";
}
.fa-swimmer:before {
- content: "\f5c4";
+ content: "";
}
.fa-swimming-pool:before {
- content: "\f5c5";
+ content: "";
}
.fa-synagogue:before {
- content: "\f69b";
+ content: "";
}
.fa-sync:before {
- content: "\f021";
+ content: "";
}
.fa-sync-alt:before {
- content: "\f2f1";
+ content: "";
}
.fa-syringe:before {
- content: "\f48e";
+ content: "";
}
.fa-table:before {
- content: "\f0ce";
+ content: "";
}
.fa-table-tennis:before {
- content: "\f45d";
+ content: "";
}
.fa-tablet:before {
- content: "\f10a";
+ content: "";
}
.fa-tablet-alt:before {
- content: "\f3fa";
+ content: "";
}
.fa-tablets:before {
- content: "\f490";
+ content: "";
}
.fa-tachometer-alt:before {
- content: "\f3fd";
+ content: "";
}
.fa-tag:before {
- content: "\f02b";
+ content: "";
}
.fa-tags:before {
- content: "\f02c";
+ content: "";
}
.fa-tape:before {
- content: "\f4db";
+ content: "";
}
.fa-tasks:before {
- content: "\f0ae";
+ content: "";
}
.fa-taxi:before {
- content: "\f1ba";
+ content: "";
}
.fa-teamspeak:before {
- content: "\f4f9";
+ content: "";
}
.fa-teeth:before {
- content: "\f62e";
+ content: "";
}
.fa-teeth-open:before {
- content: "\f62f";
+ content: "";
}
.fa-telegram:before {
- content: "\f2c6";
+ content: "";
}
.fa-telegram-plane:before {
- content: "\f3fe";
+ content: "";
}
.fa-tencent-weibo:before {
- content: "\f1d5";
+ content: "";
}
.fa-terminal:before {
- content: "\f120";
+ content: "";
}
.fa-text-height:before {
- content: "\f034";
+ content: "";
}
.fa-text-width:before {
- content: "\f035";
+ content: "";
}
.fa-th:before {
- content: "\f00a";
+ content: "";
}
.fa-th-large:before {
- content: "\f009";
+ content: "";
}
.fa-th-list:before {
- content: "\f00b";
+ content: "";
}
.fa-the-red-yeti:before {
- content: "\f69d";
+ content: "";
}
.fa-theater-masks:before {
- content: "\f630";
+ content: "";
}
.fa-themeco:before {
- content: "\f5c6";
+ content: "";
}
.fa-themeisle:before {
- content: "\f2b2";
+ content: "";
}
.fa-thermometer:before {
- content: "\f491";
+ content: "";
}
.fa-thermometer-empty:before {
- content: "\f2cb";
+ content: "";
}
.fa-thermometer-full:before {
- content: "\f2c7";
+ content: "";
}
.fa-thermometer-half:before {
- content: "\f2c9";
+ content: "";
}
.fa-thermometer-quarter:before {
- content: "\f2ca";
+ content: "";
}
.fa-thermometer-three-quarters:before {
- content: "\f2c8";
+ content: "";
}
.fa-thumbs-down:before {
- content: "\f165";
+ content: "";
}
.fa-thumbs-up:before {
- content: "\f164";
+ content: "";
}
.fa-thumbtack:before {
- content: "\f08d";
+ content: "";
}
.fa-ticket-alt:before {
- content: "\f3ff";
+ content: "";
}
.fa-times:before {
- content: "\f00d";
+ content: "";
}
.fa-times-circle:before {
- content: "\f057";
+ content: "";
}
.fa-tint:before {
- content: "\f043";
+ content: "";
}
.fa-tint-slash:before {
- content: "\f5c7";
+ content: "";
}
.fa-tired:before {
- content: "\f5c8";
+ content: "";
}
.fa-toggle-off:before {
- content: "\f204";
+ content: "";
}
.fa-toggle-on:before {
- content: "\f205";
+ content: "";
}
.fa-toolbox:before {
- content: "\f552";
+ content: "";
}
.fa-tooth:before {
- content: "\f5c9";
+ content: "";
}
.fa-torah:before {
- content: "\f6a0";
+ content: "";
}
.fa-torii-gate:before {
- content: "\f6a1";
+ content: "";
}
.fa-trade-federation:before {
- content: "\f513";
+ content: "";
}
.fa-trademark:before {
- content: "\f25c";
+ content: "";
}
.fa-traffic-light:before {
- content: "\f637";
+ content: "";
}
.fa-train:before {
- content: "\f238";
+ content: "";
}
.fa-transgender:before {
- content: "\f224";
+ content: "";
}
.fa-transgender-alt:before {
- content: "\f225";
+ content: "";
}
.fa-trash:before {
- content: "\f1f8";
+ content: "";
}
.fa-trash-alt:before {
- content: "\f2ed";
+ content: "";
}
.fa-tree:before {
- content: "\f1bb";
+ content: "";
}
.fa-trello:before {
- content: "\f181";
+ content: "";
}
.fa-tripadvisor:before {
- content: "\f262";
+ content: "";
}
.fa-trophy:before {
- content: "\f091";
+ content: "";
}
.fa-truck:before {
- content: "\f0d1";
+ content: "";
}
.fa-truck-loading:before {
- content: "\f4de";
+ content: "";
}
.fa-truck-monster:before {
- content: "\f63b";
+ content: "";
}
.fa-truck-moving:before {
- content: "\f4df";
+ content: "";
}
.fa-truck-pickup:before {
- content: "\f63c";
+ content: "";
}
.fa-tshirt:before {
- content: "\f553";
+ content: "";
}
.fa-tty:before {
- content: "\f1e4";
+ content: "";
}
.fa-tumblr:before {
- content: "\f173";
+ content: "";
}
.fa-tumblr-square:before {
- content: "\f174";
+ content: "";
}
.fa-tv:before {
- content: "\f26c";
+ content: "";
}
.fa-twitch:before {
- content: "\f1e8";
+ content: "";
}
.fa-twitter:before {
- content: "\f099";
+ content: "";
}
.fa-twitter-square:before {
- content: "\f081";
+ content: "";
}
.fa-typo3:before {
- content: "\f42b";
+ content: "";
}
.fa-uber:before {
- content: "\f402";
+ content: "";
}
.fa-uikit:before {
- content: "\f403";
+ content: "";
}
.fa-umbrella:before {
- content: "\f0e9";
+ content: "";
}
.fa-umbrella-beach:before {
- content: "\f5ca";
+ content: "";
}
.fa-underline:before {
- content: "\f0cd";
+ content: "";
}
.fa-undo:before {
- content: "\f0e2";
+ content: "";
}
.fa-undo-alt:before {
- content: "\f2ea";
+ content: "";
}
.fa-uniregistry:before {
- content: "\f404";
+ content: "";
}
.fa-universal-access:before {
- content: "\f29a";
+ content: "";
}
.fa-university:before {
- content: "\f19c";
+ content: "";
}
.fa-unlink:before {
- content: "\f127";
+ content: "";
}
.fa-unlock:before {
- content: "\f09c";
+ content: "";
}
.fa-unlock-alt:before {
- content: "\f13e";
+ content: "";
}
.fa-untappd:before {
- content: "\f405";
+ content: "";
}
.fa-upload:before {
- content: "\f093";
+ content: "";
}
.fa-usb:before {
- content: "\f287";
+ content: "";
}
.fa-user:before {
- content: "\f007";
+ content: "";
}
.fa-user-alt:before {
- content: "\f406";
+ content: "";
}
.fa-user-alt-slash:before {
- content: "\f4fa";
+ content: "";
}
.fa-user-astronaut:before {
- content: "\f4fb";
+ content: "";
}
.fa-user-check:before {
- content: "\f4fc";
+ content: "";
}
.fa-user-circle:before {
- content: "\f2bd";
+ content: "";
}
.fa-user-clock:before {
- content: "\f4fd";
+ content: "";
}
.fa-user-cog:before {
- content: "\f4fe";
+ content: "";
}
.fa-user-edit:before {
- content: "\f4ff";
+ content: "";
}
.fa-user-friends:before {
- content: "\f500";
+ content: "";
}
.fa-user-graduate:before {
- content: "\f501";
+ content: "";
}
.fa-user-lock:before {
- content: "\f502";
+ content: "";
}
.fa-user-md:before {
- content: "\f0f0";
+ content: "";
}
.fa-user-minus:before {
- content: "\f503";
+ content: "";
}
.fa-user-ninja:before {
- content: "\f504";
+ content: "";
}
.fa-user-plus:before {
- content: "\f234";
+ content: "";
}
.fa-user-secret:before {
- content: "\f21b";
+ content: "";
}
.fa-user-shield:before {
- content: "\f505";
+ content: "";
}
.fa-user-slash:before {
- content: "\f506";
+ content: "";
}
.fa-user-tag:before {
- content: "\f507";
+ content: "";
}
.fa-user-tie:before {
- content: "\f508";
+ content: "";
}
.fa-user-times:before {
- content: "\f235";
+ content: "";
}
.fa-users:before {
- content: "\f0c0";
+ content: "";
}
.fa-users-cog:before {
- content: "\f509";
+ content: "";
}
.fa-ussunnah:before {
- content: "\f407";
+ content: "";
}
.fa-utensil-spoon:before {
- content: "\f2e5";
+ content: "";
}
.fa-utensils:before {
- content: "\f2e7";
+ content: "";
}
.fa-vaadin:before {
- content: "\f408";
+ content: "";
}
.fa-vector-square:before {
- content: "\f5cb";
+ content: "";
}
.fa-venus:before {
- content: "\f221";
+ content: "";
}
.fa-venus-double:before {
- content: "\f226";
+ content: "";
}
.fa-venus-mars:before {
- content: "\f228";
+ content: "";
}
.fa-viacoin:before {
- content: "\f237";
+ content: "";
}
.fa-viadeo:before {
- content: "\f2a9";
+ content: "";
}
.fa-viadeo-square:before {
- content: "\f2aa";
+ content: "";
}
.fa-vial:before {
- content: "\f492";
+ content: "";
}
.fa-vials:before {
- content: "\f493";
+ content: "";
}
.fa-viber:before {
- content: "\f409";
+ content: "";
}
.fa-video:before {
- content: "\f03d";
+ content: "";
}
.fa-video-slash:before {
- content: "\f4e2";
+ content: "";
}
.fa-vihara:before {
- content: "\f6a7";
+ content: "";
}
.fa-vimeo:before {
- content: "\f40a";
+ content: "";
}
.fa-vimeo-square:before {
- content: "\f194";
+ content: "";
}
.fa-vimeo-v:before {
- content: "\f27d";
+ content: "";
}
.fa-vine:before {
- content: "\f1ca";
+ content: "";
}
.fa-vk:before {
- content: "\f189";
+ content: "";
}
.fa-vnv:before {
- content: "\f40b";
+ content: "";
}
.fa-volleyball-ball:before {
- content: "\f45f";
+ content: "";
}
.fa-volume-down:before {
- content: "\f027";
+ content: "";
}
.fa-volume-off:before {
- content: "\f026";
+ content: "";
}
.fa-volume-up:before {
- content: "\f028";
+ content: "";
}
.fa-vuejs:before {
- content: "\f41f";
+ content: "";
}
.fa-walking:before {
- content: "\f554";
+ content: "";
}
.fa-wallet:before {
- content: "\f555";
+ content: "";
}
.fa-warehouse:before {
- content: "\f494";
+ content: "";
}
.fa-weebly:before {
- content: "\f5cc";
+ content: "";
}
.fa-weibo:before {
- content: "\f18a";
+ content: "";
}
.fa-weight:before {
- content: "\f496";
+ content: "";
}
.fa-weight-hanging:before {
- content: "\f5cd";
+ content: "";
}
.fa-weixin:before {
- content: "\f1d7";
+ content: "";
}
.fa-whatsapp:before {
- content: "\f232";
+ content: "";
}
.fa-whatsapp-square:before {
- content: "\f40c";
+ content: "";
}
.fa-wheelchair:before {
- content: "\f193";
+ content: "";
}
.fa-whmcs:before {
- content: "\f40d";
+ content: "";
}
.fa-wifi:before {
- content: "\f1eb";
+ content: "";
}
.fa-wikipedia-w:before {
- content: "\f266";
+ content: "";
}
.fa-window-close:before {
- content: "\f410";
+ content: "";
}
.fa-window-maximize:before {
- content: "\f2d0";
+ content: "";
}
.fa-window-minimize:before {
- content: "\f2d1";
+ content: "";
}
.fa-window-restore:before {
- content: "\f2d2";
+ content: "";
}
.fa-windows:before {
- content: "\f17a";
+ content: "";
}
.fa-wine-glass:before {
- content: "\f4e3";
+ content: "";
}
.fa-wine-glass-alt:before {
- content: "\f5ce";
+ content: "";
}
.fa-wix:before {
- content: "\f5cf";
+ content: "";
}
.fa-wolf-pack-battalion:before {
- content: "\f514";
+ content: "";
}
.fa-won-sign:before {
- content: "\f159";
+ content: "";
}
.fa-wordpress:before {
- content: "\f19a";
+ content: "";
}
.fa-wordpress-simple:before {
- content: "\f411";
+ content: "";
}
.fa-wpbeginner:before {
- content: "\f297";
+ content: "";
}
.fa-wpexplorer:before {
- content: "\f2de";
+ content: "";
}
.fa-wpforms:before {
- content: "\f298";
+ content: "";
}
.fa-wrench:before {
- content: "\f0ad";
+ content: "";
}
.fa-x-ray:before {
- content: "\f497";
+ content: "";
}
.fa-xbox:before {
- content: "\f412";
+ content: "";
}
.fa-xing:before {
- content: "\f168";
+ content: "";
}
.fa-xing-square:before {
- content: "\f169";
+ content: "";
}
.fa-y-combinator:before {
- content: "\f23b";
+ content: "";
}
.fa-yahoo:before {
- content: "\f19e";
+ content: "";
}
.fa-yandex:before {
- content: "\f413";
+ content: "";
}
.fa-yandex-international:before {
- content: "\f414";
+ content: "";
}
.fa-yelp:before {
- content: "\f1e9";
+ content: "";
}
.fa-yen-sign:before {
- content: "\f157";
+ content: "";
}
.fa-yin-yang:before {
- content: "\f6ad";
+ content: "";
}
.fa-yoast:before {
- content: "\f2b1";
+ content: "";
}
.fa-youtube:before {
- content: "\f167";
+ content: "";
}
.fa-youtube-square:before {
- content: "\f431";
+ content: "";
}
.fa-zhihu:before {
- content: "\f63f";
+ content: "";
}
.sr-only {
@@ -5353,22 +5353,22 @@ and open the template in the editor.
color: #E5E5E5;
}
.enka-custom-radio.star::before {
- content: "\f005";
+ content: "";
}
.enka-custom-radio.thumb::before {
- content: "\f164";
+ content: "";
}
.enka-custom-radio.smiley::before {
- content: "\f118";
+ content: "";
}
.enka-custom-radio.heart::before {
- content: "\f004";
+ content: "";
}
.enka-custom-radio.flag::before {
- content: "\f024";
+ content: "";
}
.enka-custom-radio.user::before {
- content: "\f007";
+ content: "";
}
/* visual analog scale - radio buttons */
@@ -5379,25 +5379,25 @@ and open the template in the editor.
color: #E5E5E5;
}
.enka-vizualna-skala.siv-61::before, .enka-vizualna-skala.siv-71::before {
- content: "\f5b4";
+ content: "";
}
.enka-vizualna-skala.siv-41::before, .enka-vizualna-skala.siv-51::before, .enka-vizualna-skala.siv-62::before, .enka-vizualna-skala.siv-72::before {
- content: "\f57a";
+ content: "";
}
.enka-vizualna-skala.siv-21::before, .enka-vizualna-skala.siv-31::before, .enka-vizualna-skala.siv-42::before, .enka-vizualna-skala.siv-52::before, .enka-vizualna-skala.siv-63::before, .enka-vizualna-skala.siv-73::before {
- content: "\f119";
+ content: "";
}
.enka-vizualna-skala.siv-32::before, .enka-vizualna-skala.siv-53::before, .enka-vizualna-skala.siv-74::before {
- content: "\f11a";
+ content: "";
}
.enka-vizualna-skala.siv-22::before, .enka-vizualna-skala.siv-33::before, .enka-vizualna-skala.siv-43::before, .enka-vizualna-skala.siv-54::before, .enka-vizualna-skala.siv-64::before, .enka-vizualna-skala.siv-75::before {
- content: "\f118";
+ content: "";
}
.enka-vizualna-skala.siv-44::before, .enka-vizualna-skala.siv-55::before, .enka-vizualna-skala.siv-65::before, .enka-vizualna-skala.siv-76::before {
- content: "\f580";
+ content: "";
}
.enka-vizualna-skala.siv-66::before, .enka-vizualna-skala.siv-77::before {
- content: "\f59c";
+ content: "";
}
/*
@@ -5411,88 +5411,88 @@ and open the template in the editor.
*/
/* icons */
span.faicon.plus::before {
- content: "\f067";
+ content: "";
}
span.faicon.minus::before {
- content: "\f068";
+ content: "";
}
span.faicon.success::before,
span.circle-check::before {
- content: "\f058";
+ content: "";
}
span.faicon.close::before {
font-size: 18px;
font-weight: 400;
- content: "\f057";
+ content: "";
}
span.faicon.dropdown_blue::before {
font-size: 16px;
- content: "\f13a";
+ content: "";
}
span.faicon.dropup_blue::before {
font-size: 16px;
- content: "\f139";
+ content: "";
}
span.faicon.arrow_back::before {
font-weight: 600;
font-size: 16px;
- content: "\f137";
+ content: "";
}
span.faicon.add::before {
font-size: 18px;
- content: "\f055";
+ content: "";
}
span.faicon.remove::before {
font-size: 18px;
- content: "\f056";
+ content: "";
}
span.faicon.delete::before {
font-size: 18px;
font-weight: 400;
- content: "\f2ed";
+ content: "";
}
span.faicon.anketa_delete::before {
font-size: 24px;
font-weight: 400;
- content: "\f2ed";
+ content: "";
}
span.faicon.copy::before {
font-size: 18px;
- content: "\f0c5";
+ content: "";
font-weight: 400;
}
span.faicon.anketa_copy::before {
font-size: 24px;
- content: "\f0c5";
+ content: "";
font-weight: 400;
}
span.faicon.export::before {
font-size: 24px;
- content: "\f56e";
+ content: "";
}
span.faicon.file-import::before {
- content: "\f56f";
+ content: "";
transform: scaleX(-1);
}
span.faicon.import::before {
font-size: 24px;
font-weight: 400;
- content: "\f1c2";
+ content: "";
}
/*span.faicon.import::after{
@@ -5502,137 +5502,137 @@ span.faicon.import::before {
}*/
span.faicon.library::before {
font-size: 24px;
- content: "\f518";
+ content: "";
}
span.faicon.folder::before {
font-size: 16px;
font-weight: 600;
- content: "\f07b";
+ content: "";
}
span.faicon.folder_empty::before {
font-size: 16px;
font-weight: 400;
- content: "\f07b";
+ content: "";
}
span.faicon.after.sort_down_arrow::after {
- content: "\f0d7";
+ content: "";
margin-left: 5px;
}
span.faicon.after.sort_up_arrow::after {
- content: "\f0d8";
+ content: "";
margin-left: 5px;
}
span.faicon.info::before {
font-size: 28px;
- content: "\f05a";
+ content: "";
vertical-align: middle;
}
span.faicon.pagination_left::before {
margin: 0 1px 0 1px;
- content: "\f104";
+ content: "";
}
span.faicon.pagination_right::before {
margin: 0 0 0 1px;
- content: "\f105";
+ content: "";
}
span.faicon.edit::before,
span.faicon.edit2::before {
- content: "\f304";
+ content: "";
}
span.faicon.refresh::before {
font-size: 18px;
- content: "\f2f1";
+ content: "";
}
span.faicon.filter::before {
font-size: 18px;
- content: "\f0b0";
+ content: "";
}
span.faicon.grip::before {
- content: "\f58e";
+ content: "";
}
span.faicon.star::before,
span.faicon.star_off::before {
font-size: 14px;
font-weight: 400;
- content: "\f005";
+ content: "";
}
span.faicon.star_on::before {
font-size: 14px;
font-weight: 700;
- content: "\f005";
+ content: "";
}
span.faicon.search::before {
font-size: 20px;
- content: "\f002";
+ content: "";
}
span.faicon.clipboard_notes::before {
font-size: 20px;
- content: "\f46d";
+ content: "";
}
span.faicon.help2::before {
font-size: 20px;
- content: "\f059";
+ content: "";
}
span.faicon.user::before {
font-size: 18px;
- content: "\f007";
+ content: "";
}
span.faicon.logout::before {
font-size: 20px;
- content: "\f2f5";
+ content: "";
}
.faicon.monitor::before {
- content: "\f108";
+ content: "";
}
.faicon.mobile::before {
- content: "\f3cd";
+ content: "";
}
.faicon.tablet::before {
- content: "\f3fa";
+ content: "";
}
span.faicon.users::before {
- content: "\f500";
+ content: "";
}
span.faicon.lock_open::before {
- content: "\f3c1";
+ content: "";
}
span.faicon.lock_close::before {
- content: "\f023";
+ content: "";
}
span.faicon.bottom_saving::before {
font-size: 24px;
font-weight: 400;
- content: "\f0c7";
+ content: "";
}
span.faicon.bottom_publish::before {
font-size: 24px;
- content: "\f093";
+ content: "";
}
span.faicon.bottom_preview {
@@ -5642,63 +5642,63 @@ span.faicon.bottom_preview {
span.faicon.bottom_preview::before {
font-size: 24px;
font-weight: 400;
- content: "\f15b";
+ content: "";
}
span.faicon.bottom_preview::after {
font-size: 14px;
- content: "\f002";
+ content: "";
display: inline-block;
margin-left: -70%;
}
span.faicon.bottom_test::before {
font-size: 24px;
- content: "\f492";
+ content: "";
}
span.faicon.language::before {
font-size: 24px;
- content: "\f0ac";
+ content: "";
}
span.faicon.mobile_off::before {
font-size: 24px;
- content: "\f3cd";
+ content: "";
}
span.faicon.mobile_off::after {
font-size: 24px;
- content: "\f715";
+ content: "";
margin-left: -23px;
}
span.faicon.comments::before {
- content: "\f27a";
+ content: "";
font-weight: 700;
}
span.faicon.comments_empty::before {
- content: "\f27a";
+ content: "";
font-weight: 400;
}
span.faicon.data_link::before {
- content: "\f0c1";
+ content: "";
}
span.faicon.data_link_small::before {
- content: "\f0c1";
+ content: "";
}
span.faicon.print::before {
font-size: 24px;
- content: "\f02f";
+ content: "";
}
span.faicon.print_small::before {
font-size: 16px;
- content: "\f02f";
+ content: "";
}
span.faicon.preview {
@@ -5708,11 +5708,11 @@ span.faicon.preview {
span.faicon.preview::before {
font-size: 18px;
font-weight: 400;
- content: "\f15b";
+ content: "";
}
span.faicon.preview::after {
- content: "\f002";
+ content: "";
display: inline-block;
font-size: 11px;
margin-left: -50%;
@@ -5720,87 +5720,87 @@ span.faicon.preview::after {
span.faicon.palette::before {
font-size: 18px;
- content: "\f53f";
+ content: "";
}
span.faicon.inline_comment::before {
font-size: 14px;
font-weight: 400;
- content: "\f075";
+ content: "";
}
span.faicon.inline_double_comment::before {
font-size: 14px;
font-weight: 400;
- content: "\f086";
+ content: "";
}
span.faicon.comments_creport::before {
font-size: 16px;
- content: "\f086";
+ content: "";
}
span.faicon.compress::before {
font-size: 15px;
- content: "\f066";
+ content: "";
}
span.faicon.expand::before {
font-size: 15px;
- content: "\f065";
+ content: "";
}
span.faicon.hashtag::before {
font-size: 15px;
- content: "\f292";
+ content: "";
}
span.faicon.bug::before {
font-size: 15px;
- content: "\f188";
+ content: "";
}
span.faicon.paragraph::before {
font-size: 15px;
- content: "\f1dd";
+ content: "";
}
span.faicon.replace::before {
font-size: 15px;
- content: "\f362";
+ content: "";
}
span.faicon.plus_square::before {
font-size: 15px;
font-weight: 400;
- content: "\f0fe";
+ content: "";
}
span.faicon.minus_square::before {
font-size: 15px;
font-weight: 400;
- content: "\f146";
+ content: "";
}
span.faicon.delete_circle::before {
font-size: 14px;
- content: "\f056";
+ content: "";
}
span.faicon.quick_view::before {
font-size: 15px;
font-weight: 400;
- content: "\f06e";
+ content: "";
}
span.faicon.edit_square::before {
font-size: 15px;
- content: "\f044";
+ content: "";
}
span.faicon.test::before {
font-size: 15px;
- content: "\f492";
+ content: "";
}
a.faicon.if_add {
@@ -5836,7 +5836,7 @@ span.faicon.if_add:hover:before {
}
span.faicon.text_file::before {
- content: "\f15c";
+ content: "";
}
span.faicon.text_file_small {
@@ -5846,40 +5846,40 @@ span.faicon.text_file_small {
span.faicon.text_file_small:before {
font-size: 18px;
font-weight: 400;
- content: "\f15c";
+ content: "";
}
span.faicon.warning::before {
font-size: 16px;
- content: "\f071";
+ content: "";
}
span.faicon.users_small::before {
font-size: 16px;
- content: "\f0c0";
+ content: "";
}
span.faicon.popup_0::before {
font-size: 14px;
- content: "\f065";
+ content: "";
color: #1E88E5;
}
span.faicon.popup_1::before {
font-size: 14px;
- content: "\f065";
+ content: "";
color: #0059ab;
}
span.faicon.flat_0::before {
font-size: 14px;
- content: "\f03c";
+ content: "";
color: #0059ab;
}
span.faicon.flat_1::before {
font-size: 14px;
- content: "\f03c";
+ content: "";
color: #1E88E5;
}
@@ -5894,46 +5894,46 @@ span.basic-icon.spss::before {
span.faicon.external_link::before {
font-size: 14px;
font-weight: 600;
- content: "\f35d";
+ content: "";
}
span.faicon.cog_large::before {
font-size: 34px;
font-weight: 600;
- content: "\f013";
+ content: "";
}
span.faicon.chart_large::before {
font-size: 34px;
font-weight: 600;
- content: "\f201";
+ content: "";
}
span.faicon.reload_large::before {
font-size: 34px;
font-weight: 600;
- content: "\f021";
+ content: "";
}
span.faicon.chart::before {
- content: "\f080";
+ content: "";
font-size: 16px;
font-weight: 600;
}
span.faicon.data::before {
- content: "\f1c0";
+ content: "";
font-size: 16px;
font-weight: 600;
}
span.faicon.publish::before {
- content: "\f093";
+ content: "";
font-size: 16px;
}
span.faicon.test::before {
- content: "\f492";
+ content: "";
font-size: 16px;
}
@@ -5943,63 +5943,63 @@ button.ui-datepicker-trigger::before {
font-family: "Font Awesome 5 Free";
font-weight: 400;
font-size: 16px;
- content: "\f073";
+ content: "";
}
/* ARROWS */
span.faicon.arrow_up::before {
font-size: 14px;
- content: "\f062";
+ content: "";
}
span.faicon.arrow2_r::before {
font-size: 14px;
- content: "\f054";
+ content: "";
}
span.faicon.arrow2_l::before {
font-size: 14px;
- content: "\f053";
+ content: "";
}
span.faicon.arrow2_d::before {
font-size: 14px;
- content: "\f078";
+ content: "";
}
span.faicon.arrow2_u::before {
font-size: 14px;
- content: "\f077";
+ content: "";
}
span.faicon.arrow_large2_r::before {
font-size: 35px;
- content: "\f054";
+ content: "";
}
span.faicon.arrow_large2_l::before {
font-size: 35px;
- content: "\f053";
+ content: "";
}
span.faicon.arrow_verylarge2_r::before {
font-size: 40px;
- content: "\f054";
+ content: "";
}
span.faicon.arrow_verylarge2_l::before {
font-size: 40px;
- content: "\f053";
+ content: "";
}
span.faicon.sort_descending::before {
font-size: 14px;
- content: "\f0d7";
+ content: "";
}
span.faicon.sort_ascending::before {
font-size: 14px;
- content: "\f0d8";
+ content: "";
}
/* Plus/minus sqare */
@@ -6011,127 +6011,127 @@ span.folder_plusminus {
span.faicon.plus_orange::before {
font-size: 12px;
font-weight: 400;
- content: "\f0fe";
+ content: "";
}
span.faicon.minus_orange::before {
font-size: 12px;
font-weight: 400;
- content: "\f146";
+ content: "";
}
/* Spinner */
span.faicon.spinner::before {
font-size: 18px;
- content: "\f1ce";
+ content: "";
}
/* Bars - mobile menu */
span.faicon.bars::before {
font-size: 26px;
- content: "\f0c9";
+ content: "";
}
span.faicon.lock_open::before {
- content: "\f3c1";
+ content: "";
}
span.faicon.lock_close::before {
- content: "\f023";
+ content: "";
}
span.faicon.bell::before {
- content: "\f0f3";
+ content: "";
}
span.faicon.bell_slash::before {
- content: "\f1f6";
+ content: "";
}
span.faicon.trash::before {
- content: "\f2ed";
+ content: "";
}
span.faicon.copy::before {
- content: "\f0c5";
+ content: "";
}
span.faicon.circle::before {
- content: "\f111";
+ content: "";
vertical-align: middle;
}
span.faicon.plus::before {
- content: "\f067";
+ content: "";
}
span.faicon.plus_circle::before {
- content: "\f055";
+ content: "";
}
span.faicon.minus_circle::before {
- content: "\f056";
+ content: "";
}
span.faicon.calendar_icon::before {
- content: "\f073";
+ content: "";
}
span.faicon.clipboard::before {
- content: "\f328";
+ content: "";
}
span.faicon.list-alt::before {
- content: "\f022";
+ content: "";
}
span.faicon.vote-yes::before {
- content: "\f772";
+ content: "";
}
span.faicon.file-preview::before {
- content: "\f865";
+ content: "";
}
span.faicon.dots::before {
- content: "\f141";
+ content: "";
font-size: 16px;
font-weight: 600;
}
span.faicon.dots_ver:before {
- content: "\f142";
+ content: "";
font-size: 16px;
font-weight: 600;
}
span.faicon.open_icon::before,
a.faicon.open_icon::before {
- content: "\f35d";
+ content: "";
}
span.faicon.table_icon::before {
- content: "\f0ce";
+ content: "";
}
span.faicon.list::before {
- content: "\f03a";
+ content: "";
}
span.faicon.link-chain::before {
- content: "\f0c1";
+ content: "";
}
span.fa-brands.html5::before {
- content: "\f13b";
+ content: "";
}
span.faicon.stopwatch20::before {
- content: "\e06f";
+ content: "";
}
span.faicon.checkbox-empty::before {
- content: "\f0c8";
+ content: "";
font-weight: 400 !important;
}
@@ -6140,11 +6140,11 @@ span.faicon.fa-1::before {
}
span.faicon.phone::before {
- content: "\f095";
+ content: "";
}
span.faicon.screwdriver::before {
- content: "\f7d9";
+ content: "";
font-weight: 600 !important;
}
@@ -6153,7 +6153,7 @@ span.faicon.fa-x::before {
}
span.faicon.envelope::before {
- content: "\f0e0";
+ content: "";
font-weight: 400;
}
@@ -6291,23 +6291,23 @@ and open the template in the editor.
*/
/* Toolbox na levi strani */
span.faicon.wheel_32::before {
- content: "\f013";
+ content: "";
}
span.faicon.radio_32::before {
- content: "\f192";
+ content: "";
font-weight: 400;
font-size: 18px;
}
span.faicon.check_32::before {
- content: "\f14a";
+ content: "";
font-weight: 400;
font-size: 18px;
}
span.faicon.matrix_32::before {
- content: "\f192\f192\a\f192\f192";
+ content: "\a";
white-space: pre;
font-weight: 400;
font-size: 12px;
@@ -6331,7 +6331,7 @@ span.faicon.nagovor::before {
}
span.faicon.plus_32::before {
- content: "\f055";
+ content: "";
font-size: 18px;
}
@@ -6375,12 +6375,12 @@ span.faicon.edit-vprasanje {
}
span.faicon.edit-vprasanje:before {
font-size: 18px;
- content: "\f031";
+ content: "";
}
a.faicon.edit::before {
font-size: 16px;
- content: "\f304";
+ content: "";
}
a.faicon.addif::before {
@@ -6392,22 +6392,22 @@ a.faicon.addif::before {
a.faicon.copy::before {
font-size: 18px;
font-weight: 400;
- content: "\f0c5";
+ content: "";
}
a.faicon.copycond::before {
font-size: 18px;
- content: "\f0c5";
+ content: "";
}
a.faicon.preview::before {
font-size: 18px;
font-weight: 400;
- content: "\f15b";
+ content: "";
}
a.faicon.preview::after {
- content: "\f002";
+ content: "";
display: inline-block;
font-size: 11px;
margin-left: -50%;
@@ -6415,25 +6415,25 @@ a.faicon.preview::after {
a.faicon.arhiv::before {
font-size: 18px;
- content: "\f044";
+ content: "";
}
a.faicon.delete::before {
font-size: 18px;
font-weight: 400;
- content: "\f2ed";
+ content: "";
}
a.faicon.hide::before {
font-size: 18px;
font-weight: 400;
- content: "\f06e";
+ content: "";
}
a.faicon.unhide_icon::before {
font-size: 18px;
font-weight: 400;
- content: "\f070";
+ content: "";
}
/* Urejanje vrednosti inline */
@@ -6447,12 +6447,12 @@ a.faicon.unhide_icon::before {
.variabla span.inline.faicon.edit2::before {
font-size: 14px;
- content: "\f304";
+ content: "";
}
.variabla span.inline.faicon.odg_hidden::before {
font-size: 14px;
- content: "\f05e";
+ content: "";
}
.variabla span.inline.faicon.odg_hidden.show-hidden::before {
@@ -6480,23 +6480,23 @@ span.inline.faicon.odg_if_not::before {
.variabla span.inline.faicon.odg_if_follow::after {
font-size: 14px;
margin-left: 2px;
- content: "\f0da";
+ content: "";
}
.variabla span.inline.faicon.correct::before {
font-size: 14px;
font-weight: 900;
- content: "\f00c";
+ content: "";
}
.faicon.move_updown::before {
font-size: 16px;
color: #0059ab;
- content: "\f338";
+ content: "";
}
.faicon.image_upload::before {
- content: "\f03e";
+ content: "";
font-weight: 400;
}
@@ -6513,22 +6513,22 @@ and open the template in the editor.
span.faicon.mapca.anketa::before {
font-size: 16px;
font-weight: 400;
- content: "\f022";
+ content: "";
}
span.faicon.table::before {
font-size: 16px;
- content: "\f00b";
+ content: "";
}
span.faicon.other_vprasanja::before {
font-size: 16px;
- content: "\f0ca" !important;
+ content: "" !important;
}
span.faicon.osnovna_vprasanja::before {
font-size: 16px;
- content: "\f0ca";
+ content: "";
}
span.faicon.mapca.if::before {
@@ -6556,7 +6556,7 @@ and open the template in the editor.
*/
/* Izvozi */
span.faicon.pdf::before {
- content: "\f1c1";
+ content: "";
font-size: 16px;
font-weight: 400;
color: #ed1c24;
@@ -6580,7 +6580,7 @@ span.faicon.pdf.black::before {
span.faicon.xls::before {
font-size: 16px;
font-weight: 400;
- content: "\f1c3";
+ content: "";
color: #008000;
}
@@ -6602,7 +6602,7 @@ span.faicon.xls.black::before {
span.faicon.rtf::before {
font-size: 16px;
font-weight: 400;
- content: "\f1c2";
+ content: "";
color: #0f3ea8;
}
@@ -6624,7 +6624,7 @@ span.faicon.rtf.black::before {
span.faicon.ppt::before {
font-size: 16px;
font-weight: 400;
- content: "\f1c4";
+ content: "";
color: #fa4913;
}
@@ -6646,7 +6646,7 @@ span.faicon.ppt.black::before {
span.faicon.xml::before {
font-size: 16px;
font-weight: 400;
- content: "\f1c9";
+ content: "";
color: #00a000;
}
@@ -6666,17 +6666,17 @@ span.faicon.xml.black::before {
}
span.faicon.arhiv::before {
- content: "\f187";
+ content: "";
}
span.faicon.arhiv_mail::before {
font-size: 16px;
font-weight: 400;
- content: "\f14d";
+ content: "";
}
span.faicon.share-arrow::before {
- content: "\f14d";
+ content: "";
}
/*
@@ -6726,7 +6726,7 @@ span.faicon.an_chart_bar::before {
font-size: 14px;
font-weight: 700;
/*content: "\f080";*/
- content: "\f200";
+ content: "";
}
/*
@@ -6740,35 +6740,35 @@ and open the template in the editor.
*/
/* Invitation table */
span.faicon.inv_sent_0::before {
- content: "\f2b6";
+ content: "";
}
span.faicon.inv_sent_1::before {
- content: "\f0e0";
+ content: "";
}
span.faicon.inv_responded_0::before {
font-size: 14px;
font-weight: 400;
- content: "\f005";
+ content: "";
}
span.faicon.inv_responded_1::before {
font-size: 14px;
font-weight: 700;
- content: "\f005";
+ content: "";
}
span.faicon.inv_unsubscribed_0::before {
font-size: 14px;
font-weight: 400;
- content: "\f111";
+ content: "";
}
span.faicon.inv_unsubscribed_1::before {
font-size: 14px;
font-weight: 700;
- content: "\f111";
+ content: "";
color: #FF0000;
}
@@ -6869,7 +6869,7 @@ a.read-more .faicon:before {
.qtip .qtip-wrapper .qtip-contentWrapper .qtip-content h1::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f059";
+ content: "";
font-size: 20px;
color: #1E88E5;
vertical-align: -1px;
@@ -6906,7 +6906,7 @@ a.read-more .faicon:before {
padding-left: 8px;
vertical-align: middle;
font-family: "Font Awesome 5 Free";
- content: "\f054";
+ content: "";
font-size: 8px;
color: #1E88E5;
transition: 0.2s;
@@ -7229,7 +7229,7 @@ a.read-more .faicon:before {
.divPopUp.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -7270,7 +7270,7 @@ a.read-more .faicon:before {
.divPopUp_info.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -7762,7 +7762,7 @@ body.waitlong #loading {
#check_pogoji.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -7943,7 +7943,7 @@ body.waitlong #loading {
#dropped_alert.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -9137,7 +9137,7 @@ header #topSettingsHolder .left_options_holder #analizaSubNav #globalSetingsLink
right: 8px;
top: 5px;
font-family: "Font Awesome 5 Free";
- content: "\f078";
+ content: "";
font-size: 10px;
font-weight: 600;
}
@@ -9411,7 +9411,7 @@ footer#srv_footer .footer_right span.faicon.external_link:before {
footer#srv_footer .footer_right .right_help_button {
position: fixed;
right: -71px;
- top: 50%;
+ top: calc(50%);
width: 150px;
padding: 4px 8px;
border: 1px #1E88E5 solid;
@@ -9791,17 +9791,17 @@ input[type=radio]:checked + label:before, input[type=checkbox]:checked + label:b
color: #1E88E5;
}
input[type=checkbox] + label:before {
- content: "\f0c8";
+ content: "";
}
input[type=checkbox]:checked + label:before {
- content: "\f14a";
+ content: "";
font-weight: bold;
}
input[type=radio] + label:before {
- content: "\f111";
+ content: "";
}
input[type=radio]:checked + label:before {
- content: "\f192";
+ content: "";
}
input[type=checkbox][disabled] + label:before {
color: #C4C4C4;
@@ -10363,7 +10363,7 @@ header #top_line #enka_nav .anketa_header_upgrade_package button {
#popup_user_access.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -10735,7 +10735,7 @@ span.cke_toolgroup .cke_button {
#survey_list .second_line .filters #folderSwitch#sortButton:after {
position: absolute;
font-family: "Font Awesome 5 Free";
- content: "\f078";
+ content: "";
right: 8px;
top: 13px;
font-weight: 600;
@@ -11049,6 +11049,26 @@ body.eng #survey_list .filters #folderSwitch {
/*
Seznam anket pri mojih anketah z vklopljenimi mapami
*/
+.moje_ankete_folders {
+ margin-top: -64px !important;
+ padding: 0 !important;
+ max-width: 100% !important;
+}
+.moje_ankete_folders #survey_list .survey_list_folders {
+ display: flex;
+}
+.moje_ankete_folders #survey_list .survey_list_folders .left_menu {
+ flex-shrink: 0;
+ width: 320px;
+ height: 100vh;
+ padding: 32px 16px;
+ border-right: 1px #E5E5E5 solid;
+}
+.moje_ankete_folders #survey_list .survey_list_folders .right_content {
+ width: auto;
+ padding: 32px 16px;
+}
+
#survey_list .div_sl_new.folders table#surveyList_new tr.sl_header_new td {
background-color: #FFFFFF;
}
@@ -11081,13 +11101,13 @@ body.eng #survey_list .filters #folderSwitch {
cursor: pointer;
}
#survey_list .div_sl_new.folders .folder_holder .folder_title .folder_arrow_icon::before {
- content: "\f078";
+ content: "";
font-size: 14px;
color: #333333;
margin-right: 8px;
}
#survey_list .div_sl_new.folders .folder_holder .folder_title .folder_icon::before {
- content: "\f07b";
+ content: "";
font-size: 16px;
font-weight: 400;
color: #1E88E5;
@@ -11097,7 +11117,7 @@ body.eng #survey_list .filters #folderSwitch {
background-color: #F8F8F8;
}
#survey_list .div_sl_new.folders .folder_holder .folder_title.open .folder_arrow_icon::before {
- content: "\f077";
+ content: "";
}
#survey_list .div_sl_new.folders .folder_holder .folder_title.open .folder_icon::before {
font-weight: 600;
@@ -12327,13 +12347,13 @@ div.page_obvestila #unread_notifications .gdpr_popup_radio input {
cursor: pointer;
}
#anketa_knjiznica #libraryInner ul li .folder_box_holder .folder_box .folder_arrow_icon::before {
- content: "\f078";
+ content: "";
font-size: 14px;
color: #333333;
margin-right: 8px;
}
#anketa_knjiznica #libraryInner ul li .folder_box_holder .folder_box .folder::before {
- content: "\f07b";
+ content: "";
font-size: 16px;
font-weight: 400;
color: #1E88E5;
@@ -12359,7 +12379,7 @@ div.page_obvestila #unread_notifications .gdpr_popup_radio input {
}*/
}
#anketa_knjiznica #libraryInner ul li .folder_box_holder .folder_box.open .folder_arrow_icon::before {
- content: "\f077";
+ content: "";
}
#anketa_knjiznica #libraryInner ul li .folder_box_holder .folder_box.open .folder::before {
font-weight: 600;
@@ -12612,7 +12632,7 @@ and open the template in the editor.
#new_anketa_div .layout_right_item .layout_right_centering .fieldset .setting input[type=radio] + span.enka-checkbox-radio:before {
font-family: "Font Awesome 5 Free";
display: inline-block;
- content: "\f111";
+ content: "";
letter-spacing: 10px;
}
#new_anketa_div .layout_right_item .layout_right_centering .fieldset .setting input[type=radio] + span.enka-custom-radio:before {
@@ -12620,7 +12640,7 @@ and open the template in the editor.
display: inline-block;
}
#new_anketa_div .layout_right_item .layout_right_centering .fieldset .setting input[type=radio]:checked + span.enka-checkbox-radio:before {
- content: "\f192";
+ content: "";
}
#new_anketa_div .layout_right_item .layout_right_centering .fieldset .setting input[type=checkbox] {
display: none !important;
@@ -12633,11 +12653,11 @@ and open the template in the editor.
#new_anketa_div .layout_right_item .layout_right_centering .fieldset .setting input[type=checkbox] + span.enka-checkbox-radio:before {
font-family: "Font Awesome 5 Free";
display: inline-block;
- content: "\f0c8";
+ content: "";
letter-spacing: 10px;
}
#new_anketa_div .layout_right_item .layout_right_centering .fieldset .setting input[type=checkbox]:checked + span.enka-checkbox-radio:before {
- content: "\f14a";
+ content: "";
letter-spacing: 8px;
}
#new_anketa_div .layout_right_item .layout_right_centering .fieldset .setting .custom_radio_picture.obarvan > label > span.enka-custom-radio:before {
@@ -12930,7 +12950,7 @@ and open the template in the editor.
}
#new_anketa_div .layout_right_item .layout_right_centering .anketa_from_text .from_text_sidebyside_holder #preview_field_holder #preview_field span.variable input[type=radio] + span.enka-checkbox-radio:before {
font-family: "Font Awesome 5 Free";
- content: "\f111";
+ content: "";
display: inline-block;
font-size: 14px;
color: #C4C4C4;
@@ -13543,20 +13563,20 @@ div.drop_setting_transition {
font-weight: 400;
}
#branching input[type=checkbox].enka-admin-custom + span.enka-checkbox-radio:before {
- content: "\f0c8";
+ content: "";
letter-spacing: 10px;
}
#branching input[type=radio].enka-admin-custom + span.enka-checkbox-radio:before {
- content: "\f111";
+ content: "";
letter-spacing: 8px;
}
#branching input[type=checkbox].enka-admin-custom:checked + span.enka-checkbox-radio:before {
- content: "\f14a";
+ content: "";
color: #D3D3D3;
letter-spacing: 8px;
}
#branching input[type=radio].enka-admin-custom:checked + span.enka-checkbox-radio:before {
- content: "\f192";
+ content: "";
color: #D3D3D3;
}
#branching span.faicon.delete_circle::before {
@@ -20197,7 +20217,7 @@ and open the template in the editor.
transition: 0.2s;
}
.tab_content .content_left ul li.folder_item .faicon.arrow:before {
- content: "\f078";
+ content: "";
}
.tab_content .content_left ul li.folder_item .faicon.folder:before,
.tab_content .content_left ul li.folder_item .faicon.clipboard:before {
@@ -20214,7 +20234,7 @@ and open the template in the editor.
color: #1E88E5;
}
.tab_content .content_left ul li.folder_item.open .faicon.arrow:before {
- content: "\f077";
+ content: "";
}
.tab_content .content_left ul li.folder_item.no_arrow .faicon.arrow:before {
display: none;
@@ -20732,7 +20752,7 @@ img.mapster_el {
border-radius: 4px;
}
.jquery-selectbox .jquery-selectbox-moreButton::before {
- content: "\f078";
+ content: "";
padding-left: 2px;
color: #333333;
font-size: 10px;
@@ -21489,7 +21509,7 @@ div#theme-edit-wrap div#theme-editor #picker .button_holder button:last-child {
div#theme-edit-wrap div#theme-editor #picker.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -21852,7 +21872,7 @@ span.faicon.st-besede-popup {
#vrednost_edit.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -22093,7 +22113,7 @@ span.faicon.st-besede-popup {
#quota.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -22465,7 +22485,7 @@ and open the template in the editor.
#vprasanje_preview #preview_spremenljivka.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -22559,21 +22579,21 @@ and open the template in the editor.
}
#fullscreen #preview_spremenljivka #spremenljivka_preview .spremenljivka input[type=checkbox] + span.enka-checkbox-radio:before,
#vprasanje_preview #preview_spremenljivka #spremenljivka_preview .spremenljivka input[type=checkbox] + span.enka-checkbox-radio:before {
- content: "\f0c8";
+ content: "";
letter-spacing: 10px;
}
#fullscreen #preview_spremenljivka #spremenljivka_preview .spremenljivka input[type=checkbox]:checked + span.enka-checkbox-radio:before,
#vprasanje_preview #preview_spremenljivka #spremenljivka_preview .spremenljivka input[type=checkbox]:checked + span.enka-checkbox-radio:before {
- content: "\f14a";
+ content: "";
}
#fullscreen #preview_spremenljivka #spremenljivka_preview .spremenljivka input[type=radio] + span.enka-checkbox-radio:before,
#vprasanje_preview #preview_spremenljivka #spremenljivka_preview .spremenljivka input[type=radio] + span.enka-checkbox-radio:before {
- content: "\f111";
+ content: "";
letter-spacing: 10px;
}
#fullscreen #preview_spremenljivka #spremenljivka_preview .spremenljivka input[type=radio]:checked + span.enka-checkbox-radio:before,
#vprasanje_preview #preview_spremenljivka #spremenljivka_preview .spremenljivka input[type=radio]:checked + span.enka-checkbox-radio:before {
- content: "\f192";
+ content: "";
}
#fullscreen #preview_spremenljivka #spremenljivka_preview .spremenljivka input[type=checkbox] + span.enka-checkbox-radio,
#fullscreen #preview_spremenljivka #spremenljivka_preview .spremenljivka input[type=radio] + span.enka-checkbox-radio,
@@ -23531,22 +23551,22 @@ and open the template in the editor.
}
#preview_spremenljivka #variable_holder input[type=checkbox].enka-admin-custom + span.enka-checkbox-radio:before {
/*content: "\f096";*/
- content: "\f0c8";
+ content: "";
letter-spacing: 10px;
}
#preview_spremenljivka #variable_holder input[type=radio].enka-admin-custom + span.enka-checkbox-radio:before {
/*content: "\f10c";*/
- content: "\f111";
+ content: "";
letter-spacing: 8px;
}
#preview_spremenljivka #variable_holder input[type=checkbox].enka-admin-custom:checked + span.enka-checkbox-radio:before {
/*content: "\f046";*/
- content: "\f14a";
+ content: "";
letter-spacing: 8px;
}
#preview_spremenljivka #variable_holder input[type=radio].enka-admin-custom:checked + span.enka-checkbox-radio:before {
/*content: "\f192";*/
- content: "\f192";
+ content: "";
}
#preview_spremenljivka input[type=radio] {
margin: 0 8px 4px 0;
@@ -23559,7 +23579,7 @@ and open the template in the editor.
#preview_spremenljivka input[type=radio] + span.enka-checkbox-radio:before {
font-family: "Font Awesome 5 Free";
display: inline-block;
- content: "\f111";
+ content: "";
letter-spacing: 10px;
}
#preview_spremenljivka input[type=radio] + span.enka-custom-radio:before {
@@ -23567,7 +23587,7 @@ and open the template in the editor.
display: inline-block;
}
#preview_spremenljivka input[type=radio]:checked + span.enka-checkbox-radio:before {
- content: "\f192";
+ content: "";
}
#preview_spremenljivka input[type=checkbox] {
display: none !important;
@@ -23580,11 +23600,11 @@ and open the template in the editor.
#preview_spremenljivka input[type=checkbox] + span.enka-checkbox-radio:before {
font-family: "Font Awesome 5 Free";
display: inline-block;
- content: "\f0c8";
+ content: "";
letter-spacing: 10px;
}
#preview_spremenljivka input[type=checkbox]:checked + span.enka-checkbox-radio:before {
- content: "\f14a";
+ content: "";
letter-spacing: 8px;
}
@@ -23799,7 +23819,7 @@ and open the template in the editor.
}
#popup_import_from_text .anketa_from_text .import_holder #preview_field_holder #preview_field span.variable input[type=radio] + span.enka-checkbox-radio:before {
font-family: "Font Awesome 5 Free";
- content: "\f111";
+ content: "";
display: inline-block;
font-size: 14px;
color: #E5E5E5;
@@ -23807,7 +23827,7 @@ and open the template in the editor.
font-weight: 400;
}
#popup_import_from_text .anketa_from_text .import_holder #preview_field_holder #preview_field span.variable input[type=radio]:checked + span.enka-checkbox-radio:before {
- content: "\f192";
+ content: "";
color: #E5E5E5;
}
@@ -24070,7 +24090,7 @@ dl.arch_email dd {
#inv_view_arch_recipients.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -25322,23 +25342,23 @@ div.page_komentarji_anketa ul .spremenljivka_content input[type=radio].enka-admi
}
div.page_komentarji ul .spremenljivka_content input[type=checkbox].enka-admin-custom + span.enka-checkbox-radio:before,
div.page_komentarji_anketa ul .spremenljivka_content input[type=checkbox].enka-admin-custom + span.enka-checkbox-radio:before {
- content: "\f0c8";
+ content: "";
letter-spacing: 10px;
}
div.page_komentarji ul .spremenljivka_content input[type=radio].enka-admin-custom + span.enka-checkbox-radio:before,
div.page_komentarji_anketa ul .spremenljivka_content input[type=radio].enka-admin-custom + span.enka-checkbox-radio:before {
- content: "\f111";
+ content: "";
letter-spacing: 8px;
}
div.page_komentarji ul .spremenljivka_content input[type=checkbox].enka-admin-custom:checked + span.enka-checkbox-radio:before,
div.page_komentarji_anketa ul .spremenljivka_content input[type=checkbox].enka-admin-custom:checked + span.enka-checkbox-radio:before {
- content: "\f14a";
+ content: "";
color: #D3D3D3;
letter-spacing: 8px;
}
div.page_komentarji ul .spremenljivka_content input[type=radio].enka-admin-custom:checked + span.enka-checkbox-radio:before,
div.page_komentarji_anketa ul .spremenljivka_content input[type=radio].enka-admin-custom:checked + span.enka-checkbox-radio:before {
- content: "\f192";
+ content: "";
color: #D3D3D3;
}
div.page_komentarji ul .spremenljivka_content input[type=radio],
@@ -25355,7 +25375,7 @@ div.page_komentarji ul .spremenljivka_content input[type=radio] + span.enka-chec
div.page_komentarji_anketa ul .spremenljivka_content input[type=radio] + span.enka-checkbox-radio:before {
font-family: "Font Awesome 5 Free";
display: inline-block;
- content: "\f111";
+ content: "";
letter-spacing: 10px;
}
div.page_komentarji ul .spremenljivka_content input[type=radio] + span.enka-custom-radio:before,
@@ -25365,7 +25385,7 @@ div.page_komentarji_anketa ul .spremenljivka_content input[type=radio] + span.en
}
div.page_komentarji ul .spremenljivka_content input[type=radio]:checked + span.enka-checkbox-radio:before,
div.page_komentarji_anketa ul .spremenljivka_content input[type=radio]:checked + span.enka-checkbox-radio:before {
- content: "\f192";
+ content: "";
}
div.page_komentarji ul .spremenljivka_content input[type=checkbox],
div.page_komentarji_anketa ul .spremenljivka_content input[type=checkbox] {
@@ -25381,12 +25401,12 @@ div.page_komentarji ul .spremenljivka_content input[type=checkbox] + span.enka-c
div.page_komentarji_anketa ul .spremenljivka_content input[type=checkbox] + span.enka-checkbox-radio:before {
font-family: "Font Awesome 5 Free";
display: inline-block;
- content: "\f0c8";
+ content: "";
letter-spacing: 10px;
}
div.page_komentarji ul .spremenljivka_content input[type=checkbox]:checked + span.enka-checkbox-radio:before,
div.page_komentarji_anketa ul .spremenljivka_content input[type=checkbox]:checked + span.enka-checkbox-radio:before {
- content: "\f14a";
+ content: "";
letter-spacing: 8px;
}
div.page_komentarji ul div.question_comment_holder,
@@ -25721,12 +25741,12 @@ div.page_komentarji_anketa ul div.question_comment_holder div.question_comment .
color: #1E88E5 !important;
font-weight: 400;
font-size: 14px !important;
- content: "\f27a";
+ content: "";
}
#quick_comments_link #comment_dropdown .comment_dropdown_top .settings span.faicon::before {
color: #1E88E5 !important;
font-size: 16px !important;
- content: "\f013";
+ content: "";
line-height: 17px !important;
}
#quick_comments_link #comment_dropdown .links {
@@ -27619,7 +27639,7 @@ div.subpage_coding .coding-refresh .button_holder button:last-child {
div.subpage_coding .coding-refresh.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -27801,7 +27821,7 @@ div.subpage_coding #coding .button_holder button:last-child {
div.subpage_coding #coding.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -28125,7 +28145,7 @@ div.subpage_coding .floatRecodeSpremenljivka .button_holder button:last-child {
div.subpage_coding .floatRecodeSpremenljivka.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -28476,18 +28496,18 @@ ul#merge li {
-webkit-text-stroke: 0.35px;
}
.quick_edit_container #edit_survey_data .quick_edit_inner .spremenljivka input[type=checkbox] + span.enka-checkbox-radio:before {
- content: "\f0c8";
+ content: "";
letter-spacing: 10px;
}
.quick_edit_container #edit_survey_data .quick_edit_inner .spremenljivka input[type=checkbox]:checked + span.enka-checkbox-radio:before {
- content: "\f14a";
+ content: "";
}
.quick_edit_container #edit_survey_data .quick_edit_inner .spremenljivka input[type=radio] + span.enka-checkbox-radio:before {
- content: "\f111";
+ content: "";
letter-spacing: 10px;
}
.quick_edit_container #edit_survey_data .quick_edit_inner .spremenljivka input[type=radio]:checked + span.enka-checkbox-radio:before {
- content: "\f192";
+ content: "";
}
.quick_edit_container #edit_survey_data .quick_edit_inner .spremenljivka input[type=checkbox] + span.enka-checkbox-radio,
.quick_edit_container #edit_survey_data .quick_edit_inner .spremenljivka input[type=radio] + span.enka-checkbox-radio,
@@ -28986,7 +29006,7 @@ and open the template in the editor.
#div_export_setting_show.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -30367,7 +30387,7 @@ iframe#ifmcontentstoprint {
}
.cell_icons button::before {
font-weight: 700;
- content: "\f141";
+ content: "";
}
div.page_tema div#theme_grid_holder div.div_theme_group div.theme_label .theme_label_options div.button {
@@ -32116,7 +32136,7 @@ ul.vrednost_sort input[type=text] {
.subpage_analysis_creport #anketa_custom_report #newCReportProfile.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -32400,7 +32420,7 @@ and open the template in the editor.
#dsp_inspect_cover.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -32934,7 +32954,7 @@ input#endDate {
.mc_table_settings.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -33147,7 +33167,7 @@ input#endDate {
#newMCTable.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -33336,7 +33356,7 @@ input#endDate {
#renameMCTable.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -33525,7 +33545,7 @@ input#endDate {
#deleteMCTable.warning_popup h2::before {
padding-right: 8px;
font-family: "Font Awesome 5 Free";
- content: "\f071";
+ content: "";
font-size: 14px;
color: #FFC700;
}
@@ -33911,7 +33931,7 @@ button.buttons-columnVisibility.active {
table.usersTable {
margin-left: 14px;
margin-right: 14px;
- width: calc(100% - 28px);
+ width: calc(100% - 2*14px);
white-space: nowrap;
border-collapse: collapse !important;
}
diff --git a/resources/sass/admin_new/pages/my_surveys/survey_list_folders.scss b/resources/sass/admin_new/pages/my_surveys/survey_list_folders.scss
index 25cc43e80..a6b86f85c 100644
--- a/resources/sass/admin_new/pages/my_surveys/survey_list_folders.scss
+++ b/resources/sass/admin_new/pages/my_surveys/survey_list_folders.scss
@@ -2,6 +2,63 @@
Seznam anket pri mojih anketah z vklopljenimi mapami
*/
+.moje_ankete_folders{
+ margin-top: -64px !important;
+ padding: 0 !important;
+
+ max-width: 100% !important;
+
+ #survey_list .survey_list_folders{
+ display: flex;
+
+
+ // Meni na levi
+ .left_menu{
+ flex-shrink: 0;
+
+ width: 320px;
+ height: 100vh;
+
+ padding: 32px 16px;
+
+ border-right: 1px $gray solid;
+
+ .title{
+ margin-bottom: 16px;
+
+ font-weight: 600;
+ font-size: 14px;
+ text-transform: uppercase;
+ }
+
+ .folder-item{
+ box-sizing: border-box;
+ height: 40px;
+ margin-bottom: 8px;
+
+ border: 1px solid $light-gray;
+ border-radius: 2px;
+ }
+ }
+
+ // Vsebina na desni
+ .right_content{
+ width: auto;
+ padding: 32px 16px;
+
+ .title{
+ margin-bottom: 24px;
+
+ font-weight: 600;
+ font-size: 16px;
+ }
+
+
+ }
+ }
+}
+
+
#survey_list .div_sl_new.folders{
table#surveyList_new{
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index 03b9bb9c4..6d0c3f2d0 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -37,11 +37,13 @@ namespace Composer\Autoload;
*
* @author Fabien Potencier
* @author Jordi Boggiano
- * @see http://www.php-fig.org/psr/psr-0/
- * @see http://www.php-fig.org/psr/psr-4/
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
+ private $vendorDir;
+
// PSR-4
private $prefixLengthsPsr4 = array();
private $prefixDirsPsr4 = array();
@@ -57,6 +59,13 @@ class ClassLoader
private $missingClasses = array();
private $apcuPrefix;
+ private static $registeredLoaders = array();
+
+ public function __construct($vendorDir = null)
+ {
+ $this->vendorDir = $vendorDir;
+ }
+
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
@@ -300,6 +309,17 @@ class ClassLoader
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+ if (null === $this->vendorDir) {
+ return;
+ }
+
+ if ($prepend) {
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+ } else {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ self::$registeredLoaders[$this->vendorDir] = $this;
+ }
}
/**
@@ -308,13 +328,17 @@ class ClassLoader
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
+
+ if (null !== $this->vendorDir) {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ }
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
- * @return bool|null True if loaded, null otherwise
+ * @return true|null True if loaded, null otherwise
*/
public function loadClass($class)
{
@@ -323,6 +347,8 @@ class ClassLoader
return true;
}
+
+ return null;
}
/**
@@ -367,6 +393,16 @@ class ClassLoader
return $file;
}
+ /**
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
+ *
+ * @return self[]
+ */
+ public static function getRegisteredLoaders()
+ {
+ return self::$registeredLoaders;
+ }
+
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 1cbd55d87..206b04e83 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -67,6 +67,7 @@ return array(
'CheckboxXml' => $baseDir . '/admin/survey/export/xmlClasses/Vprasanja/CheckboxXml.php',
'Common' => $baseDir . '/admin/survey/classes/class.Common.php',
'Composer\\CaBundle\\CaBundle' => $vendorDir . '/composer/ca-bundle/src/CaBundle.php',
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'CrossRoad' => $baseDir . '/admin/survey/classes/tracking/CrossRoad.php',
'DatumLatex' => $baseDir . '/admin/survey/export/latexclasses/Vprasanja/DatumLatex.php',
'Demografija' => $baseDir . '/admin/survey/classes/class.Demografija.php',
@@ -995,6 +996,7 @@ return array(
'SurveyKakovost' => $baseDir . '/admin/survey/modules/mod_kakovost/class.SurveyKakovost.php',
'SurveyLanguageTechnology' => $baseDir . '/admin/survey/classes/class.SurveyLanguageTechnology.php',
'SurveyList' => $baseDir . '/admin/survey/classes/class.SurveyList.php',
+ 'SurveyListFolders' => $baseDir . '/admin/survey/classes/class.SurveyListFolders.php',
'SurveyLog' => $baseDir . '/admin/survey/classes/log/class.SurveyLog.php',
'SurveyMFDPS' => $baseDir . '/admin/survey/modules/mod_MFDPS/class.SurveyMFDPS.php',
'SurveyMJU' => $baseDir . '/admin/survey/modules/mod_MJU/class.SurveyMJU.php',
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index 7cffa8c0a..5fd19c594 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -22,13 +22,15 @@ class ComposerAutoloaderInit6b03163c371c5541881b55b762b8c779
return self::$loader;
}
+ require __DIR__ . '/platform_check.php';
+
spl_autoload_register(array('ComposerAutoloaderInit6b03163c371c5541881b55b762b8c779', 'loadClassLoader'), true, true);
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInit6b03163c371c5541881b55b762b8c779', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
- require_once __DIR__ . '/autoload_static.php';
+ require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit6b03163c371c5541881b55b762b8c779::getInitializer($loader));
} else {
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 93dcac457..5edb85138 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -271,6 +271,7 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'CheckboxXml' => __DIR__ . '/../..' . '/admin/survey/export/xmlClasses/Vprasanja/CheckboxXml.php',
'Common' => __DIR__ . '/../..' . '/admin/survey/classes/class.Common.php',
'Composer\\CaBundle\\CaBundle' => __DIR__ . '/..' . '/composer/ca-bundle/src/CaBundle.php',
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'CrossRoad' => __DIR__ . '/../..' . '/admin/survey/classes/tracking/CrossRoad.php',
'DatumLatex' => __DIR__ . '/../..' . '/admin/survey/export/latexclasses/Vprasanja/DatumLatex.php',
'Demografija' => __DIR__ . '/../..' . '/admin/survey/classes/class.Demografija.php',
@@ -1199,6 +1200,7 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'SurveyKakovost' => __DIR__ . '/../..' . '/admin/survey/modules/mod_kakovost/class.SurveyKakovost.php',
'SurveyLanguageTechnology' => __DIR__ . '/../..' . '/admin/survey/classes/class.SurveyLanguageTechnology.php',
'SurveyList' => __DIR__ . '/../..' . '/admin/survey/classes/class.SurveyList.php',
+ 'SurveyListFolders' => __DIR__ . '/../..' . '/admin/survey/classes/class.SurveyListFolders.php',
'SurveyLog' => __DIR__ . '/../..' . '/admin/survey/classes/log/class.SurveyLog.php',
'SurveyMFDPS' => __DIR__ . '/../..' . '/admin/survey/modules/mod_MFDPS/class.SurveyMFDPS.php',
'SurveyMJU' => __DIR__ . '/../..' . '/admin/survey/modules/mod_MJU/class.SurveyMJU.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index c6d95db9d..a65b4792f 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,2180 +1,2248 @@
-[
- {
- "name": "composer/ca-bundle",
- "version": "1.3.3",
- "version_normalized": "1.3.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/ca-bundle.git",
- "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/30897edbfb15e784fe55587b4f73ceefd3c4d98c",
- "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c",
- "shasum": ""
- },
- "require": {
- "ext-openssl": "*",
- "ext-pcre": "*",
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpstan/phpstan": "^0.12.55",
- "psr/log": "^1.0",
- "symfony/phpunit-bridge": "^4.2 || ^5",
- "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0"
- },
- "time": "2022-07-20T07:14:26+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Composer\\CaBundle\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
- "keywords": [
- "cabundle",
- "cacert",
- "certificate",
- "ssl",
- "tls"
- ],
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
+{
+ "packages": [
+ {
+ "name": "composer/ca-bundle",
+ "version": "1.3.3",
+ "version_normalized": "1.3.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/ca-bundle.git",
+ "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c"
},
- {
- "url": "https://github.com/composer",
- "type": "github"
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/30897edbfb15e784fe55587b4f73ceefd3c4d98c",
+ "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c",
+ "shasum": ""
},
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "fgrosse/phpasn1",
- "version": "v2.4.0",
- "version_normalized": "2.4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/fgrosse/PHPASN1.git",
- "reference": "eef488991d53e58e60c9554b09b1201ca5ba9296"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/eef488991d53e58e60c9554b09b1201ca5ba9296",
- "reference": "eef488991d53e58e60c9554b09b1201ca5ba9296",
- "shasum": ""
- },
- "require": {
- "php": "~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "~2.0",
- "phpunit/phpunit": "^6.3 || ^7.0 || ^8.0"
- },
- "suggest": {
- "ext-bcmath": "BCmath is the fallback extension for big integer calculations",
- "ext-curl": "For loading OID information from the web if they have not bee defined statically",
- "ext-gmp": "GMP is the preferred extension for big integer calculations",
- "phpseclib/bcmath_compat": "BCmath polyfill for servers where neither GMP nor BCmath is available"
- },
- "time": "2021-12-11T12:41:06+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "FG\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Friedrich Große",
- "email": "friedrich.grosse@gmail.com",
- "homepage": "https://github.com/FGrosse",
- "role": "Author"
+ "require": {
+ "ext-openssl": "*",
+ "ext-pcre": "*",
+ "php": "^5.3.2 || ^7.0 || ^8.0"
},
- {
- "name": "All contributors",
- "homepage": "https://github.com/FGrosse/PHPASN1/contributors"
- }
- ],
- "description": "A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.",
- "homepage": "https://github.com/FGrosse/PHPASN1",
- "keywords": [
- "DER",
- "asn.1",
- "asn1",
- "ber",
- "binary",
- "decoding",
- "encoding",
- "x.509",
- "x.690",
- "x509",
- "x690"
- ],
- "support": {
- "issues": "https://github.com/fgrosse/PHPASN1/issues",
- "source": "https://github.com/fgrosse/PHPASN1/tree/v2.4.0"
- }
- },
- {
- "name": "geoip2/geoip2",
- "version": "v2.10.0",
- "version_normalized": "2.10.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/maxmind/GeoIP2-php.git",
- "reference": "419557cd21d9fe039721a83490701a58c8ce784a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/419557cd21d9fe039721a83490701a58c8ce784a",
- "reference": "419557cd21d9fe039721a83490701a58c8ce784a",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "maxmind-db/reader": "~1.5",
- "maxmind/web-service-common": "~0.6",
- "php": ">=5.6"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "2.*",
- "phpunit/phpunit": "5.*",
- "squizlabs/php_codesniffer": "3.*"
- },
- "time": "2019-12-12T18:48:39+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "GeoIp2\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Gregory J. Oschwald",
- "email": "goschwald@maxmind.com",
- "homepage": "https://www.maxmind.com/"
- }
- ],
- "description": "MaxMind GeoIP2 PHP API",
- "homepage": "https://github.com/maxmind/GeoIP2-php",
- "keywords": [
- "IP",
- "geoip",
- "geoip2",
- "geolocation",
- "maxmind"
- ]
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "6.5.8",
- "version_normalized": "6.5.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
- "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.9",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "^1.17"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
- "psr/log": "^1.1"
- },
- "suggest": {
- "psr/log": "Required for using the Log middleware"
- },
- "time": "2022-06-20T22:16:07+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.5-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "files": [
- "src/functions_include.php"
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.55",
+ "psr/log": "^1.0",
+ "symfony/phpunit-bridge": "^4.2 || ^5",
+ "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0"
+ },
+ "time": "2022-07-20T07:14:26+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Composer\\CaBundle\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
],
- "psr-4": {
- "GuzzleHttp\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Jeremy Lindblom",
- "email": "jeremeamia@gmail.com",
- "homepage": "https://github.com/jeremeamia"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://github.com/sagikazarmark"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ],
- "support": {
- "issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/6.5.8"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "guzzlehttp/promises",
- "version": "1.5.1",
- "version_normalized": "1.5.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^4.4 || ^5.1"
- },
- "time": "2021-10-22T20:56:57+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.5-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ],
- "support": {
- "issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.5.1"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "1.9.0",
- "version_normalized": "1.9.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
- "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "ext-zlib": "*",
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
- },
- "suggest": {
- "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
- },
- "time": "2022-06-20T21:43:03+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "files": [
- "src/functions_include.php"
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
],
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://github.com/sagikazarmark"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "PSR-7 message implementation that also provides common utility methods",
- "keywords": [
- "http",
- "message",
- "psr-7",
- "request",
- "response",
- "stream",
- "uri",
- "url"
- ],
- "support": {
- "issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/1.9.0"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "maxmind-db/reader",
- "version": "v1.6.0",
- "version_normalized": "1.6.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
- "reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/febd4920bf17c1da84cef58e56a8227dfb37fbe4",
- "reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "conflict": {
- "ext-maxminddb": "<1.6.0,>=2.0.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "2.*",
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpcov": "^3.0",
- "phpunit/phpunit": "5.*",
- "squizlabs/php_codesniffer": "3.*"
- },
- "suggest": {
- "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
- "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
- "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
- },
- "time": "2019-12-19T22:59:03+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "MaxMind\\Db\\": "src/MaxMind/Db"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Gregory J. Oschwald",
- "email": "goschwald@maxmind.com",
- "homepage": "https://www.maxmind.com/"
- }
- ],
- "description": "MaxMind DB Reader API",
- "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php",
- "keywords": [
- "database",
- "geoip",
- "geoip2",
- "geolocation",
- "maxmind"
- ]
- },
- {
- "name": "maxmind/web-service-common",
- "version": "v0.7.0",
- "version_normalized": "0.7.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/maxmind/web-service-common-php.git",
- "reference": "74c996c218ada5c639c8c2f076756e059f5552fc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/74c996c218ada5c639c8c2f076756e059f5552fc",
- "reference": "74c996c218ada5c639c8c2f076756e059f5552fc",
- "shasum": ""
- },
- "require": {
- "composer/ca-bundle": "^1.0.3",
- "ext-curl": "*",
- "ext-json": "*",
- "php": ">=5.6"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "2.*",
- "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0",
- "squizlabs/php_codesniffer": "3.*"
- },
- "time": "2020-05-06T14:07:26+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "MaxMind\\Exception\\": "src/Exception",
- "MaxMind\\WebService\\": "src/WebService"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Gregory Oschwald",
- "email": "goschwald@maxmind.com"
- }
- ],
- "description": "Internal MaxMind Web Service API",
- "homepage": "https://github.com/maxmind/web-service-common-php"
- },
- {
- "name": "minishlink/web-push",
- "version": "v5.2.5",
- "version_normalized": "5.2.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/web-push-libs/web-push-php.git",
- "reference": "0e75af425126435794ed42d7aa92119fd563e503"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/web-push-libs/web-push-php/zipball/0e75af425126435794ed42d7aa92119fd563e503",
- "reference": "0e75af425126435794ed42d7aa92119fd563e503",
- "shasum": ""
- },
- "require": {
- "ext-gmp": "*",
- "ext-json": "*",
- "guzzlehttp/guzzle": "^6.2",
- "lib-openssl": "*",
- "php": "^7.1",
- "web-token/jwt-key-mgmt": "^1.0",
- "web-token/jwt-signature": "^1.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.14",
- "phpstan/phpstan": "0.11.2",
- "phpunit/phpunit": "^7.0"
- },
- "time": "2020-08-02T08:58:01+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Minishlink\\WebPush\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Louis Lagrange",
- "email": "lagrange.louis@gmail.com",
- "homepage": "https://github.com/Minishlink"
- }
- ],
- "description": "Web Push library for PHP",
- "homepage": "https://github.com/web-push-libs/web-push-php",
- "keywords": [
- "Push API",
- "WebPush",
- "notifications",
- "push",
- "web"
- ]
- },
- {
- "name": "paragonie/random_compat",
- "version": "v9.99.100",
- "version_normalized": "9.99.100.0",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
- "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
- "shasum": ""
- },
- "require": {
- "php": ">= 7"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "time": "2020-10-15T08:29:30+00:00",
- "type": "library",
- "installation-source": "dist",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ]
- },
- {
- "name": "paragonie/sodium_compat",
- "version": "v1.17.1",
- "version_normalized": "1.17.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/sodium_compat.git",
- "reference": "ac994053faac18d386328c91c7900f930acadf1e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/ac994053faac18d386328c91c7900f930acadf1e",
- "reference": "ac994053faac18d386328c91c7900f930acadf1e",
- "shasum": ""
- },
- "require": {
- "paragonie/random_compat": ">=1",
- "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8"
- },
- "require-dev": {
- "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9"
- },
- "suggest": {
- "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.",
- "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
- },
- "time": "2022-03-23T19:32:04+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "autoload.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "ISC"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com"
- },
- {
- "name": "Frank Denis",
- "email": "jedisct1@pureftpd.org"
- }
- ],
- "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists",
- "keywords": [
- "Authentication",
- "BLAKE2b",
- "ChaCha20",
- "ChaCha20-Poly1305",
- "Chapoly",
- "Curve25519",
- "Ed25519",
- "EdDSA",
- "Edwards-curve Digital Signature Algorithm",
- "Elliptic Curve Diffie-Hellman",
- "Poly1305",
- "Pure-PHP cryptography",
- "RFC 7748",
- "RFC 8032",
- "Salpoly",
- "Salsa20",
- "X25519",
- "XChaCha20-Poly1305",
- "XSalsa20-Poly1305",
- "Xchacha20",
- "Xsalsa20",
- "aead",
- "cryptography",
- "ecdh",
- "elliptic curve",
- "elliptic curve cryptography",
- "encryption",
- "libsodium",
- "php",
- "public-key cryptography",
- "secret-key cryptography",
- "side-channel resistant"
- ],
- "support": {
- "issues": "https://github.com/paragonie/sodium_compat/issues",
- "source": "https://github.com/paragonie/sodium_compat/tree/v1.17.1"
- }
- },
- {
- "name": "paypal/paypal-checkout-sdk",
- "version": "1.0.2",
- "version_normalized": "1.0.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/paypal/Checkout-PHP-SDK.git",
- "reference": "19992ce7051ff9e47e643f28abb8cc1b3e5f1812"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paypal/Checkout-PHP-SDK/zipball/19992ce7051ff9e47e643f28abb8cc1b3e5f1812",
- "reference": "19992ce7051ff9e47e643f28abb8cc1b3e5f1812",
- "shasum": ""
- },
- "require": {
- "paypal/paypalhttp": "1.0.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7"
- },
- "time": "2021-09-21T20:57:38+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PayPalCheckoutSdk\\": "lib/PayPalCheckoutSdk",
- "Sample\\": "samples/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "https://github.com/paypal/Checkout-PHP-SDK/blob/master/LICENSE"
- ],
- "authors": [
- {
- "name": "PayPal",
- "homepage": "https://github.com/paypal/Checkout-PHP-SDK/contributors"
- }
- ],
- "description": "PayPal's PHP SDK for Checkout REST APIs",
- "homepage": "http://github.com/paypal/Checkout-PHP-SDK/",
- "keywords": [
- "checkout",
- "orders",
- "payments",
- "paypal",
- "rest",
- "sdk"
- ],
- "support": {
- "source": "https://github.com/paypal/Checkout-PHP-SDK/tree/1.0.2"
- }
- },
- {
- "name": "paypal/paypalhttp",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/paypal/paypalhttp_php.git",
- "reference": "7b09c89c80828e842c79230e7f156b61fbb68d25"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paypal/paypalhttp_php/zipball/7b09c89c80828e842c79230e7f156b61fbb68d25",
- "reference": "7b09c89c80828e842c79230e7f156b61fbb68d25",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7",
- "wiremock-php/wiremock-php": "1.43.2"
- },
- "time": "2021-09-14T21:35:26+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PayPalHttp\\": "lib/PayPalHttp"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PayPal",
- "homepage": "https://github.com/paypal/paypalhttp_php/contributors"
- }
- ],
- "support": {
- "issues": "https://github.com/paypal/paypalhttp_php/issues",
- "source": "https://github.com/paypal/paypalhttp_php/tree/1.0.1"
- }
- },
- {
- "name": "phpmailer/phpmailer",
- "version": "v6.6.3",
- "version_normalized": "6.6.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHPMailer/PHPMailer.git",
- "reference": "9400f305a898f194caff5521f64e5dfa926626f3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/9400f305a898f194caff5521f64e5dfa926626f3",
- "reference": "9400f305a898f194caff5521f64e5dfa926626f3",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "ext-filter": "*",
- "ext-hash": "*",
- "php": ">=5.5.0"
- },
- "require-dev": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
- "doctrine/annotations": "^1.2",
- "php-parallel-lint/php-console-highlighter": "^1.0.0",
- "php-parallel-lint/php-parallel-lint": "^1.3.2",
- "phpcompatibility/php-compatibility": "^9.3.5",
- "roave/security-advisories": "dev-latest",
- "squizlabs/php_codesniffer": "^3.6.2",
- "yoast/phpunit-polyfills": "^1.0.0"
- },
- "suggest": {
- "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses",
- "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
- "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
- "psr/log": "For optional PSR-3 debug logging",
- "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
- "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
- },
- "time": "2022-06-20T09:21:02+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PHPMailer\\PHPMailer\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL-2.1-only"
- ],
- "authors": [
- {
- "name": "Marcus Bointon",
- "email": "phpmailer@synchromedia.co.uk"
- },
- {
- "name": "Jim Jagielski",
- "email": "jimjag@gmail.com"
- },
- {
- "name": "Andy Prevost",
- "email": "codeworxtech@users.sourceforge.net"
- },
- {
- "name": "Brent R. Matzelle"
- }
- ],
- "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
- "support": {
- "issues": "https://github.com/PHPMailer/PHPMailer/issues",
- "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.3"
- },
- "funding": [
- {
- "url": "https://github.com/Synchro",
- "type": "github"
- }
- ]
- },
- {
- "name": "psr/http-message",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "time": "2016-08-06T14:39:51+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ]
- },
- {
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
- "version_normalized": "3.0.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/ralouphie/getallheaders.git",
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5 || ^6.5"
- },
- "time": "2019-03-08T08:55:37+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "src/getallheaders.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ralph Khattar",
- "email": "ralph.khattar@gmail.com"
- }
- ],
- "description": "A polyfill for getallheaders."
- },
- {
- "name": "sonata-project/google-authenticator",
- "version": "2.2.0",
- "version_normalized": "2.2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sonata-project/GoogleAuthenticator.git",
- "reference": "feda53899b26af24e3db2fe7a3e5f053ca483762"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sonata-project/GoogleAuthenticator/zipball/feda53899b26af24e3db2fe7a3e5f053ca483762",
- "reference": "feda53899b26af24e3db2fe7a3e5f053ca483762",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^4.0"
- },
- "time": "2018-07-18T22:08:02+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Google\\Authenticator\\": "src/",
- "Sonata\\GoogleAuthenticator\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Christian Stocker",
- "email": "me@chregu.tv"
- },
- {
- "name": "Andre DeMarre",
- "homepage": "http://www.devnetwork.net/viewtopic.php?f=50&t=94989"
- },
- {
- "name": "Thomas Rabaix",
- "email": "thomas.rabaix@gmail.com"
- }
- ],
- "description": "Library to integrate Google Authenticator into a PHP project",
- "homepage": "https://github.com/sonata-project/GoogleAuthenticator",
- "keywords": [
- "google authenticator"
- ],
- "abandoned": true
- },
- {
- "name": "spomky-labs/base64url",
- "version": "v2.0.4",
- "version_normalized": "2.0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Spomky-Labs/base64url.git",
- "reference": "7752ce931ec285da4ed1f4c5aa27e45e097be61d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Spomky-Labs/base64url/zipball/7752ce931ec285da4ed1f4c5aa27e45e097be61d",
- "reference": "7752ce931ec285da4ed1f4c5aa27e45e097be61d",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "require-dev": {
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^0.11|^0.12",
- "phpstan/phpstan-beberlei-assert": "^0.11|^0.12",
- "phpstan/phpstan-deprecation-rules": "^0.11|^0.12",
- "phpstan/phpstan-phpunit": "^0.11|^0.12",
- "phpstan/phpstan-strict-rules": "^0.11|^0.12"
- },
- "time": "2020-11-03T09:10:25+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Base64Url\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky-Labs/base64url/contributors"
- }
- ],
- "description": "Base 64 URL Safe Encoding/Decoding PHP Library",
- "homepage": "https://github.com/Spomky-Labs/base64url",
- "keywords": [
- "base64",
- "rfc4648",
- "safe",
- "url"
- ]
- },
- {
- "name": "stripe/stripe-php",
- "version": "v7.128.0",
- "version_normalized": "7.128.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/stripe/stripe-php.git",
- "reference": "c704949c49b72985c76cc61063aa26fefbd2724e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/stripe/stripe-php/zipball/c704949c49b72985c76cc61063aa26fefbd2724e",
- "reference": "c704949c49b72985c76cc61063aa26fefbd2724e",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "ext-json": "*",
- "ext-mbstring": "*",
- "php": ">=5.6.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "3.5.0",
- "phpstan/phpstan": "^1.2",
- "phpunit/phpunit": "^5.7 || ^9.0",
- "squizlabs/php_codesniffer": "^3.3"
- },
- "time": "2022-05-05T17:18:02+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Stripe\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Stripe and contributors",
- "homepage": "https://github.com/stripe/stripe-php/contributors"
- }
- ],
- "description": "Stripe PHP Library",
- "homepage": "https://stripe.com/",
- "keywords": [
- "api",
- "payment processing",
- "stripe"
- ],
- "support": {
- "issues": "https://github.com/stripe/stripe-php/issues",
- "source": "https://github.com/stripe/stripe-php/tree/v7.128.0"
- }
- },
- {
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.26.0",
- "version_normalized": "1.26.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
- "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1",
- "symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php72": "^1.10"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "time": "2022-05-24T11:49:31+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "files": [
- "bootstrap.php"
+ "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
+ "keywords": [
+ "cabundle",
+ "cacert",
+ "certificate",
+ "ssl",
+ "tls"
],
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
- },
- {
- "name": "Trevor Rowbotham",
- "email": "trevor.rowbotham@pm.me"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "symfony/polyfill-intl-normalizer",
- "version": "v1.26.0",
- "version_normalized": "1.26.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "219aa369ceff116e673852dce47c3a41794c14bd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
- "reference": "219aa369ceff116e673852dce47c3a41794c14bd",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "time": "2022-05-24T11:49:31+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "files": [
- "bootstrap.php"
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
],
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ "install-path": "./ca-bundle"
+ },
+ {
+ "name": "fgrosse/phpasn1",
+ "version": "v2.4.0",
+ "version_normalized": "2.4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fgrosse/PHPASN1.git",
+ "reference": "eef488991d53e58e60c9554b09b1201ca5ba9296"
},
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/eef488991d53e58e60c9554b09b1201ca5ba9296",
+ "reference": "eef488991d53e58e60c9554b09b1201ca5ba9296",
+ "shasum": ""
},
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's Normalizer class and related functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "intl",
- "normalizer",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
+ "require": {
+ "php": "~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0"
},
- {
- "url": "https://github.com/fabpot",
- "type": "github"
+ "require-dev": {
+ "php-coveralls/php-coveralls": "~2.0",
+ "phpunit/phpunit": "^6.3 || ^7.0 || ^8.0"
},
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "symfony/polyfill-php72",
- "version": "v1.26.0",
- "version_normalized": "1.26.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2",
- "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "time": "2022-05-24T11:49:31+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
+ "suggest": {
+ "ext-bcmath": "BCmath is the fallback extension for big integer calculations",
+ "ext-curl": "For loading OID information from the web if they have not bee defined statically",
+ "ext-gmp": "GMP is the preferred extension for big integer calculations",
+ "phpseclib/bcmath_compat": "BCmath polyfill for servers where neither GMP nor BCmath is available"
},
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "files": [
- "bootstrap.php"
+ "time": "2021-12-11T12:41:06+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "FG\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
],
- "psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "authors": [
+ {
+ "name": "Friedrich Große",
+ "email": "friedrich.grosse@gmail.com",
+ "homepage": "https://github.com/FGrosse",
+ "role": "Author"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/FGrosse/PHPASN1/contributors"
+ }
+ ],
+ "description": "A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.",
+ "homepage": "https://github.com/FGrosse/PHPASN1",
+ "keywords": [
+ "DER",
+ "asn.1",
+ "asn1",
+ "ber",
+ "binary",
+ "decoding",
+ "encoding",
+ "x.509",
+ "x.690",
+ "x509",
+ "x690"
+ ],
+ "support": {
+ "issues": "https://github.com/fgrosse/PHPASN1/issues",
+ "source": "https://github.com/fgrosse/PHPASN1/tree/v2.4.0"
},
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0"
+ "install-path": "../fgrosse/phpasn1"
},
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
+ {
+ "name": "geoip2/geoip2",
+ "version": "v2.13.0",
+ "version_normalized": "2.13.0.0",
+ "source": {
+ "type": "git",
+ "url": "git@github.com:maxmind/GeoIP2-php.git",
+ "reference": "6a41d8fbd6b90052bc34dff3b4252d0f88067b23"
},
- {
- "url": "https://github.com/fabpot",
- "type": "github"
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/6a41d8fbd6b90052bc34dff3b4252d0f88067b23",
+ "reference": "6a41d8fbd6b90052bc34dff3b4252d0f88067b23",
+ "shasum": ""
},
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "web-token/jwt-core",
- "version": "v1.3.10",
- "version_normalized": "1.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/web-token/jwt-core.git",
- "reference": "30e9df9e040d933043b16237f9dba7a3be746566"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/web-token/jwt-core/zipball/30e9df9e040d933043b16237f9dba7a3be746566",
- "reference": "30e9df9e040d933043b16237f9dba7a3be746566",
- "shasum": ""
- },
- "require": {
- "ext-gmp": "*",
- "ext-mbstring": "*",
- "fgrosse/phpasn1": "^2.0",
- "php": "^7.1",
- "spomky-labs/base64url": "^1.0|^2.0",
- "web-token/jwt-util-ecc": "^1.3"
- },
- "conflict": {
- "spomky-labs/jose": "*"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0|^7.0"
- },
- "time": "2020-03-20T13:29:04+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jose\\Component\\Core\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky"
+ "require": {
+ "ext-json": "*",
+ "maxmind-db/reader": "~1.8",
+ "maxmind/web-service-common": "~0.8",
+ "php": ">=7.2"
},
- {
- "name": "All contributors",
- "homepage": "https://github.com/web-token/jwt-core/contributors"
- }
- ],
- "description": "Core component of the JWT Framework.",
- "homepage": "https://github.com/web-token",
- "keywords": [
- "JOSE",
- "JWE",
- "JWK",
- "JWKSet",
- "JWS",
- "Jot",
- "RFC7515",
- "RFC7516",
- "RFC7517",
- "RFC7518",
- "RFC7519",
- "RFC7520",
- "bundle",
- "jwa",
- "jwt",
- "symfony"
- ]
- },
- {
- "name": "web-token/jwt-key-mgmt",
- "version": "v1.3.10",
- "version_normalized": "1.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/web-token/jwt-key-mgmt.git",
- "reference": "65b1e908e50b0e5be6b28135085d3c1097b81801"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/web-token/jwt-key-mgmt/zipball/65b1e908e50b0e5be6b28135085d3c1097b81801",
- "reference": "65b1e908e50b0e5be6b28135085d3c1097b81801",
- "shasum": ""
- },
- "require": {
- "lib-openssl": "*",
- "paragonie/sodium_compat": "^1.2",
- "web-token/jwt-core": "^1.3",
- "web-token/jwt-util-ecc": "^1.3"
- },
- "require-dev": {
- "php-http/httplug": "^1.1",
- "php-http/message-factory": "^1.0",
- "php-http/mock-client": "^1.0",
- "phpunit/phpunit": "^6.0|^7.0"
- },
- "suggest": {
- "php-http/httplug": "To enable JKU/X5U support.",
- "php-http/message-factory": "To enable JKU/X5U support."
- },
- "time": "2020-03-20T13:29:04+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jose\\Component\\KeyManagement\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky"
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "3.*",
+ "phpstan/phpstan": "*",
+ "phpunit/phpunit": "^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "3.*"
},
- {
- "name": "All contributors",
- "homepage": "https://github.com/web-token/jwt-key-mgmt/contributors"
- }
- ],
- "description": "Key Management component of the JWT Framework.",
- "homepage": "https://github.com/web-token",
- "keywords": [
- "JOSE",
- "JWE",
- "JWK",
- "JWKSet",
- "JWS",
- "Jot",
- "RFC7515",
- "RFC7516",
- "RFC7517",
- "RFC7518",
- "RFC7519",
- "RFC7520",
- "bundle",
- "jwa",
- "jwt",
- "symfony"
- ]
- },
- {
- "name": "web-token/jwt-signature",
- "version": "v1.3.10",
- "version_normalized": "1.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/web-token/jwt-signature.git",
- "reference": "00f23e997c9032536444f819bc3338ab475d69f9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/web-token/jwt-signature/zipball/00f23e997c9032536444f819bc3338ab475d69f9",
- "reference": "00f23e997c9032536444f819bc3338ab475d69f9",
- "shasum": ""
- },
- "require": {
- "web-token/jwt-core": "^1.3",
- "web-token/jwt-signature-algorithm-ecdsa": "^1.3",
- "web-token/jwt-signature-algorithm-eddsa": "^1.3",
- "web-token/jwt-signature-algorithm-hmac": "^1.3",
- "web-token/jwt-signature-algorithm-none": "^1.3",
- "web-token/jwt-signature-algorithm-rsa": "^1.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0|^7.0"
- },
- "suggest": {
- "web-token/jwt-signature-algorithm-ecdsa": "ECDSA Based Signature Algorithms",
- "web-token/jwt-signature-algorithm-eddsa": "EdDSA Based Signature Algorithms",
- "web-token/jwt-signature-algorithm-experimental": "Experimental Signature Algorithms",
- "web-token/jwt-signature-algorithm-hmac": "HMAC Based Signature Algorithms",
- "web-token/jwt-signature-algorithm-none": "None Signature Algorithm",
- "web-token/jwt-signature-algorithm-rsa": "RSA Based Signature Algorithms"
- },
- "time": "2020-03-20T13:29:04+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jose\\Component\\Signature\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky"
+ "time": "2022-08-05T20:32:58+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "GeoIp2\\": "src"
+ }
},
- {
- "name": "All contributors",
- "homepage": "https://github.com/web-token/jwt-signature/contributors"
- }
- ],
- "description": "Signature component of the JWT Framework.",
- "homepage": "https://github.com/web-token",
- "keywords": [
- "JOSE",
- "JWE",
- "JWK",
- "JWKSet",
- "JWS",
- "Jot",
- "RFC7515",
- "RFC7516",
- "RFC7517",
- "RFC7518",
- "RFC7519",
- "RFC7520",
- "bundle",
- "jwa",
- "jwt",
- "symfony"
- ]
- },
- {
- "name": "web-token/jwt-signature-algorithm-ecdsa",
- "version": "v1.3.10",
- "version_normalized": "1.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/web-token/jwt-signature-algorithm-ecdsa.git",
- "reference": "a3babd3b82c29c739d426271ccb9dc1a56222e36"
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Gregory J. Oschwald",
+ "email": "goschwald@maxmind.com",
+ "homepage": "https://www.maxmind.com/"
+ }
+ ],
+ "description": "MaxMind GeoIP2 PHP API",
+ "homepage": "https://github.com/maxmind/GeoIP2-php",
+ "keywords": [
+ "IP",
+ "geoip",
+ "geoip2",
+ "geolocation",
+ "maxmind"
+ ],
+ "install-path": "../geoip2/geoip2"
},
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/web-token/jwt-signature-algorithm-ecdsa/zipball/a3babd3b82c29c739d426271ccb9dc1a56222e36",
- "reference": "a3babd3b82c29c739d426271ccb9dc1a56222e36",
- "shasum": ""
- },
- "require": {
- "web-token/jwt-signature": "^1.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0|^7.0"
- },
- "time": "2020-03-20T13:29:04+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jose\\Component\\Signature\\Algorithm\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky"
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "6.5.8",
+ "version_normalized": "6.5.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
},
- {
- "name": "All contributors",
- "homepage": "https://github.com/web-token/jwt-core/contributors"
- }
- ],
- "description": "ECDSA Based Signature Algorithms the JWT Framework.",
- "homepage": "https://github.com/web-token",
- "keywords": [
- "JOSE",
- "JWE",
- "JWK",
- "JWKSet",
- "JWS",
- "Jot",
- "RFC7515",
- "RFC7516",
- "RFC7517",
- "RFC7518",
- "RFC7519",
- "RFC7520",
- "bundle",
- "jwa",
- "jwt",
- "symfony"
- ]
- },
- {
- "name": "web-token/jwt-signature-algorithm-eddsa",
- "version": "v1.3.10",
- "version_normalized": "1.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/web-token/jwt-signature-algorithm-eddsa.git",
- "reference": "b0dad134313b14b3ba077b63a7afcc2b38e5f793"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/web-token/jwt-signature-algorithm-eddsa/zipball/b0dad134313b14b3ba077b63a7afcc2b38e5f793",
- "reference": "b0dad134313b14b3ba077b63a7afcc2b38e5f793",
- "shasum": ""
- },
- "require": {
- "web-token/jwt-signature": "^1.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0|^7.0"
- },
- "time": "2020-03-20T13:29:04+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jose\\Component\\Signature\\Algorithm\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky"
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
+ "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
+ "shasum": ""
},
- {
- "name": "All contributors",
- "homepage": "https://github.com/web-token/jwt-core/contributors"
- }
- ],
- "description": "EdDSA Signature Algorithm the JWT Framework.",
- "homepage": "https://github.com/web-token",
- "keywords": [
- "JOSE",
- "JWE",
- "JWK",
- "JWKSet",
- "JWS",
- "Jot",
- "RFC7515",
- "RFC7516",
- "RFC7517",
- "RFC7518",
- "RFC7519",
- "RFC7520",
- "bundle",
- "jwa",
- "jwt",
- "symfony"
- ]
- },
- {
- "name": "web-token/jwt-signature-algorithm-hmac",
- "version": "v1.3.10",
- "version_normalized": "1.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/web-token/jwt-signature-algorithm-hmac.git",
- "reference": "3bc85e1d13804902a8d81a11f58c28c9a471b5e2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/web-token/jwt-signature-algorithm-hmac/zipball/3bc85e1d13804902a8d81a11f58c28c9a471b5e2",
- "reference": "3bc85e1d13804902a8d81a11f58c28c9a471b5e2",
- "shasum": ""
- },
- "require": {
- "web-token/jwt-signature": "^1.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0|^7.0"
- },
- "time": "2020-03-20T13:29:04+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jose\\Component\\Signature\\Algorithm\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky"
+ "require": {
+ "ext-json": "*",
+ "guzzlehttp/promises": "^1.0",
+ "guzzlehttp/psr7": "^1.9",
+ "php": ">=5.5",
+ "symfony/polyfill-intl-idn": "^1.17"
},
- {
- "name": "All contributors",
- "homepage": "https://github.com/web-token/jwt-core/contributors"
- }
- ],
- "description": "HMAC Based Signature Algorithms the JWT Framework.",
- "homepage": "https://github.com/web-token",
- "keywords": [
- "JOSE",
- "JWE",
- "JWK",
- "JWKSet",
- "JWS",
- "Jot",
- "RFC7515",
- "RFC7516",
- "RFC7517",
- "RFC7518",
- "RFC7519",
- "RFC7520",
- "bundle",
- "jwa",
- "jwt",
- "symfony"
- ]
- },
- {
- "name": "web-token/jwt-signature-algorithm-none",
- "version": "v1.3.10",
- "version_normalized": "1.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/web-token/jwt-signature-algorithm-none.git",
- "reference": "0391e160367e85846736e63ea6026e2dab667b6e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/web-token/jwt-signature-algorithm-none/zipball/0391e160367e85846736e63ea6026e2dab667b6e",
- "reference": "0391e160367e85846736e63ea6026e2dab667b6e",
- "shasum": ""
- },
- "require": {
- "web-token/jwt-signature": "^1.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0|^7.0"
- },
- "time": "2020-03-20T13:29:04+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jose\\Component\\Signature\\Algorithm\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky"
+ "require-dev": {
+ "ext-curl": "*",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+ "psr/log": "^1.1"
},
- {
- "name": "All contributors",
- "homepage": "https://github.com/web-token/jwt-core/contributors"
- }
- ],
- "description": "None Signature Algorithm the JWT Framework.",
- "homepage": "https://github.com/web-token",
- "keywords": [
- "JOSE",
- "JWE",
- "JWK",
- "JWKSet",
- "JWS",
- "Jot",
- "RFC7515",
- "RFC7516",
- "RFC7517",
- "RFC7518",
- "RFC7519",
- "RFC7520",
- "bundle",
- "jwa",
- "jwt",
- "symfony"
- ]
- },
- {
- "name": "web-token/jwt-signature-algorithm-rsa",
- "version": "v1.3.10",
- "version_normalized": "1.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/web-token/jwt-signature-algorithm-rsa.git",
- "reference": "344181ef6cdd3aca77f7ff7defc9fb502eb33ec0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/web-token/jwt-signature-algorithm-rsa/zipball/344181ef6cdd3aca77f7ff7defc9fb502eb33ec0",
- "reference": "344181ef6cdd3aca77f7ff7defc9fb502eb33ec0",
- "shasum": ""
- },
- "require": {
- "web-token/jwt-signature": "^1.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0|^7.0"
- },
- "time": "2020-03-20T13:29:04+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jose\\Component\\Signature\\Algorithm\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky"
+ "suggest": {
+ "psr/log": "Required for using the Log middleware"
},
- {
- "name": "All contributors",
- "homepage": "https://github.com/web-token/jwt-core/contributors"
- }
- ],
- "description": "RSA Based Signature Algorithms the JWT Framework.",
- "homepage": "https://github.com/web-token",
- "keywords": [
- "JOSE",
- "JWE",
- "JWK",
- "JWKSet",
- "JWS",
- "Jot",
- "RFC7515",
- "RFC7516",
- "RFC7517",
- "RFC7518",
- "RFC7519",
- "RFC7520",
- "bundle",
- "jwa",
- "jwt",
- "symfony"
- ]
- },
- {
- "name": "web-token/jwt-util-ecc",
- "version": "v1.3.10",
- "version_normalized": "1.3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/web-token/jwt-util-ecc.git",
- "reference": "2011af8454561ebce06a77fcd681c29a252e0068"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/web-token/jwt-util-ecc/zipball/2011af8454561ebce06a77fcd681c29a252e0068",
- "reference": "2011af8454561ebce06a77fcd681c29a252e0068",
- "shasum": ""
- },
- "require": {
- "ext-gmp": "*",
- "ext-mbstring": "*",
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0|^7.0"
- },
- "time": "2020-03-20T13:29:04+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jose\\Component\\Core\\Util\\Ecc\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky"
+ "time": "2022-06-20T22:16:07+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.5-dev"
+ }
},
- {
- "name": "All contributors",
- "homepage": "https://github.com/web-token/jwt-core/contributors"
- }
- ],
- "description": "ECC Tools for the JWT Framework.",
- "homepage": "https://github.com/web-token",
- "keywords": [
- "JOSE",
- "JWE",
- "JWK",
- "JWKSet",
- "JWS",
- "Jot",
- "RFC7515",
- "RFC7516",
- "RFC7517",
- "RFC7518",
- "RFC7519",
- "RFC7520",
- "bundle",
- "jwa",
- "jwt",
- "symfony"
- ]
- }
-]
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Jeremy Lindblom",
+ "email": "jeremeamia@gmail.com",
+ "homepage": "https://github.com/jeremeamia"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "homepage": "http://guzzlephp.org/",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "rest",
+ "web service"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/6.5.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../guzzlehttp/guzzle"
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "1.5.2",
+ "version_normalized": "1.5.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "b94b2807d85443f9719887892882d0329d1e2598"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
+ "reference": "b94b2807d85443f9719887892882d0329d1e2598",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^4.4 || ^5.1"
+ },
+ "time": "2022-08-28T14:55:35+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/1.5.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../guzzlehttp/promises"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "1.9.0",
+ "version_normalized": "1.9.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
+ "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0",
+ "psr/http-message": "~1.0",
+ "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+ },
+ "provide": {
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "ext-zlib": "*",
+ "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ },
+ "time": "2022-06-20T21:43:03+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/1.9.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../guzzlehttp/psr7"
+ },
+ {
+ "name": "maxmind-db/reader",
+ "version": "v1.11.0",
+ "version_normalized": "1.11.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
+ "reference": "b1f3c0699525336d09cc5161a2861268d9f2ae5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/b1f3c0699525336d09cc5161a2861268d9f2ae5b",
+ "reference": "b1f3c0699525336d09cc5161a2861268d9f2ae5b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "conflict": {
+ "ext-maxminddb": "<1.10.1,>=2.0.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "3.*",
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpstan/phpstan": "*",
+ "phpunit/phpcov": ">=6.0.0",
+ "phpunit/phpunit": ">=8.0.0,<10.0.0",
+ "squizlabs/php_codesniffer": "3.*"
+ },
+ "suggest": {
+ "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
+ "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
+ "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
+ },
+ "time": "2021-10-18T15:23:10+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "MaxMind\\Db\\": "src/MaxMind/Db"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Gregory J. Oschwald",
+ "email": "goschwald@maxmind.com",
+ "homepage": "https://www.maxmind.com/"
+ }
+ ],
+ "description": "MaxMind DB Reader API",
+ "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php",
+ "keywords": [
+ "database",
+ "geoip",
+ "geoip2",
+ "geolocation",
+ "maxmind"
+ ],
+ "support": {
+ "issues": "https://github.com/maxmind/MaxMind-DB-Reader-php/issues",
+ "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.11.0"
+ },
+ "install-path": "../maxmind-db/reader"
+ },
+ {
+ "name": "maxmind/web-service-common",
+ "version": "v0.9.0",
+ "version_normalized": "0.9.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/maxmind/web-service-common-php.git",
+ "reference": "4dc5a3e8df38aea4ca3b1096cee3a038094e9b53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/4dc5a3e8df38aea4ca3b1096cee3a038094e9b53",
+ "reference": "4dc5a3e8df38aea4ca3b1096cee3a038094e9b53",
+ "shasum": ""
+ },
+ "require": {
+ "composer/ca-bundle": "^1.0.3",
+ "ext-curl": "*",
+ "ext-json": "*",
+ "php": ">=7.2"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "3.*",
+ "phpstan/phpstan": "*",
+ "phpunit/phpunit": "^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "3.*"
+ },
+ "time": "2022-03-28T17:43:20+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "MaxMind\\Exception\\": "src/Exception",
+ "MaxMind\\WebService\\": "src/WebService"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Gregory Oschwald",
+ "email": "goschwald@maxmind.com"
+ }
+ ],
+ "description": "Internal MaxMind Web Service API",
+ "homepage": "https://github.com/maxmind/web-service-common-php",
+ "support": {
+ "issues": "https://github.com/maxmind/web-service-common-php/issues",
+ "source": "https://github.com/maxmind/web-service-common-php/tree/v0.9.0"
+ },
+ "install-path": "../maxmind/web-service-common"
+ },
+ {
+ "name": "minishlink/web-push",
+ "version": "v5.2.5",
+ "version_normalized": "5.2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-push-libs/web-push-php.git",
+ "reference": "0e75af425126435794ed42d7aa92119fd563e503"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-push-libs/web-push-php/zipball/0e75af425126435794ed42d7aa92119fd563e503",
+ "reference": "0e75af425126435794ed42d7aa92119fd563e503",
+ "shasum": ""
+ },
+ "require": {
+ "ext-gmp": "*",
+ "ext-json": "*",
+ "guzzlehttp/guzzle": "^6.2",
+ "lib-openssl": "*",
+ "php": "^7.1",
+ "web-token/jwt-key-mgmt": "^1.0",
+ "web-token/jwt-signature": "^1.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.14",
+ "phpstan/phpstan": "0.11.2",
+ "phpunit/phpunit": "^7.0"
+ },
+ "time": "2020-08-02T08:58:01+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Minishlink\\WebPush\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Louis Lagrange",
+ "email": "lagrange.louis@gmail.com",
+ "homepage": "https://github.com/Minishlink"
+ }
+ ],
+ "description": "Web Push library for PHP",
+ "homepage": "https://github.com/web-push-libs/web-push-php",
+ "keywords": [
+ "Push API",
+ "WebPush",
+ "notifications",
+ "push",
+ "web"
+ ],
+ "install-path": "../minishlink/web-push"
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "v9.99.100",
+ "version_normalized": "9.99.100.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">= 7"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*",
+ "vimeo/psalm": "^1"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "time": "2020-10-15T08:29:30+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "polyfill",
+ "pseudorandom",
+ "random"
+ ],
+ "install-path": "../paragonie/random_compat"
+ },
+ {
+ "name": "paragonie/sodium_compat",
+ "version": "v1.18.0",
+ "version_normalized": "1.18.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/sodium_compat.git",
+ "reference": "906e0b925895d3a5941eda25f371fbafb3cbc22f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/906e0b925895d3a5941eda25f371fbafb3cbc22f",
+ "reference": "906e0b925895d3a5941eda25f371fbafb3cbc22f",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": ">=1",
+ "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9"
+ },
+ "suggest": {
+ "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.",
+ "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
+ },
+ "time": "2022-09-13T20:54:27+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "autoload.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com"
+ },
+ {
+ "name": "Frank Denis",
+ "email": "jedisct1@pureftpd.org"
+ }
+ ],
+ "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists",
+ "keywords": [
+ "Authentication",
+ "BLAKE2b",
+ "ChaCha20",
+ "ChaCha20-Poly1305",
+ "Chapoly",
+ "Curve25519",
+ "Ed25519",
+ "EdDSA",
+ "Edwards-curve Digital Signature Algorithm",
+ "Elliptic Curve Diffie-Hellman",
+ "Poly1305",
+ "Pure-PHP cryptography",
+ "RFC 7748",
+ "RFC 8032",
+ "Salpoly",
+ "Salsa20",
+ "X25519",
+ "XChaCha20-Poly1305",
+ "XSalsa20-Poly1305",
+ "Xchacha20",
+ "Xsalsa20",
+ "aead",
+ "cryptography",
+ "ecdh",
+ "elliptic curve",
+ "elliptic curve cryptography",
+ "encryption",
+ "libsodium",
+ "php",
+ "public-key cryptography",
+ "secret-key cryptography",
+ "side-channel resistant"
+ ],
+ "support": {
+ "issues": "https://github.com/paragonie/sodium_compat/issues",
+ "source": "https://github.com/paragonie/sodium_compat/tree/v1.18.0"
+ },
+ "install-path": "../paragonie/sodium_compat"
+ },
+ {
+ "name": "paypal/paypal-checkout-sdk",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paypal/Checkout-PHP-SDK.git",
+ "reference": "19992ce7051ff9e47e643f28abb8cc1b3e5f1812"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paypal/Checkout-PHP-SDK/zipball/19992ce7051ff9e47e643f28abb8cc1b3e5f1812",
+ "reference": "19992ce7051ff9e47e643f28abb8cc1b3e5f1812",
+ "shasum": ""
+ },
+ "require": {
+ "paypal/paypalhttp": "1.0.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7"
+ },
+ "time": "2021-09-21T20:57:38+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PayPalCheckoutSdk\\": "lib/PayPalCheckoutSdk",
+ "Sample\\": "samples/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "https://github.com/paypal/Checkout-PHP-SDK/blob/master/LICENSE"
+ ],
+ "authors": [
+ {
+ "name": "PayPal",
+ "homepage": "https://github.com/paypal/Checkout-PHP-SDK/contributors"
+ }
+ ],
+ "description": "PayPal's PHP SDK for Checkout REST APIs",
+ "homepage": "http://github.com/paypal/Checkout-PHP-SDK/",
+ "keywords": [
+ "checkout",
+ "orders",
+ "payments",
+ "paypal",
+ "rest",
+ "sdk"
+ ],
+ "support": {
+ "source": "https://github.com/paypal/Checkout-PHP-SDK/tree/1.0.2"
+ },
+ "install-path": "../paypal/paypal-checkout-sdk"
+ },
+ {
+ "name": "paypal/paypalhttp",
+ "version": "1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paypal/paypalhttp_php.git",
+ "reference": "7b09c89c80828e842c79230e7f156b61fbb68d25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paypal/paypalhttp_php/zipball/7b09c89c80828e842c79230e7f156b61fbb68d25",
+ "reference": "7b09c89c80828e842c79230e7f156b61fbb68d25",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7",
+ "wiremock-php/wiremock-php": "1.43.2"
+ },
+ "time": "2021-09-14T21:35:26+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PayPalHttp\\": "lib/PayPalHttp"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PayPal",
+ "homepage": "https://github.com/paypal/paypalhttp_php/contributors"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/paypal/paypalhttp_php/issues",
+ "source": "https://github.com/paypal/paypalhttp_php/tree/1.0.1"
+ },
+ "install-path": "../paypal/paypalhttp"
+ },
+ {
+ "name": "phpmailer/phpmailer",
+ "version": "v6.6.4",
+ "version_normalized": "6.6.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPMailer/PHPMailer.git",
+ "reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a94fdebaea6bd17f51be0c2373ab80d3d681269b",
+ "reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-hash": "*",
+ "php": ">=5.5.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "doctrine/annotations": "^1.2",
+ "php-parallel-lint/php-console-highlighter": "^1.0.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3.2",
+ "phpcompatibility/php-compatibility": "^9.3.5",
+ "roave/security-advisories": "dev-latest",
+ "squizlabs/php_codesniffer": "^3.6.2",
+ "yoast/phpunit-polyfills": "^1.0.0"
+ },
+ "suggest": {
+ "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses",
+ "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
+ "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
+ "psr/log": "For optional PSR-3 debug logging",
+ "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
+ "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
+ },
+ "time": "2022-08-22T09:22:00+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PHPMailer\\PHPMailer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-2.1-only"
+ ],
+ "authors": [
+ {
+ "name": "Marcus Bointon",
+ "email": "phpmailer@synchromedia.co.uk"
+ },
+ {
+ "name": "Jim Jagielski",
+ "email": "jimjag@gmail.com"
+ },
+ {
+ "name": "Andy Prevost",
+ "email": "codeworxtech@users.sourceforge.net"
+ },
+ {
+ "name": "Brent R. Matzelle"
+ }
+ ],
+ "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
+ "support": {
+ "issues": "https://github.com/PHPMailer/PHPMailer/issues",
+ "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Synchro",
+ "type": "github"
+ }
+ ],
+ "install-path": "../phpmailer/phpmailer"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2016-08-06T14:39:51+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "install-path": "../psr/http-message"
+ },
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "version_normalized": "3.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "time": "2019-03-08T08:55:37+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "install-path": "../ralouphie/getallheaders"
+ },
+ {
+ "name": "sonata-project/google-authenticator",
+ "version": "2.3.1",
+ "version_normalized": "2.3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sonata-project/GoogleAuthenticator.git",
+ "reference": "71a4189228f93a9662574dc8c65e77ef55061b59"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sonata-project/GoogleAuthenticator/zipball/71a4189228f93a9662574dc8c65e77ef55061b59",
+ "reference": "71a4189228f93a9662574dc8c65e77ef55061b59",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ^8.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^5.1.8"
+ },
+ "time": "2021-02-15T19:23:18+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Google\\Authenticator\\": "src/",
+ "Sonata\\GoogleAuthenticator\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Thomas Rabaix",
+ "email": "thomas.rabaix@gmail.com"
+ },
+ {
+ "name": "Christian Stocker",
+ "email": "me@chregu.tv"
+ },
+ {
+ "name": "Andre DeMarre",
+ "homepage": "http://www.devnetwork.net/viewtopic.php?f=50&t=94989"
+ }
+ ],
+ "description": "Library to integrate Google Authenticator into a PHP project",
+ "homepage": "https://github.com/sonata-project/GoogleAuthenticator",
+ "keywords": [
+ "google authenticator"
+ ],
+ "support": {
+ "issues": "https://github.com/sonata-project/GoogleAuthenticator/issues",
+ "source": "https://github.com/sonata-project/GoogleAuthenticator/tree/2.3.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/OskarStark",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/VincentLanglet",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/core23",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/wbloszyk",
+ "type": "github"
+ }
+ ],
+ "abandoned": true,
+ "install-path": "../sonata-project/google-authenticator"
+ },
+ {
+ "name": "spomky-labs/base64url",
+ "version": "v2.0.4",
+ "version_normalized": "2.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Spomky-Labs/base64url.git",
+ "reference": "7752ce931ec285da4ed1f4c5aa27e45e097be61d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Spomky-Labs/base64url/zipball/7752ce931ec285da4ed1f4c5aa27e45e097be61d",
+ "reference": "7752ce931ec285da4ed1f4c5aa27e45e097be61d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.11|^0.12",
+ "phpstan/phpstan-beberlei-assert": "^0.11|^0.12",
+ "phpstan/phpstan-deprecation-rules": "^0.11|^0.12",
+ "phpstan/phpstan-phpunit": "^0.11|^0.12",
+ "phpstan/phpstan-strict-rules": "^0.11|^0.12"
+ },
+ "time": "2020-11-03T09:10:25+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Base64Url\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky-Labs/base64url/contributors"
+ }
+ ],
+ "description": "Base 64 URL Safe Encoding/Decoding PHP Library",
+ "homepage": "https://github.com/Spomky-Labs/base64url",
+ "keywords": [
+ "base64",
+ "rfc4648",
+ "safe",
+ "url"
+ ],
+ "install-path": "../spomky-labs/base64url"
+ },
+ {
+ "name": "stripe/stripe-php",
+ "version": "v7.128.0",
+ "version_normalized": "7.128.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/stripe/stripe-php.git",
+ "reference": "c704949c49b72985c76cc61063aa26fefbd2724e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/stripe/stripe-php/zipball/c704949c49b72985c76cc61063aa26fefbd2724e",
+ "reference": "c704949c49b72985c76cc61063aa26fefbd2724e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "php": ">=5.6.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "3.5.0",
+ "phpstan/phpstan": "^1.2",
+ "phpunit/phpunit": "^5.7 || ^9.0",
+ "squizlabs/php_codesniffer": "^3.3"
+ },
+ "time": "2022-05-05T17:18:02+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Stripe\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Stripe and contributors",
+ "homepage": "https://github.com/stripe/stripe-php/contributors"
+ }
+ ],
+ "description": "Stripe PHP Library",
+ "homepage": "https://stripe.com/",
+ "keywords": [
+ "api",
+ "payment processing",
+ "stripe"
+ ],
+ "support": {
+ "issues": "https://github.com/stripe/stripe-php/issues",
+ "source": "https://github.com/stripe/stripe-php/tree/v7.128.0"
+ },
+ "install-path": "../stripe/stripe-php"
+ },
+ {
+ "name": "symfony/polyfill-intl-idn",
+ "version": "v1.26.0",
+ "version_normalized": "1.26.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-idn.git",
+ "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
+ "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "symfony/polyfill-intl-normalizer": "^1.10",
+ "symfony/polyfill-php72": "^1.10"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "time": "2022-05-24T11:49:31+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.26-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Laurent Bassin",
+ "email": "laurent@bassin.info"
+ },
+ {
+ "name": "Trevor Rowbotham",
+ "email": "trevor.rowbotham@pm.me"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "idn",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-intl-idn"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.26.0",
+ "version_normalized": "1.26.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "219aa369ceff116e673852dce47c3a41794c14bd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
+ "reference": "219aa369ceff116e673852dce47c3a41794c14bd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "time": "2022-05-24T11:49:31+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.26-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-intl-normalizer"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.26.0",
+ "version_normalized": "1.26.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2",
+ "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "time": "2022-05-24T11:49:31+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.26-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php72"
+ },
+ {
+ "name": "web-token/jwt-core",
+ "version": "v1.3.10",
+ "version_normalized": "1.3.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-core.git",
+ "reference": "30e9df9e040d933043b16237f9dba7a3be746566"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-core/zipball/30e9df9e040d933043b16237f9dba7a3be746566",
+ "reference": "30e9df9e040d933043b16237f9dba7a3be746566",
+ "shasum": ""
+ },
+ "require": {
+ "ext-gmp": "*",
+ "ext-mbstring": "*",
+ "fgrosse/phpasn1": "^2.0",
+ "php": "^7.1",
+ "spomky-labs/base64url": "^1.0|^2.0",
+ "web-token/jwt-util-ecc": "^1.3"
+ },
+ "conflict": {
+ "spomky-labs/jose": "*"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0|^7.0"
+ },
+ "time": "2020-03-20T13:29:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\Core\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-core/contributors"
+ }
+ ],
+ "description": "Core component of the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "install-path": "../web-token/jwt-core"
+ },
+ {
+ "name": "web-token/jwt-key-mgmt",
+ "version": "v1.3.10",
+ "version_normalized": "1.3.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-key-mgmt.git",
+ "reference": "65b1e908e50b0e5be6b28135085d3c1097b81801"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-key-mgmt/zipball/65b1e908e50b0e5be6b28135085d3c1097b81801",
+ "reference": "65b1e908e50b0e5be6b28135085d3c1097b81801",
+ "shasum": ""
+ },
+ "require": {
+ "lib-openssl": "*",
+ "paragonie/sodium_compat": "^1.2",
+ "web-token/jwt-core": "^1.3",
+ "web-token/jwt-util-ecc": "^1.3"
+ },
+ "require-dev": {
+ "php-http/httplug": "^1.1",
+ "php-http/message-factory": "^1.0",
+ "php-http/mock-client": "^1.0",
+ "phpunit/phpunit": "^6.0|^7.0"
+ },
+ "suggest": {
+ "php-http/httplug": "To enable JKU/X5U support.",
+ "php-http/message-factory": "To enable JKU/X5U support."
+ },
+ "time": "2020-03-20T13:29:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\KeyManagement\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-key-mgmt/contributors"
+ }
+ ],
+ "description": "Key Management component of the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "install-path": "../web-token/jwt-key-mgmt"
+ },
+ {
+ "name": "web-token/jwt-signature",
+ "version": "v1.3.10",
+ "version_normalized": "1.3.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-signature.git",
+ "reference": "00f23e997c9032536444f819bc3338ab475d69f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-signature/zipball/00f23e997c9032536444f819bc3338ab475d69f9",
+ "reference": "00f23e997c9032536444f819bc3338ab475d69f9",
+ "shasum": ""
+ },
+ "require": {
+ "web-token/jwt-core": "^1.3",
+ "web-token/jwt-signature-algorithm-ecdsa": "^1.3",
+ "web-token/jwt-signature-algorithm-eddsa": "^1.3",
+ "web-token/jwt-signature-algorithm-hmac": "^1.3",
+ "web-token/jwt-signature-algorithm-none": "^1.3",
+ "web-token/jwt-signature-algorithm-rsa": "^1.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0|^7.0"
+ },
+ "suggest": {
+ "web-token/jwt-signature-algorithm-ecdsa": "ECDSA Based Signature Algorithms",
+ "web-token/jwt-signature-algorithm-eddsa": "EdDSA Based Signature Algorithms",
+ "web-token/jwt-signature-algorithm-experimental": "Experimental Signature Algorithms",
+ "web-token/jwt-signature-algorithm-hmac": "HMAC Based Signature Algorithms",
+ "web-token/jwt-signature-algorithm-none": "None Signature Algorithm",
+ "web-token/jwt-signature-algorithm-rsa": "RSA Based Signature Algorithms"
+ },
+ "time": "2020-03-20T13:29:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\Signature\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-signature/contributors"
+ }
+ ],
+ "description": "Signature component of the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "install-path": "../web-token/jwt-signature"
+ },
+ {
+ "name": "web-token/jwt-signature-algorithm-ecdsa",
+ "version": "v1.3.10",
+ "version_normalized": "1.3.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-signature-algorithm-ecdsa.git",
+ "reference": "a3babd3b82c29c739d426271ccb9dc1a56222e36"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-signature-algorithm-ecdsa/zipball/a3babd3b82c29c739d426271ccb9dc1a56222e36",
+ "reference": "a3babd3b82c29c739d426271ccb9dc1a56222e36",
+ "shasum": ""
+ },
+ "require": {
+ "web-token/jwt-signature": "^1.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0|^7.0"
+ },
+ "time": "2020-03-20T13:29:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\Signature\\Algorithm\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-core/contributors"
+ }
+ ],
+ "description": "ECDSA Based Signature Algorithms the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "install-path": "../web-token/jwt-signature-algorithm-ecdsa"
+ },
+ {
+ "name": "web-token/jwt-signature-algorithm-eddsa",
+ "version": "v1.3.10",
+ "version_normalized": "1.3.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-signature-algorithm-eddsa.git",
+ "reference": "b0dad134313b14b3ba077b63a7afcc2b38e5f793"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-signature-algorithm-eddsa/zipball/b0dad134313b14b3ba077b63a7afcc2b38e5f793",
+ "reference": "b0dad134313b14b3ba077b63a7afcc2b38e5f793",
+ "shasum": ""
+ },
+ "require": {
+ "web-token/jwt-signature": "^1.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0|^7.0"
+ },
+ "time": "2020-03-20T13:29:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\Signature\\Algorithm\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-core/contributors"
+ }
+ ],
+ "description": "EdDSA Signature Algorithm the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "install-path": "../web-token/jwt-signature-algorithm-eddsa"
+ },
+ {
+ "name": "web-token/jwt-signature-algorithm-hmac",
+ "version": "v1.3.10",
+ "version_normalized": "1.3.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-signature-algorithm-hmac.git",
+ "reference": "3bc85e1d13804902a8d81a11f58c28c9a471b5e2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-signature-algorithm-hmac/zipball/3bc85e1d13804902a8d81a11f58c28c9a471b5e2",
+ "reference": "3bc85e1d13804902a8d81a11f58c28c9a471b5e2",
+ "shasum": ""
+ },
+ "require": {
+ "web-token/jwt-signature": "^1.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0|^7.0"
+ },
+ "time": "2020-03-20T13:29:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\Signature\\Algorithm\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-core/contributors"
+ }
+ ],
+ "description": "HMAC Based Signature Algorithms the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "install-path": "../web-token/jwt-signature-algorithm-hmac"
+ },
+ {
+ "name": "web-token/jwt-signature-algorithm-none",
+ "version": "v1.3.10",
+ "version_normalized": "1.3.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-signature-algorithm-none.git",
+ "reference": "0391e160367e85846736e63ea6026e2dab667b6e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-signature-algorithm-none/zipball/0391e160367e85846736e63ea6026e2dab667b6e",
+ "reference": "0391e160367e85846736e63ea6026e2dab667b6e",
+ "shasum": ""
+ },
+ "require": {
+ "web-token/jwt-signature": "^1.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0|^7.0"
+ },
+ "time": "2020-03-20T13:29:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\Signature\\Algorithm\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-core/contributors"
+ }
+ ],
+ "description": "None Signature Algorithm the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "install-path": "../web-token/jwt-signature-algorithm-none"
+ },
+ {
+ "name": "web-token/jwt-signature-algorithm-rsa",
+ "version": "v1.3.10",
+ "version_normalized": "1.3.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-signature-algorithm-rsa.git",
+ "reference": "344181ef6cdd3aca77f7ff7defc9fb502eb33ec0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-signature-algorithm-rsa/zipball/344181ef6cdd3aca77f7ff7defc9fb502eb33ec0",
+ "reference": "344181ef6cdd3aca77f7ff7defc9fb502eb33ec0",
+ "shasum": ""
+ },
+ "require": {
+ "web-token/jwt-signature": "^1.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0|^7.0"
+ },
+ "time": "2020-03-20T13:29:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\Signature\\Algorithm\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-core/contributors"
+ }
+ ],
+ "description": "RSA Based Signature Algorithms the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "install-path": "../web-token/jwt-signature-algorithm-rsa"
+ },
+ {
+ "name": "web-token/jwt-util-ecc",
+ "version": "v1.3.10",
+ "version_normalized": "1.3.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-util-ecc.git",
+ "reference": "2011af8454561ebce06a77fcd681c29a252e0068"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-util-ecc/zipball/2011af8454561ebce06a77fcd681c29a252e0068",
+ "reference": "2011af8454561ebce06a77fcd681c29a252e0068",
+ "shasum": ""
+ },
+ "require": {
+ "ext-gmp": "*",
+ "ext-mbstring": "*",
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0|^7.0"
+ },
+ "time": "2020-03-20T13:29:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\Core\\Util\\Ecc\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-core/contributors"
+ }
+ ],
+ "description": "ECC Tools for the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "install-path": "../web-token/jwt-util-ecc"
+ }
+ ],
+ "dev": false,
+ "dev-package-names": []
+}
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index 5e7fbb8cf..58f397f71 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -5,7 +5,7 @@
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
- 'reference' => 'bdcf00e53774eee9bdd53d6213a3df5e7fd37b05',
+ 'reference' => 'c45926b660b68b00d59b86ec692d308c0bb247d1',
'name' => '1ka/1ka.si',
'dev' => false,
),
@@ -16,16 +16,16 @@
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
- 'reference' => 'bdcf00e53774eee9bdd53d6213a3df5e7fd37b05',
+ 'reference' => 'c45926b660b68b00d59b86ec692d308c0bb247d1',
'dev_requirement' => false,
),
'composer/ca-bundle' => array(
- 'pretty_version' => '1.3.2',
- 'version' => '1.3.2.0',
+ 'pretty_version' => '1.3.3',
+ 'version' => '1.3.3.0',
'type' => 'library',
'install_path' => __DIR__ . '/./ca-bundle',
'aliases' => array(),
- 'reference' => 'fd5dd441932a7e10ca6e5b490e272d34c8430640',
+ 'reference' => '30897edbfb15e784fe55587b4f73ceefd3c4d98c',
'dev_requirement' => false,
),
'fgrosse/phpasn1' => array(
@@ -38,12 +38,12 @@
'dev_requirement' => false,
),
'geoip2/geoip2' => array(
- 'pretty_version' => 'v2.12.2',
- 'version' => '2.12.2.0',
+ 'pretty_version' => 'v2.13.0',
+ 'version' => '2.13.0.0',
'type' => 'library',
'install_path' => __DIR__ . '/../geoip2/geoip2',
'aliases' => array(),
- 'reference' => '83adb44ac4b9553d36b579a14673ed124583082f',
+ 'reference' => '6a41d8fbd6b90052bc34dff3b4252d0f88067b23',
'dev_requirement' => false,
),
'guzzlehttp/guzzle' => array(
@@ -56,12 +56,12 @@
'dev_requirement' => false,
),
'guzzlehttp/promises' => array(
- 'pretty_version' => '1.5.1',
- 'version' => '1.5.1.0',
+ 'pretty_version' => '1.5.2',
+ 'version' => '1.5.2.0',
'type' => 'library',
'install_path' => __DIR__ . '/../guzzlehttp/promises',
'aliases' => array(),
- 'reference' => 'fe752aedc9fd8fcca3fe7ad05d419d32998a06da',
+ 'reference' => 'b94b2807d85443f9719887892882d0329d1e2598',
'dev_requirement' => false,
),
'guzzlehttp/psr7' => array(
@@ -110,12 +110,12 @@
'dev_requirement' => false,
),
'paragonie/sodium_compat' => array(
- 'pretty_version' => 'v1.17.1',
- 'version' => '1.17.1.0',
+ 'pretty_version' => 'v1.18.0',
+ 'version' => '1.18.0.0',
'type' => 'library',
'install_path' => __DIR__ . '/../paragonie/sodium_compat',
'aliases' => array(),
- 'reference' => 'ac994053faac18d386328c91c7900f930acadf1e',
+ 'reference' => '906e0b925895d3a5941eda25f371fbafb3cbc22f',
'dev_requirement' => false,
),
'paypal/paypal-checkout-sdk' => array(
@@ -137,12 +137,12 @@
'dev_requirement' => false,
),
'phpmailer/phpmailer' => array(
- 'pretty_version' => 'v6.6.3',
- 'version' => '6.6.3.0',
+ 'pretty_version' => 'v6.6.4',
+ 'version' => '6.6.4.0',
'type' => 'library',
'install_path' => __DIR__ . '/../phpmailer/phpmailer',
'aliases' => array(),
- 'reference' => '9400f305a898f194caff5521f64e5dfa926626f3',
+ 'reference' => 'a94fdebaea6bd17f51be0c2373ab80d3d681269b',
'dev_requirement' => false,
),
'psr/http-message' => array(
diff --git a/vendor/geoip2/geoip2/CHANGELOG.md b/vendor/geoip2/geoip2/CHANGELOG.md
index 5af399874..6af744f7d 100644
--- a/vendor/geoip2/geoip2/CHANGELOG.md
+++ b/vendor/geoip2/geoip2/CHANGELOG.md
@@ -1,6 +1,47 @@
CHANGELOG
=========
+2.13.0 (2022-08-05)
+-------------------
+
+* The model class names are no longer constructed by concatenating strings.
+ This change was made to improve support for tools like PHP-Scoper.
+ Reported by Andrew Mead. GitHub #194.
+* Box 4.0.1 is now used to generate the `geoip2.phar` file.
+
+2.12.2 (2021-11-30)
+-------------------
+
+* The `geoip2.phar` now works when included from another directory.
+ Reported by Eduardo Ruiz. GitHub #179.
+
+2.12.1 (2021-11-23)
+-------------------
+
+* The `geoip2.phar` included in 2.12.0 would only work in CLI applications.
+ This was due to a change in Box 3.x. The Phar should now work in all
+ applications. This release only affects users of the Phar file.
+
+2.12.0 (2021-11-18)
+-------------------
+
+* Support for mobile country code (MCC) and mobile network codes (MNC) was
+ added for the GeoIP2 ISP and Enterprise databases as well as the GeoIP2
+ City and Insights web services. `$mobileCountryCode` and
+ `$mobileNetworkCode` properties were added to `GeoIp2\Model\Isp`
+ for the GeoIP2 ISP database and `GeoIp2\Record\Traits` for the Enterprise
+ database and the GeoIP2 City and Insights web services. We expect this data
+ to be available by late January, 2022.
+* `geoip2.phar` is now generated with Box 3.x.
+
+2.11.0 (2020-10-01)
+-------------------
+
+* IMPORTANT: PHP 7.2 or greater is now required.
+* Added the `isResidentialProxy` property to `GeoIp2\Model\AnonymousIP` and
+ `GeoIp2\Record\Traits`.
+* Additional type hints have been added.
+
2.10.0 (2019-12-12)
-------------------
diff --git a/vendor/geoip2/geoip2/README.md b/vendor/geoip2/geoip2/README.md
index e4a74dc10..ea08e27c9 100644
--- a/vendor/geoip2/geoip2/README.md
+++ b/vendor/geoip2/geoip2/README.md
@@ -2,11 +2,9 @@
## Description ##
-This package provides an API for the GeoIP2
-[web services](https://dev.maxmind.com/geoip/geoip2/web-services) and
-[databases](https://dev.maxmind.com/geoip/geoip2/downloadable). The API also
-works with the free
-[GeoLite2 databases](https://dev.maxmind.com/geoip/geoip2/geolite2/).
+This package provides an API for the GeoIP2 and GeoLite2
+[web services](https://dev.maxmind.com/geoip/docs/web-services?lang=en) and
+[databases](https://dev.maxmind.com/geoip/docs/databases?lang=en).
## Install via Composer ##
@@ -26,7 +24,7 @@ You should now have the file `composer.phar` in your project directory.
Run in your project root:
-```
+```sh
php composer.phar require geoip2/geoip2:~2.0
```
@@ -260,18 +258,51 @@ print($record->network . "\n"); // '128.101.101.101/32'
```
+## Database Updates ##
+
+You can keep your databases up to date with our
+[GeoIP Update program](https://github.com/maxmind/geoipupdate/releases).
+[Learn more about GeoIP Update on our developer
+portal.](https://dev.maxmind.com/geoip/updating-databases?lang=en)
+
+There is also a third-party tool for updating databases using PHP and
+Composer. MaxMind does not offer support for this tool or maintain it.
+[Learn more about the Geoip2 Update tool for PHP and Composer on its
+GitHub page.](https://github.com/tronovav/geoip2-update)
+
## Web Service Client ##
### Usage ###
To use this API, you must create a new `\GeoIp2\WebService\Client`
-object with your `$accountId` and `$licenseKey`, then you call the method
-corresponding to a specific end point, passing it the IP address you want to
-look up.
+object with your `$accountId` and `$licenseKey`:
-If the request succeeds, the method call will return a model class for the end
-point you called. This model in turn contains multiple record classes, each of
-which represents part of the data returned by the web service.
+```php
+$client = new Client(42, 'abcdef123456');
+```
+
+You may also call the constructor with additional arguments. The third argument
+specifies the language preferences when using the `->name` method on the model
+classes that this client creates. The fourth argument is additional options
+such as `host` and `timeout`.
+
+For instance, to call the GeoLite2 web service instead of the GeoIP2 web
+service:
+
+```php
+$client = new Client(42, 'abcdef123456', ['en'], ['host' => 'geolite.info']);
+```
+
+After creating the client, you may now call the method corresponding to a
+specific endpoint with the IP address to look up, e.g.:
+
+```php
+$record = $client->city('128.101.101.101');
+```
+
+If the request succeeds, the method call will return a model class for the
+endpoint you called. This model in turn contains multiple record classes, each
+of which represents part of the data returned by the web service.
If there is an error, a structured exception is thrown.
@@ -286,7 +317,9 @@ use GeoIp2\WebService\Client;
// This creates a Client object that can be reused across requests.
// Replace "42" with your account ID and "license_key" with your license
-// key.
+// key. Set the "host" to "geolite.info" in the fourth argument options
+// array to use the GeoLite2 web service instead of the GeoIP2 web
+// service.
$client = new Client(42, 'abcdef123456');
// Replace "city" with the method corresponding to the web service that
@@ -336,7 +369,7 @@ Because of these factors, it is possible for any end point to return a record
where some or all of the attributes are unpopulated.
See the
-[GeoIP2 Precision web service docs](https://dev.maxmind.com/geoip/geoip2/web-services)
+[GeoIP2 web service docs](https://dev.maxmind.com/geoip/docs/web-services?lang=en)
for details on what data each end point may return.
The only piece of data which is always returned is the `ipAddress`
@@ -386,7 +419,7 @@ to the client API, please see
## Requirements ##
-This library requires PHP 5.6 or greater.
+This library requires PHP 7.2 or greater.
This library also relies on the [MaxMind DB Reader](https://github.com/maxmind/MaxMind-DB-Reader-php).
@@ -404,6 +437,6 @@ The GeoIP2 PHP API uses [Semantic Versioning](https://semver.org/).
## Copyright and License ##
-This software is Copyright (c) 2013-2019 by MaxMind, Inc.
+This software is Copyright (c) 2013-2020 by MaxMind, Inc.
This is free software, licensed under the Apache License, Version 2.0.
diff --git a/vendor/geoip2/geoip2/composer.json b/vendor/geoip2/geoip2/composer.json
index a945d1ab8..e29513b69 100644
--- a/vendor/geoip2/geoip2/composer.json
+++ b/vendor/geoip2/geoip2/composer.json
@@ -13,15 +13,16 @@
}
],
"require": {
- "maxmind-db/reader": "~1.5",
- "maxmind/web-service-common": "~0.6",
- "php": ">=5.6",
+ "maxmind-db/reader": "~1.8",
+ "maxmind/web-service-common": "~0.8",
+ "php": ">=7.2",
"ext-json": "*"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "2.*",
- "phpunit/phpunit": "5.*",
- "squizlabs/php_codesniffer": "3.*"
+ "friendsofphp/php-cs-fixer": "3.*",
+ "phpunit/phpunit": "^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "3.*",
+ "phpstan/phpstan": "*"
},
"autoload": {
"psr-4": {
diff --git a/vendor/geoip2/geoip2/examples/benchmark.php b/vendor/geoip2/geoip2/examples/benchmark.php
index 7af2a5db1..a735a78ba 100644
--- a/vendor/geoip2/geoip2/examples/benchmark.php
+++ b/vendor/geoip2/geoip2/examples/benchmark.php
@@ -10,7 +10,8 @@ $reader = new Reader('GeoIP2-City.mmdb');
$count = 500000;
$startTime = microtime(true);
for ($i = 0; $i < $count; ++$i) {
- $ip = long2ip(rand(0, pow(2, 32) - 1));
+ $ip = long2ip(rand(0, 2 ** 32 - 1));
+
try {
$t = $reader->city($ip);
} catch (\GeoIp2\Exception\AddressNotFoundException $e) {
diff --git a/vendor/geoip2/geoip2/src/Database/Reader.php b/vendor/geoip2/geoip2/src/Database/Reader.php
index 813654753..4dabc5d15 100644
--- a/vendor/geoip2/geoip2/src/Database/Reader.php
+++ b/vendor/geoip2/geoip2/src/Database/Reader.php
@@ -1,8 +1,19 @@
+ */
private $locales;
/**
@@ -48,8 +70,8 @@ class Reader implements ProviderInterface
* is corrupt or invalid
*/
public function __construct(
- $filename,
- $locales = ['en']
+ string $filename,
+ array $locales = ['en']
) {
$this->dbReader = new DbReader($filename);
$this->dbType = $this->dbReader->metadata()->databaseType;
@@ -65,12 +87,11 @@ class Reader implements ProviderInterface
* not in the database
* @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
* is corrupt or invalid
- *
- * @return \GeoIp2\Model\City
*/
- public function city($ipAddress)
+ public function city(string $ipAddress): City
{
- return $this->modelFor('City', 'City', $ipAddress);
+ // @phpstan-ignore-next-line
+ return $this->modelFor(City::class, 'City', $ipAddress);
}
/**
@@ -82,12 +103,11 @@ class Reader implements ProviderInterface
* not in the database
* @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
* is corrupt or invalid
- *
- * @return \GeoIp2\Model\Country
*/
- public function country($ipAddress)
+ public function country(string $ipAddress): Country
{
- return $this->modelFor('Country', 'Country', $ipAddress);
+ // @phpstan-ignore-next-line
+ return $this->modelFor(Country::class, 'Country', $ipAddress);
}
/**
@@ -99,13 +119,12 @@ class Reader implements ProviderInterface
* not in the database
* @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
* is corrupt or invalid
- *
- * @return \GeoIp2\Model\AnonymousIp
*/
- public function anonymousIp($ipAddress)
+ public function anonymousIp(string $ipAddress): AnonymousIp
{
+ // @phpstan-ignore-next-line
return $this->flatModelFor(
- 'AnonymousIp',
+ AnonymousIp::class,
'GeoIP2-Anonymous-IP',
$ipAddress
);
@@ -120,13 +139,12 @@ class Reader implements ProviderInterface
* not in the database
* @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
* is corrupt or invalid
- *
- * @return \GeoIp2\Model\Asn
*/
- public function asn($ipAddress)
+ public function asn(string $ipAddress): Asn
{
+ // @phpstan-ignore-next-line
return $this->flatModelFor(
- 'Asn',
+ Asn::class,
'GeoLite2-ASN',
$ipAddress
);
@@ -141,13 +159,12 @@ class Reader implements ProviderInterface
* not in the database
* @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
* is corrupt or invalid
- *
- * @return \GeoIp2\Model\ConnectionType
*/
- public function connectionType($ipAddress)
+ public function connectionType(string $ipAddress): ConnectionType
{
+ // @phpstan-ignore-next-line
return $this->flatModelFor(
- 'ConnectionType',
+ ConnectionType::class,
'GeoIP2-Connection-Type',
$ipAddress
);
@@ -162,13 +179,12 @@ class Reader implements ProviderInterface
* not in the database
* @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
* is corrupt or invalid
- *
- * @return \GeoIp2\Model\Domain
*/
- public function domain($ipAddress)
+ public function domain(string $ipAddress): Domain
{
+ // @phpstan-ignore-next-line
return $this->flatModelFor(
- 'Domain',
+ Domain::class,
'GeoIP2-Domain',
$ipAddress
);
@@ -183,12 +199,11 @@ class Reader implements ProviderInterface
* not in the database
* @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
* is corrupt or invalid
- *
- * @return \GeoIp2\Model\Enterprise
*/
- public function enterprise($ipAddress)
+ public function enterprise(string $ipAddress): Enterprise
{
- return $this->modelFor('Enterprise', 'Enterprise', $ipAddress);
+ // @phpstan-ignore-next-line
+ return $this->modelFor(Enterprise::class, 'Enterprise', $ipAddress);
}
/**
@@ -200,50 +215,47 @@ class Reader implements ProviderInterface
* not in the database
* @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
* is corrupt or invalid
- *
- * @return \GeoIp2\Model\Isp
*/
- public function isp($ipAddress)
+ public function isp(string $ipAddress): Isp
{
+ // @phpstan-ignore-next-line
return $this->flatModelFor(
- 'Isp',
+ Isp::class,
'GeoIP2-ISP',
$ipAddress
);
}
- private function modelFor($class, $type, $ipAddress)
+ private function modelFor(string $class, string $type, string $ipAddress): AbstractModel
{
- list($record, $prefixLen) = $this->getRecord($class, $type, $ipAddress);
+ [$record, $prefixLen] = $this->getRecord($class, $type, $ipAddress);
$record['traits']['ip_address'] = $ipAddress;
$record['traits']['prefix_len'] = $prefixLen;
- $class = 'GeoIp2\\Model\\' . $class;
-
return new $class($record, $this->locales);
}
- private function flatModelFor($class, $type, $ipAddress)
+ private function flatModelFor(string $class, string $type, string $ipAddress): AbstractModel
{
- list($record, $prefixLen) = $this->getRecord($class, $type, $ipAddress);
+ [$record, $prefixLen] = $this->getRecord($class, $type, $ipAddress);
$record['ip_address'] = $ipAddress;
$record['prefix_len'] = $prefixLen;
- $class = 'GeoIp2\\Model\\' . $class;
return new $class($record);
}
- private function getRecord($class, $type, $ipAddress)
+ private function getRecord(string $class, string $type, string $ipAddress): array
{
if (strpos($this->dbType, $type) === false) {
- $method = lcfirst($class);
+ $method = lcfirst((new \ReflectionClass($class))->getShortName());
+
throw new \BadMethodCallException(
"The $method method cannot be used to open a {$this->dbType} database"
);
}
- list($record, $prefixLen) = $this->dbReader->getWithPrefixLen($ipAddress);
+ [$record, $prefixLen] = $this->dbReader->getWithPrefixLen($ipAddress);
if ($record === null) {
throw new AddressNotFoundException(
"The address $ipAddress is not in the database."
@@ -272,7 +284,7 @@ class Reader implements ProviderInterface
*
* @return \MaxMind\Db\Reader\Metadata object for the database
*/
- public function metadata()
+ public function metadata(): DbReader\Metadata
{
return $this->dbReader->metadata();
}
@@ -280,7 +292,7 @@ class Reader implements ProviderInterface
/**
* Closes the GeoIP2 database and returns the resources to the system.
*/
- public function close()
+ public function close(): void
{
$this->dbReader->close();
}
diff --git a/vendor/geoip2/geoip2/src/Exception/AddressNotFoundException.php b/vendor/geoip2/geoip2/src/Exception/AddressNotFoundException.php
index d5483388b..628fb0672 100644
--- a/vendor/geoip2/geoip2/src/Exception/AddressNotFoundException.php
+++ b/vendor/geoip2/geoip2/src/Exception/AddressNotFoundException.php
@@ -1,5 +1,7 @@
uri = $uri;
diff --git a/vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php b/vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php
index 6464bcbb1..925b68df0 100644
--- a/vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php
+++ b/vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php
@@ -1,5 +1,7 @@
error = $error;
diff --git a/vendor/geoip2/geoip2/src/Exception/OutOfQueriesException.php b/vendor/geoip2/geoip2/src/Exception/OutOfQueriesException.php
index 87a6ade41..9734c8ce4 100644
--- a/vendor/geoip2/geoip2/src/Exception/OutOfQueriesException.php
+++ b/vendor/geoip2/geoip2/src/Exception/OutOfQueriesException.php
@@ -1,5 +1,7 @@
+ */
protected $raw;
/**
* @ignore
- *
- * @param mixed $raw
*/
- public function __construct($raw)
+ public function __construct(array $raw)
{
$this->raw = $raw;
}
@@ -22,9 +25,9 @@ abstract class AbstractModel implements \JsonSerializable
/**
* @ignore
*
- * @param mixed $field
+ * @return mixed
*/
- protected function get($field)
+ protected function get(string $field)
{
if (isset($this->raw[$field])) {
return $this->raw[$field];
@@ -39,12 +42,12 @@ abstract class AbstractModel implements \JsonSerializable
/**
* @ignore
*
- * @param mixed $attr
+ * @return mixed
*/
- public function __get($attr)
+ public function __get(string $attr)
{
if ($attr !== 'instance' && property_exists($this, $attr)) {
- return $this->$attr;
+ return $this->{$attr};
}
throw new \RuntimeException("Unknown attribute: $attr");
@@ -52,15 +55,13 @@ abstract class AbstractModel implements \JsonSerializable
/**
* @ignore
- *
- * @param mixed $attr
*/
- public function __isset($attr)
+ public function __isset(string $attr): bool
{
- return $attr !== 'instance' && isset($this->$attr);
+ return $attr !== 'instance' && isset($this->{$attr});
}
- public function jsonSerialize()
+ public function jsonSerialize(): array
{
return $this->raw;
}
diff --git a/vendor/geoip2/geoip2/src/Model/AnonymousIp.php b/vendor/geoip2/geoip2/src/Model/AnonymousIp.php
index a8f946ee8..5586bd00f 100644
--- a/vendor/geoip2/geoip2/src/Model/AnonymousIp.php
+++ b/vendor/geoip2/geoip2/src/Model/AnonymousIp.php
@@ -1,5 +1,7 @@
isAnonymousVpn = $this->get('is_anonymous_vpn');
$this->isHostingProvider = $this->get('is_hosting_provider');
$this->isPublicProxy = $this->get('is_public_proxy');
+ $this->isResidentialProxy = $this->get('is_residential_proxy');
$this->isTorExitNode = $this->get('is_tor_exit_node');
$ipAddress = $this->get('ip_address');
$this->ipAddress = $ipAddress;
diff --git a/vendor/geoip2/geoip2/src/Model/Asn.php b/vendor/geoip2/geoip2/src/Model/Asn.php
index 8e7c802ee..f05177eb9 100644
--- a/vendor/geoip2/geoip2/src/Model/Asn.php
+++ b/vendor/geoip2/geoip2/src/Model/Asn.php
@@ -1,5 +1,7 @@
autonomousSystemNumber = $this->get('autonomous_system_number');
diff --git a/vendor/geoip2/geoip2/src/Model/City.php b/vendor/geoip2/geoip2/src/Model/City.php
index 3e78c4f14..b2e81dccb 100644
--- a/vendor/geoip2/geoip2/src/Model/City.php
+++ b/vendor/geoip2/geoip2/src/Model/City.php
@@ -1,13 +1,15 @@
*/
protected $subdivisions = [];
/**
* @ignore
- *
- * @param mixed $raw
- * @param mixed $locales
*/
- public function __construct($raw, $locales = ['en'])
+ public function __construct(array $raw, array $locales = ['en'])
{
parent::__construct($raw, $locales);
@@ -63,29 +73,28 @@ class City extends Country
$this->createSubdivisions($raw, $locales);
}
- private function createSubdivisions($raw, $locales)
+ private function createSubdivisions(array $raw, array $locales): void
{
if (!isset($raw['subdivisions'])) {
return;
}
foreach ($raw['subdivisions'] as $sub) {
- array_push(
- $this->subdivisions,
+ $this->subdivisions[] =
new \GeoIp2\Record\Subdivision($sub, $locales)
- );
+ ;
}
}
/**
* @ignore
*
- * @param mixed $attr
+ * @return mixed
*/
- public function __get($attr)
+ public function __get(string $attr)
{
if ($attr === 'mostSpecificSubdivision') {
- return $this->$attr();
+ return $this->{$attr}();
}
return parent::__get($attr);
@@ -93,10 +102,8 @@ class City extends Country
/**
* @ignore
- *
- * @param mixed $attr
*/
- public function __isset($attr)
+ public function __isset(string $attr): bool
{
if ($attr === 'mostSpecificSubdivision') {
// We always return a mostSpecificSubdivision, even if it is the
@@ -107,7 +114,7 @@ class City extends Country
return parent::__isset($attr);
}
- private function mostSpecificSubdivision()
+ private function mostSpecificSubdivision(): \GeoIp2\Record\Subdivision
{
return empty($this->subdivisions) ?
new \GeoIp2\Record\Subdivision([], $this->locales) :
diff --git a/vendor/geoip2/geoip2/src/Model/ConnectionType.php b/vendor/geoip2/geoip2/src/Model/ConnectionType.php
index 8091e26ce..36d4529a2 100644
--- a/vendor/geoip2/geoip2/src/Model/ConnectionType.php
+++ b/vendor/geoip2/geoip2/src/Model/ConnectionType.php
@@ -1,5 +1,7 @@
+ */
protected $locales;
+
+ /**
+ * @var \GeoIp2\Record\MaxMind
+ */
protected $maxmind;
+
+ /**
+ * @var \GeoIp2\Record\Country
+ */
protected $registeredCountry;
+
+ /**
+ * @var \GeoIp2\Record\RepresentedCountry
+ */
protected $representedCountry;
+
+ /**
+ * @var \GeoIp2\Record\Traits
+ */
protected $traits;
/**
* @ignore
- *
- * @param mixed $raw
- * @param mixed $locales
*/
- public function __construct($raw, $locales = ['en'])
+ public function __construct(array $raw, array $locales = ['en'])
{
parent::__construct($raw);
diff --git a/vendor/geoip2/geoip2/src/Model/Domain.php b/vendor/geoip2/geoip2/src/Model/Domain.php
index 5e2cf346d..067a5076e 100644
--- a/vendor/geoip2/geoip2/src/Model/Domain.php
+++ b/vendor/geoip2/geoip2/src/Model/Domain.php
@@ -1,5 +1,7 @@
autonomousSystemNumber = $this->get('autonomous_system_number');
$this->autonomousSystemOrganization =
$this->get('autonomous_system_organization');
$this->isp = $this->get('isp');
+ $this->mobileCountryCode = $this->get('mobile_country_code');
+ $this->mobileNetworkCode = $this->get('mobile_network_code');
$this->organization = $this->get('organization');
$ipAddress = $this->get('ip_address');
diff --git a/vendor/geoip2/geoip2/src/ProviderInterface.php b/vendor/geoip2/geoip2/src/ProviderInterface.php
index 44851b07e..7d1489126 100644
--- a/vendor/geoip2/geoip2/src/ProviderInterface.php
+++ b/vendor/geoip2/geoip2/src/ProviderInterface.php
@@ -1,5 +1,7 @@
+ */
private $locales;
/**
* @ignore
- *
- * @param mixed $record
- * @param mixed $locales
*/
- public function __construct($record, $locales = ['en'])
+ public function __construct(?array $record, array $locales = ['en'])
{
$this->locales = $locales;
parent::__construct($record);
@@ -21,9 +23,9 @@ abstract class AbstractPlaceRecord extends AbstractRecord
/**
* @ignore
*
- * @param mixed $attr
+ * @return mixed
*/
- public function __get($attr)
+ public function __get(string $attr)
{
if ($attr === 'name') {
return $this->name();
@@ -34,26 +36,25 @@ abstract class AbstractPlaceRecord extends AbstractRecord
/**
* @ignore
- *
- * @param mixed $attr
*/
- public function __isset($attr)
+ public function __isset(string $attr): bool
{
if ($attr === 'name') {
- return $this->firstSetNameLocale() === null ? false : true;
+ return $this->firstSetNameLocale() !== null;
}
return parent::__isset($attr);
}
- private function name()
+ private function name(): ?string
{
$locale = $this->firstSetNameLocale();
+ // @phpstan-ignore-next-line
return $locale === null ? null : $this->names[$locale];
}
- private function firstSetNameLocale()
+ private function firstSetNameLocale(): ?string
{
foreach ($this->locales as $locale) {
if (isset($this->names[$locale])) {
diff --git a/vendor/geoip2/geoip2/src/Record/AbstractRecord.php b/vendor/geoip2/geoip2/src/Record/AbstractRecord.php
index dad2fd3f3..5ddb3c679 100644
--- a/vendor/geoip2/geoip2/src/Record/AbstractRecord.php
+++ b/vendor/geoip2/geoip2/src/Record/AbstractRecord.php
@@ -1,17 +1,20 @@
+ */
private $record;
/**
* @ignore
- *
- * @param mixed $record
*/
- public function __construct($record)
+ public function __construct(?array $record)
{
$this->record = isset($record) ? $record : [];
}
@@ -19,42 +22,45 @@ abstract class AbstractRecord implements \JsonSerializable
/**
* @ignore
*
- * @param mixed $attr
+ * @return mixed
*/
- public function __get($attr)
+ public function __get(string $attr)
{
// XXX - kind of ugly but greatly reduces boilerplate code
$key = $this->attributeToKey($attr);
if ($this->__isset($attr)) {
return $this->record[$key];
- } elseif ($this->validAttribute($attr)) {
+ }
+ if ($this->validAttribute($attr)) {
if (preg_match('/^is_/', $key)) {
return false;
}
return null;
}
+
throw new \RuntimeException("Unknown attribute: $attr");
}
- public function __isset($attr)
+ public function __isset(string $attr): bool
{
- return $this->validAttribute($attr) &&
- isset($this->record[$this->attributeToKey($attr)]);
+ return $this->validAttribute($attr)
+ && isset($this->record[$this->attributeToKey($attr)]);
}
- private function attributeToKey($attr)
+ private function attributeToKey(string $attr): string
{
return strtolower(preg_replace('/([A-Z])/', '_\1', $attr));
}
- private function validAttribute($attr)
+ private function validAttribute(string $attr): bool
{
+ // @phpstan-ignore-next-line
return \in_array($attr, $this->validAttributes, true);
}
- public function jsonSerialize()
+ public function jsonSerialize(): ?array
{
return $this->record;
}
diff --git a/vendor/geoip2/geoip2/src/Record/City.php b/vendor/geoip2/geoip2/src/Record/City.php
index 7f495ad7c..f25dcb389 100644
--- a/vendor/geoip2/geoip2/src/Record/City.php
+++ b/vendor/geoip2/geoip2/src/Record/City.php
@@ -1,5 +1,7 @@
*/
protected $validAttributes = ['confidence', 'geonameId', 'names'];
}
diff --git a/vendor/geoip2/geoip2/src/Record/Continent.php b/vendor/geoip2/geoip2/src/Record/Continent.php
index c6b17056e..103e2e3d8 100644
--- a/vendor/geoip2/geoip2/src/Record/Continent.php
+++ b/vendor/geoip2/geoip2/src/Record/Continent.php
@@ -1,5 +1,7 @@
*/
protected $validAttributes = [
'code',
diff --git a/vendor/geoip2/geoip2/src/Record/Country.php b/vendor/geoip2/geoip2/src/Record/Country.php
index ff9ecc7cd..3009ebc62 100644
--- a/vendor/geoip2/geoip2/src/Record/Country.php
+++ b/vendor/geoip2/geoip2/src/Record/Country.php
@@ -1,5 +1,7 @@
*/
protected $validAttributes = [
'confidence',
diff --git a/vendor/geoip2/geoip2/src/Record/Location.php b/vendor/geoip2/geoip2/src/Record/Location.php
index b59b3ee70..cb6111c2c 100644
--- a/vendor/geoip2/geoip2/src/Record/Location.php
+++ b/vendor/geoip2/geoip2/src/Record/Location.php
@@ -1,5 +1,7 @@
*/
protected $validAttributes = [
'averageIncome',
diff --git a/vendor/geoip2/geoip2/src/Record/MaxMind.php b/vendor/geoip2/geoip2/src/Record/MaxMind.php
index 2e2cc0024..e972506e5 100644
--- a/vendor/geoip2/geoip2/src/Record/MaxMind.php
+++ b/vendor/geoip2/geoip2/src/Record/MaxMind.php
@@ -1,5 +1,7 @@
*/
protected $validAttributes = ['queriesRemaining'];
}
diff --git a/vendor/geoip2/geoip2/src/Record/Postal.php b/vendor/geoip2/geoip2/src/Record/Postal.php
index 69508c782..3e9c2377b 100644
--- a/vendor/geoip2/geoip2/src/Record/Postal.php
+++ b/vendor/geoip2/geoip2/src/Record/Postal.php
@@ -1,5 +1,7 @@
*/
protected $validAttributes = ['code', 'confidence'];
}
diff --git a/vendor/geoip2/geoip2/src/Record/RepresentedCountry.php b/vendor/geoip2/geoip2/src/Record/RepresentedCountry.php
index bc79ee157..727c034af 100644
--- a/vendor/geoip2/geoip2/src/Record/RepresentedCountry.php
+++ b/vendor/geoip2/geoip2/src/Record/RepresentedCountry.php
@@ -1,5 +1,7 @@
+ */
protected $validAttributes = [
'confidence',
'geonameId',
diff --git a/vendor/geoip2/geoip2/src/Record/Subdivision.php b/vendor/geoip2/geoip2/src/Record/Subdivision.php
index 74ae3e2ca..0e8354938 100644
--- a/vendor/geoip2/geoip2/src/Record/Subdivision.php
+++ b/vendor/geoip2/geoip2/src/Record/Subdivision.php
@@ -1,5 +1,7 @@
*/
protected $validAttributes = [
'confidence',
diff --git a/vendor/geoip2/geoip2/src/Record/Traits.php b/vendor/geoip2/geoip2/src/Record/Traits.php
index e6b798f41..8000d5042 100644
--- a/vendor/geoip2/geoip2/src/Record/Traits.php
+++ b/vendor/geoip2/geoip2/src/Record/Traits.php
@@ -1,5 +1,7 @@
The user type associated with the IP
* address. This can be one of the following values:
*
@@ -85,6 +97,7 @@ use GeoIp2\Util;
* cafe
* cellular
* college
+ * consumer_privacy_network
* content_delivery_network
* dialup
* government
@@ -106,6 +119,8 @@ class Traits extends AbstractRecord
{
/**
* @ignore
+ *
+ * @var array
*/
protected $validAttributes = [
'autonomousSystemNumber',
@@ -120,8 +135,11 @@ class Traits extends AbstractRecord
'isLegitimateProxy',
'isp',
'isPublicProxy',
+ 'isResidentialProxy',
'isSatelliteProvider',
'isTorExitNode',
+ 'mobileCountryCode',
+ 'mobileNetworkCode',
'network',
'organization',
'staticIpScore',
@@ -129,9 +147,9 @@ class Traits extends AbstractRecord
'userType',
];
- public function __construct($record)
+ public function __construct(?array $record)
{
- if (!isset($record['network']) && isset($record['ip_address']) && isset($record['prefix_len'])) {
+ if (!isset($record['network']) && isset($record['ip_address'], $record['prefix_len'])) {
$record['network'] = Util::cidr($record['ip_address'], $record['prefix_len']);
}
diff --git a/vendor/geoip2/geoip2/src/Util.php b/vendor/geoip2/geoip2/src/Util.php
index c158fb551..e0a03be8c 100644
--- a/vendor/geoip2/geoip2/src/Util.php
+++ b/vendor/geoip2/geoip2/src/Util.php
@@ -1,5 +1,7 @@
+ */
private $locales;
+
+ /**
+ * @var WsClient
+ */
private $client;
+
+ /**
+ * @var string
+ */
private static $basePath = '/geoip/v2.1';
- const VERSION = 'v2.10.0';
+ public const VERSION = 'v2.13.0';
/**
* Constructor.
@@ -57,7 +73,10 @@ class Client implements ProviderInterface
* @param array $locales list of locale codes to use in name property
* from most preferred to least preferred
* @param array $options array of options. Valid options include:
- * * `host` - The host to use when querying the web service.
+ * * `host` - The host to use when querying the web
+ * service. To query the GeoLite2 web service
+ * instead of the GeoIP2 web service, set the
+ * host to `geolite.info`.
* * `timeout` - Timeout in seconds.
* * `connectTimeout` - Initial connection timeout in seconds.
* * `proxy` - The HTTP proxy to use. May include a schema, port,
@@ -65,15 +84,16 @@ class Client implements ProviderInterface
* `http://username:password@127.0.0.1:10`.
*/
public function __construct(
- $accountId,
- $licenseKey,
- $locales = ['en'],
- $options = []
+ int $accountId,
+ string $licenseKey,
+ array $locales = ['en'],
+ array $options = []
) {
$this->locales = $locales;
// This is for backwards compatibility. Do not remove except for a
// major version bump.
+ // @phpstan-ignore-next-line
if (\is_string($options)) {
$options = ['host' => $options];
}
@@ -87,13 +107,13 @@ class Client implements ProviderInterface
$this->client = new WsClient($accountId, $licenseKey, $options);
}
- private function userAgent()
+ private function userAgent(): string
{
return 'GeoIP2-API/' . self::VERSION;
}
/**
- * This method calls the GeoIP2 Precision: City service.
+ * This method calls the City Plus service.
*
* @param string $ipAddress IPv4 or IPv6 address as a string. If no
* address is provided, the address that the web service is called
@@ -108,23 +128,22 @@ class Client implements ProviderInterface
* @throws \GeoIp2\Exception\InvalidRequestException} if your request was received by the web service but is
* invalid for some other reason. This may indicate an issue
* with this API. Please report the error to MaxMind.
- * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error code or message was returned.
- * This could indicate a problem with the connection between
- * your server and the web service or that the web service
- * returned an invalid document or 500 error code
- * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent
- * class to the above exceptions. It will be thrown directly
- * if a 200 status code is returned but the body is invalid.
- *
- * @return \GeoIp2\Model\City
+ * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error code or message was returned.
+ * This could indicate a problem with the connection between
+ * your server and the web service or that the web service
+ * returned an invalid document or 500 error code
+ * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent
+ * class to the above exceptions. It will be thrown directly
+ * if a 200 status code is returned but the body is invalid.
*/
- public function city($ipAddress = 'me')
+ public function city(string $ipAddress = 'me'): City
{
- return $this->responseFor('city', 'City', $ipAddress);
+ // @phpstan-ignore-next-line
+ return $this->responseFor('city', City::class, $ipAddress);
}
/**
- * This method calls the GeoIP2 Precision: Country service.
+ * This method calls the Country service.
*
* @param string $ipAddress IPv4 or IPv6 address as a string. If no
* address is provided, the address that the web service is called
@@ -138,24 +157,23 @@ class Client implements ProviderInterface
* @throws \GeoIp2\Exception\InvalidRequestException} if your request was received by the web service but is
* invalid for some other reason. This may indicate an
* issue with this API. Please report the error to MaxMind.
- * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error
- * code or message was returned. This could indicate a problem
- * with the connection between your server and the web service
- * or that the web service returned an invalid document or 500
- * error code.
- * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent class to the above exceptions. It
- * will be thrown directly if a 200 status code is returned but
- * the body is invalid.
- *
- * @return \GeoIp2\Model\Country
+ * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error
+ * code or message was returned. This could indicate a problem
+ * with the connection between your server and the web service
+ * or that the web service returned an invalid document or 500
+ * error code.
+ * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent class to the above exceptions. It
+ * will be thrown directly if a 200 status code is returned but
+ * the body is invalid.
*/
- public function country($ipAddress = 'me')
+ public function country(string $ipAddress = 'me'): Country
{
- return $this->responseFor('country', 'Country', $ipAddress);
+ return $this->responseFor('country', Country::class, $ipAddress);
}
/**
- * This method calls the GeoIP2 Precision: Insights service.
+ * This method calls the Insights service. Insights is only supported by
+ * the GeoIP2 web service. The GeoLite2 web service does not support it.
*
* @param string $ipAddress IPv4 or IPv6 address as a string. If no
* address is provided, the address that the web service is called
@@ -170,27 +188,27 @@ class Client implements ProviderInterface
* @throws \GeoIp2\Exception\InvalidRequestException} if your request was received by the web service but is
* invalid for some other reason. This may indicate an
* issue with this API. Please report the error to MaxMind.
- * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error code or message was returned.
- * This could indicate a problem with the connection between
- * your server and the web service or that the web service
- * returned an invalid document or 500 error code
- * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent
- * class to the above exceptions. It will be thrown directly
- * if a 200 status code is returned but the body is invalid.
- *
- * @return \GeoIp2\Model\Insights
+ * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error code or message was returned.
+ * This could indicate a problem with the connection between
+ * your server and the web service or that the web service
+ * returned an invalid document or 500 error code
+ * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent
+ * class to the above exceptions. It will be thrown directly
+ * if a 200 status code is returned but the body is invalid.
*/
- public function insights($ipAddress = 'me')
+ public function insights(string $ipAddress = 'me'): Insights
{
- return $this->responseFor('insights', 'Insights', $ipAddress);
+ // @phpstan-ignore-next-line
+ return $this->responseFor('insights', Insights::class, $ipAddress);
}
- private function responseFor($endpoint, $class, $ipAddress)
+ private function responseFor(string $endpoint, string $class, string $ipAddress): Country
{
$path = implode('/', [self::$basePath, $endpoint, $ipAddress]);
try {
- $body = $this->client->get('GeoIP2 ' . $class, $path);
+ $service = (new \ReflectionClass($class))->getShortName();
+ $body = $this->client->get('GeoIP2 ' . $service, $path);
} catch (\MaxMind\Exception\IpAddressNotFoundException $ex) {
throw new AddressNotFoundException(
$ex->getMessage(),
@@ -232,8 +250,6 @@ class Client implements ProviderInterface
);
}
- $class = 'GeoIp2\\Model\\' . $class;
-
return new $class($body, $this->locales);
}
}
diff --git a/vendor/guzzlehttp/promises/CHANGELOG.md b/vendor/guzzlehttp/promises/CHANGELOG.md
index 235e13bc7..253282eb1 100644
--- a/vendor/guzzlehttp/promises/CHANGELOG.md
+++ b/vendor/guzzlehttp/promises/CHANGELOG.md
@@ -1,5 +1,11 @@
# CHANGELOG
+## 1.5.2 - 2022-08-07
+
+### Changed
+
+- Officially support PHP 8.2
+
## 1.5.1 - 2021-10-22
### Fixed
@@ -12,10 +18,11 @@
### Changed
- Call handler when waiting on fulfilled/rejected Promise
+- Officially support PHP 8.1
### Fixed
-- Fix manually settle promises generated with Utils::task
+- Fix manually settle promises generated with `Utils::task`
## 1.4.1 - 2021-02-18
diff --git a/vendor/guzzlehttp/promises/Makefile b/vendor/guzzlehttp/promises/Makefile
deleted file mode 100644
index 8d5b3ef95..000000000
--- a/vendor/guzzlehttp/promises/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-all: clean test
-
-test:
- vendor/bin/phpunit
-
-coverage:
- vendor/bin/phpunit --coverage-html=artifacts/coverage
-
-view-coverage:
- open artifacts/coverage/index.html
-
-clean:
- rm -rf artifacts/*
diff --git a/vendor/guzzlehttp/promises/README.md b/vendor/guzzlehttp/promises/README.md
index c175fec76..1ea667ab9 100644
--- a/vendor/guzzlehttp/promises/README.md
+++ b/vendor/guzzlehttp/promises/README.md
@@ -17,7 +17,7 @@ for a general introduction to promises.
- [Implementation notes](#implementation-notes)
-# Features
+## Features
- [Promises/A+](https://promisesaplus.com/) implementation.
- Promise resolution and chaining is handled iteratively, allowing for
@@ -29,15 +29,14 @@ for a general introduction to promises.
`GuzzleHttp\Promise\Coroutine::of()`.
-# Quick start
+## Quick Start
A *promise* represents the eventual result of an asynchronous operation. The
primary way of interacting with a promise is through its `then` method, which
registers callbacks to receive either a promise's eventual value or the reason
why the promise cannot be fulfilled.
-
-## Callbacks
+### Callbacks
Callbacks are registered with the `then` method by providing an optional
`$onFulfilled` followed by an optional `$onRejected` function.
@@ -60,12 +59,11 @@ $promise->then(
```
*Resolving* a promise means that you either fulfill a promise with a *value* or
-reject a promise with a *reason*. Resolving a promises triggers callbacks
-registered with the promises's `then` method. These callbacks are triggered
+reject a promise with a *reason*. Resolving a promise triggers callbacks
+registered with the promise's `then` method. These callbacks are triggered
only once and in the order in which they were added.
-
-## Resolving a promise
+### Resolving a Promise
Promises are fulfilled using the `resolve($value)` method. Resolving a promise
with any value other than a `GuzzleHttp\Promise\RejectedPromise` will trigger
@@ -92,8 +90,7 @@ $promise
$promise->resolve('reader.');
```
-
-## Promise forwarding
+### Promise Forwarding
Promises can be chained one after the other. Each then in the chain is a new
promise. The return value of a promise is what's forwarded to the next
@@ -123,7 +120,7 @@ $promise->resolve('A');
$nextPromise->resolve('B');
```
-## Promise rejection
+### Promise Rejection
When a promise is rejected, the `$onRejected` callbacks are invoked with the
rejection reason.
@@ -140,7 +137,7 @@ $promise->reject('Error!');
// Outputs "Error!"
```
-## Rejection forwarding
+### Rejection Forwarding
If an exception is thrown in an `$onRejected` callback, subsequent
`$onRejected` callbacks are invoked with the thrown exception as the reason.
@@ -195,7 +192,8 @@ $promise
$promise->reject('Error!');
```
-# Synchronous wait
+
+## Synchronous Wait
You can synchronously force promises to complete using a promise's `wait`
method. When creating a promise, you can provide a wait function that is used
@@ -247,8 +245,7 @@ $promise->wait();
> PHP Fatal error: Uncaught exception 'GuzzleHttp\Promise\RejectionException' with message 'The promise was rejected with value: foo'
-
-## Unwrapping a promise
+### Unwrapping a Promise
When synchronously waiting on a promise, you are joining the state of the
promise into the current state of execution (i.e., return the value of the
@@ -275,7 +272,7 @@ wait function will be the value delivered to promise B.
**Note**: when you do not unwrap the promise, no value is returned.
-# Cancellation
+## Cancellation
You can cancel a promise that has not yet been fulfilled using the `cancel()`
method of a promise. When creating a promise you can provide an optional
@@ -283,10 +280,9 @@ cancel function that when invoked cancels the action of computing a resolution
of the promise.
-# API
+## API
-
-## Promise
+### Promise
When creating a promise object, you can provide an optional `$waitFn` and
`$cancelFn`. `$waitFn` is a function that is invoked with no arguments and is
@@ -349,7 +345,7 @@ A promise has the following methods:
Rejects the promise with the given `$reason`.
-## FulfilledPromise
+### FulfilledPromise
A fulfilled promise can be created to represent a promise that has been
fulfilled.
@@ -366,7 +362,7 @@ $promise->then(function ($value) {
```
-## RejectedPromise
+### RejectedPromise
A rejected promise can be created to represent a promise that has been
rejected.
@@ -383,7 +379,7 @@ $promise->then(null, function ($reason) {
```
-# Promise interop
+## Promise Interoperability
This library works with foreign promises that have a `then` method. This means
you can use Guzzle promises with [React promises](https://github.com/reactphp/promise)
@@ -409,7 +405,7 @@ a foreign promise. You will need to wrap a third-party promise with a Guzzle
promise in order to utilize wait and cancel functions with foreign promises.
-## Event Loop Integration
+### Event Loop Integration
In order to keep the stack size constant, Guzzle promises are resolved
asynchronously using a task queue. When waiting on promises synchronously, the
@@ -437,10 +433,9 @@ $loop->addPeriodicTimer(0, [$queue, 'run']);
*TODO*: Perhaps adding a `futureTick()` on each tick would be faster?
-# Implementation notes
+## Implementation Notes
-
-## Promise resolution and chaining is handled iteratively
+### Promise Resolution and Chaining is Handled Iteratively
By shuffling pending handlers from one owner to another, promises are
resolved iteratively, allowing for "infinite" then chaining.
@@ -476,8 +471,7 @@ all of its pending handlers to the new promise. When the new promise is
eventually resolved, all of the pending handlers are delivered the forwarded
value.
-
-## A promise is the deferred.
+### A Promise is the Deferred
Some promise libraries implement promises using a deferred object to represent
a computation and a promise object to represent the delivery of the result of
@@ -505,7 +499,10 @@ $promise->resolve('foo');
## Upgrading from Function API
-A static API was first introduced in 1.4.0, in order to mitigate problems with functions conflicting between global and local copies of the package. The function API will be removed in 2.0.0. A migration table has been provided here for your convenience:
+A static API was first introduced in 1.4.0, in order to mitigate problems with
+functions conflicting between global and local copies of the package. The
+function API will be removed in 2.0.0. A migration table has been provided here
+for your convenience:
| Original Function | Replacement Method |
|----------------|----------------|
@@ -536,10 +533,12 @@ A static API was first introduced in 1.4.0, in order to mitigate problems with f
If you discover a security vulnerability within this package, please send an email to security@tidelift.com. All security vulnerabilities will be promptly addressed. Please do not disclose security-related issues publicly until a fix has been announced. Please see [Security Policy](https://github.com/guzzle/promises/security/policy) for more information.
+
## License
Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information.
+
## For Enterprise
Available as part of the Tidelift Subscription
diff --git a/vendor/guzzlehttp/promises/src/EachPromise.php b/vendor/guzzlehttp/promises/src/EachPromise.php
index 38ecb59b1..280d79950 100644
--- a/vendor/guzzlehttp/promises/src/EachPromise.php
+++ b/vendor/guzzlehttp/promises/src/EachPromise.php
@@ -81,16 +81,8 @@ class EachPromise implements PromisorInterface
$this->iterable->rewind();
$this->refillPending();
} catch (\Throwable $e) {
- /**
- * @psalm-suppress NullReference
- * @phpstan-ignore-next-line
- */
$this->aggregate->reject($e);
} catch (\Exception $e) {
- /**
- * @psalm-suppress NullReference
- * @phpstan-ignore-next-line
- */
$this->aggregate->reject($e);
}
diff --git a/vendor/maxmind-db/reader/CHANGELOG.md b/vendor/maxmind-db/reader/CHANGELOG.md
index aae708761..4c89f0cc9 100644
--- a/vendor/maxmind-db/reader/CHANGELOG.md
+++ b/vendor/maxmind-db/reader/CHANGELOG.md
@@ -1,6 +1,56 @@
CHANGELOG
=========
+1.11.0
+-------------------
+
+* Replace runtime define of a constant to facilitate opcache preloading.
+ Reported by vedadkajtaz. GitHub #134.
+* Resolve minor issue found by the Clang static analyzer in the C
+ extension.
+
+1.10.1 (2021-04-14)
+-------------------
+
+* Fix a `TypeError` exception in the pure PHP reader when using large
+ databases on 32-bit PHP builds with the `bcmath` extension. Reported
+ by dodo1708. GitHub #124.
+
+1.10.0 (2021-02-09)
+-------------------
+
+* When using the pure PHP reader, unsigned integers up to PHP_MAX_INT
+ will now be integers in PHP rather than strings. Previously integers
+ greater than 2^24 on 32-bit platforms and 2^56 on 64-bit platforms
+ would be strings due to the use of `gmp` or `bcmath` to decode them.
+ Reported by Alejandro Celaya. GitHub #119.
+
+1.9.0 (2021-01-07)
+------------------
+
+* The `maxminddb` extension is now buildable on Windows. Pull request
+ by Jan Ehrhardt. GitHub #115.
+
+1.8.0 (2020-10-01)
+------------------
+
+* Fixes for PHP 8.0. Pull Request by Remi Collet. GitHub #108.
+
+1.7.0 (2020-08-07)
+------------------
+
+* IMPORTANT: PHP 7.2 or greater is now required.
+* The extension no longer depends on the pure PHP classes in
+ `maxmind-db/reader`. You can use it independently.
+* Type hints have been added to both the pure PHP implementation
+ and the extension.
+* The `metadata` method on the reader now returns a new copy of the
+ metadata object rather than the actual object used by the reader.
+* Work around PHP `is_readable()` bug. Reported by Ben Roberts. GitHub
+ #92.
+* This is the first release of the extension as a PECL package.
+ GitHub #34.
+
1.6.0 (2019-12-19)
------------------
diff --git a/vendor/maxmind-db/reader/README.md b/vendor/maxmind-db/reader/README.md
index d0600e871..49fa28001 100644
--- a/vendor/maxmind-db/reader/README.md
+++ b/vendor/maxmind-db/reader/README.md
@@ -112,9 +112,16 @@ you are using an autoloader, no changes to your code should be necessary.
First install [libmaxminddb](https://github.com/maxmind/libmaxminddb) as
described in its [README.md
-file](https://github.com/maxmind/libmaxminddb/blob/master/README.md#installing-from-a-tarball).
-After successfully installing libmaxmindb, run the following commands from the
-top-level directory of this distribution:
+file](https://github.com/maxmind/libmaxminddb/blob/main/README.md#installing-from-a-tarball).
+After successfully installing libmaxmindb, you may install the extension
+from [pecl](https://pecl.php.net/package/maxminddb):
+
+```
+pecl install maxminddb
+```
+
+Alternatively, you may install it from the source. To do so, run the following
+commands from the top-level directory of this distribution:
```
cd ext
@@ -157,7 +164,7 @@ client API, please see [our support page](https://www.maxmind.com/en/support).
## Requirements ##
-This library requires PHP 5.6 or greater.
+This library requires PHP 7.2 or greater.
The GMP or BCMath extension may be required to read some databases
using the pure PHP API.
@@ -173,6 +180,6 @@ The MaxMind DB Reader PHP API uses [Semantic Versioning](https://semver.org/).
## Copyright and License ##
-This software is Copyright (c) 2014-2019 by MaxMind, Inc.
+This software is Copyright (c) 2014-2020 by MaxMind, Inc.
This is free software, licensed under the Apache License, Version 2.0.
diff --git a/vendor/maxmind-db/reader/autoload.php b/vendor/maxmind-db/reader/autoload.php
index 1314b698e..a1119e7f8 100644
--- a/vendor/maxmind-db/reader/autoload.php
+++ b/vendor/maxmind-db/reader/autoload.php
@@ -1,5 +1,7 @@
__DIR__ . '/src/MaxMind/Db/'];
foreach ($namespace_map as $prefix => $dir) {
- /* First swap out the namespace prefix with a directory... */
+ // First swap out the namespace prefix with a directory...
$path = str_replace($prefix, $dir, $class);
- /* replace the namespace separator with a directory separator... */
+ // replace the namespace separator with a directory separator...
$path = str_replace('\\', '/', $path);
- /* and finally, add the PHP file extension to the result. */
+ // and finally, add the PHP file extension to the result.
$path = $path . '.php';
- /* $path should now contain the path to a PHP file defining $class */
+ // $path should now contain the path to a PHP file defining $class
if (file_exists($path)) {
include $path;
}
diff --git a/vendor/maxmind-db/reader/composer.json b/vendor/maxmind-db/reader/composer.json
index 39cdfe251..26d487301 100644
--- a/vendor/maxmind-db/reader/composer.json
+++ b/vendor/maxmind-db/reader/composer.json
@@ -13,7 +13,7 @@
}
],
"require": {
- "php": ">=5.6"
+ "php": ">=7.2"
},
"suggest": {
"ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
@@ -21,14 +21,15 @@
"ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
},
"conflict": {
- "ext-maxminddb": "<1.6.0,>=2.0.0"
+ "ext-maxminddb": "<1.10.1,>=2.0.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "2.*",
- "phpunit/phpunit": "5.*",
+ "friendsofphp/php-cs-fixer": "3.*",
+ "phpunit/phpunit": ">=8.0.0,<10.0.0",
"php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpcov": "^3.0",
- "squizlabs/php_codesniffer": "3.*"
+ "phpunit/phpcov": ">=6.0.0",
+ "squizlabs/php_codesniffer": "3.*",
+ "phpstan/phpstan": "*"
},
"autoload": {
"psr-4": {
diff --git a/vendor/maxmind-db/reader/ext/config.w32 b/vendor/maxmind-db/reader/ext/config.w32
new file mode 100644
index 000000000..4eb18f849
--- /dev/null
+++ b/vendor/maxmind-db/reader/ext/config.w32
@@ -0,0 +1,10 @@
+ARG_WITH("maxminddb", "Enable MaxMind DB Reader extension support", "no");
+
+if (PHP_MAXMINDDB == "yes") {
+ if (CHECK_HEADER_ADD_INCLUDE("maxminddb.h", "CFLAGS_MAXMINDDB", PHP_MAXMINDDB + ";" + PHP_PHP_BUILD + "\\include\\maxminddb") &&
+ CHECK_LIB("libmaxminddb.lib", "maxminddb", PHP_MAXMINDDB)) {
+ EXTENSION("maxminddb", "maxminddb.c");
+ } else {
+ WARNING('Could not find maxminddb.h or libmaxminddb.lib; skipping');
+ }
+}
diff --git a/vendor/maxmind-db/reader/ext/maxminddb.c b/vendor/maxmind-db/reader/ext/maxminddb.c
index a97a3d9e4..b00b2fa3d 100644
--- a/vendor/maxmind-db/reader/ext/maxminddb.c
+++ b/vendor/maxmind-db/reader/ext/maxminddb.c
@@ -21,6 +21,8 @@
#include
#include "Zend/zend_exceptions.h"
+#include "Zend/zend_types.h"
+#include "ext/spl/spl_exceptions.h"
#include "ext/standard/info.h"
#include
@@ -33,50 +35,50 @@
#define PHP_MAXMINDDB_NS ZEND_NS_NAME("MaxMind", "Db")
#define PHP_MAXMINDDB_READER_NS ZEND_NS_NAME(PHP_MAXMINDDB_NS, "Reader")
+#define PHP_MAXMINDDB_METADATA_NS \
+ ZEND_NS_NAME(PHP_MAXMINDDB_READER_NS, "Metadata")
#define PHP_MAXMINDDB_READER_EX_NS \
ZEND_NS_NAME(PHP_MAXMINDDB_READER_NS, "InvalidDatabaseException")
-#ifdef ZEND_ENGINE_3
#define Z_MAXMINDDB_P(zv) php_maxminddb_fetch_object(Z_OBJ_P(zv))
-#define _ZVAL_STRING ZVAL_STRING
-#define _ZVAL_STRINGL ZVAL_STRINGL
typedef size_t strsize_t;
typedef zend_object free_obj_t;
-#else
-#define Z_MAXMINDDB_P(zv) \
- (maxminddb_obj *)zend_object_store_get_object(zv TSRMLS_CC)
-#define _ZVAL_STRING(a, b) ZVAL_STRING(a, b, 1)
-#define _ZVAL_STRINGL(a, b, c) ZVAL_STRINGL(a, b, c, 1)
-typedef int strsize_t;
-typedef void free_obj_t;
-#endif
/* For PHP 8 compatibility */
-#ifndef TSRMLS_C
+#if PHP_VERSION_ID < 80000
+
+#define PROP_OBJ(zv) (zv)
+
+#else
+
+#define PROP_OBJ(zv) Z_OBJ_P(zv)
+
#define TSRMLS_C
-#endif
-#ifndef TSRMLS_CC
#define TSRMLS_CC
-#endif
-#ifndef TSRMLS_DC
#define TSRMLS_DC
+
+/* End PHP 8 compatibility */
#endif
+
#ifndef ZEND_ACC_CTOR
#define ZEND_ACC_CTOR 0
#endif
-#ifdef ZEND_ENGINE_3
-typedef struct _maxminddb_obj {
- MMDB_s *mmdb;
- zend_object std;
-} maxminddb_obj;
-#else
-typedef struct _maxminddb_obj {
- zend_object std;
- MMDB_s *mmdb;
-} maxminddb_obj;
+/* IS_MIXED was added in 2020 */
+#ifndef IS_MIXED
+#define IS_MIXED IS_UNDEF
#endif
+/* ZEND_THIS was added in 7.4 */
+#ifndef ZEND_THIS
+#define ZEND_THIS (&EX(This))
+#endif
+
+typedef struct _maxminddb_obj {
+ MMDB_s *mmdb;
+ zend_object std;
+} maxminddb_obj;
+
PHP_FUNCTION(maxminddb);
static int
@@ -96,7 +98,6 @@ static void handle_uint64(const MMDB_entry_data_list_s *entry_data_list,
zval *z_value TSRMLS_DC);
static void handle_uint32(const MMDB_entry_data_list_s *entry_data_list,
zval *z_value TSRMLS_DC);
-static zend_class_entry *lookup_class(const char *name TSRMLS_DC);
#define CHECK_ALLOCATED(val) \
if (!val) { \
@@ -104,38 +105,16 @@ static zend_class_entry *lookup_class(const char *name TSRMLS_DC);
return; \
}
-#define THROW_EXCEPTION(name, ...) \
- { \
- zend_class_entry *exception_ce = lookup_class(name TSRMLS_CC); \
- zend_throw_exception_ex(exception_ce, 0 TSRMLS_CC, __VA_ARGS__); \
- }
-
-#if PHP_VERSION_ID < 50399
-#define object_properties_init(zo, class_type) \
- { \
- zval *tmp; \
- zend_hash_copy((*zo).properties, \
- &class_type->default_properties, \
- (copy_ctor_func_t)zval_add_ref, \
- (void *)&tmp, \
- sizeof(zval *)); \
- }
-#endif
-
static zend_object_handlers maxminddb_obj_handlers;
-static zend_class_entry *maxminddb_ce;
+static zend_class_entry *maxminddb_ce, *maxminddb_exception_ce, *metadata_ce;
static inline maxminddb_obj *
php_maxminddb_fetch_object(zend_object *obj TSRMLS_DC) {
-#ifdef ZEND_ENGINE_3
return (maxminddb_obj *)((char *)(obj)-XtOffsetOf(maxminddb_obj, std));
-#else
- return (maxminddb_obj *)obj;
-#endif
}
-ZEND_BEGIN_ARG_INFO_EX(arginfo_maxmindbreader_construct, 0, 0, 1)
-ZEND_ARG_INFO(0, db_file)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_maxminddbreader_construct, 0, 0, 1)
+ZEND_ARG_TYPE_INFO(0, db_file, IS_STRING, 0)
ZEND_END_ARG_INFO()
PHP_METHOD(MaxMind_Db_Reader, __construct) {
@@ -150,16 +129,16 @@ PHP_METHOD(MaxMind_Db_Reader, __construct) {
maxminddb_ce,
&db_file,
&name_len) == FAILURE) {
- THROW_EXCEPTION("InvalidArgumentException",
- "The constructor takes exactly one argument.");
return;
}
if (0 != php_check_open_basedir(db_file TSRMLS_CC) ||
0 != access(db_file, R_OK)) {
- THROW_EXCEPTION("InvalidArgumentException",
- "The file \"%s\" does not exist or is not readable.",
- db_file);
+ zend_throw_exception_ex(
+ spl_ce_InvalidArgumentException,
+ 0 TSRMLS_CC,
+ "The file \"%s\" does not exist or is not readable.",
+ db_file);
return;
}
@@ -167,20 +146,23 @@ PHP_METHOD(MaxMind_Db_Reader, __construct) {
uint16_t status = MMDB_open(db_file, MMDB_MODE_MMAP, mmdb);
if (MMDB_SUCCESS != status) {
- THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS,
- "Error opening database file (%s). Is this a valid "
- "MaxMind DB file?",
- db_file);
+ zend_throw_exception_ex(
+ maxminddb_exception_ce,
+ 0 TSRMLS_CC,
+ "Error opening database file (%s). Is this a valid "
+ "MaxMind DB file?",
+ db_file);
efree(mmdb);
return;
}
- maxminddb_obj *mmdb_obj = Z_MAXMINDDB_P(getThis());
+ maxminddb_obj *mmdb_obj = Z_MAXMINDDB_P(ZEND_THIS);
mmdb_obj->mmdb = mmdb;
}
-ZEND_BEGIN_ARG_INFO_EX(arginfo_maxmindbreader_get, 0, 0, 1)
-ZEND_ARG_INFO(0, ip_address)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(
+ arginfo_maxminddbreader_get, 0, 1, IS_MIXED, 1)
+ZEND_ARG_TYPE_INFO(0, ip_address, IS_STRING, 0)
ZEND_END_ARG_INFO()
PHP_METHOD(MaxMind_Db_Reader, get) {
@@ -188,76 +170,75 @@ PHP_METHOD(MaxMind_Db_Reader, get) {
get_record(INTERNAL_FUNCTION_PARAM_PASSTHRU, return_value, &prefix_len);
}
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(
+ arginfo_maxminddbreader_getWithPrefixLen, 0, 1, IS_ARRAY, 1)
+ZEND_ARG_TYPE_INFO(0, ip_address, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
PHP_METHOD(MaxMind_Db_Reader, getWithPrefixLen) {
- zval *record, *z_prefix_len;
-#ifdef ZEND_ENGINE_3
- zval _record, _z_prefix_len;
- record = &_record;
- z_prefix_len = &_z_prefix_len;
-#else
- ALLOC_INIT_ZVAL(record);
- ALLOC_INIT_ZVAL(z_prefix_len);
-#endif
+ zval record, z_prefix_len;
int prefix_len = 0;
- if (get_record(INTERNAL_FUNCTION_PARAM_PASSTHRU, record, &prefix_len)) {
+ if (get_record(INTERNAL_FUNCTION_PARAM_PASSTHRU, &record, &prefix_len) ==
+ FAILURE) {
return;
}
array_init(return_value);
- add_next_index_zval(return_value, record);
+ add_next_index_zval(return_value, &record);
- ZVAL_LONG(z_prefix_len, prefix_len);
- add_next_index_zval(return_value, z_prefix_len);
+ ZVAL_LONG(&z_prefix_len, prefix_len);
+ add_next_index_zval(return_value, &z_prefix_len);
}
static int
get_record(INTERNAL_FUNCTION_PARAMETERS, zval *record, int *prefix_len) {
char *ip_address = NULL;
strsize_t name_len;
- zval *_this_zval = NULL;
+ zval *this_zval = NULL;
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
getThis(),
"Os",
- &_this_zval,
+ &this_zval,
maxminddb_ce,
&ip_address,
&name_len) == FAILURE) {
- THROW_EXCEPTION("InvalidArgumentException",
- "Method takes exactly one argument.");
- return 1;
+ return FAILURE;
}
- const maxminddb_obj *mmdb_obj = (maxminddb_obj *)Z_MAXMINDDB_P(getThis());
+ const maxminddb_obj *mmdb_obj = (maxminddb_obj *)Z_MAXMINDDB_P(ZEND_THIS);
MMDB_s *mmdb = mmdb_obj->mmdb;
if (NULL == mmdb) {
- THROW_EXCEPTION("BadMethodCallException",
- "Attempt to read from a closed MaxMind DB.");
- return 1;
+ zend_throw_exception_ex(spl_ce_BadMethodCallException,
+ 0 TSRMLS_CC,
+ "Attempt to read from a closed MaxMind DB.");
+ return FAILURE;
}
struct addrinfo hints = {
.ai_family = AF_UNSPEC,
.ai_flags = AI_NUMERICHOST,
- // We set ai_socktype so that we only get one result back
+ /* We set ai_socktype so that we only get one result back */
.ai_socktype = SOCK_STREAM};
struct addrinfo *addresses = NULL;
int gai_status = getaddrinfo(ip_address, NULL, &hints, &addresses);
if (gai_status) {
- THROW_EXCEPTION("InvalidArgumentException",
- "The value \"%s\" is not a valid IP address.",
- ip_address);
- return 1;
+ zend_throw_exception_ex(spl_ce_InvalidArgumentException,
+ 0 TSRMLS_CC,
+ "The value \"%s\" is not a valid IP address.",
+ ip_address);
+ return FAILURE;
}
if (!addresses || !addresses->ai_addr) {
- THROW_EXCEPTION(
- "InvalidArgumentException",
+ zend_throw_exception_ex(
+ spl_ce_InvalidArgumentException,
+ 0 TSRMLS_CC,
"getaddrinfo was successful but failed to set the addrinfo");
- return 1;
+ return FAILURE;
}
int sa_family = addresses->ai_addr->sa_family;
@@ -269,132 +250,127 @@ get_record(INTERNAL_FUNCTION_PARAMETERS, zval *record, int *prefix_len) {
freeaddrinfo(addresses);
if (MMDB_SUCCESS != mmdb_error) {
- char *exception_name;
+ zend_class_entry *ex;
if (MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR == mmdb_error) {
- exception_name = "InvalidArgumentException";
+ ex = spl_ce_InvalidArgumentException;
} else {
- exception_name = PHP_MAXMINDDB_READER_EX_NS;
+ ex = maxminddb_exception_ce;
}
- THROW_EXCEPTION(exception_name,
- "Error looking up %s. %s",
- ip_address,
- MMDB_strerror(mmdb_error));
- return 1;
+ zend_throw_exception_ex(ex,
+ 0 TSRMLS_CC,
+ "Error looking up %s. %s",
+ ip_address,
+ MMDB_strerror(mmdb_error));
+ return FAILURE;
}
*prefix_len = result.netmask;
if (sa_family == AF_INET && mmdb->metadata.ip_version == 6) {
- // We return the prefix length given the IPv4 address. If there is
- // no IPv4 subtree, we return a prefix length of 0.
+ /* We return the prefix length given the IPv4 address. If there is
+ no IPv4 subtree, we return a prefix length of 0. */
*prefix_len = *prefix_len >= 96 ? *prefix_len - 96 : 0;
}
if (!result.found_entry) {
ZVAL_NULL(record);
- return 0;
+ return SUCCESS;
}
MMDB_entry_data_list_s *entry_data_list = NULL;
int status = MMDB_get_entry_data_list(&result.entry, &entry_data_list);
if (MMDB_SUCCESS != status) {
- THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS,
- "Error while looking up data for %s. %s",
- ip_address,
- MMDB_strerror(status));
+ zend_throw_exception_ex(maxminddb_exception_ce,
+ 0 TSRMLS_CC,
+ "Error while looking up data for %s. %s",
+ ip_address,
+ MMDB_strerror(status));
MMDB_free_entry_data_list(entry_data_list);
- return 1;
+ return FAILURE;
} else if (NULL == entry_data_list) {
- THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS,
- "Error while looking up data for %s. Your database may "
- "be corrupt or you have found a bug in libmaxminddb.",
- ip_address);
- return 1;
+ zend_throw_exception_ex(
+ maxminddb_exception_ce,
+ 0 TSRMLS_CC,
+ "Error while looking up data for %s. Your database may "
+ "be corrupt or you have found a bug in libmaxminddb.",
+ ip_address);
+ return FAILURE;
}
- handle_entry_data_list(entry_data_list, record TSRMLS_CC);
+ const MMDB_entry_data_list_s *rv =
+ handle_entry_data_list(entry_data_list, record TSRMLS_CC);
+ if (rv == NULL) {
+ /* We should have already thrown the exception in handle_entry_data_list
+ */
+ return FAILURE;
+ }
MMDB_free_entry_data_list(entry_data_list);
- return 0;
+ return SUCCESS;
}
-ZEND_BEGIN_ARG_INFO_EX(arginfo_maxmindbreader_void, 0, 0, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_maxminddbreader_void, 0, 0, 0)
ZEND_END_ARG_INFO()
PHP_METHOD(MaxMind_Db_Reader, metadata) {
- if (ZEND_NUM_ARGS() != 0) {
- THROW_EXCEPTION("InvalidArgumentException",
- "Method takes no arguments.");
+ zval *this_zval = NULL;
+
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+ getThis(),
+ "O",
+ &this_zval,
+ maxminddb_ce) == FAILURE) {
return;
}
const maxminddb_obj *const mmdb_obj =
- (maxminddb_obj *)Z_MAXMINDDB_P(getThis());
+ (maxminddb_obj *)Z_MAXMINDDB_P(this_zval);
if (NULL == mmdb_obj->mmdb) {
- THROW_EXCEPTION("BadMethodCallException",
- "Attempt to read from a closed MaxMind DB.");
+ zend_throw_exception_ex(spl_ce_BadMethodCallException,
+ 0 TSRMLS_CC,
+ "Attempt to read from a closed MaxMind DB.");
return;
}
- const char *const name = ZEND_NS_NAME(PHP_MAXMINDDB_READER_NS, "Metadata");
- zend_class_entry *metadata_ce = lookup_class(name TSRMLS_CC);
-
object_init_ex(return_value, metadata_ce);
-#ifdef ZEND_ENGINE_3
- zval _metadata_array;
- zval *metadata_array = &_metadata_array;
- ZVAL_NULL(metadata_array);
-#else
- zval *metadata_array;
- ALLOC_INIT_ZVAL(metadata_array);
-#endif
-
MMDB_entry_data_list_s *entry_data_list;
MMDB_get_metadata_as_entry_data_list(mmdb_obj->mmdb, &entry_data_list);
- handle_entry_data_list(entry_data_list, metadata_array TSRMLS_CC);
+ zval metadata_array;
+ const MMDB_entry_data_list_s *rv =
+ handle_entry_data_list(entry_data_list, &metadata_array TSRMLS_CC);
+ if (rv == NULL) {
+ return;
+ }
MMDB_free_entry_data_list(entry_data_list);
-#if PHP_VERSION_ID >= 80000
- zend_call_method_with_1_params(Z_OBJ_P(return_value),
+ zend_call_method_with_1_params(PROP_OBJ(return_value),
metadata_ce,
&metadata_ce->constructor,
ZEND_CONSTRUCTOR_FUNC_NAME,
NULL,
- metadata_array);
- zval_ptr_dtor(metadata_array);
-#elif defined(ZEND_ENGINE_3)
- zend_call_method_with_1_params(return_value,
- metadata_ce,
- &metadata_ce->constructor,
- ZEND_CONSTRUCTOR_FUNC_NAME,
- NULL,
- metadata_array);
- zval_ptr_dtor(metadata_array);
-#else
- zend_call_method_with_1_params(&return_value,
- metadata_ce,
- &metadata_ce->constructor,
- ZEND_CONSTRUCTOR_FUNC_NAME,
- NULL,
- metadata_array);
+ &metadata_array);
zval_ptr_dtor(&metadata_array);
-#endif
}
PHP_METHOD(MaxMind_Db_Reader, close) {
- if (ZEND_NUM_ARGS() != 0) {
- THROW_EXCEPTION("InvalidArgumentException",
- "Method takes no arguments.");
+ zval *this_zval = NULL;
+
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+ getThis(),
+ "O",
+ &this_zval,
+ maxminddb_ce) == FAILURE) {
return;
}
- maxminddb_obj *mmdb_obj = (maxminddb_obj *)Z_MAXMINDDB_P(getThis());
+ maxminddb_obj *mmdb_obj = (maxminddb_obj *)Z_MAXMINDDB_P(this_zval);
if (NULL == mmdb_obj->mmdb) {
- THROW_EXCEPTION("BadMethodCallException",
- "Attempt to close a closed MaxMind DB.");
+ zend_throw_exception_ex(spl_ce_BadMethodCallException,
+ 0 TSRMLS_CC,
+ "Attempt to close a closed MaxMind DB.");
return;
}
MMDB_close(mmdb_obj->mmdb);
@@ -411,14 +387,14 @@ handle_entry_data_list(const MMDB_entry_data_list_s *entry_data_list,
case MMDB_DATA_TYPE_ARRAY:
return handle_array(entry_data_list, z_value TSRMLS_CC);
case MMDB_DATA_TYPE_UTF8_STRING:
- _ZVAL_STRINGL(z_value,
- (char *)entry_data_list->entry_data.utf8_string,
- entry_data_list->entry_data.data_size);
+ ZVAL_STRINGL(z_value,
+ (char *)entry_data_list->entry_data.utf8_string,
+ entry_data_list->entry_data.data_size);
break;
case MMDB_DATA_TYPE_BYTES:
- _ZVAL_STRINGL(z_value,
- (char *)entry_data_list->entry_data.bytes,
- entry_data_list->entry_data.data_size);
+ ZVAL_STRINGL(z_value,
+ (char *)entry_data_list->entry_data.bytes,
+ entry_data_list->entry_data.data_size);
break;
case MMDB_DATA_TYPE_DOUBLE:
ZVAL_DOUBLE(z_value, entry_data_list->entry_data.double_value);
@@ -445,9 +421,10 @@ handle_entry_data_list(const MMDB_entry_data_list_s *entry_data_list,
ZVAL_LONG(z_value, entry_data_list->entry_data.int32);
break;
default:
- THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS,
- "Invalid data type arguments: %d",
- entry_data_list->entry_data.type);
+ zend_throw_exception_ex(maxminddb_exception_ce,
+ 0 TSRMLS_CC,
+ "Invalid data type arguments: %d",
+ entry_data_list->entry_data.type);
return NULL;
}
return entry_data_list;
@@ -459,30 +436,26 @@ handle_map(const MMDB_entry_data_list_s *entry_data_list,
array_init(z_value);
const uint32_t map_size = entry_data_list->entry_data.data_size;
- uint i;
+ uint32_t i;
for (i = 0; i < map_size && entry_data_list; i++) {
entry_data_list = entry_data_list->next;
char *key = estrndup((char *)entry_data_list->entry_data.utf8_string,
entry_data_list->entry_data.data_size);
if (NULL == key) {
- THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS,
- "Invalid data type arguments");
+ zend_throw_exception_ex(maxminddb_exception_ce,
+ 0 TSRMLS_CC,
+ "Invalid data type arguments");
return NULL;
}
entry_data_list = entry_data_list->next;
-#ifdef ZEND_ENGINE_3
- zval _new_value;
- zval *new_value = &_new_value;
- ZVAL_NULL(new_value);
-#else
- zval *new_value;
- ALLOC_INIT_ZVAL(new_value);
-#endif
+ zval new_value;
entry_data_list =
- handle_entry_data_list(entry_data_list, new_value TSRMLS_CC);
- add_assoc_zval(z_value, key, new_value);
+ handle_entry_data_list(entry_data_list, &new_value TSRMLS_CC);
+ if (entry_data_list != NULL) {
+ add_assoc_zval(z_value, key, &new_value);
+ }
efree(key);
}
return entry_data_list;
@@ -495,20 +468,15 @@ handle_array(const MMDB_entry_data_list_s *entry_data_list,
array_init(z_value);
- uint i;
+ uint32_t i;
for (i = 0; i < size && entry_data_list; i++) {
entry_data_list = entry_data_list->next;
-#ifdef ZEND_ENGINE_3
- zval _new_value;
- zval *new_value = &_new_value;
- ZVAL_NULL(new_value);
-#else
- zval *new_value;
- ALLOC_INIT_ZVAL(new_value);
-#endif
+ zval new_value;
entry_data_list =
- handle_entry_data_list(entry_data_list, new_value TSRMLS_CC);
- add_next_index_zval(z_value, new_value);
+ handle_entry_data_list(entry_data_list, &new_value TSRMLS_CC);
+ if (entry_data_list != NULL) {
+ add_next_index_zval(z_value, &new_value);
+ }
}
return entry_data_list;
}
@@ -535,7 +503,7 @@ static void handle_uint128(const MMDB_entry_data_list_s *entry_data_list,
spprintf(&num_str, 0, "0x%016" PRIX64 "%016" PRIX64, high, low);
CHECK_ALLOCATED(num_str);
- _ZVAL_STRING(z_value, num_str);
+ ZVAL_STRING(z_value, num_str);
efree(num_str);
}
@@ -556,7 +524,7 @@ static void handle_uint32(const MMDB_entry_data_list_s *entry_data_list,
spprintf(&int_str, 0, "%" PRIu32, val);
CHECK_ALLOCATED(int_str);
- _ZVAL_STRING(z_value, int_str);
+ ZVAL_STRING(z_value, int_str);
efree(int_str);
#endif
}
@@ -578,29 +546,11 @@ static void handle_uint64(const MMDB_entry_data_list_s *entry_data_list,
spprintf(&int_str, 0, "%" PRIu64, val);
CHECK_ALLOCATED(int_str);
- _ZVAL_STRING(z_value, int_str);
+ ZVAL_STRING(z_value, int_str);
efree(int_str);
#endif
}
-static zend_class_entry *lookup_class(const char *name TSRMLS_DC) {
-#ifdef ZEND_ENGINE_3
- zend_string *n = zend_string_init(name, strlen(name), 0);
- zend_class_entry *ce = zend_lookup_class(n);
- zend_string_release(n);
- if (NULL == ce) {
- zend_error(E_ERROR, "Class %s not found", name);
- }
- return ce;
-#else
- zend_class_entry **ce;
- if (FAILURE == zend_lookup_class(name, strlen(name), &ce TSRMLS_CC)) {
- zend_error(E_ERROR, "Class %s not found", name);
- }
- return *ce;
-#endif
-}
-
static void maxminddb_free_storage(free_obj_t *object TSRMLS_DC) {
maxminddb_obj *obj =
php_maxminddb_fetch_object((zend_object *)object TSRMLS_CC);
@@ -610,12 +560,8 @@ static void maxminddb_free_storage(free_obj_t *object TSRMLS_DC) {
}
zend_object_std_dtor(&obj->std TSRMLS_CC);
-#ifndef ZEND_ENGINE_3
- efree(object);
-#endif
}
-#ifdef ZEND_ENGINE_3
static zend_object *maxminddb_create_handler(zend_class_entry *type TSRMLS_DC) {
maxminddb_obj *obj = (maxminddb_obj *)ecalloc(1, sizeof(maxminddb_obj));
zend_object_std_init(&obj->std, type TSRMLS_CC);
@@ -625,49 +571,210 @@ static zend_object *maxminddb_create_handler(zend_class_entry *type TSRMLS_DC) {
return &obj->std;
}
-#else
-static zend_object_value
-maxminddb_create_handler(zend_class_entry *type TSRMLS_DC) {
- zend_object_value retval;
- maxminddb_obj *obj = (maxminddb_obj *)ecalloc(1, sizeof(maxminddb_obj));
- zend_object_std_init(&obj->std, type TSRMLS_CC);
- object_properties_init(&(obj->std), type);
+/* clang-format off */
+static zend_function_entry maxminddb_methods[] = {
+ PHP_ME(MaxMind_Db_Reader, __construct, arginfo_maxminddbreader_construct,
+ ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
+ PHP_ME(MaxMind_Db_Reader, close, arginfo_maxminddbreader_void, ZEND_ACC_PUBLIC)
+ PHP_ME(MaxMind_Db_Reader, get, arginfo_maxminddbreader_get, ZEND_ACC_PUBLIC)
+ PHP_ME(MaxMind_Db_Reader, getWithPrefixLen, arginfo_maxminddbreader_getWithPrefixLen, ZEND_ACC_PUBLIC)
+ PHP_ME(MaxMind_Db_Reader, metadata, arginfo_maxminddbreader_void, ZEND_ACC_PUBLIC)
+ { NULL, NULL, NULL }
+};
+/* clang-format on */
- retval.handle = zend_objects_store_put(
- obj, NULL, maxminddb_free_storage, NULL TSRMLS_CC);
- retval.handlers = &maxminddb_obj_handlers;
+ZEND_BEGIN_ARG_INFO_EX(arginfo_metadata_construct, 0, 0, 1)
+ZEND_ARG_TYPE_INFO(0, metadata, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
- return retval;
+PHP_METHOD(MaxMind_Db_Reader_Metadata, __construct) {
+ zval *object = NULL;
+ zval *metadata_array = NULL;
+ zend_long node_count = 0;
+ zend_long record_size = 0;
+
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+ getThis(),
+ "Oa",
+ &object,
+ metadata_ce,
+ &metadata_array) == FAILURE) {
+ return;
+ }
+
+ zval *tmp = NULL;
+ if ((tmp = zend_hash_str_find(HASH_OF(metadata_array),
+ "binary_format_major_version",
+ sizeof("binary_format_major_version") - 1))) {
+ zend_update_property(metadata_ce,
+ PROP_OBJ(object),
+ "binaryFormatMajorVersion",
+ sizeof("binaryFormatMajorVersion") - 1,
+ tmp);
+ }
+
+ if ((tmp = zend_hash_str_find(HASH_OF(metadata_array),
+ "binary_format_minor_version",
+ sizeof("binary_format_minor_version") - 1))) {
+ zend_update_property(metadata_ce,
+ PROP_OBJ(object),
+ "binaryFormatMinorVersion",
+ sizeof("binaryFormatMinorVersion") - 1,
+ tmp);
+ }
+
+ if ((tmp = zend_hash_str_find(HASH_OF(metadata_array),
+ "build_epoch",
+ sizeof("build_epoch") - 1))) {
+ zend_update_property(metadata_ce,
+ PROP_OBJ(object),
+ "buildEpoch",
+ sizeof("buildEpoch") - 1,
+ tmp);
+ }
+
+ if ((tmp = zend_hash_str_find(HASH_OF(metadata_array),
+ "database_type",
+ sizeof("database_type") - 1))) {
+ zend_update_property(metadata_ce,
+ PROP_OBJ(object),
+ "databaseType",
+ sizeof("databaseType") - 1,
+ tmp);
+ }
+
+ if ((tmp = zend_hash_str_find(HASH_OF(metadata_array),
+ "description",
+ sizeof("description") - 1))) {
+ zend_update_property(metadata_ce,
+ PROP_OBJ(object),
+ "description",
+ sizeof("description") - 1,
+ tmp);
+ }
+
+ if ((tmp = zend_hash_str_find(HASH_OF(metadata_array),
+ "ip_version",
+ sizeof("ip_version") - 1))) {
+ zend_update_property(metadata_ce,
+ PROP_OBJ(object),
+ "ipVersion",
+ sizeof("ipVersion") - 1,
+ tmp);
+ }
+
+ if ((tmp = zend_hash_str_find(
+ HASH_OF(metadata_array), "languages", sizeof("languages") - 1))) {
+ zend_update_property(metadata_ce,
+ PROP_OBJ(object),
+ "languages",
+ sizeof("languages") - 1,
+ tmp);
+ }
+
+ if ((tmp = zend_hash_str_find(HASH_OF(metadata_array),
+ "record_size",
+ sizeof("record_size") - 1))) {
+ zend_update_property(metadata_ce,
+ PROP_OBJ(object),
+ "recordSize",
+ sizeof("recordSize") - 1,
+ tmp);
+ if (Z_TYPE_P(tmp) == IS_LONG) {
+ record_size = Z_LVAL_P(tmp);
+ }
+ }
+
+ if (record_size != 0) {
+ zend_update_property_long(metadata_ce,
+ PROP_OBJ(object),
+ "nodeByteSize",
+ sizeof("nodeByteSize") - 1,
+ record_size / 4);
+ }
+
+ if ((tmp = zend_hash_str_find(HASH_OF(metadata_array),
+ "node_count",
+ sizeof("node_count") - 1))) {
+ zend_update_property(metadata_ce,
+ PROP_OBJ(object),
+ "nodeCount",
+ sizeof("nodeCount") - 1,
+ tmp);
+ if (Z_TYPE_P(tmp) == IS_LONG) {
+ node_count = Z_LVAL_P(tmp);
+ }
+ }
+
+ if (record_size != 0) {
+ zend_update_property_long(metadata_ce,
+ PROP_OBJ(object),
+ "searchTreeSize",
+ sizeof("searchTreeSize") - 1,
+ record_size * node_count / 4);
+ }
}
-#endif
// clang-format off
-static zend_function_entry maxminddb_methods[] = {
- PHP_ME(MaxMind_Db_Reader, __construct, arginfo_maxmindbreader_construct,
- ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
- PHP_ME(MaxMind_Db_Reader, close, arginfo_maxmindbreader_void, ZEND_ACC_PUBLIC)
- PHP_ME(MaxMind_Db_Reader, get, arginfo_maxmindbreader_get, ZEND_ACC_PUBLIC)
- PHP_ME(MaxMind_Db_Reader, getWithPrefixLen, arginfo_maxmindbreader_get, ZEND_ACC_PUBLIC)
- PHP_ME(MaxMind_Db_Reader, metadata, arginfo_maxmindbreader_void, ZEND_ACC_PUBLIC)
- { NULL, NULL, NULL }
+static zend_function_entry metadata_methods[] = {
+ PHP_ME(MaxMind_Db_Reader_Metadata, __construct, arginfo_metadata_construct, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
+ {NULL, NULL, NULL}
};
// clang-format on
PHP_MINIT_FUNCTION(maxminddb) {
zend_class_entry ce;
+ INIT_CLASS_ENTRY(ce, PHP_MAXMINDDB_READER_EX_NS, NULL);
+ maxminddb_exception_ce =
+ zend_register_internal_class_ex(&ce, zend_ce_exception);
+
INIT_CLASS_ENTRY(ce, PHP_MAXMINDDB_READER_NS, maxminddb_methods);
maxminddb_ce = zend_register_internal_class(&ce TSRMLS_CC);
maxminddb_ce->create_object = maxminddb_create_handler;
+
+ INIT_CLASS_ENTRY(ce, PHP_MAXMINDDB_METADATA_NS, metadata_methods);
+ metadata_ce = zend_register_internal_class(&ce TSRMLS_CC);
+ zend_declare_property_null(metadata_ce,
+ "binaryFormatMajorVersion",
+ sizeof("binaryFormatMajorVersion") - 1,
+ ZEND_ACC_PUBLIC);
+ zend_declare_property_null(metadata_ce,
+ "binaryFormatMinorVersion",
+ sizeof("binaryFormatMinorVersion") - 1,
+ ZEND_ACC_PUBLIC);
+ zend_declare_property_null(
+ metadata_ce, "buildEpoch", sizeof("buildEpoch") - 1, ZEND_ACC_PUBLIC);
+ zend_declare_property_null(metadata_ce,
+ "databaseType",
+ sizeof("databaseType") - 1,
+ ZEND_ACC_PUBLIC);
+ zend_declare_property_null(
+ metadata_ce, "description", sizeof("description") - 1, ZEND_ACC_PUBLIC);
+ zend_declare_property_null(
+ metadata_ce, "ipVersion", sizeof("ipVersion") - 1, ZEND_ACC_PUBLIC);
+ zend_declare_property_null(
+ metadata_ce, "languages", sizeof("languages") - 1, ZEND_ACC_PUBLIC);
+ zend_declare_property_null(metadata_ce,
+ "nodeByteSize",
+ sizeof("nodeByteSize") - 1,
+ ZEND_ACC_PUBLIC);
+ zend_declare_property_null(
+ metadata_ce, "nodeCount", sizeof("nodeCount") - 1, ZEND_ACC_PUBLIC);
+ zend_declare_property_null(
+ metadata_ce, "recordSize", sizeof("recordSize") - 1, ZEND_ACC_PUBLIC);
+ zend_declare_property_null(metadata_ce,
+ "searchTreeSize",
+ sizeof("searchTreeSize") - 1,
+ ZEND_ACC_PUBLIC);
+
memcpy(&maxminddb_obj_handlers,
zend_get_std_object_handlers(),
sizeof(zend_object_handlers));
maxminddb_obj_handlers.clone_obj = NULL;
-#ifdef ZEND_ENGINE_3
maxminddb_obj_handlers.offset = XtOffsetOf(maxminddb_obj, std);
maxminddb_obj_handlers.free_obj = maxminddb_free_storage;
-#endif
zend_declare_class_constant_string(maxminddb_ce,
"MMDB_LIB_VERSION",
sizeof("MMDB_LIB_VERSION") - 1,
diff --git a/vendor/maxmind-db/reader/ext/php_maxminddb.h b/vendor/maxmind-db/reader/ext/php_maxminddb.h
index 75c647bfc..cba9ed50b 100644
--- a/vendor/maxmind-db/reader/ext/php_maxminddb.h
+++ b/vendor/maxmind-db/reader/ext/php_maxminddb.h
@@ -15,7 +15,7 @@
#ifndef PHP_MAXMINDDB_H
#define PHP_MAXMINDDB_H 1
-#define PHP_MAXMINDDB_VERSION "1.6.0"
+#define PHP_MAXMINDDB_VERSION "1.10.1"
#define PHP_MAXMINDDB_EXTNAME "maxminddb"
extern zend_module_entry maxminddb_module_entry;
diff --git a/vendor/maxmind-db/reader/package.xml b/vendor/maxmind-db/reader/package.xml
new file mode 100644
index 000000000..b687468f4
--- /dev/null
+++ b/vendor/maxmind-db/reader/package.xml
@@ -0,0 +1,63 @@
+
+
+
+ maxminddb
+ pecl.php.net
+ Reader for the MaxMind DB file format
+ This is the PHP extension for reading MaxMind DB files. MaxMind DB is a binary file format that stores data indexed by IP address subnets (IPv4 or IPv6).
+
+ Greg Oschwald
+ oschwald
+ goschwald@maxmind.com
+ yes
+
+ 2021-04-14
+
+ 1.10.1
+ 1.10.1
+
+
+ stable
+ stable
+
+ Apache License 2.0
+ * Fix a `TypeError` exception in the pure PHP reader when using large
+ databases on 32-bit PHP builds with the `bcmath` extension. Reported
+ by dodo1708. GitHub #124.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 7.2.0
+
+
+ 1.10.0
+
+
+
+ maxminddb
+
+
diff --git a/vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php b/vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php
index 3d5a8291d..4dfaef442 100644
--- a/vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php
+++ b/vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php
@@ -1,7 +1,10 @@
fileHandle = @fopen($database, 'rb');
- if ($this->fileHandle === false) {
- throw new InvalidArgumentException(
- "Error opening \"$database\"."
- );
- }
- $this->fileSize = @filesize($database);
- if ($this->fileSize === false) {
+ $this->fileHandle = $fileHandle;
+
+ $fileSize = @filesize($database);
+ if ($fileSize === false) {
throw new UnexpectedValueException(
"Error determining the size of \"$database\"."
);
}
+ $this->fileSize = $fileSize;
$start = $this->findMetadataStart($database);
$metadataDecoder = new Decoder($this->fileHandle, $start);
- list($metadataArray) = $metadataDecoder->decode($start);
+ [$metadataArray] = $metadataDecoder->decode($start);
$this->metadata = new Metadata($metadataArray);
$this->decoder = new Decoder(
$this->fileHandle,
@@ -91,14 +119,14 @@ class Reader
*
* @return mixed the record for the IP address
*/
- public function get($ipAddress)
+ public function get(string $ipAddress)
{
if (\func_num_args() !== 1) {
- throw new InvalidArgumentException(
- 'Method takes exactly one argument.'
+ throw new ArgumentCountError(
+ sprintf('%s() expects exactly 1 parameter, %d given', __METHOD__, \func_num_args())
);
}
- list($record) = $this->getWithPrefixLen($ipAddress);
+ [$record] = $this->getWithPrefixLen($ipAddress);
return $record;
}
@@ -118,11 +146,11 @@ class Reader
* @return array an array where the first element is the record and the
* second the network prefix length for the record
*/
- public function getWithPrefixLen($ipAddress)
+ public function getWithPrefixLen(string $ipAddress): array
{
if (\func_num_args() !== 1) {
- throw new InvalidArgumentException(
- 'Method takes exactly one argument.'
+ throw new ArgumentCountError(
+ sprintf('%s() expects exactly 1 parameter, %d given', __METHOD__, \func_num_args())
);
}
@@ -132,13 +160,7 @@ class Reader
);
}
- if (!filter_var($ipAddress, FILTER_VALIDATE_IP)) {
- throw new InvalidArgumentException(
- "The value \"$ipAddress\" is not a valid IP address."
- );
- }
-
- list($pointer, $prefixLen) = $this->findAddressInTree($ipAddress);
+ [$pointer, $prefixLen] = $this->findAddressInTree($ipAddress);
if ($pointer === 0) {
return [null, $prefixLen];
}
@@ -146,9 +168,16 @@ class Reader
return [$this->resolveDataPointer($pointer), $prefixLen];
}
- private function findAddressInTree($ipAddress)
+ private function findAddressInTree(string $ipAddress): array
{
- $rawAddress = unpack('C*', inet_pton($ipAddress));
+ $packedAddr = @inet_pton($ipAddress);
+ if ($packedAddr === false) {
+ throw new InvalidArgumentException(
+ "The value \"$ipAddress\" is not a valid IP address."
+ );
+ }
+
+ $rawAddress = unpack('C*', $packedAddr);
$bitCount = \count($rawAddress) * 8;
@@ -182,14 +211,18 @@ class Reader
if ($node === $nodeCount) {
// Record is empty
return [0, $i];
- } elseif ($node > $nodeCount) {
+ }
+ if ($node > $nodeCount) {
// Record is a data pointer
return [$node, $i];
}
- throw new InvalidDatabaseException('Something bad happened');
+
+ throw new InvalidDatabaseException(
+ 'Invalid or corrupt database. Maximum search depth reached without finding a leaf node'
+ );
}
- private function ipV4StartNode()
+ private function ipV4StartNode(): int
{
// If we have an IPv4 database, the start node is the first node
if ($this->metadata->ipVersion === 4) {
@@ -205,16 +238,17 @@ class Reader
return $node;
}
- private function readNode($nodeNumber, $index)
+ private function readNode(int $nodeNumber, int $index): int
{
$baseOffset = $nodeNumber * $this->metadata->nodeByteSize;
switch ($this->metadata->recordSize) {
case 24:
$bytes = Util::read($this->fileHandle, $baseOffset + $index * 3, 3);
- list(, $node) = unpack('N', "\x00" . $bytes);
+ [, $node] = unpack('N', "\x00" . $bytes);
return $node;
+
case 28:
$bytes = Util::read($this->fileHandle, $baseOffset + 3 * $index, 4);
if ($index === 0) {
@@ -222,14 +256,16 @@ class Reader
} else {
$middle = 0x0F & \ord($bytes[0]);
}
- list(, $node) = unpack('N', \chr($middle) . substr($bytes, $index, 3));
+ [, $node] = unpack('N', \chr($middle) . substr($bytes, $index, 3));
return $node;
+
case 32:
$bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 4);
- list(, $node) = unpack('N', $bytes);
+ [, $node] = unpack('N', $bytes);
return $node;
+
default:
throw new InvalidDatabaseException(
'Unknown record size: '
@@ -238,7 +274,10 @@ class Reader
}
}
- private function resolveDataPointer($pointer)
+ /**
+ * @return mixed
+ */
+ private function resolveDataPointer(int $pointer)
{
$resolved = $pointer - $this->metadata->nodeCount
+ $this->metadata->searchTreeSize;
@@ -248,7 +287,7 @@ class Reader
);
}
- list($data) = $this->decoder->decode($resolved);
+ [$data] = $this->decoder->decode($resolved);
return $data;
}
@@ -258,7 +297,7 @@ class Reader
* are much faster algorithms (e.g., Boyer-Moore) for this if speed is ever
* an issue, but I suspect it won't be.
*/
- private function findMetadataStart($filename)
+ private function findMetadataStart(string $filename): int
{
$handle = $this->fileHandle;
$fstat = fstat($handle);
@@ -278,6 +317,7 @@ class Reader
return $offset + $markerLength;
}
}
+
throw new InvalidDatabaseException(
"Error opening database file ($filename). " .
'Is this a valid MaxMind DB file?'
@@ -290,11 +330,11 @@ class Reader
*
* @return Metadata object for the database
*/
- public function metadata()
+ public function metadata(): Metadata
{
if (\func_num_args()) {
- throw new InvalidArgumentException(
- 'Method takes no arguments.'
+ throw new ArgumentCountError(
+ sprintf('%s() expects exactly 0 parameters, %d given', __METHOD__, \func_num_args())
);
}
@@ -306,7 +346,7 @@ class Reader
);
}
- return $this->metadata;
+ return clone $this->metadata;
}
/**
@@ -315,8 +355,14 @@ class Reader
* @throws Exception
* if an I/O error occurs
*/
- public function close()
+ public function close(): void
{
+ if (\func_num_args()) {
+ throw new ArgumentCountError(
+ sprintf('%s() expects exactly 0 parameters, %d given', __METHOD__, \func_num_args())
+ );
+ }
+
if (!\is_resource($this->fileHandle)) {
throw new BadMethodCallException(
'Attempt to close a closed MaxMind DB.'
diff --git a/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php b/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php
index 132dae82c..babaed878 100644
--- a/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php
+++ b/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php
@@ -1,63 +1,61 @@
fileStream = $fileStream;
$this->pointerBase = $pointerBase;
@@ -68,7 +66,7 @@ class Decoder
$this->switchByteOrder = $this->isPlatformLittleEndian();
}
- public function decode($offset)
+ public function decode(int $offset): array
{
$ctrlByte = \ord(Util::read($this->fileStream, $offset, 1));
++$offset;
@@ -79,14 +77,14 @@ class Decoder
// use the size to determine the length of the pointer and then follow
// it.
if ($type === self::_POINTER) {
- list($pointer, $offset) = $this->decodePointer($ctrlByte, $offset);
+ [$pointer, $offset] = $this->decodePointer($ctrlByte, $offset);
// for unit testing
if ($this->pointerTestHack) {
return [$pointer];
}
- list($result) = $this->decode($pointer);
+ [$result] = $this->decode($pointer);
return [$result, $offset];
}
@@ -108,43 +106,51 @@ class Decoder
++$offset;
}
- list($size, $offset) = $this->sizeFromCtrlByte($ctrlByte, $offset);
+ [$size, $offset] = $this->sizeFromCtrlByte($ctrlByte, $offset);
return $this->decodeByType($type, $offset, $size);
}
- private function decodeByType($type, $offset, $size)
+ private function decodeByType(int $type, int $offset, int $size): array
{
switch ($type) {
case self::_MAP:
return $this->decodeMap($size, $offset);
+
case self::_ARRAY:
return $this->decodeArray($size, $offset);
+
case self::_BOOLEAN:
return [$this->decodeBoolean($size), $offset];
}
$newOffset = $offset + $size;
$bytes = Util::read($this->fileStream, $offset, $size);
+
switch ($type) {
case self::_BYTES:
case self::_UTF8_STRING:
return [$bytes, $newOffset];
+
case self::_DOUBLE:
$this->verifySize(8, $size);
return [$this->decodeDouble($bytes), $newOffset];
+
case self::_FLOAT:
$this->verifySize(4, $size);
return [$this->decodeFloat($bytes), $newOffset];
+
case self::_INT32:
return [$this->decodeInt32($bytes, $size), $newOffset];
+
case self::_UINT16:
case self::_UINT32:
case self::_UINT64:
case self::_UINT128:
return [$this->decodeUint($bytes, $size), $newOffset];
+
default:
throw new InvalidDatabaseException(
'Unknown or unexpected type: ' . $type
@@ -152,7 +158,7 @@ class Decoder
}
}
- private function verifySize($expected, $actual)
+ private function verifySize(int $expected, int $actual): void
{
if ($expected !== $actual) {
throw new InvalidDatabaseException(
@@ -161,86 +167,82 @@ class Decoder
}
}
- private function decodeArray($size, $offset)
+ private function decodeArray(int $size, int $offset): array
{
$array = [];
for ($i = 0; $i < $size; ++$i) {
- list($value, $offset) = $this->decode($offset);
- array_push($array, $value);
+ [$value, $offset] = $this->decode($offset);
+ $array[] = $value;
}
return [$array, $offset];
}
- private function decodeBoolean($size)
+ private function decodeBoolean(int $size): bool
{
- return $size === 0 ? false : true;
+ return $size !== 0;
}
- private function decodeDouble($bits)
+ private function decodeDouble(string $bytes): float
{
// This assumes IEEE 754 doubles, but most (all?) modern platforms
// use them.
- //
- // We are not using the "E" format as that was only added in
- // 7.0.15 and 7.1.1. As such, we must switch byte order on
- // little endian machines.
- list(, $double) = unpack('d', $this->maybeSwitchByteOrder($bits));
+ [, $double] = unpack('E', $bytes);
return $double;
}
- private function decodeFloat($bits)
+ private function decodeFloat(string $bytes): float
{
// This assumes IEEE 754 floats, but most (all?) modern platforms
// use them.
- //
- // We are not using the "G" format as that was only added in
- // 7.0.15 and 7.1.1. As such, we must switch byte order on
- // little endian machines.
- list(, $float) = unpack('f', $this->maybeSwitchByteOrder($bits));
+ [, $float] = unpack('G', $bytes);
return $float;
}
- private function decodeInt32($bytes, $size)
+ private function decodeInt32(string $bytes, int $size): int
{
switch ($size) {
case 0:
return 0;
+
case 1:
case 2:
case 3:
- $bytes = str_pad($bytes, 4, "\x00", STR_PAD_LEFT);
+ $bytes = str_pad($bytes, 4, "\x00", \STR_PAD_LEFT);
+
break;
+
case 4:
break;
+
default:
throw new InvalidDatabaseException(
"The MaxMind DB file's data section contains bad data (unknown data type or corrupt data)"
);
}
- list(, $int) = unpack('l', $this->maybeSwitchByteOrder($bytes));
+ [, $int] = unpack('l', $this->maybeSwitchByteOrder($bytes));
return $int;
}
- private function decodeMap($size, $offset)
+ private function decodeMap(int $size, int $offset): array
{
$map = [];
for ($i = 0; $i < $size; ++$i) {
- list($key, $offset) = $this->decode($offset);
- list($value, $offset) = $this->decode($offset);
+ [$key, $offset] = $this->decode($offset);
+ [$value, $offset] = $this->decode($offset);
$map[$key] = $value;
}
return [$map, $offset];
}
- private function decodePointer($ctrlByte, $offset)
+ private function decodePointer(int $ctrlByte, int $offset): array
{
$pointerSize = (($ctrlByte >> 3) & 0x3) + 1;
@@ -250,46 +252,56 @@ class Decoder
switch ($pointerSize) {
case 1:
$packed = \chr($ctrlByte & 0x7) . $buffer;
- list(, $pointer) = unpack('n', $packed);
+ [, $pointer] = unpack('n', $packed);
$pointer += $this->pointerBase;
+
break;
+
case 2:
$packed = "\x00" . \chr($ctrlByte & 0x7) . $buffer;
- list(, $pointer) = unpack('N', $packed);
+ [, $pointer] = unpack('N', $packed);
$pointer += $this->pointerBase + 2048;
+
break;
+
case 3:
$packed = \chr($ctrlByte & 0x7) . $buffer;
// It is safe to use 'N' here, even on 32 bit machines as the
// first bit is 0.
- list(, $pointer) = unpack('N', $packed);
+ [, $pointer] = unpack('N', $packed);
$pointer += $this->pointerBase + 526336;
+
break;
+
case 4:
// We cannot use unpack here as we might overflow on 32 bit
// machines
$pointerOffset = $this->decodeUint($buffer, $pointerSize);
- $byteLength = $pointerSize + $this->pointerBaseByteSize;
+ $pointerBase = $this->pointerBase;
- if ($byteLength <= _MM_MAX_INT_BYTES) {
- $pointer = $pointerOffset + $this->pointerBase;
- } elseif (\extension_loaded('gmp')) {
- $pointer = gmp_strval(gmp_add($pointerOffset, $this->pointerBase));
- } elseif (\extension_loaded('bcmath')) {
- $pointer = bcadd($pointerOffset, $this->pointerBase);
+ if (\PHP_INT_MAX - $pointerBase >= $pointerOffset) {
+ $pointer = $pointerOffset + $pointerBase;
} else {
throw new RuntimeException(
- 'The gmp or bcmath extension must be installed to read this database.'
+ 'The database offset is too large to be represented on your platform.'
);
}
+
+ break;
+
+ default:
+ throw new InvalidDatabaseException(
+ 'Unexpected pointer size ' . $pointerSize
+ );
}
return [$pointer, $offset];
}
- private function decodeUint($bytes, $byteLength)
+ // @phpstan-ignore-next-line
+ private function decodeUint(string $bytes, int $byteLength)
{
if ($byteLength === 0) {
return 0;
@@ -297,16 +309,22 @@ class Decoder
$integer = 0;
+ // PHP integers are signed. PHP_INT_SIZE - 1 is the number of
+ // complete bytes that can be converted to an integer. However,
+ // we can convert another byte if the leading bit is zero.
+ $useRealInts = $byteLength <= \PHP_INT_SIZE - 1
+ || ($byteLength === \PHP_INT_SIZE && (\ord($bytes[0]) & 0x80) === 0);
+
for ($i = 0; $i < $byteLength; ++$i) {
$part = \ord($bytes[$i]);
// We only use gmp or bcmath if the final value is too big
- if ($byteLength <= _MM_MAX_INT_BYTES) {
+ if ($useRealInts) {
$integer = ($integer << 8) + $part;
} elseif (\extension_loaded('gmp')) {
- $integer = gmp_strval(gmp_add(gmp_mul($integer, 256), $part));
+ $integer = gmp_strval(gmp_add(gmp_mul((string) $integer, '256'), $part));
} elseif (\extension_loaded('bcmath')) {
- $integer = bcadd(bcmul($integer, 256), $part);
+ $integer = bcadd(bcmul((string) $integer, '256'), (string) $part);
} else {
throw new RuntimeException(
'The gmp or bcmath extension must be installed to read this database.'
@@ -317,9 +335,9 @@ class Decoder
return $integer;
}
- private function sizeFromCtrlByte($ctrlByte, $offset)
+ private function sizeFromCtrlByte(int $ctrlByte, int $offset): array
{
- $size = $ctrlByte & 0x1f;
+ $size = $ctrlByte & 0x1F;
if ($size < 29) {
return [$size, $offset];
@@ -331,22 +349,22 @@ class Decoder
if ($size === 29) {
$size = 29 + \ord($bytes);
} elseif ($size === 30) {
- list(, $adjust) = unpack('n', $bytes);
+ [, $adjust] = unpack('n', $bytes);
$size = 285 + $adjust;
- } elseif ($size > 30) {
- list(, $adjust) = unpack('N', "\x00" . $bytes);
+ } else {
+ [, $adjust] = unpack('N', "\x00" . $bytes);
$size = $adjust + 65821;
}
return [$size, $offset + $bytesToRead];
}
- private function maybeSwitchByteOrder($bytes)
+ private function maybeSwitchByteOrder(string $bytes): string
{
return $this->switchByteOrder ? strrev($bytes) : $bytes;
}
- private function isPlatformLittleEndian()
+ private function isPlatformLittleEndian(): bool
{
$testint = 0x00FF;
$packed = pack('S', $testint);
diff --git a/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php b/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php
index 478a22c55..532310703 100644
--- a/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php
+++ b/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php
@@ -1,5 +1,7 @@
binaryFormatMajorVersion =
$metadata['binary_format_major_version'];
$this->binaryFormatMinorVersion =
@@ -80,9 +109,4 @@ class Metadata
$this->nodeByteSize = $this->recordSize / 4;
$this->searchTreeSize = $this->nodeCount * $this->nodeByteSize;
}
-
- public function __get($var)
- {
- return $this->$var;
- }
}
diff --git a/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php b/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php
index 87ebbf133..89db715e3 100644
--- a/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php
+++ b/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php
@@ -1,10 +1,15 @@
=5.6",
+ "php": ">=7.2",
"composer/ca-bundle": "^1.0.3",
"ext-curl": "*",
"ext-json": "*"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "2.*",
- "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0",
- "squizlabs/php_codesniffer": "3.*"
+ "friendsofphp/php-cs-fixer": "3.*",
+ "phpunit/phpunit": "^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "3.*",
+ "phpstan/phpstan": "*"
},
"autoload": {
"psr-4": {
diff --git a/vendor/maxmind/web-service-common/dev-bin/release.sh b/vendor/maxmind/web-service-common/dev-bin/release.sh
index a5de03027..96c41607d 100644
--- a/vendor/maxmind/web-service-common/dev-bin/release.sh
+++ b/vendor/maxmind/web-service-common/dev-bin/release.sh
@@ -51,10 +51,6 @@ fi
git push
-message="$version
-
-$notes"
-
-hub release create -m "$message" "$tag"
+gh release create --target "$(git branch --show-current)" -t "$version" -n "$notes" "$tag"
git push --tags
diff --git a/vendor/maxmind/web-service-common/phpstan.neon b/vendor/maxmind/web-service-common/phpstan.neon
new file mode 100644
index 000000000..ee1616dbe
--- /dev/null
+++ b/vendor/maxmind/web-service-common/phpstan.neon
@@ -0,0 +1,7 @@
+parameters:
+ level: 6
+ paths:
+ - src
+ - tests
+ checkMissingIterableValueType: false
+
diff --git a/vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php b/vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php
index ba423627b..5b016ce51 100644
--- a/vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php
+++ b/vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php
@@ -1,5 +1,7 @@
uri = $uri;
parent::__construct($message, $httpStatus, $previous);
}
- public function getUri()
+ public function getUri(): string
{
return $this->uri;
}
- public function getStatusCode()
+ public function getStatusCode(): int
{
return $this->getCode();
}
diff --git a/vendor/maxmind/web-service-common/src/Exception/InsufficientFundsException.php b/vendor/maxmind/web-service-common/src/Exception/InsufficientFundsException.php
index fe159a2a5..283145650 100644
--- a/vendor/maxmind/web-service-common/src/Exception/InsufficientFundsException.php
+++ b/vendor/maxmind/web-service-common/src/Exception/InsufficientFundsException.php
@@ -1,5 +1,7 @@
error = $error;
parent::__construct($message, $httpStatus, $uri, $previous);
}
- public function getErrorCode()
+ public function getErrorCode(): string
{
return $this->error;
}
diff --git a/vendor/maxmind/web-service-common/src/Exception/IpAddressNotFoundException.php b/vendor/maxmind/web-service-common/src/Exception/IpAddressNotFoundException.php
index 31608f718..581db488b 100644
--- a/vendor/maxmind/web-service-common/src/Exception/IpAddressNotFoundException.php
+++ b/vendor/maxmind/web-service-common/src/Exception/IpAddressNotFoundException.php
@@ -1,5 +1,7 @@
accountId = $accountId;
$this->licenseKey = $licenseKey;
@@ -61,6 +104,9 @@ class Client
if (isset($options['host'])) {
$this->host = $options['host'];
}
+ if (isset($options['useHttps'])) {
+ $this->useHttps = $options['useHttps'];
+ }
if (isset($options['userAgent'])) {
$this->userAgentPrefix = $options['userAgent'] . ' ';
}
@@ -96,9 +142,9 @@ class Client
* @throws WebServiceException when some other error occurs. This also
* serves as the base class for the above exceptions.
*
- * @return array The decoded content of a successful response
+ * @return array|null The decoded content of a successful response
*/
- public function post($service, $path, $input)
+ public function post(string $service, string $path, array $input): ?array
{
$requestBody = json_encode($input);
if ($requestBody === false) {
@@ -113,7 +159,7 @@ class Client
['Content-Type: application/json']
);
- list($statusCode, $contentType, $responseBody) = $request->post($requestBody);
+ [$statusCode, $contentType, $responseBody] = $request->post($requestBody);
return $this->handleResponse(
$statusCode,
@@ -124,11 +170,13 @@ class Client
);
}
- public function get($service, $path)
+ public function get(string $service, string $path): ?array
{
- $request = $this->createRequest($path);
+ $request = $this->createRequest(
+ $path
+ );
- list($statusCode, $contentType, $responseBody) = $request->get();
+ [$statusCode, $contentType, $responseBody] = $request->get();
return $this->handleResponse(
$statusCode,
@@ -139,15 +187,15 @@ class Client
);
}
- private function userAgent()
+ private function userAgent(): string
{
$curlVersion = curl_version();
- return $this->userAgentPrefix . 'MaxMind-WS-API/' . self::VERSION . ' PHP/' . PHP_VERSION .
+ return $this->userAgentPrefix . 'MaxMind-WS-API/' . self::VERSION . ' PHP/' . \PHP_VERSION .
' curl/' . $curlVersion['version'];
}
- private function createRequest($path, $headers = [])
+ private function createRequest(string $path, array $headers = []): Http\Request
{
array_push(
$headers,
@@ -170,11 +218,11 @@ class Client
}
/**
- * @param int $statusCode the HTTP status code of the response
- * @param string $contentType the Content-Type of the response
- * @param string $responseBody the response body
- * @param string $service the name of the service
- * @param string $path the path used in the request
+ * @param int $statusCode the HTTP status code of the response
+ * @param string|null $contentType the Content-Type of the response
+ * @param string|null $responseBody the response body
+ * @param string $service the name of the service
+ * @param string $path the path used in the request
*
* @throws AuthenticationException when there is an issue authenticating the
* request
@@ -185,15 +233,15 @@ class Client
* @throws WebServiceException when some other error occurs. This also
* serves as the base class for the above exceptions
*
- * @return array The decoded content of a successful response
+ * @return array|null The decoded content of a successful response
*/
private function handleResponse(
- $statusCode,
- $contentType,
- $responseBody,
- $service,
- $path
- ) {
+ int $statusCode,
+ ?string $contentType,
+ ?string $responseBody,
+ string $service,
+ string $path
+ ): ?array {
if ($statusCode >= 400 && $statusCode <= 499) {
$this->handle4xx($statusCode, $contentType, $responseBody, $service, $path);
} elseif ($statusCode >= 500) {
@@ -208,20 +256,26 @@ class Client
/**
* @return string describing the JSON error
*/
- private function jsonErrorDescription()
+ private function jsonErrorDescription(): string
{
$errno = json_last_error();
+
switch ($errno) {
- case JSON_ERROR_DEPTH:
+ case \JSON_ERROR_DEPTH:
return 'The maximum stack depth has been exceeded.';
- case JSON_ERROR_STATE_MISMATCH:
+
+ case \JSON_ERROR_STATE_MISMATCH:
return 'Invalid or malformed JSON.';
- case JSON_ERROR_CTRL_CHAR:
+
+ case \JSON_ERROR_CTRL_CHAR:
return 'Control character error.';
- case JSON_ERROR_SYNTAX:
+
+ case \JSON_ERROR_SYNTAX:
return 'Syntax error.';
- case JSON_ERROR_UTF8:
+
+ case \JSON_ERROR_UTF8:
return 'Malformed UTF-8 characters.';
+
default:
return "Other JSON error ($errno).";
}
@@ -232,17 +286,17 @@ class Client
*
* @return string the constructed URL
*/
- private function urlFor($path)
+ private function urlFor(string $path): string
{
- return 'https://' . $this->host . $path;
+ return ($this->useHttps ? 'https://' : 'http://') . $this->host . $path;
}
/**
- * @param int $statusCode the HTTP status code
- * @param string $contentType the response content-type
- * @param string $body the response body
- * @param string $service the service name
- * @param string $path the path used in the request
+ * @param int $statusCode the HTTP status code
+ * @param string|null $contentType the response content-type
+ * @param string|null $body the response body
+ * @param string $service the service name
+ * @param string $path the path used in the request
*
* @throws AuthenticationException
* @throws HttpException
@@ -250,20 +304,20 @@ class Client
* @throws InvalidRequestException
*/
private function handle4xx(
- $statusCode,
- $contentType,
- $body,
- $service,
- $path
- ) {
- if (\strlen($body) === 0) {
+ int $statusCode,
+ ?string $contentType,
+ ?string $body,
+ string $service,
+ string $path
+ ): void {
+ if ($body === null || $body === '') {
throw new HttpException(
"Received a $statusCode error for $service with no body",
$statusCode,
$this->urlFor($path)
);
}
- if (!strstr($contentType, 'json')) {
+ if ($contentType === null || !strstr($contentType, 'json')) {
throw new HttpException(
"Received a $statusCode error for $service with " .
'the following body: ' . $body,
@@ -311,11 +365,11 @@ class Client
* @throws InsufficientFundsException
*/
private function handleWebServiceError(
- $message,
- $code,
- $statusCode,
- $path
- ) {
+ string $message,
+ string $code,
+ int $statusCode,
+ string $path
+ ): void {
switch ($code) {
case 'IP_ADDRESS_NOT_FOUND':
case 'IP_ADDRESS_RESERVED':
@@ -325,6 +379,7 @@ class Client
$statusCode,
$this->urlFor($path)
);
+
case 'ACCOUNT_ID_REQUIRED':
case 'ACCOUNT_ID_UNKNOWN':
case 'AUTHORIZATION_INVALID':
@@ -337,6 +392,7 @@ class Client
$statusCode,
$this->urlFor($path)
);
+
case 'OUT_OF_QUERIES':
case 'INSUFFICIENT_FUNDS':
throw new InsufficientFundsException(
@@ -345,6 +401,7 @@ class Client
$statusCode,
$this->urlFor($path)
);
+
case 'PERMISSION_REQUIRED':
throw new PermissionRequiredException(
$message,
@@ -352,6 +409,7 @@ class Client
$statusCode,
$this->urlFor($path)
);
+
default:
throw new InvalidRequestException(
$message,
@@ -369,7 +427,7 @@ class Client
*
* @throws HttpException
*/
- private function handle5xx($statusCode, $service, $path)
+ private function handle5xx(int $statusCode, string $service, string $path): void
{
throw new HttpException(
"Received a server error ($statusCode) for $service",
@@ -385,7 +443,7 @@ class Client
*
* @throws HttpException
*/
- private function handleUnexpectedStatus($statusCode, $service, $path)
+ private function handleUnexpectedStatus(int $statusCode, string $service, string $path): void
{
throw new HttpException(
'Received an unexpected HTTP status ' .
@@ -396,22 +454,22 @@ class Client
}
/**
- * @param int $statusCode the HTTP status code
- * @param string $body the successful request body
- * @param string $service the service name
+ * @param int $statusCode the HTTP status code
+ * @param string|null $body the successful request body
+ * @param string $service the service name
*
* @throws WebServiceException if a response body is included but not
* expected, or is not expected but not
* included, or is expected and included
* but cannot be decoded as JSON
*
- * @return array the decoded request body
+ * @return array|null the decoded request body
*/
- private function handleSuccess($statusCode, $body, $service)
+ private function handleSuccess(int $statusCode, ?string $body, string $service): ?array
{
// A 204 should have no response body
if ($statusCode === 204) {
- if (\strlen($body) !== 0) {
+ if ($body !== null && $body !== '') {
throw new WebServiceException(
"Received a 204 response for $service along with an " .
"unexpected HTTP body: $body"
@@ -422,7 +480,7 @@ class Client
}
// A 200 should have a valid JSON body
- if (\strlen($body) === 0) {
+ if ($body === null || $body === '') {
throw new WebServiceException(
"Received a 200 response for $service but did not " .
'receive a HTTP body.'
@@ -441,7 +499,7 @@ class Client
return $decodedContent;
}
- private function getCaBundle()
+ private function getCaBundle(): ?string
{
$curlVersion = curl_version();
diff --git a/vendor/maxmind/web-service-common/src/WebService/Http/CurlRequest.php b/vendor/maxmind/web-service-common/src/WebService/Http/CurlRequest.php
index ce1cf73ad..64db29f63 100644
--- a/vendor/maxmind/web-service-common/src/WebService/Http/CurlRequest.php
+++ b/vendor/maxmind/web-service-common/src/WebService/Http/CurlRequest.php
@@ -1,5 +1,7 @@
url = $url;
$this->options = $options;
@@ -38,69 +36,65 @@ class CurlRequest implements Request
}
/**
- * @param string $body
- *
* @throws HttpException
- *
- * @return array
*/
- public function post($body)
+ public function post(string $body): array
{
$curl = $this->createCurl();
- curl_setopt($curl, CURLOPT_POST, true);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
+ curl_setopt($curl, \CURLOPT_POST, true);
+ curl_setopt($curl, \CURLOPT_POSTFIELDS, $body);
return $this->execute($curl);
}
- public function get()
+ public function get(): array
{
$curl = $this->createCurl();
- curl_setopt($curl, CURLOPT_HTTPGET, true);
+ curl_setopt($curl, \CURLOPT_HTTPGET, true);
return $this->execute($curl);
}
/**
- * @return resource
+ * @return \CurlHandle
*/
private function createCurl()
{
curl_reset($this->ch);
$opts = [];
- $opts[CURLOPT_URL] = $this->url;
+ $opts[\CURLOPT_URL] = $this->url;
if (!empty($this->options['caBundle'])) {
- $opts[CURLOPT_CAINFO] = $this->options['caBundle'];
+ $opts[\CURLOPT_CAINFO] = $this->options['caBundle'];
}
- $opts[CURLOPT_ENCODING] = '';
- $opts[CURLOPT_SSL_VERIFYHOST] = 2;
- $opts[CURLOPT_FOLLOWLOCATION] = false;
- $opts[CURLOPT_SSL_VERIFYPEER] = true;
- $opts[CURLOPT_RETURNTRANSFER] = true;
+ $opts[\CURLOPT_ENCODING] = '';
+ $opts[\CURLOPT_SSL_VERIFYHOST] = 2;
+ $opts[\CURLOPT_FOLLOWLOCATION] = false;
+ $opts[\CURLOPT_SSL_VERIFYPEER] = true;
+ $opts[\CURLOPT_RETURNTRANSFER] = true;
- $opts[CURLOPT_HTTPHEADER] = $this->options['headers'];
- $opts[CURLOPT_USERAGENT] = $this->options['userAgent'];
- $opts[CURLOPT_PROXY] = $this->options['proxy'];
+ $opts[\CURLOPT_HTTPHEADER] = $this->options['headers'];
+ $opts[\CURLOPT_USERAGENT] = $this->options['userAgent'];
+ $opts[\CURLOPT_PROXY] = $this->options['proxy'];
// The defined()s are here as the *_MS opts are not available on older
// cURL versions
$connectTimeout = $this->options['connectTimeout'];
if (\defined('CURLOPT_CONNECTTIMEOUT_MS')) {
- $opts[CURLOPT_CONNECTTIMEOUT_MS] = ceil($connectTimeout * 1000);
+ $opts[\CURLOPT_CONNECTTIMEOUT_MS] = ceil($connectTimeout * 1000);
} else {
- $opts[CURLOPT_CONNECTTIMEOUT] = ceil($connectTimeout);
+ $opts[\CURLOPT_CONNECTTIMEOUT] = ceil($connectTimeout);
}
$timeout = $this->options['timeout'];
if (\defined('CURLOPT_TIMEOUT_MS')) {
- $opts[CURLOPT_TIMEOUT_MS] = ceil($timeout * 1000);
+ $opts[\CURLOPT_TIMEOUT_MS] = ceil($timeout * 1000);
} else {
- $opts[CURLOPT_TIMEOUT] = ceil($timeout);
+ $opts[\CURLOPT_TIMEOUT] = ceil($timeout);
}
curl_setopt_array($this->ch, $opts);
@@ -109,13 +103,11 @@ class CurlRequest implements Request
}
/**
- * @param resource $curl
+ * @param \CurlHandle $curl
*
* @throws HttpException
- *
- * @return array
*/
- private function execute($curl)
+ private function execute($curl): array
{
$body = curl_exec($curl);
if ($errno = curl_errno($curl)) {
@@ -128,9 +120,17 @@ class CurlRequest implements Request
);
}
- $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
- $contentType = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
+ $statusCode = curl_getinfo($curl, \CURLINFO_HTTP_CODE);
+ $contentType = curl_getinfo($curl, \CURLINFO_CONTENT_TYPE);
- return [$statusCode, $contentType, $body];
+ return [
+ $statusCode,
+ // The PHP docs say "Content-Type: of the requested document. NULL
+ // indicates server did not send valid Content-Type: header" for
+ // CURLINFO_CONTENT_TYPE. However, it will return FALSE if no header
+ // is set. To keep our types simple, we return null in this case.
+ ($contentType === false ? null : $contentType),
+ $body,
+ ];
}
}
diff --git a/vendor/maxmind/web-service-common/src/WebService/Http/Request.php b/vendor/maxmind/web-service-common/src/WebService/Http/Request.php
index 641c1ffcc..994c46964 100644
--- a/vendor/maxmind/web-service-common/src/WebService/Http/Request.php
+++ b/vendor/maxmind/web-service-common/src/WebService/Http/Request.php
@@ -1,5 +1,7 @@
ch)) {
@@ -34,13 +39,7 @@ class RequestFactory
return $this->ch;
}
- /**
- * @param string $url
- * @param array $options
- *
- * @return Request
- */
- public function request($url, $options)
+ public function request(string $url, array $options): Request
{
$options['curlHandle'] = $this->getCurlHandle();
diff --git a/vendor/paragonie/sodium_compat/.github/workflows/ci.yml b/vendor/paragonie/sodium_compat/.github/workflows/ci.yml
deleted file mode 100644
index 68c3ab698..000000000
--- a/vendor/paragonie/sodium_compat/.github/workflows/ci.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-name: CI
-
-on: [push]
-
-jobs:
- old:
- name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
- runs-on: ${{ matrix.operating-system }}
- strategy:
- fail-fast: false
- matrix:
- operating-system: ['ubuntu-18.04']
- php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0']
- steps:
- - name: Checkout
- uses: actions/checkout@v3
-
- - name: Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php-versions }}
- extensions: mbstring, intl
- ini-values: max_execution_time=600, memory_limit=256M, error_reporting=-1, display_errors=On
- coverage: none
-
- - name: Use Composer 1.x
- run: composer self-update --1
-
- - name: Install Composer dependencies
- uses: "ramsey/composer-install@v2"
-
- - name: PHPUnit tests
- run: vendor/bin/phpunit
-
- moderate-modern:
- name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
- runs-on: ${{ matrix.operating-system }}
- strategy:
- matrix:
- operating-system: ['ubuntu-latest']
- php-versions: ['7.1', '7.2', '7.3', '7.4', '8.0', '8.1']
-
- continue-on-error: ${{ matrix.php-versions == '8.1' }}
-
- steps:
- - name: Checkout
- uses: actions/checkout@v3
-
- - name: Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php-versions }}
- extensions: mbstring, intl, sodium
- ini-values: error_reporting=-1, display_errors=On
- coverage: none
-
- - name: Install Composer dependencies (PHP < 8.1)
- if: ${{ matrix.php-versions != '8.1' }}
- uses: "ramsey/composer-install@v2"
-
- - name: Install Composer dependencies - ignore-platform-reqs (PHP 8.1)
- if: ${{ matrix.php-versions == '8.1' }}
- uses: "ramsey/composer-install@v2"
- with:
- composer-options: --ignore-platform-reqs
-
- - name: PHPUnit tests
- run: vendor/bin/phpunit
diff --git a/vendor/paragonie/sodium_compat/.github/workflows/psalm.yml b/vendor/paragonie/sodium_compat/.github/workflows/psalm.yml
deleted file mode 100644
index 11ac4500a..000000000
--- a/vendor/paragonie/sodium_compat/.github/workflows/psalm.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-name: Psalm
-
-on: [push]
-
-jobs:
- psalm:
- name: Psalm on PHP ${{ matrix.php-versions }}
- runs-on: ${{ matrix.operating-system }}
- strategy:
- matrix:
- operating-system: ['ubuntu-latest']
- php-versions: ['7.4']
- steps:
- - name: Checkout
- uses: actions/checkout@v3
-
- - name: Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php-versions }}
- tools: psalm:4
- coverage: none
-
- - name: Install Composer dependencies
- uses: "ramsey/composer-install@v2"
- with:
- composer-options: --no-dev
-
- - name: Put Psalm config in place
- run: cp psalm-above-3.xml psalm.xml
-
- - name: Static Analysis
- run: psalm
diff --git a/vendor/paragonie/sodium_compat/.gitignore b/vendor/paragonie/sodium_compat/.gitignore
deleted file mode 100644
index 0df5a6daf..000000000
--- a/vendor/paragonie/sodium_compat/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-/.idea/
-/.php_cs.cache
-/.phpunit.result.cache
-/box/
-/dist/sodium-compat.phar
-/dist/sodium-compat.phar.sig
-/composer.lock
-/vendor/
-/psalm.xml
diff --git a/vendor/paragonie/sodium_compat/appveyor.yml b/vendor/paragonie/sodium_compat/appveyor.yml
deleted file mode 100644
index 9621e9abc..000000000
--- a/vendor/paragonie/sodium_compat/appveyor.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-build: false
-shallow_clone: false
-platform:
- - x86
- - x64
-clone_folder: C:\projects\sodium_compat
-image: Visual Studio 2017
-
-install:
- - cinst -y OpenSSL.Light
- - SET PATH=C:\Program Files\OpenSSL;%PATH%
- - sc config wuauserv start= auto
- - net start wuauserv
- - cinst -y php --version 5.6.30
- - cd c:\tools\php56
- - copy php.ini-production php.ini
- - echo date.timezone="UTC" >> php.ini
- - echo extension_dir=ext >> php.ini
- - echo extension=php_openssl.dll >> php.ini
- - cd C:\projects\sodium_compat
- - SET PATH=C:\tools\php56;%PATH%
- - php.exe -r "readfile('http://getcomposer.org/installer');" | php.exe
- - php.exe composer.phar install --prefer-source --no-interaction
-
-test_script:
- - cd C:\projects\sodium_compat
- - vendor\bin\phpunit.bat tests/Windows32Test.php
diff --git a/vendor/paragonie/sodium_compat/autoload-fast.php b/vendor/paragonie/sodium_compat/autoload-fast.php
deleted file mode 100644
index 08724d1ed..000000000
--- a/vendor/paragonie/sodium_compat/autoload-fast.php
+++ /dev/null
@@ -1,4 +0,0 @@
-= 50300) {
- require_once (dirname(__FILE__) . '/tests/phpunit-shim.php');
-}
-require_once (dirname(__FILE__) . '/autoload.php');
diff --git a/vendor/paragonie/sodium_compat/autoload.php b/vendor/paragonie/sodium_compat/autoload.php
index 3f723bae7..fd12f87b2 100644
--- a/vendor/paragonie/sodium_compat/autoload.php
+++ b/vendor/paragonie/sodium_compat/autoload.php
@@ -42,7 +42,9 @@ if (PHP_VERSION_ID < 70000) {
}
/* Explicitly, always load the Compat class: */
-require_once dirname(__FILE__) . '/src/Compat.php';
+if (!class_exists('ParagonIE_Sodium_Compat', false)) {
+ require_once dirname(__FILE__) . '/src/Compat.php';
+}
if (!class_exists('SodiumException', false)) {
require_once dirname(__FILE__) . '/src/SodiumException.php';
@@ -69,4 +71,5 @@ if (PHP_VERSION_ID < 70200 || !extension_loaded('sodium')) {
// Older versions of {PHP, ext/sodium} will not define these
require_once(dirname(__FILE__) . '/lib/php72compat.php');
}
+require_once(dirname(__FILE__) . '/lib/stream-xchacha20.php');
require_once(dirname(__FILE__) . '/lib/ristretto255.php');
diff --git a/vendor/paragonie/sodium_compat/build-phar.sh b/vendor/paragonie/sodium_compat/build-phar.sh
deleted file mode 100644
index 380eee63b..000000000
--- a/vendor/paragonie/sodium_compat/build-phar.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-
-curl -LSs https://box-project.github.io/box2/installer.php | php
-mkdir ~/box
-mv box.phar ~/box/box
-PATH=$PATH:~/box/ make -C dist/ build-phar
-# PATH=$PATH:~/box/ make -C dist/ sign-phar
-
diff --git a/vendor/paragonie/sodium_compat/dist/Makefile b/vendor/paragonie/sodium_compat/dist/Makefile
deleted file mode 100644
index f30a25dd1..000000000
--- a/vendor/paragonie/sodium_compat/dist/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# This builds sodium-compat.phar. To run this Makefile, `box` and `composer`
-# must be installed and in your $PATH. Run it from inside the dist/ directory.
-
-box := $(shell which box)
-composer := "composer"
-gitcommit := $(shell git rev-parse HEAD)
-
-.PHONY: all
-all: build-phar
-
-.PHONY: sign-phar
-sign-phar:
- gpg -u 7F52D5C61D1255C731362E826B97A1C2826404DA --armor --output sodium-compat.phar.sig --detach-sig sodium-compat.phar
-
-# ensure we run in clean tree. export git tree and run there.
-.PHONY: build-phar
-build-phar:
- @echo "Creating .phar from revision $(shell git rev-parse HEAD)."
- rm -rf worktree
- install -d worktree
- (cd $(CURDIR)/..; git archive HEAD) | tar -x -C worktree
- $(MAKE) -f $(CURDIR)/Makefile -C worktree sodium-compat.phar
- mv worktree/*.phar .
- rm -rf worktree
-
-.PHONY: clean
-clean:
- rm -vf sodium-compat.phar sodium-compat.phar.sig
-
-# Inside workdir/:
-
-sodium-compat.phar: dist/box.json composer.lock
- cp dist/box.json .
- php -d phar.readonly=0 $(box) build -c box.json -v
-
-composer.lock:
- $(composer) config autoloader-suffix $(gitcommit)
- $(composer) install --no-dev
-
diff --git a/vendor/paragonie/sodium_compat/dist/box.json b/vendor/paragonie/sodium_compat/dist/box.json
deleted file mode 100644
index 5f7827ede..000000000
--- a/vendor/paragonie/sodium_compat/dist/box.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "chmod": "0755",
- "finder": [
- {
- "in": "",
- "name": "autoload.php"
- },
- {
- "in": "src",
- "name": "*.php"
- },
- {
- "in": "lib",
- "name": "*.php"
- },
- {
- "in": "vendor/composer",
- "name": "*.php"
- },
- {
- "in": "vendor/paragonie",
- "name": "*.php"
- }
- ],
- "compactors": [
- "Herrera\\Box\\Compactor\\Php"
- ],
- "main": "vendor/autoload.php",
- "output": "sodium-compat.phar",
- "shebang": false,
- "stub": true
-}
diff --git a/vendor/paragonie/sodium_compat/lib/stream-xchacha20.php b/vendor/paragonie/sodium_compat/lib/stream-xchacha20.php
index 82d42f2fe..ffeae33f3 100644
--- a/vendor/paragonie/sodium_compat/lib/stream-xchacha20.php
+++ b/vendor/paragonie/sodium_compat/lib/stream-xchacha20.php
@@ -41,3 +41,19 @@ if (!is_callable('sodium_crypto_stream_xchacha20_xor')) {
return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor($message, $nonce, $key, true);
}
}
+if (!is_callable('sodium_crypto_stream_xchacha20_xor_ic')) {
+ /**
+ * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor_ic()
+ * @param string $message
+ * @param string $nonce
+ * @param int $counter
+ * @param string $key
+ * @return string
+ * @throws SodiumException
+ * @throws TypeError
+ */
+ function sodium_crypto_stream_xchacha20_xor_ic($message, $nonce, $counter, $key)
+ {
+ return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor_ic($message, $nonce, $counter, $key, true);
+ }
+}
diff --git a/vendor/paragonie/sodium_compat/phpunit.xml.dist b/vendor/paragonie/sodium_compat/phpunit.xml.dist
deleted file mode 100644
index 1d34f6d03..000000000
--- a/vendor/paragonie/sodium_compat/phpunit.xml.dist
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- ./src
-
-
-
-
- ./tests/unit
-
-
- ./tests/compat
-
-
-
diff --git a/vendor/paragonie/sodium_compat/psalm-above-3.xml b/vendor/paragonie/sodium_compat/psalm-above-3.xml
deleted file mode 100644
index 12548c18a..000000000
--- a/vendor/paragonie/sodium_compat/psalm-above-3.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/paragonie/sodium_compat/psalm-below-3.xml b/vendor/paragonie/sodium_compat/psalm-below-3.xml
deleted file mode 100644
index a92a6cf35..000000000
--- a/vendor/paragonie/sodium_compat/psalm-below-3.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/paragonie/sodium_compat/src/Compat.php b/vendor/paragonie/sodium_compat/src/Compat.php
index cc6c92b92..7265d45cb 100644
--- a/vendor/paragonie/sodium_compat/src/Compat.php
+++ b/vendor/paragonie/sodium_compat/src/Compat.php
@@ -3154,6 +3154,55 @@ class ParagonIE_Sodium_Compat
return ParagonIE_Sodium_Core_XChaCha20::streamXorIc($message, $nonce, $key);
}
+ /**
+ * DANGER! UNAUTHENTICATED ENCRYPTION!
+ *
+ * Unless you are following expert advice, do not use this feature.
+ *
+ * Algorithm: XChaCha20
+ *
+ * This DOES NOT provide ciphertext integrity.
+ *
+ * @param string $message Plaintext message
+ * @param string $nonce Number to be used Once; must be 24 bytes
+ * @param int $counter
+ * @param string $key Encryption key
+ * @return string Encrypted text which is vulnerable to chosen-
+ * ciphertext attacks unless you implement some
+ * other mitigation to the ciphertext (i.e.
+ * Encrypt then MAC)
+ * @param bool $dontFallback
+ * @throws SodiumException
+ * @throws TypeError
+ * @psalm-suppress MixedArgument
+ */
+ public static function crypto_stream_xchacha20_xor_ic($message, $nonce, $counter, $key, $dontFallback = false)
+ {
+ /* Type checks: */
+ ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 1);
+ ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
+ ParagonIE_Sodium_Core_Util::declareScalarType($counter, 'int', 3);
+ ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);
+
+ /* Input validation: */
+ if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_STREAM_XCHACHA20_NONCEBYTES) {
+ throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_XCHACHA20_NONCEBYTES long.');
+ }
+ if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_STREAM_XCHACHA20_KEYBYTES) {
+ throw new SodiumException('Argument 3 must be CRYPTO_SECRETBOX_XCHACHA20_KEYBYTES long.');
+ }
+
+ if (is_callable('sodium_crypto_stream_xchacha20_xor_ic') && !$dontFallback) {
+ return sodium_crypto_stream_xchacha20_xor_ic($message, $nonce, $counter, $key);
+ }
+
+ $ic = ParagonIE_Sodium_Core_Util::store64_le($counter);
+ if (PHP_INT_SIZE === 4) {
+ return ParagonIE_Sodium_Core32_XChaCha20::streamXorIc($message, $nonce, $key, $ic);
+ }
+ return ParagonIE_Sodium_Core_XChaCha20::streamXorIc($message, $nonce, $key, $ic);
+ }
+
/**
* Return a secure random key for use with crypto_stream_xchacha20
*
diff --git a/vendor/paragonie/sodium_compat/src/Core/Base64/Common.php b/vendor/paragonie/sodium_compat/src/Core/Base64/Common.php
deleted file mode 100644
index 94b2e8f33..000000000
--- a/vendor/paragonie/sodium_compat/src/Core/Base64/Common.php
+++ /dev/null
@@ -1,213 +0,0 @@
- $chunk */
- $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 3));
- $b0 = $chunk[1];
- $b1 = $chunk[2];
- $b2 = $chunk[3];
-
- $dest .=
- self::encode6Bits( $b0 >> 2 ) .
- self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
- self::encode6Bits((($b1 << 2) | ($b2 >> 6)) & 63) .
- self::encode6Bits( $b2 & 63);
- }
- // The last chunk, which may have padding:
- if ($i < $srcLen) {
- /** @var array $chunk */
- $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
- $b0 = $chunk[1];
- if ($i + 1 < $srcLen) {
- $b1 = $chunk[2];
- $dest .=
- self::encode6Bits($b0 >> 2) .
- self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
- self::encode6Bits(($b1 << 2) & 63);
- if ($pad) {
- $dest .= '=';
- }
- } else {
- $dest .=
- self::encode6Bits( $b0 >> 2) .
- self::encode6Bits(($b0 << 4) & 63);
- if ($pad) {
- $dest .= '==';
- }
- }
- }
- return $dest;
- }
-
- /**
- * decode from base64 into binary
- *
- * Base64 character set "./[A-Z][a-z][0-9]"
- *
- * @param string $src
- * @param bool $strictPadding
- * @return string
- * @throws RangeException
- * @throws TypeError
- * @psalm-suppress RedundantCondition
- */
- public static function decode($src, $strictPadding = false)
- {
- // Remove padding
- $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
- if ($srcLen === 0) {
- return '';
- }
-
- if ($strictPadding) {
- if (($srcLen & 3) === 0) {
- if ($src[$srcLen - 1] === '=') {
- $srcLen--;
- if ($src[$srcLen - 1] === '=') {
- $srcLen--;
- }
- }
- }
- if (($srcLen & 3) === 1) {
- throw new RangeException(
- 'Incorrect padding'
- );
- }
- if ($src[$srcLen - 1] === '=') {
- throw new RangeException(
- 'Incorrect padding'
- );
- }
- } else {
- $src = rtrim($src, '=');
- $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
- }
-
- $err = 0;
- $dest = '';
- // Main loop (no padding):
- for ($i = 0; $i + 4 <= $srcLen; $i += 4) {
- /** @var array $chunk */
- $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 4));
- $c0 = self::decode6Bits($chunk[1]);
- $c1 = self::decode6Bits($chunk[2]);
- $c2 = self::decode6Bits($chunk[3]);
- $c3 = self::decode6Bits($chunk[4]);
-
- $dest .= pack(
- 'CCC',
- ((($c0 << 2) | ($c1 >> 4)) & 0xff),
- ((($c1 << 4) | ($c2 >> 2)) & 0xff),
- ((($c2 << 6) | $c3 ) & 0xff)
- );
- $err |= ($c0 | $c1 | $c2 | $c3) >> 8;
- }
- // The last chunk, which may have padding:
- if ($i < $srcLen) {
- /** @var array $chunk */
- $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
- $c0 = self::decode6Bits($chunk[1]);
-
- if ($i + 2 < $srcLen) {
- $c1 = self::decode6Bits($chunk[2]);
- $c2 = self::decode6Bits($chunk[3]);
- $dest .= pack(
- 'CC',
- ((($c0 << 2) | ($c1 >> 4)) & 0xff),
- ((($c1 << 4) | ($c2 >> 2)) & 0xff)
- );
- $err |= ($c0 | $c1 | $c2) >> 8;
- } elseif ($i + 1 < $srcLen) {
- $c1 = self::decode6Bits($chunk[2]);
- $dest .= pack(
- 'C',
- ((($c0 << 2) | ($c1 >> 4)) & 0xff)
- );
- $err |= ($c0 | $c1) >> 8;
- } elseif ($i < $srcLen && $strictPadding) {
- $err |= 1;
- }
- }
- /** @var bool $check */
- $check = ($err === 0);
- if (!$check) {
- throw new RangeException(
- 'Base64::decode() only expects characters in the correct base64 alphabet'
- );
- }
- return $dest;
- }
-
- /**
- * Uses bitwise operators instead of table-lookups to turn 6-bit integers
- * into 8-bit integers.
- *
- * Base64 character set:
- * [A-Z] [a-z] [0-9] + /
- * 0x41-0x5a, 0x61-0x7a, 0x30-0x39, 0x2b, 0x2f
- *
- * @param int $src
- * @return int
- */
- abstract protected static function decode6Bits($src);
-
- /**
- * Uses bitwise operators instead of table-lookups to turn 8-bit integers
- * into 6-bit integers.
- *
- * @param int $src
- * @return string
- */
- abstract protected static function encode6Bits($src);
-}
diff --git a/vendor/paragonie/sodium_compat/src/Core/Ed25519.php b/vendor/paragonie/sodium_compat/src/Core/Ed25519.php
index f135b1c61..3f18c7d49 100644
--- a/vendor/paragonie/sodium_compat/src/Core/Ed25519.php
+++ b/vendor/paragonie/sodium_compat/src/Core/Ed25519.php
@@ -3,6 +3,9 @@
if (class_exists('ParagonIE_Sodium_Core_Ed25519', false)) {
return;
}
+if (!class_exists('ParagonIE_Sodium_Core_Curve25519', false)) {
+ require_once dirname(__FILE__) . '/Curve25519.php';
+}
/**
* Class ParagonIE_Sodium_Core_Ed25519
diff --git a/vendor/paragonie/sodium_compat/src/Core32/Ed25519.php b/vendor/paragonie/sodium_compat/src/Core32/Ed25519.php
index 3cb642254..1b86b6774 100644
--- a/vendor/paragonie/sodium_compat/src/Core32/Ed25519.php
+++ b/vendor/paragonie/sodium_compat/src/Core32/Ed25519.php
@@ -3,6 +3,9 @@
if (class_exists('ParagonIE_Sodium_Core32_Ed25519', false)) {
return;
}
+if (!class_exists('ParagonIE_Sodium_Core32_Curve25519')) {
+ require_once dirname(__FILE__) . '/Curve25519.php';
+}
/**
* Class ParagonIE_Sodium_Core32_Ed25519
diff --git a/vendor/phpmailer/phpmailer/README.md b/vendor/phpmailer/phpmailer/README.md
index 3a1a05b26..56f971a49 100644
--- a/vendor/phpmailer/phpmailer/README.md
+++ b/vendor/phpmailer/phpmailer/README.md
@@ -10,6 +10,7 @@
[](https://packagist.org/packages/phpmailer/phpmailer)
[](https://packagist.org/packages/phpmailer/phpmailer)
[](https://phpmailer.github.io/PHPMailer/)
+[](https://api.securityscorecards.dev/projects/github.com/PHPMailer/PHPMailer)
## Features
- Probably the world's most popular code for sending email from PHP!
diff --git a/vendor/phpmailer/phpmailer/VERSION b/vendor/phpmailer/phpmailer/VERSION
index a45cc0adf..a08b5f1e8 100644
--- a/vendor/phpmailer/phpmailer/VERSION
+++ b/vendor/phpmailer/phpmailer/VERSION
@@ -1 +1 @@
-6.6.3
\ No newline at end of file
+6.6.4
\ No newline at end of file
diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php
index b3d5ca94b..339ee5753 100644
--- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php
+++ b/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php
@@ -5,22 +5,29 @@
* @package PHPMailer
*/
-$PHPMAILER_LANG['authenticate'] = 'SMTP Σφάλμα: Αδυναμία πιστοποίησης (authentication).';
-$PHPMAILER_LANG['connect_host'] = 'SMTP Σφάλμα: Αδυναμία σύνδεσης στον SMTP-Host.';
-$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Σφάλμα: Τα δεδομένα δεν έγιναν αποδεκτά.';
-$PHPMAILER_LANG['empty_message'] = 'Το E-Mail δεν έχει περιεχόμενο .';
-$PHPMAILER_LANG['encoding'] = 'Αγνωστο Encoding-Format: ';
-$PHPMAILER_LANG['execute'] = 'Αδυναμία εκτέλεσης ακόλουθης εντολής: ';
-$PHPMAILER_LANG['file_access'] = 'Αδυναμία προσπέλασης του αρχείου: ';
-$PHPMAILER_LANG['file_open'] = 'Σφάλμα Αρχείου: Δεν είναι δυνατό το άνοιγμα του ακόλουθου αρχείου: ';
-$PHPMAILER_LANG['from_failed'] = 'Η παρακάτω διεύθυνση αποστολέα δεν είναι σωστή: ';
-$PHPMAILER_LANG['instantiate'] = 'Αδυναμία εκκίνησης Mail function.';
-$PHPMAILER_LANG['invalid_address'] = 'Το μήνυμα δεν εστάλη, η διεύθυνση δεν είναι έγκυρη: ';
+$PHPMAILER_LANG['authenticate'] = 'Σφάλμα SMTP: Αδυναμία πιστοποίησης.';
+$PHPMAILER_LANG['buggy_php'] = 'Η έκδοση PHP που χρησιμοποιείτε παρουσιάζει σφάλμα που μπορεί να έχει ως αποτέλεσμα κατεστραμένα μηνύματα. Για να το διορθώσετε, αλλάξτε τον τρόπο αποστολής σε SMTP, απενεργοποιήστε την επιλογή mail.add_x_header στο αρχείο php.ini, αλλάξτε λειτουργικό σε MacOS ή Linux ή αναβαθμίστε την PHP σε έκδοση 7.0.17+ ή 7.1.3+.';
+$PHPMAILER_LANG['connect_host'] = 'Σφάλμα SMTP: Αδυναμία σύνδεσης με τον φιλοξενητή SMTP.';
+$PHPMAILER_LANG['data_not_accepted'] = 'Σφάλμα SMTP: Μη αποδεκτά δεδομένα.';
+$PHPMAILER_LANG['empty_message'] = 'Η ηλεκτρονική επιστολή δεν έχει περιεχόμενο.';
+$PHPMAILER_LANG['encoding'] = 'Άγνωστη μορφή κωδικοποίησης: ';
+$PHPMAILER_LANG['execute'] = 'Αδυναμία εκτέλεσης: ';
+$PHPMAILER_LANG['extension_missing'] = 'Απουσία επέκτασης: ';
+$PHPMAILER_LANG['file_access'] = 'Αδυναμία πρόσβασης στο αρχείο: ';
+$PHPMAILER_LANG['file_open'] = 'Σφάλμα Αρχείου: Αδυναμία ανοίγματος αρχείου: ';
+$PHPMAILER_LANG['from_failed'] = 'Η ακόλουθη διεύθυνση αποστολέα δεν είναι σωστή: ';
+$PHPMAILER_LANG['instantiate'] = 'Αδυναμία εκκίνησης συνάρτησης Mail.';
+$PHPMAILER_LANG['invalid_address'] = 'Μη έγκυρη διεύθυνση: ';
+$PHPMAILER_LANG['invalid_header'] = 'Μη έγκυρο όνομα κεφαλίδας ή τιμή';
+$PHPMAILER_LANG['invalid_hostentry'] = 'Μη έγκυρη εισαγωγή φιλοξενητή: ';
+$PHPMAILER_LANG['invalid_host'] = 'Μη έγκυρος φιλοξενητής: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer δεν υποστηρίζεται.';
-$PHPMAILER_LANG['provide_address'] = 'Παρακαλούμε δώστε τουλάχιστον μια e-mail διεύθυνση παραλήπτη.';
-$PHPMAILER_LANG['recipients_failed'] = 'SMTP Σφάλμα: Οι παρακάτω διευθύνσεις παραλήπτη δεν είναι έγκυρες: ';
+$PHPMAILER_LANG['provide_address'] = 'Δώστε τουλάχιστον μια ηλεκτρονική διεύθυνση παραλήπτη.';
+$PHPMAILER_LANG['recipients_failed'] = 'Σφάλμα SMTP: Οι παρακάτω διευθύνσεις παραλήπτη δεν είναι έγκυρες: ';
$PHPMAILER_LANG['signing'] = 'Σφάλμα υπογραφής: ';
-$PHPMAILER_LANG['smtp_connect_failed'] = 'Αποτυχία σύνδεσης στον SMTP Server.';
-$PHPMAILER_LANG['smtp_error'] = 'Σφάλμα από τον SMTP Server: ';
-$PHPMAILER_LANG['variable_set'] = 'Αδυναμία ορισμού ή αρχικοποίησης μεταβλητής: ';
-//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
+$PHPMAILER_LANG['smtp_code'] = 'Κώδικάς SMTP: ';
+$PHPMAILER_LANG['smtp_code_ex'] = 'Πρόσθετες πληροφορίες SMTP: ';
+$PHPMAILER_LANG['smtp_connect_failed'] = 'Αποτυχία σύνδεσης SMTP.';
+$PHPMAILER_LANG['smtp_detail'] = 'Λεπτομέρεια: ';
+$PHPMAILER_LANG['smtp_error'] = 'Σφάλμα με τον διακομιστή SMTP: ';
+$PHPMAILER_LANG['variable_set'] = 'Αδυναμία ορισμού ή επαναφοράς μεταβλητής: ';
diff --git a/vendor/phpmailer/phpmailer/src/PHPMailer.php b/vendor/phpmailer/phpmailer/src/PHPMailer.php
index 6590a0ef3..62424545a 100644
--- a/vendor/phpmailer/phpmailer/src/PHPMailer.php
+++ b/vendor/phpmailer/phpmailer/src/PHPMailer.php
@@ -350,8 +350,8 @@ class PHPMailer
public $Password = '';
/**
- * SMTP auth type.
- * Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2, attempted in that order if not specified.
+ * SMTP authentication type. Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2.
+ * If not specified, the first one from that list that the server supports will be selected.
*
* @var string
*/
@@ -750,7 +750,7 @@ class PHPMailer
*
* @var string
*/
- const VERSION = '6.6.3';
+ const VERSION = '6.6.4';
/**
* Error severity: message only, continue processing.
@@ -1096,7 +1096,7 @@ class PHPMailer
return false;
}
- if ($name !== null) {
+ if ($name !== null && is_string($name)) {
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
} else {
$name = '';
@@ -1288,7 +1288,7 @@ class PHPMailer
*/
public function setFrom($address, $name = '', $auto = true)
{
- $address = trim($address);
+ $address = trim((string)$address);
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
//Don't validate now addresses with IDN. Will be done in send().
$pos = strrpos($address, '@');
@@ -1891,7 +1891,14 @@ class PHPMailer
foreach ($this->to as $toaddr) {
$toArr[] = $this->addrFormat($toaddr);
}
- $to = implode(', ', $toArr);
+ $to = trim(implode(', ', $toArr));
+
+ //If there are no To-addresses (e.g. when sending only to BCC-addresses)
+ //the following should be added to get a correct DKIM-signature.
+ //Compare with $this->preSend()
+ if ($to === '') {
+ $to = 'undisclosed-recipients:;';
+ }
$params = null;
//This sets the SMTP envelope sender which gets turned into a return-path header by the receiver
@@ -4470,6 +4477,7 @@ class PHPMailer
'ics' => 'text/calendar',
'xml' => 'text/xml',
'xsl' => 'text/xml',
+ 'csv' => 'text/csv',
'wmv' => 'video/x-ms-wmv',
'mpeg' => 'video/mpeg',
'mpe' => 'video/mpeg',
diff --git a/vendor/phpmailer/phpmailer/src/POP3.php b/vendor/phpmailer/phpmailer/src/POP3.php
index a7cc39112..78e91e49a 100644
--- a/vendor/phpmailer/phpmailer/src/POP3.php
+++ b/vendor/phpmailer/phpmailer/src/POP3.php
@@ -46,7 +46,7 @@ class POP3
*
* @var string
*/
- const VERSION = '6.6.3';
+ const VERSION = '6.6.4';
/**
* Default POP3 port number.
diff --git a/vendor/phpmailer/phpmailer/src/SMTP.php b/vendor/phpmailer/phpmailer/src/SMTP.php
index c439a888b..cc1711d2e 100644
--- a/vendor/phpmailer/phpmailer/src/SMTP.php
+++ b/vendor/phpmailer/phpmailer/src/SMTP.php
@@ -35,7 +35,7 @@ class SMTP
*
* @var string
*/
- const VERSION = '6.6.3';
+ const VERSION = '6.6.4';
/**
* SMTP line break constant.
diff --git a/vendor/sonata-project/google-authenticator/Makefile b/vendor/sonata-project/google-authenticator/Makefile
deleted file mode 100644
index 4ae0c63d8..000000000
--- a/vendor/sonata-project/google-authenticator/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-# DO NOT EDIT THIS FILE!
-#
-# It's auto-generated by sonata-project/dev-kit package.
-
-all:
- @echo "Please choose a task."
-.PHONY: all
-
-lint: lint-composer lint-yaml lint-composer lint-xml lint-php
-.PHONY: lint
-
-lint-composer:
- composer validate
-.PHONY: lint-composer
-
-lint-yaml:
- yaml-lint --ignore-non-yaml-files --quiet --exclude vendor .
-
-.PHONY: lint-yaml
-
-lint-xml:
- find . \( -name '*.xml' -or -name '*.xliff' \) \
- -not -path './vendor/*' \
- -not -path './src/Resources/public/vendor/*' \
- | while read xmlFile; \
- do \
- XMLLINT_INDENT=' ' xmllint --encode UTF-8 --format "$$xmlFile"|diff - "$$xmlFile"; \
- if [ $$? -ne 0 ] ;then exit 1; fi; \
- done
-
-.PHONY: lint-xml
-
-lint-php:
- php-cs-fixer fix --ansi --verbose --diff --dry-run
-.PHONY: lint-php
-
-cs-fix: cs-fix-php cs-fix-xml
-.PHONY: cs-fix
-
-cs-fix-php:
- php-cs-fixer fix --verbose
-.PHONY: cs-fix-php
-
-cs-fix-xml:
- find . \( -name '*.xml' -or -name '*.xliff' \) \
- -not -path './vendor/*' \
- -not -path './src/Resources/public/vendor/*' \
- | while read xmlFile; \
- do \
- XMLLINT_INDENT=' ' xmllint --encode UTF-8 --format "$$xmlFile" --output "$$xmlFile"; \
- done
-.PHONY: cs-fix-xml
-
-test:
- phpunit -c phpunit.xml.dist --coverage-clover build/logs/clover.xml
-.PHONY: test
-
-docs:
- cd docs && sphinx-build -W -b html -d _build/doctrees . _build/html
-.PHONY: docs
diff --git a/vendor/sonata-project/google-authenticator/composer.json b/vendor/sonata-project/google-authenticator/composer.json
index 4fbb160ac..39f98eabe 100644
--- a/vendor/sonata-project/google-authenticator/composer.json
+++ b/vendor/sonata-project/google-authenticator/composer.json
@@ -22,10 +22,10 @@
}
],
"require": {
- "php": "^7.1"
+ "php": "^7.3 || ^8.0"
},
"require-dev": {
- "symfony/phpunit-bridge": "^4.0"
+ "symfony/phpunit-bridge": "^5.1.8"
},
"config": {
"sort-packages": true
diff --git a/vendor/sonata-project/google-authenticator/phpunit.xml.dist b/vendor/sonata-project/google-authenticator/phpunit.xml.dist
deleted file mode 100644
index 492b036db..000000000
--- a/vendor/sonata-project/google-authenticator/phpunit.xml.dist
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
- ./tests/
-
-
-
-
-
-
-
-
-
- ./src/
-
-
-
-
-
-
-
-
diff --git a/vendor/sonata-project/google-authenticator/sample/web/Users.php b/vendor/sonata-project/google-authenticator/sample/web/Users.php
index fb169def9..f6c3d56f3 100644
--- a/vendor/sonata-project/google-authenticator/sample/web/Users.php
+++ b/vendor/sonata-project/google-authenticator/sample/web/Users.php
@@ -82,7 +82,7 @@ class User
public function isOTP()
{
- if (isset($_SESSION['OTP']) && true == $_SESSION['OTP']) {
+ if (isset($_SESSION['OTP']) && true === $_SESSION['OTP']) {
return true;
}
@@ -91,8 +91,8 @@ class User
public function isLoggedIn()
{
- if (isset($_SESSION['loggedin']) && true == $_SESSION['loggedin'] &&
- isset($_SESSION['ua']) && $_SESSION['ua'] == $_SERVER['HTTP_USER_AGENT']
+ if (isset($_SESSION['loggedin']) && true === $_SESSION['loggedin'] &&
+ isset($_SESSION['ua']) && $_SESSION['ua'] === $_SERVER['HTTP_USER_AGENT']
) {
return $_SESSION['username'];
}
@@ -143,9 +143,9 @@ class User
$daysUntilInvalid = 0;
$time = (string) floor((time() / (3600 * 24))); // get day number
if (isset($_COOKIE['otp'])) {
- list($otpday, $hash) = explode(':', $_COOKIE['otp']);
+ [$otpday, $hash] = explode(':', $_COOKIE['otp']);
- if ($otpday >= $time - $daysUntilInvalid && $hash == hash_hmac('sha1', $this->getUsername().':'.$otpday.':'.$_SERVER['HTTP_USER_AGENT'], $this->getSecret())) {
+ if ($otpday >= $time - $daysUntilInvalid && $hash === hash_hmac('sha1', $this->getUsername().':'.$otpday.':'.$_SERVER['HTTP_USER_AGENT'], $this->getSecret())) {
return true;
}
}
diff --git a/vendor/sonata-project/google-authenticator/sample/web/index.php b/vendor/sonata-project/google-authenticator/sample/web/index.php
index c039674c5..dc0bb3ef3 100644
--- a/vendor/sonata-project/google-authenticator/sample/web/index.php
+++ b/vendor/sonata-project/google-authenticator/sample/web/index.php
@@ -65,7 +65,7 @@ if ($username = $users->hasSession()) {
include __DIR__.'/../tmpl/login.php';
}
}
- die();
+ exit();
}
//if the username is set in _POST, then we assume the user filled in the login form.
@@ -101,14 +101,14 @@ if ($username = $users->hasSession()) {
}
}
- die();
+ exit();
}
}
// if we're here, something went wrong, destroy the session and show a login error
session_destroy();
include __DIR__.'/../tmpl/login-error.php';
- die();
+ exit();
}
// if neither a session nor tried to submit the login credentials -> login screen
diff --git a/vendor/sonata-project/google-authenticator/src/FixedBitNotation.php b/vendor/sonata-project/google-authenticator/src/FixedBitNotation.php
index 3f5ff558b..c248ec0d4 100644
--- a/vendor/sonata-project/google-authenticator/src/FixedBitNotation.php
+++ b/vendor/sonata-project/google-authenticator/src/FixedBitNotation.php
@@ -66,10 +66,10 @@ final class FixedBitNotation
* @param bool $padFinalGroup Add padding to end of encoded output
* @param string $padCharacter Character to use for padding
*/
- public function __construct(int $bitsPerCharacter, string $chars = null, bool $rightPadFinalBits = false, bool $padFinalGroup = false, string $padCharacter = '=')
+ public function __construct(int $bitsPerCharacter, ?string $chars = null, bool $rightPadFinalBits = false, bool $padFinalGroup = false, string $padCharacter = '=')
{
// Ensure validity of $chars
- if (!is_string($chars) || ($charLength = strlen($chars)) < 2) {
+ if (!\is_string($chars) || ($charLength = \strlen($chars)) < 2) {
$chars =
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-,';
$charLength = 64;
@@ -111,14 +111,12 @@ final class FixedBitNotation
* Encode a string.
*
* @param string $rawString Binary data to encode
- *
- * @return string
*/
public function encode($rawString): string
{
// Unpack string into an array of bytes
$bytes = unpack('C*', $rawString);
- $byteCount = count($bytes);
+ $byteCount = \count($bytes);
$encodedString = '';
$byte = array_shift($bytes);
@@ -154,9 +152,9 @@ final class FixedBitNotation
// $bitsPerCharacter and 8, divided by 8
$lcmMap = [1 => 1, 2 => 1, 3 => 3, 4 => 1, 5 => 5, 6 => 3, 7 => 7, 8 => 1];
$bytesPerGroup = $lcmMap[$bitsPerCharacter];
- $pads = $bytesPerGroup * 8 / $bitsPerCharacter
- - ceil((strlen($rawString) % $bytesPerGroup)
- * 8 / $bitsPerCharacter);
+ $pads = (int) ($bytesPerGroup * 8 / $bitsPerCharacter
+ - ceil((\strlen($rawString) % $bytesPerGroup)
+ * 8 / $bitsPerCharacter));
$encodedString .= str_repeat($padCharacter[0], $pads);
}
@@ -194,12 +192,10 @@ final class FixedBitNotation
* @param bool $caseSensitive
* @param bool $strict Returns null if $encodedString contains
* an undecodable character
- *
- * @return string
*/
public function decode($encodedString, $caseSensitive = true, $strict = false): string
{
- if (!$encodedString || !is_string($encodedString)) {
+ if (!$encodedString || !\is_string($encodedString)) {
// Empty string, nothing to decode
return '';
}
@@ -224,10 +220,10 @@ final class FixedBitNotation
}
// The last encoded character is $encodedString[$lastNotatedIndex]
- $lastNotatedIndex = strlen($encodedString) - 1;
+ $lastNotatedIndex = \strlen($encodedString) - 1;
// Remove trailing padding characters
- while ($encodedString[$lastNotatedIndex] == $padCharacter[0]) {
+ while ($encodedString[$lastNotatedIndex] === $padCharacter[0]) {
$encodedString = substr($encodedString, 0, $lastNotatedIndex);
--$lastNotatedIndex;
}
@@ -258,7 +254,7 @@ final class FixedBitNotation
$newBits = $charmap[$encodedString[$c]] << $bitsNeeded
- $bitsPerCharacter;
$bitsWritten += $bitsPerCharacter;
- } elseif ($c != $lastNotatedIndex || $rightPadFinalBits) {
+ } elseif ($c !== $lastNotatedIndex || $rightPadFinalBits) {
// Zero or more too many bits to complete a byte;
// shift right
$newBits = $charmap[$encodedString[$c]] >> $unusedBitCount;
@@ -271,11 +267,11 @@ final class FixedBitNotation
$byte |= $newBits;
- if (8 == $bitsWritten || $c == $lastNotatedIndex) {
+ if (8 === $bitsWritten || $c === $lastNotatedIndex) {
// Byte is ready to be written
$rawString .= pack('C', $byte);
- if ($c != $lastNotatedIndex) {
+ if ($c !== $lastNotatedIndex) {
// Start the next byte
$bitsWritten = $unusedBitCount;
$byte = ($charmap[$encodedString[$c]]
diff --git a/vendor/sonata-project/google-authenticator/src/GoogleAuthenticator.php b/vendor/sonata-project/google-authenticator/src/GoogleAuthenticator.php
index 145739c54..d3fc52fb8 100644
--- a/vendor/sonata-project/google-authenticator/src/GoogleAuthenticator.php
+++ b/vendor/sonata-project/google-authenticator/src/GoogleAuthenticator.php
@@ -36,52 +36,61 @@ final class GoogleAuthenticator implements GoogleAuthenticatorInterface
/**
* @var \DateTimeInterface
*/
- private $now;
+ private $instanceTime;
/**
* @var int
*/
- private $codePeriod = 30;
+ private $codePeriod;
/**
- * @param int $passCodeLength
- * @param int $secretLength
- * @param \DateTimeInterface|null $now
+ * @var int
*/
- public function __construct(int $passCodeLength = 6, int $secretLength = 10, \DateTimeInterface $now = null)
+ private $periodSize = 30;
+
+ public function __construct(int $passCodeLength = 6, int $secretLength = 10, ?\DateTimeInterface $instanceTime = null, int $codePeriod = 30)
{
+ /*
+ * codePeriod is the duration in seconds that the code is valid.
+ * periodSize is the length of a period to calculate periods since Unix epoch.
+ * periodSize cannot be larger than the codePeriod.
+ */
+
$this->passCodeLength = $passCodeLength;
$this->secretLength = $secretLength;
+ $this->codePeriod = $codePeriod;
+ $this->periodSize = $codePeriod < $this->periodSize ? $codePeriod : $this->periodSize;
$this->pinModulo = 10 ** $passCodeLength;
- $this->now = $now ?? new \DateTimeImmutable();
+ $this->instanceTime = $instanceTime ?? new \DateTimeImmutable();
}
/**
* @param string $secret
* @param string $code
+ * @param int $discrepancy
*/
- public function checkCode($secret, $code): bool
+ public function checkCode($secret, $code, $discrepancy = 1): bool
{
/**
- * The result of each comparison is accumulated here instead of using a guard clause
+ * Discrepancy is the factor of periodSize ($discrepancy * $periodSize) allowed on either side of the
+ * given codePeriod. For example, if a code with codePeriod = 60 is generated at 10:00:00, a discrepancy
+ * of 1 will allow a periodSize of 30 seconds on either side of the codePeriod resulting in a valid code
+ * from 09:59:30 to 10:00:29.
+ *
+ * The result of each comparison is stored as a timestamp here instead of using a guard clause
* (https://refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html). This is to implement
* constant time comparison to make side-channel attacks harder. See
* https://cryptocoding.net/index.php/Coding_rules#Compare_secret_strings_in_constant_time for details.
* Each comparison uses hash_equals() instead of an operator to implement constant time equality comparison
* for each code.
*/
+ $periods = floor($this->codePeriod / $this->periodSize);
+
$result = 0;
-
- // current period
- $result += hash_equals($this->getCode($secret, $this->now), $code);
-
- // previous period, happens if the user was slow to enter or it just crossed over
- $dateTime = new \DateTimeImmutable('@'.($this->now->getTimestamp() - $this->codePeriod));
- $result += hash_equals($this->getCode($secret, $dateTime), $code);
-
- // next period, happens if the user is not completely synced and possibly a few seconds ahead
- $dateTime = new \DateTimeImmutable('@'.($this->now->getTimestamp() + $this->codePeriod));
- $result += hash_equals($this->getCode($secret, $dateTime), $code);
+ for ($i = -$discrepancy; $i < $periods + $discrepancy; ++$i) {
+ $dateTime = new \DateTimeImmutable('@'.($this->instanceTime->getTimestamp() - ($i * $this->periodSize)));
+ $result = hash_equals($this->getCode($secret, $dateTime), $code) ? $dateTime->getTimestamp() : $result;
+ }
return $result > 0;
}
@@ -90,21 +99,21 @@ final class GoogleAuthenticator implements GoogleAuthenticatorInterface
* NEXT_MAJOR: add the interface typehint to $time and remove deprecation.
*
* @param string $secret
- * @param float|string|int|null|\DateTimeInterface $time
+ * @param float|string|int|\DateTimeInterface|null $time
*/
- public function getCode($secret, /* \DateTimeInterface */$time = null): string
+ public function getCode($secret, /* \DateTimeInterface */ $time = null): string
{
if (null === $time) {
- $time = $this->now;
+ $time = $this->instanceTime;
}
if ($time instanceof \DateTimeInterface) {
- $timeForCode = floor($time->getTimestamp() / $this->codePeriod);
+ $timeForCode = floor($time->getTimestamp() / $this->periodSize);
} else {
@trigger_error(
'Passing anything other than null or a DateTimeInterface to $time is deprecated as of 2.0 '.
'and will not be possible as of 3.0.',
- E_USER_DEPRECATED
+ \E_USER_DEPRECATED
);
$timeForCode = $time;
}
@@ -112,15 +121,15 @@ final class GoogleAuthenticator implements GoogleAuthenticatorInterface
$base32 = new FixedBitNotation(5, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', true, true);
$secret = $base32->decode($secret);
- $timeForCode = str_pad(pack('N', $timeForCode), 8, chr(0), STR_PAD_LEFT);
+ $timeForCode = str_pad(pack('N', $timeForCode), 8, \chr(0), \STR_PAD_LEFT);
$hash = hash_hmac('sha1', $timeForCode, $secret, true);
- $offset = ord(substr($hash, -1));
+ $offset = \ord(substr($hash, -1));
$offset &= 0xF;
$truncatedHash = $this->hashToInt($hash, $offset) & 0x7FFFFFFF;
- return str_pad((string) ($truncatedHash % $this->pinModulo), $this->passCodeLength, '0', STR_PAD_LEFT);
+ return str_pad((string) ($truncatedHash % $this->pinModulo), $this->passCodeLength, '0', \STR_PAD_LEFT);
}
/**
@@ -138,9 +147,9 @@ final class GoogleAuthenticator implements GoogleAuthenticatorInterface
'Using %s() is deprecated as of 2.1 and will be removed in 3.0. '.
'Use Sonata\GoogleAuthenticator\GoogleQrUrl::generate() instead.',
__METHOD__
- ), E_USER_DEPRECATED);
+ ), \E_USER_DEPRECATED);
- $issuer = func_get_args()[3] ?? null;
+ $issuer = \func_get_args()[3] ?? null;
$accountName = sprintf('%s@%s', $user, $hostname);
// manually concat the issuer to avoid a change in URL
@@ -159,10 +168,6 @@ final class GoogleAuthenticator implements GoogleAuthenticatorInterface
->encode(random_bytes($this->secretLength));
}
- /**
- * @param string $bytes
- * @param int $start
- */
private function hashToInt(string $bytes, int $start): int
{
return unpack('N', substr(substr($bytes, $start), 0, 4))[1];
diff --git a/vendor/sonata-project/google-authenticator/src/GoogleAuthenticatorInterface.php b/vendor/sonata-project/google-authenticator/src/GoogleAuthenticatorInterface.php
index 70219f209..4dbe60130 100644
--- a/vendor/sonata-project/google-authenticator/src/GoogleAuthenticatorInterface.php
+++ b/vendor/sonata-project/google-authenticator/src/GoogleAuthenticatorInterface.php
@@ -19,15 +19,15 @@ interface GoogleAuthenticatorInterface
* @param string $secret
* @param string $code
*/
- public function checkCode($secret, $code): bool;
+ public function checkCode($secret, $code, $discrepancy = 1): bool;
/**
* NEXT_MAJOR: add the interface typehint to $time and remove deprecation.
*
* @param string $secret
- * @param float|string|int|null|\DateTimeInterface $time
+ * @param float|string|int|\DateTimeInterface|null $time
*/
- public function getCode($secret, /* \DateTimeInterface */$time = null): string;
+ public function getCode($secret, /* \DateTimeInterface */ $time = null): string;
/**
* NEXT_MAJOR: Remove this method.
diff --git a/vendor/sonata-project/google-authenticator/src/GoogleQrUrl.php b/vendor/sonata-project/google-authenticator/src/GoogleQrUrl.php
index 7e9a537a4..e0f6e60d9 100644
--- a/vendor/sonata-project/google-authenticator/src/GoogleQrUrl.php
+++ b/vendor/sonata-project/google-authenticator/src/GoogleQrUrl.php
@@ -16,7 +16,8 @@ namespace Sonata\GoogleAuthenticator;
/**
* Responsible for QR image url generation.
*
- * @see https://developers.google.com/chart/infographics/docs/qr_codes
+ * @see http://goqr.me/api/
+ * @see http://goqr.me/api/doc/
* @see https://github.com/google/google-authenticator/wiki/Key-Uri-Format
*
* @author Iltar van der Berg
@@ -54,10 +55,8 @@ final class GoogleQrUrl
* @param string $secret The secret is the generated secret unique to that user
* @param string|null $issuer Where you log in to
* @param int $size Image size in pixels, 200 will make it 200x200
- *
- * @return string
*/
- public static function generate(string $accountName, string $secret, string $issuer = null, int $size = 200): string
+ public static function generate(string $accountName, string $secret, ?string $issuer = null, int $size = 200): string
{
if ('' === $accountName || false !== strpos($accountName, ':')) {
throw RuntimeException::InvalidAccountName($accountName);
@@ -83,7 +82,7 @@ final class GoogleQrUrl
$otpauthString = rawurlencode(sprintf($otpauthString, $label, $secret, $issuer));
return sprintf(
- 'https://chart.googleapis.com/chart?chs=%1$dx%1$d&chld=M|0&cht=qr&chl=%2$s',
+ 'https://api.qrserver.com/v1/create-qr-code/?size=%1$dx%1$d&data=%2$s&ecc=M',
$size,
$otpauthString
);