This commit is contained in:
tejagerjovic 2022-07-14 12:26:19 +02:00
commit 89b36aee4b
155 changed files with 3569 additions and 879 deletions

View File

@ -3750,6 +3750,14 @@ class SurveyAdmin
} }
} }
// kolektor modul
if ($_GET['a'] == 'kolektor') {
echo ' <div id="kolektor">';
$kolektor = new Kolektor();
$kolektor->display();
echo ' </div>';
}
// Konec moje_ankete_edit // Konec moje_ankete_edit
echo '</div>'; echo '</div>';
} }

View File

@ -606,6 +606,10 @@ class SurveyList {
$css_1 = 'off'; $css_1 = 'off';
$css_10 = 'on'; $css_10 = 'on';
} }
if ($_GET['a'] == 'kolektor') {
$css_1 = 'off';
$css_11 = 'on';
}
echo '<div id="firstNavigation" class="frontpage">'; echo '<div id="firstNavigation" class="frontpage">';
@ -696,6 +700,15 @@ class SurveyList {
echo '</a>'; echo '</a>';
echo '</li>'; echo '</li>';
} }
# kolektor modul - samo na njihovi instalaciji
if (Common::checkModule('kolektor') == '1') {
echo '<li class="active_'.$css_11.'">';
echo '<a href="index.php?a=kolektor" title="Kolektor">';
echo '<div class="smaller-singlebutton-'.$css_11.'">Kolektor</div>';
echo '</a>';
echo '</li>';
}
echo '</ol>'; echo '</ol>';
@ -1868,6 +1881,11 @@ class SurveyList {
$stringSurveyList .= "LEFT OUTER JOIN srv_spremenljivka AS ss ON ss.gru_id = sg.id "; $stringSurveyList .= "LEFT OUTER JOIN srv_spremenljivka AS ss ON ss.gru_id = sg.id ";
$stringSurveyList .= "LEFT OUTER JOIN srv_vrednost AS sv ON sv.spr_id = ss.id "; $stringSurveyList .= "LEFT OUTER JOIN srv_vrednost AS sv ON sv.spr_id = ss.id ";
} }
// Ce iscemo po imenu ankete moramo dodat se tabele srv_nice_links za lepe linke
if($this->isSearch == 1 && $this->searchSettings['stype'] == '0'){
$stringSurveyList .= "LEFT OUTER JOIN srv_nice_links AS nl ON sa.id = nl.ank_id ";
}
$stringSurveyList .= "WHERE sa.backup='0' AND sa.id>0 AND active >= '0' AND invisible = '0' "; $stringSurveyList .= "WHERE sa.backup='0' AND sa.id>0 AND active >= '0' AND invisible = '0' ";
@ -2537,7 +2555,7 @@ class SurveyList {
} }
// Search po naslovu // Search po naslovu
else{ else{
$result = " AND (LOWER(sa.naslov) LIKE LOWER('".$search_text."') OR LOWER(sa.akronim) LIKE LOWER('".$search_text."'))"; $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) // Search po statusu (aktivne, neaktivne)

View File

@ -474,9 +474,11 @@ class Vprasanje {
if ($row['ranking_k'] == 0){ if ($row['ranking_k'] == 0){
echo '<fieldset>'; echo '<fieldset>';
echo ' <legend class="pointer" onClick="fieldsetToggle(this);"><span class="faicon arrow2_d"></span>'.$lang['srv_num_limits'].'</legend>'; //echo ' <legend class="pointer" onClick="fieldsetToggle(this);"><span class="faicon arrow2_d"></span>'.$lang['srv_num_limits'].'</legend>';
echo ' <legend>'.$lang['srv_num_limits'].'</legend>';
echo ' <div class="fieldset_holder" style="display:none;">'; //echo ' <div class="fieldset_holder" style="display:none;">';
echo ' <div class="fieldset_holder">';
if ($row['tip'] != 21) if ($row['tip'] != 21)
$this->edit_number(); $this->edit_number();
@ -491,9 +493,11 @@ class Vprasanje {
if ($row['tip'] == 7) { if ($row['tip'] == 7) {
echo '<fieldset>'; echo '<fieldset>';
echo ' <legend class="pointer" onClick="fieldsetToggle(this);"><span class="faicon arrow2_d"></span>'.$lang['srv_manjkajoce_vrednosti2'].' '.Help::display('srv_missing_values').'</legend>'; //echo ' <legend class="pointer" onClick="fieldsetToggle(this);"><span class="faicon arrow2_d"></span>'.$lang['srv_manjkajoce_vrednosti2'].' '.Help::display('srv_missing_values').'</legend>';
echo ' <legend>'.$lang['srv_manjkajoce_vrednosti2'].' '.Help::display('srv_missing_values').'</legend>';
echo ' <div class="fieldset_holder" style="display:none;">'; //echo ' <div class="fieldset_holder" style="display:none;">';
echo ' <div class="fieldset_holder">';
$this->edit_vrednost_missing(); $this->edit_vrednost_missing();
echo ' </div>'; echo ' </div>';

View File

@ -1358,6 +1358,10 @@ class LatexDocument{
if($text == ''){ //ce ni teksta, vrni se if($text == ''){ //ce ni teksta, vrni se
return; return;
} }
$findSpace = ' ';
$posSpace1 = strpos($text, $findSpace); //najdi pozicijo prvega presledka v besedilu
$posSpace2 = strripos($text, $findSpace); //najdi pozicijo zadnjega presledka v besedilu
//ureditev posebnih karakterjev za Latex http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters, https://en.wikibooks.org/wiki/LaTeX/Special_Characters#Other_symbols //ureditev posebnih karakterjev za Latex http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters, https://en.wikibooks.org/wiki/LaTeX/Special_Characters#Other_symbols
$text = str_replace('\\','\textbackslash{} ',$text); $text = str_replace('\\','\textbackslash{} ',$text);
@ -1410,6 +1414,43 @@ class LatexDocument{
//ureditev grskih crk - konec //ureditev grskih crk - konec
//detekcija prisotnosti e-naslova v besedilu in primerna preureditev, da pride do pravilnega izpisa
$findAt = '@';
$numOfAt = substr_count($text, $findAt); //stevilo '@' v besedilu
$findNewline = 'br';
$posAt = strpos($text, $findAt);
if($posAt && $posSpace1){ //ce je prisotna afna in je prisoten presledek v besedilu
$posSpace1Mail = strpos(substr($text, $posAt), $findSpace); //najdi pozicijo prvega presledka v besedilu po e-naslovu
$posSpace1Mail = $posSpace1Mail+$posAt; //koncna pozicija, ce se gleda celotno besedilo
//echo $posSpace1Mail."</br>";
//najdi prvi presledek pred afno
$posSpace2Mail = strripos(substr($text, 0, $posAt), $findSpace); //najdi pozicijo zadnjega presledka v besedilu pred e-naslovom
//echo $posSpace2Mail."</br>";
//najdi prvi simbol za v novo vrstico "br" po afni
//echo substr($text, $posAt) ."</br>";
$posNewLineMail = strpos(substr($text, $posAt), $findNewline); //najdi pozicijo prvega simbola za v novo vrstico v besedilu po e-naslovu
$posNewLineMail = $posNewLineMail+$posAt-1; //koncna pozicija, ce se gleda celotno besedilo
if($posSpace1Mail<$posNewLineMail){ //ce se po e-naslovu pojavi prej presledek
$posKonec = $posSpace1Mail; //se zakljuci pri presledku, ker je ta lokacija za zakljucek url
}else{
$posKonec = $posNewLineMail; //se zakljuci pred simbolom za novo vrstico, ker je ta lokacija za zakljucek url
}
//dodaj po e-naslovu potrebno latex kodo za zakljucek url
//$text = substr_replace($text, '}', $posSpace1Mail, 0);
$text = substr_replace($text, '}', $posKonec, 0);
//dodaj pred e-naslovom potrebno latex kodo za url
//substr_replace(string_name, replacement_string, start_pos, length)
$text = substr_replace($text, ' \url{', $posSpace2Mail+1, 0);
//echo $text."</br>";
}
//detekcija prisotnosti e-naslova v besedilu in primerna preureditev, da pride do pravilnega izpisa - konec
//RESEVANJE BESEDILA V CIRILICI //RESEVANJE BESEDILA V CIRILICI
$contains_cyrillic = (bool) preg_match('/[\p{Cyrillic}]/u', $text); //ali je v besedilu cirilica? $contains_cyrillic = (bool) preg_match('/[\p{Cyrillic}]/u', $text); //ali je v besedilu cirilica?
if($contains_cyrillic){ // ce je cirilica v besedilu if($contains_cyrillic){ // ce je cirilica v besedilu

View File

@ -1337,8 +1337,8 @@ class LatexSurvey{
//pred ureditvijo posebnih karakterjev, odstrani del teksta s kodo za sliko, da se ne pojavijo tezave zaradi imena datoteke od slike - konec //pred ureditvijo posebnih karakterjev, odstrani del teksta s kodo za sliko, da se ne pojavijo tezave zaradi imena datoteke od slike - konec
} }
//ureditev izrisa slike - konec //ureditev izrisa slike - konec
//ureditev posebnih karakterjev za Latex http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters, https://en.wikibooks.org/wiki/LaTeX/Special_Characters#Other_symbols //ureditev posebnih karakterjev za Latex http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters, https://en.wikibooks.org/wiki/LaTeX/Special_Characters#Other_symbols
$text = str_replace('\\','\textbackslash{} ',$text); $text = str_replace('\\','\textbackslash{} ',$text);
//$text = str_replace('{','\{',$text); //$text = str_replace('{','\{',$text);
@ -1480,24 +1480,32 @@ class LatexSurvey{
//detekcija prisotnosti e-naslova v besedilu in primerna preureditev, da pride do pravilnega izpisa //detekcija prisotnosti e-naslova v besedilu in primerna preureditev, da pride do pravilnega izpisa
$findAt = '@'; $findAt = '@';
$numOfAt = substr_count($text, $findAt); //stevilo '@' v besedilu $numOfAt = substr_count($text, $findAt); //stevilo '@' v besedilu
$findNewline = 'br';
$posAt = strpos($text, $findAt); $posAt = strpos($text, $findAt);
if($posAt && $posSpace1){ //ce je prisotna afna in je prisoten presledek v besedilu if($posAt && $posSpace1){ //ce je prisotna afna in je prisoten presledek v besedilu
//echo "afna je: $posAt </br>";
//echo "Encoding: ".$text."</br>";
//najdi prvi presledek po afni
//echo substr($text, $posAt) ."</br>";
$posSpace1Mail = strpos(substr($text, $posAt), $findSpace); //najdi pozicijo prvega presledka v besedilu po e-naslovu $posSpace1Mail = strpos(substr($text, $posAt), $findSpace); //najdi pozicijo prvega presledka v besedilu po e-naslovu
$posSpace1Mail = $posSpace1Mail+$posAt; //koncna pozicija, ce se gleda celotno besedilo $posSpace1Mail = $posSpace1Mail+$posAt; //koncna pozicija, ce se gleda celotno besedilo
//echo $posSpace1Mail."</br>"; //echo $posSpace1Mail."</br>";
//najdi prvi presledek pred afno //najdi prvi presledek pred afno
$posSpace2Mail = strripos(substr($text, 0, $posAt), $findSpace); //najdi pozicijo zadnjega presledka v besedilu pred e-naslovom $posSpace2Mail = strripos(substr($text, 0, $posAt), $findSpace); //najdi pozicijo zadnjega presledka v besedilu pred e-naslovom
//echo $posSpace2Mail."</br>"; //echo $posSpace2Mail."</br>";
//najdi prvi simbol za v novo vrstico "br" po afni
//echo substr($text, $posAt) ."</br>";
$posNewLineMail = strpos(substr($text, $posAt), $findNewline); //najdi pozicijo prvega simbola za v novo vrstico v besedilu po e-naslovu
$posNewLineMail = $posNewLineMail+$posAt-1; //koncna pozicija, ce se gleda celotno besedilo
if($posSpace1Mail<$posNewLineMail){ //ce se po e-naslovu pojavi prej presledek
$posKonec = $posSpace1Mail; //se zakljuci pri presledku, ker je ta lokacija za zakljucek url
}else{
$posKonec = $posNewLineMail; //se zakljuci pred simbolom za novo vrstico, ker je ta lokacija za zakljucek url
}
//dodaj po e-naslovu potrebno latex kodo za zakljucek url //dodaj po e-naslovu potrebno latex kodo za zakljucek url
$text = substr_replace($text, '}', $posSpace1Mail, 0); //$text = substr_replace($text, '}', $posSpace1Mail, 0);
$text = substr_replace($text, '}', $posKonec, 0);
//dodaj pred e-naslovom potrebno latex kodo za url //dodaj pred e-naslovom potrebno latex kodo za url
//substr_replace(string_name, replacement_string, start_pos, length) //substr_replace(string_name, replacement_string, start_pos, length)

View File

@ -1058,24 +1058,32 @@ class LatexSurveyElement{
//detekcija prisotnosti e-naslova v besedilu in primerna preureditev, da pride do pravilnega izpisa //detekcija prisotnosti e-naslova v besedilu in primerna preureditev, da pride do pravilnega izpisa
$findAt = '@'; $findAt = '@';
$numOfAt = substr_count($text, $findAt); //stevilo '@' v besedilu $numOfAt = substr_count($text, $findAt); //stevilo '@' v besedilu
$findNewline = 'br';
$posAt = strpos($text, $findAt); $posAt = strpos($text, $findAt);
if($posAt && $posSpace1){ //ce je prisotna afna in je prisoten presledek v besedilu if($posAt && $posSpace1){ //ce je prisotna afna in je prisoten presledek v besedilu
//echo "afna je: $posAt </br>";
//echo "Encoding: ".$text."</br>";
//najdi prvi presledek po afni
//echo substr($text, $posAt) ."</br>";
$posSpace1Mail = strpos(substr($text, $posAt), $findSpace); //najdi pozicijo prvega presledka v besedilu po e-naslovu $posSpace1Mail = strpos(substr($text, $posAt), $findSpace); //najdi pozicijo prvega presledka v besedilu po e-naslovu
$posSpace1Mail = $posSpace1Mail+$posAt; //koncna pozicija, ce se gleda celotno besedilo $posSpace1Mail = $posSpace1Mail+$posAt; //koncna pozicija, ce se gleda celotno besedilo
//echo $posSpace1Mail."</br>"; //echo $posSpace1Mail."</br>";
//najdi prvi presledek pred afno //najdi prvi presledek pred afno
$posSpace2Mail = strripos(substr($text, 0, $posAt), $findSpace); //najdi pozicijo zadnjega presledka v besedilu pred e-naslovom $posSpace2Mail = strripos(substr($text, 0, $posAt), $findSpace); //najdi pozicijo zadnjega presledka v besedilu pred e-naslovom
//echo $posSpace2Mail."</br>"; //echo $posSpace2Mail."</br>";
//najdi prvi simbol za v novo vrstico "br" po afni
//echo substr($text, $posAt) ."</br>";
$posNewLineMail = strpos(substr($text, $posAt), $findNewline); //najdi pozicijo prvega simbola za v novo vrstico v besedilu po e-naslovu
$posNewLineMail = $posNewLineMail+$posAt-1; //koncna pozicija, ce se gleda celotno besedilo
if($posSpace1Mail<$posNewLineMail){ //ce se po e-naslovu pojavi prej presledek
$posKonec = $posSpace1Mail; //se zakljuci pri presledku, ker je ta lokacija za zakljucek url
}else{
$posKonec = $posNewLineMail; //se zakljuci pred simbolom za novo vrstico, ker je ta lokacija za zakljucek url
}
//dodaj po e-naslovu potrebno latex kodo za zakljucek url //dodaj po e-naslovu potrebno latex kodo za zakljucek url
$text = substr_replace($text, '}', $posSpace1Mail, 0); //$text = substr_replace($text, '}', $posSpace1Mail, 0);
$text = substr_replace($text, '}', $posKonec, 0);
//dodaj pred e-naslovom potrebno latex kodo za url //dodaj pred e-naslovom potrebno latex kodo za url
//substr_replace(string_name, replacement_string, start_pos, length) //substr_replace(string_name, replacement_string, start_pos, length)

View File

@ -66,14 +66,31 @@ class Kolektor {
// Osnovni pogled // Osnovni pogled
public function display(){ public function display(){
echo 'kolektor';
$this->displayClientList();
} }
public function displayClientList(){ public function displayClientList(){
echo '<div class="kolektor_clients_holder">';
echo ' <div class="kolektor_clients">';
// Loop cez vse stranke
foreach($this->clients as $client_id => $client){
echo ' <div class="kolektor_client">';
var_dump($client);
echo ' </div>';
}
echo ' </div>';
echo '</div>';
} }
// Prikaze formo za dodajanje novega responsa // Prikaze formo za dodajanje novega responsa

231
composer.lock generated
View File

@ -8,16 +8,16 @@
"packages": [ "packages": [
{ {
"name": "composer/ca-bundle", "name": "composer/ca-bundle",
"version": "1.3.1", "version": "1.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/ca-bundle.git", "url": "https://github.com/composer/ca-bundle.git",
"reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" "reference": "fd5dd441932a7e10ca6e5b490e272d34c8430640"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", "url": "https://api.github.com/repos/composer/ca-bundle/zipball/fd5dd441932a7e10ca6e5b490e272d34c8430640",
"reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", "reference": "fd5dd441932a7e10ca6e5b490e272d34c8430640",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -64,7 +64,7 @@
"support": { "support": {
"irc": "irc://irc.freenode.org/composer", "irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/ca-bundle/issues", "issues": "https://github.com/composer/ca-bundle/issues",
"source": "https://github.com/composer/ca-bundle/tree/1.3.1" "source": "https://github.com/composer/ca-bundle/tree/1.3.2"
}, },
"funding": [ "funding": [
{ {
@ -80,7 +80,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-10-28T20:44:15+00:00" "time": "2022-05-24T11:56:16+00:00"
}, },
{ {
"name": "fgrosse/phpasn1", "name": "fgrosse/phpasn1",
@ -217,24 +217,24 @@
}, },
{ {
"name": "guzzlehttp/guzzle", "name": "guzzlehttp/guzzle",
"version": "6.5.5", "version": "6.5.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/guzzle.git", "url": "https://github.com/guzzle/guzzle.git",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-json": "*", "ext-json": "*",
"guzzlehttp/promises": "^1.0", "guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1", "guzzlehttp/psr7": "^1.9",
"php": ">=5.5", "php": ">=5.5",
"symfony/polyfill-intl-idn": "^1.17.0" "symfony/polyfill-intl-idn": "^1.17"
}, },
"require-dev": { "require-dev": {
"ext-curl": "*", "ext-curl": "*",
@ -263,10 +263,40 @@
"MIT" "MIT"
], ],
"authors": [ "authors": [
{
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
},
{ {
"name": "Michael Dowling", "name": "Michael Dowling",
"email": "mtdowling@gmail.com", "email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling" "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", "description": "Guzzle is a PHP HTTP client library",
@ -282,9 +312,23 @@
], ],
"support": { "support": {
"issues": "https://github.com/guzzle/guzzle/issues", "issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/6.5" "source": "https://github.com/guzzle/guzzle/tree/6.5.8"
}, },
"time": "2020-06-16T21:01:06+00:00" "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"
}
],
"time": "2022-06-20T22:16:07+00:00"
}, },
{ {
"name": "guzzlehttp/promises", "name": "guzzlehttp/promises",
@ -313,12 +357,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
},
"files": [ "files": [
"src/functions_include.php" "src/functions_include.php"
] ],
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@ -372,16 +416,16 @@
}, },
{ {
"name": "guzzlehttp/psr7", "name": "guzzlehttp/psr7",
"version": "1.8.3", "version": "1.9.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/psr7.git", "url": "https://github.com/guzzle/psr7.git",
"reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85" "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
"reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -402,7 +446,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.7-dev" "dev-master": "1.9-dev"
} }
}, },
"autoload": { "autoload": {
@ -462,7 +506,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/guzzle/psr7/issues", "issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/1.8.3" "source": "https://github.com/guzzle/psr7/tree/1.9.0"
}, },
"funding": [ "funding": [
{ {
@ -478,7 +522,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-10-05T13:56:00+00:00" "time": "2022-06-20T21:43:03+00:00"
}, },
{ {
"name": "maxmind-db/reader", "name": "maxmind-db/reader",
@ -547,16 +591,16 @@
}, },
{ {
"name": "maxmind/web-service-common", "name": "maxmind/web-service-common",
"version": "v0.8.1", "version": "v0.9.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/maxmind/web-service-common-php.git", "url": "https://github.com/maxmind/web-service-common-php.git",
"reference": "32f274051c543fc865e5a84d3a2c703913641ea8" "reference": "4dc5a3e8df38aea4ca3b1096cee3a038094e9b53"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/32f274051c543fc865e5a84d3a2c703913641ea8", "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/4dc5a3e8df38aea4ca3b1096cee3a038094e9b53",
"reference": "32f274051c543fc865e5a84d3a2c703913641ea8", "reference": "4dc5a3e8df38aea4ca3b1096cee3a038094e9b53",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -566,7 +610,8 @@
"php": ">=7.2" "php": ">=7.2"
}, },
"require-dev": { "require-dev": {
"friendsofphp/php-cs-fixer": "2.*", "friendsofphp/php-cs-fixer": "3.*",
"phpstan/phpstan": "*",
"phpunit/phpunit": "^8.0 || ^9.0", "phpunit/phpunit": "^8.0 || ^9.0",
"squizlabs/php_codesniffer": "3.*" "squizlabs/php_codesniffer": "3.*"
}, },
@ -591,9 +636,9 @@
"homepage": "https://github.com/maxmind/web-service-common-php", "homepage": "https://github.com/maxmind/web-service-common-php",
"support": { "support": {
"issues": "https://github.com/maxmind/web-service-common-php/issues", "issues": "https://github.com/maxmind/web-service-common-php/issues",
"source": "https://github.com/maxmind/web-service-common-php/tree/v0.8.1" "source": "https://github.com/maxmind/web-service-common-php/tree/v0.9.0"
}, },
"time": "2020-11-02T17:00:53+00:00" "time": "2022-03-28T17:43:20+00:00"
}, },
{ {
"name": "minishlink/web-push", "name": "minishlink/web-push",
@ -707,16 +752,16 @@
}, },
{ {
"name": "paragonie/sodium_compat", "name": "paragonie/sodium_compat",
"version": "v1.17.0", "version": "v1.17.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/paragonie/sodium_compat.git", "url": "https://github.com/paragonie/sodium_compat.git",
"reference": "c59cac21abbcc0df06a3dd18076450ea4797b321" "reference": "ac994053faac18d386328c91c7900f930acadf1e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/c59cac21abbcc0df06a3dd18076450ea4797b321", "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/ac994053faac18d386328c91c7900f930acadf1e",
"reference": "c59cac21abbcc0df06a3dd18076450ea4797b321", "reference": "ac994053faac18d386328c91c7900f930acadf1e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -787,9 +832,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/paragonie/sodium_compat/issues", "issues": "https://github.com/paragonie/sodium_compat/issues",
"source": "https://github.com/paragonie/sodium_compat/tree/v1.17.0" "source": "https://github.com/paragonie/sodium_compat/tree/v1.17.1"
}, },
"time": "2021-08-10T02:43:50+00:00" "time": "2022-03-23T19:32:04+00:00"
}, },
{ {
"name": "paypal/paypal-checkout-sdk", "name": "paypal/paypal-checkout-sdk",
@ -888,16 +933,16 @@
}, },
{ {
"name": "phpmailer/phpmailer", "name": "phpmailer/phpmailer",
"version": "v6.5.4", "version": "v6.6.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git", "url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285" "reference": "9400f305a898f194caff5521f64e5dfa926626f3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c0d9f7dd3c2aa247ca44791e9209233829d82285", "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/9400f305a898f194caff5521f64e5dfa926626f3",
"reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285", "reference": "9400f305a898f194caff5521f64e5dfa926626f3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -909,8 +954,8 @@
"require-dev": { "require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2", "doctrine/annotations": "^1.2",
"php-parallel-lint/php-console-highlighter": "^0.5.0", "php-parallel-lint/php-console-highlighter": "^1.0.0",
"php-parallel-lint/php-parallel-lint": "^1.3.1", "php-parallel-lint/php-parallel-lint": "^1.3.2",
"phpcompatibility/php-compatibility": "^9.3.5", "phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest", "roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^3.6.2", "squizlabs/php_codesniffer": "^3.6.2",
@ -954,7 +999,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP", "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": { "support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues", "issues": "https://github.com/PHPMailer/PHPMailer/issues",
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.4" "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.3"
}, },
"funding": [ "funding": [
{ {
@ -962,7 +1007,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-02-17T08:19:04+00:00" "time": "2022-06-20T09:21:02+00:00"
}, },
{ {
"name": "psr/http-message", "name": "psr/http-message",
@ -1208,16 +1253,16 @@
}, },
{ {
"name": "stripe/stripe-php", "name": "stripe/stripe-php",
"version": "v7.114.0", "version": "v7.128.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/stripe/stripe-php.git", "url": "https://github.com/stripe/stripe-php.git",
"reference": "63be231686c6874befb5b3a47fb8effb4c30b78b" "reference": "c704949c49b72985c76cc61063aa26fefbd2724e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/63be231686c6874befb5b3a47fb8effb4c30b78b", "url": "https://api.github.com/repos/stripe/stripe-php/zipball/c704949c49b72985c76cc61063aa26fefbd2724e",
"reference": "63be231686c6874befb5b3a47fb8effb4c30b78b", "reference": "c704949c49b72985c76cc61063aa26fefbd2724e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1262,22 +1307,22 @@
], ],
"support": { "support": {
"issues": "https://github.com/stripe/stripe-php/issues", "issues": "https://github.com/stripe/stripe-php/issues",
"source": "https://github.com/stripe/stripe-php/tree/v7.114.0" "source": "https://github.com/stripe/stripe-php/tree/v7.128.0"
}, },
"time": "2022-02-15T22:48:31+00:00" "time": "2022-05-05T17:18:02+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-idn", "name": "symfony/polyfill-intl-idn",
"version": "v1.24.0", "version": "v1.26.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git", "url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44" "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44", "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1291,7 +1336,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "1.23-dev" "dev-main": "1.26-dev"
}, },
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
@ -1335,7 +1380,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0" "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
}, },
"funding": [ "funding": [
{ {
@ -1351,20 +1396,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-09-14T14:02:44+00:00" "time": "2022-05-24T11:49:31+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-normalizer", "name": "symfony/polyfill-intl-normalizer",
"version": "v1.24.0", "version": "v1.26.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" "reference": "219aa369ceff116e673852dce47c3a41794c14bd"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", "reference": "219aa369ceff116e673852dce47c3a41794c14bd",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1376,7 +1421,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "1.23-dev" "dev-main": "1.26-dev"
}, },
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
@ -1419,7 +1464,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0" "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
}, },
"funding": [ "funding": [
{ {
@ -1435,20 +1480,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-02-19T12:13:01+00:00" "time": "2022-05-24T11:49:31+00:00"
}, },
{ {
"name": "symfony/polyfill-php72", "name": "symfony/polyfill-php72",
"version": "v1.24.0", "version": "v1.26.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php72.git", "url": "https://github.com/symfony/polyfill-php72.git",
"reference": "9a142215a36a3888e30d0a9eeea9766764e96976" "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2",
"reference": "9a142215a36a3888e30d0a9eeea9766764e96976", "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1457,7 +1502,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "1.23-dev" "dev-main": "1.26-dev"
}, },
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
@ -1495,7 +1540,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php72/tree/v1.24.0" "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0"
}, },
"funding": [ "funding": [
{ {
@ -1511,7 +1556,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-05-27T09:17:38+00:00" "time": "2022-05-24T11:49:31+00:00"
}, },
{ {
"name": "web-token/jwt-core", "name": "web-token/jwt-core",
@ -2476,16 +2521,16 @@
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
"version": "v1.24.0", "version": "v1.26.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2500,7 +2545,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "1.23-dev" "dev-main": "1.26-dev"
}, },
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
@ -2539,7 +2584,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0" "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
}, },
"funding": [ "funding": [
{ {
@ -2555,20 +2600,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-11-30T18:21:41+00:00" "time": "2022-05-24T11:49:31+00:00"
}, },
{ {
"name": "symfony/polyfill-php80", "name": "symfony/polyfill-php80",
"version": "v1.24.0", "version": "v1.26.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php80.git", "url": "https://github.com/symfony/polyfill-php80.git",
"reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2577,7 +2622,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "1.23-dev" "dev-main": "1.26-dev"
}, },
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
@ -2622,7 +2667,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0" "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
}, },
"funding": [ "funding": [
{ {
@ -2638,20 +2683,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-09-13T13:58:33+00:00" "time": "2022-05-10T07:21:04+00:00"
}, },
{ {
"name": "symfony/var-dumper", "name": "symfony/var-dumper",
"version": "v4.4.37", "version": "v4.4.42",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-dumper.git", "url": "https://github.com/symfony/var-dumper.git",
"reference": "e74eee4ec02de71db3d60151aa5b203c990556df" "reference": "742aab50ad097bcb62d91fccb613f66b8047d2ca"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/e74eee4ec02de71db3d60151aa5b203c990556df", "url": "https://api.github.com/repos/symfony/var-dumper/zipball/742aab50ad097bcb62d91fccb613f66b8047d2ca",
"reference": "e74eee4ec02de71db3d60151aa5b203c990556df", "reference": "742aab50ad097bcb62d91fccb613f66b8047d2ca",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2711,7 +2756,7 @@
"dump" "dump"
], ],
"support": { "support": {
"source": "https://github.com/symfony/var-dumper/tree/v4.4.37" "source": "https://github.com/symfony/var-dumper/tree/v4.4.42"
}, },
"funding": [ "funding": [
{ {
@ -2727,7 +2772,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-01-02T09:41:36+00:00" "time": "2022-05-21T10:00:54+00:00"
} }
], ],
"aliases": [], "aliases": [],

View File

@ -158,10 +158,10 @@ header nav span.menu_item a {
header nav span.menu_item a:hover { header nav span.menu_item a:hover {
color: #1e88e5; color: #1e88e5;
} }
#main { body.landing_page #main {
background-color: #F5F5F5; background-color: #F8F8F8;
} }
#main .main_content { body.landing_page #main .main_content {
max-width: 1400px; max-width: 1400px;
min-height: 769px; min-height: 769px;
margin: 0 auto; margin: 0 auto;

View File

@ -8293,7 +8293,7 @@ $lang = array (
'srv_gdpr_drupal_q1_answer6' => '<b>Preklic</b> privolitve v obdelavo osebnih podatkov v določeni anketi', 'srv_gdpr_drupal_q1_answer6' => '<b>Preklic</b> privolitve v obdelavo osebnih podatkov v določeni anketi',
'srv_gdpr_drupal_q2_note' => 'Prosimo, čim bolj natančno opišite, na osnovi katerih podatkov lahko identificiramo vaš vnos v anketi (npr. email, ime, komentar, specifične kombinacije odgovorov) in za kateri podatek oziroma podatke želite oddati zahtevek za izbris, spremembo ali vpogled. ', 'srv_gdpr_drupal_q2_note' => 'Prosimo, čim bolj natančno opišite, na osnovi katerih podatkov lahko identificiramo vaš vnos v anketi (npr. email, ime, komentar, specifične kombinacije odgovorov) in za kateri podatek oziroma podatke želite oddati zahtevek za izbris, spremembo ali vpogled. ',
'srv_gdpr_drupal_check' => 'Želim, da me avtor obvesti o izvedeni zahtevi na zgoraj navedeni elektronski naslov.', 'srv_gdpr_drupal_check' => 'Želim, da me avtor obvesti o izvedeni zahtevi na zgoraj navedeni elektronski naslov.',
'srv_gdpr_drupal_end' => 'S klikom na Potrdi bo vaša zahteva poslana avtorju raziskave.', 'srv_gdpr_drupal_end' => 'S klikom na "POTRDI" bo vaša zahteva poslana avtorju raziskave.',
'users_gdpr_title' => 'GDPR soglasje', 'users_gdpr_title' => 'GDPR soglasje',
'users_gdpr1' => 'Da', 'users_gdpr1' => 'Da',
'users_gdpr0' => 'Ne', 'users_gdpr0' => 'Ne',

View File

@ -8192,7 +8192,7 @@ GDPR introduction preview",
'srv_gdpr_drupal_q1_answer6' => '<b>Withdrawal</b> of consent of processing of personal data in a specific survey', 'srv_gdpr_drupal_q1_answer6' => '<b>Withdrawal</b> of consent of processing of personal data in a specific survey',
'srv_gdpr_drupal_q2_note' => 'Please describe as accurately as possible, on the basis of which data can we identify your survey entry (e.g., email, name, comment, specific combination of answers), and for which data you want to file a request for deletion, change or insight.', 'srv_gdpr_drupal_q2_note' => 'Please describe as accurately as possible, on the basis of which data can we identify your survey entry (e.g., email, name, comment, specific combination of answers), and for which data you want to file a request for deletion, change or insight.',
'srv_gdpr_drupal_check' => 'Želim, da me avtor obvesti o izvedeni zahtevi na zgoraj navedeni elektronski naslov.', 'srv_gdpr_drupal_check' => 'Želim, da me avtor obvesti o izvedeni zahtevi na zgoraj navedeni elektronski naslov.',
'srv_gdpr_drupal_end' => 'By clicking Submit, your request will be sent to the author of the survey.', 'srv_gdpr_drupal_end' => 'By clicking "SUBMIT", your request will be sent to the author of the survey.',
'srv_gdpr_notification_title' => "Dear user of 1KA tool,", 'srv_gdpr_notification_title' => "Dear user of 1KA tool,",
'srv_gdpr_notification_title_aai' => "Dear user of 1KA.ARNES.SI tool,", 'srv_gdpr_notification_title_aai' => "Dear user of 1KA.ARNES.SI tool,",
'srv_gdpr_notification_text1' => "As part of the development process of 1KA tool, we continually improve existing functionalities and develop new ones. We believe that new functionalities are interesting to you and you want to be informed about them, also about our annual event, the Web Survey Day.", 'srv_gdpr_notification_text1' => "As part of the development process of 1KA tool, we continually improve existing functionalities and develop new ones. We believe that new functionalities are interesting to you and you want to be informed about them, also about our annual event, the Web Survey Day.",

View File

@ -10,7 +10,7 @@ $border_color: #646464;
$color_background: #ffffff; $color_background: #ffffff;
$color_background_dark: #f7f7f7; $color_background_dark: #f7f7f7;
$color_background_grey: #F5F5F5; $color_background_grey: #F8F8F8;
$color_background_very_dark: #e6e6e6; $color_background_very_dark: #e6e6e6;
$color_border: #cccccc; $color_border: #cccccc;

View File

@ -1,4 +1,4 @@
#main{ body.landing_page #main{
background-color: $color_background_grey; background-color: $color_background_grey;
.main_content{ .main_content{

View File

@ -9651,3 +9651,4 @@ CREATE TABLE kolektor_podjetje_funkcija(
PRIMARY KEY (id) PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
UPDATE misc SET value='22.07.13' WHERE what="version";

View File

@ -240,6 +240,7 @@ return array(
'GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php', 'GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php',
'GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php', 'GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php',
'GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php', 'GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php',
'GuzzleHttp\\Psr7\\UriComparator' => $vendorDir . '/guzzlehttp/psr7/src/UriComparator.php',
'GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php', 'GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php',
'GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php', 'GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php',
'GuzzleHttp\\Psr7\\Utils' => $vendorDir . '/guzzlehttp/psr7/src/Utils.php', 'GuzzleHttp\\Psr7\\Utils' => $vendorDir . '/guzzlehttp/psr7/src/Utils.php',
@ -558,6 +559,9 @@ return array(
'Jose\\Component\\Signature\\Signature' => $vendorDir . '/web-token/jwt-signature/Signature.php', 'Jose\\Component\\Signature\\Signature' => $vendorDir . '/web-token/jwt-signature/Signature.php',
'Jose\\Component\\Signature\\Util\\RSA' => $vendorDir . '/web-token/jwt-signature/Util/RSA.php', 'Jose\\Component\\Signature\\Util\\RSA' => $vendorDir . '/web-token/jwt-signature/Util/RSA.php',
'KalkulacijaLatex' => $baseDir . '/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php', 'KalkulacijaLatex' => $baseDir . '/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php',
'Kolektor' => $baseDir . '/admin/survey/modules/mod_KOLEKTOR/class.Kolektor.php',
'KolektorNotifications' => $baseDir . '/admin/survey/modules/mod_KOLEKTOR/class.KolektorNotifications.php',
'KolektorResponse' => $baseDir . '/admin/survey/modules/mod_KOLEKTOR/class.KolektorResponse.php',
'KvotaLatex' => $baseDir . '/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php', 'KvotaLatex' => $baseDir . '/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php',
'LatexAnalysis' => $baseDir . '/admin/survey/export/latexclasses/class.LatexAnalysis.php', 'LatexAnalysis' => $baseDir . '/admin/survey/export/latexclasses/class.LatexAnalysis.php',
'LatexAnalysisElement' => $baseDir . '/admin/survey/export/latexclasses/class.LatexAnalysisElement.php', 'LatexAnalysisElement' => $baseDir . '/admin/survey/export/latexclasses/class.LatexAnalysisElement.php',
@ -610,6 +614,7 @@ return array(
'Notifications' => $baseDir . '/admin/survey/classes/class.Notifications.php', 'Notifications' => $baseDir . '/admin/survey/classes/class.Notifications.php',
'PHPMailer\\PHPMailer\\Exception' => $vendorDir . '/phpmailer/phpmailer/src/Exception.php', 'PHPMailer\\PHPMailer\\Exception' => $vendorDir . '/phpmailer/phpmailer/src/Exception.php',
'PHPMailer\\PHPMailer\\OAuth' => $vendorDir . '/phpmailer/phpmailer/src/OAuth.php', 'PHPMailer\\PHPMailer\\OAuth' => $vendorDir . '/phpmailer/phpmailer/src/OAuth.php',
'PHPMailer\\PHPMailer\\OAuthTokenProvider' => $vendorDir . '/phpmailer/phpmailer/src/OAuthTokenProvider.php',
'PHPMailer\\PHPMailer\\PHPMailer' => $vendorDir . '/phpmailer/phpmailer/src/PHPMailer.php', 'PHPMailer\\PHPMailer\\PHPMailer' => $vendorDir . '/phpmailer/phpmailer/src/PHPMailer.php',
'PHPMailer\\PHPMailer\\POP3' => $vendorDir . '/phpmailer/phpmailer/src/POP3.php', 'PHPMailer\\PHPMailer\\POP3' => $vendorDir . '/phpmailer/phpmailer/src/POP3.php',
'PHPMailer\\PHPMailer\\SMTP' => $vendorDir . '/phpmailer/phpmailer/src/SMTP.php', 'PHPMailer\\PHPMailer\\SMTP' => $vendorDir . '/phpmailer/phpmailer/src/SMTP.php',
@ -698,6 +703,7 @@ return array(
'Stripe\\ApiOperations\\NestedResource' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/NestedResource.php', 'Stripe\\ApiOperations\\NestedResource' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/NestedResource.php',
'Stripe\\ApiOperations\\Request' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Request.php', 'Stripe\\ApiOperations\\Request' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Request.php',
'Stripe\\ApiOperations\\Retrieve' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Retrieve.php', 'Stripe\\ApiOperations\\Retrieve' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Retrieve.php',
'Stripe\\ApiOperations\\Search' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Search.php',
'Stripe\\ApiOperations\\Update' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Update.php', 'Stripe\\ApiOperations\\Update' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Update.php',
'Stripe\\ApiRequestor' => $vendorDir . '/stripe/stripe-php/lib/ApiRequestor.php', 'Stripe\\ApiRequestor' => $vendorDir . '/stripe/stripe-php/lib/ApiRequestor.php',
'Stripe\\ApiResource' => $vendorDir . '/stripe/stripe-php/lib/ApiResource.php', 'Stripe\\ApiResource' => $vendorDir . '/stripe/stripe-php/lib/ApiResource.php',
@ -716,6 +722,7 @@ return array(
'Stripe\\BitcoinTransaction' => $vendorDir . '/stripe/stripe-php/lib/BitcoinTransaction.php', 'Stripe\\BitcoinTransaction' => $vendorDir . '/stripe/stripe-php/lib/BitcoinTransaction.php',
'Stripe\\Capability' => $vendorDir . '/stripe/stripe-php/lib/Capability.php', 'Stripe\\Capability' => $vendorDir . '/stripe/stripe-php/lib/Capability.php',
'Stripe\\Card' => $vendorDir . '/stripe/stripe-php/lib/Card.php', 'Stripe\\Card' => $vendorDir . '/stripe/stripe-php/lib/Card.php',
'Stripe\\CashBalance' => $vendorDir . '/stripe/stripe-php/lib/CashBalance.php',
'Stripe\\Charge' => $vendorDir . '/stripe/stripe-php/lib/Charge.php', 'Stripe\\Charge' => $vendorDir . '/stripe/stripe-php/lib/Charge.php',
'Stripe\\Checkout\\Session' => $vendorDir . '/stripe/stripe-php/lib/Checkout/Session.php', 'Stripe\\Checkout\\Session' => $vendorDir . '/stripe/stripe-php/lib/Checkout/Session.php',
'Stripe\\Collection' => $vendorDir . '/stripe/stripe-php/lib/Collection.php', 'Stripe\\Collection' => $vendorDir . '/stripe/stripe-php/lib/Collection.php',
@ -756,6 +763,11 @@ return array(
'Stripe\\ExchangeRate' => $vendorDir . '/stripe/stripe-php/lib/ExchangeRate.php', 'Stripe\\ExchangeRate' => $vendorDir . '/stripe/stripe-php/lib/ExchangeRate.php',
'Stripe\\File' => $vendorDir . '/stripe/stripe-php/lib/File.php', 'Stripe\\File' => $vendorDir . '/stripe/stripe-php/lib/File.php',
'Stripe\\FileLink' => $vendorDir . '/stripe/stripe-php/lib/FileLink.php', 'Stripe\\FileLink' => $vendorDir . '/stripe/stripe-php/lib/FileLink.php',
'Stripe\\FinancialConnections\\Account' => $vendorDir . '/stripe/stripe-php/lib/FinancialConnections/Account.php',
'Stripe\\FinancialConnections\\AccountOwner' => $vendorDir . '/stripe/stripe-php/lib/FinancialConnections/AccountOwner.php',
'Stripe\\FinancialConnections\\AccountOwnership' => $vendorDir . '/stripe/stripe-php/lib/FinancialConnections/AccountOwnership.php',
'Stripe\\FinancialConnections\\Session' => $vendorDir . '/stripe/stripe-php/lib/FinancialConnections/Session.php',
'Stripe\\FundingInstructions' => $vendorDir . '/stripe/stripe-php/lib/FundingInstructions.php',
'Stripe\\HttpClient\\ClientInterface' => $vendorDir . '/stripe/stripe-php/lib/HttpClient/ClientInterface.php', 'Stripe\\HttpClient\\ClientInterface' => $vendorDir . '/stripe/stripe-php/lib/HttpClient/ClientInterface.php',
'Stripe\\HttpClient\\CurlClient' => $vendorDir . '/stripe/stripe-php/lib/HttpClient/CurlClient.php', 'Stripe\\HttpClient\\CurlClient' => $vendorDir . '/stripe/stripe-php/lib/HttpClient/CurlClient.php',
'Stripe\\HttpClient\\StreamingClientInterface' => $vendorDir . '/stripe/stripe-php/lib/HttpClient/StreamingClientInterface.php', 'Stripe\\HttpClient\\StreamingClientInterface' => $vendorDir . '/stripe/stripe-php/lib/HttpClient/StreamingClientInterface.php',
@ -799,6 +811,7 @@ return array(
'Stripe\\RequestTelemetry' => $vendorDir . '/stripe/stripe-php/lib/RequestTelemetry.php', 'Stripe\\RequestTelemetry' => $vendorDir . '/stripe/stripe-php/lib/RequestTelemetry.php',
'Stripe\\Review' => $vendorDir . '/stripe/stripe-php/lib/Review.php', 'Stripe\\Review' => $vendorDir . '/stripe/stripe-php/lib/Review.php',
'Stripe\\SKU' => $vendorDir . '/stripe/stripe-php/lib/SKU.php', 'Stripe\\SKU' => $vendorDir . '/stripe/stripe-php/lib/SKU.php',
'Stripe\\SearchResult' => $vendorDir . '/stripe/stripe-php/lib/SearchResult.php',
'Stripe\\Service\\AbstractService' => $vendorDir . '/stripe/stripe-php/lib/Service/AbstractService.php', 'Stripe\\Service\\AbstractService' => $vendorDir . '/stripe/stripe-php/lib/Service/AbstractService.php',
'Stripe\\Service\\AbstractServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/AbstractServiceFactory.php', 'Stripe\\Service\\AbstractServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/AbstractServiceFactory.php',
'Stripe\\Service\\AccountLinkService' => $vendorDir . '/stripe/stripe-php/lib/Service/AccountLinkService.php', 'Stripe\\Service\\AccountLinkService' => $vendorDir . '/stripe/stripe-php/lib/Service/AccountLinkService.php',
@ -824,6 +837,9 @@ return array(
'Stripe\\Service\\ExchangeRateService' => $vendorDir . '/stripe/stripe-php/lib/Service/ExchangeRateService.php', 'Stripe\\Service\\ExchangeRateService' => $vendorDir . '/stripe/stripe-php/lib/Service/ExchangeRateService.php',
'Stripe\\Service\\FileLinkService' => $vendorDir . '/stripe/stripe-php/lib/Service/FileLinkService.php', 'Stripe\\Service\\FileLinkService' => $vendorDir . '/stripe/stripe-php/lib/Service/FileLinkService.php',
'Stripe\\Service\\FileService' => $vendorDir . '/stripe/stripe-php/lib/Service/FileService.php', 'Stripe\\Service\\FileService' => $vendorDir . '/stripe/stripe-php/lib/Service/FileService.php',
'Stripe\\Service\\FinancialConnections\\AccountService' => $vendorDir . '/stripe/stripe-php/lib/Service/FinancialConnections/AccountService.php',
'Stripe\\Service\\FinancialConnections\\FinancialConnectionsServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/FinancialConnections/FinancialConnectionsServiceFactory.php',
'Stripe\\Service\\FinancialConnections\\SessionService' => $vendorDir . '/stripe/stripe-php/lib/Service/FinancialConnections/SessionService.php',
'Stripe\\Service\\Identity\\IdentityServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Identity/IdentityServiceFactory.php', 'Stripe\\Service\\Identity\\IdentityServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Identity/IdentityServiceFactory.php',
'Stripe\\Service\\Identity\\VerificationReportService' => $vendorDir . '/stripe/stripe-php/lib/Service/Identity/VerificationReportService.php', 'Stripe\\Service\\Identity\\VerificationReportService' => $vendorDir . '/stripe/stripe-php/lib/Service/Identity/VerificationReportService.php',
'Stripe\\Service\\Identity\\VerificationSessionService' => $vendorDir . '/stripe/stripe-php/lib/Service/Identity/VerificationSessionService.php', 'Stripe\\Service\\Identity\\VerificationSessionService' => $vendorDir . '/stripe/stripe-php/lib/Service/Identity/VerificationSessionService.php',
@ -869,10 +885,16 @@ return array(
'Stripe\\Service\\SubscriptionService' => $vendorDir . '/stripe/stripe-php/lib/Service/SubscriptionService.php', 'Stripe\\Service\\SubscriptionService' => $vendorDir . '/stripe/stripe-php/lib/Service/SubscriptionService.php',
'Stripe\\Service\\TaxCodeService' => $vendorDir . '/stripe/stripe-php/lib/Service/TaxCodeService.php', 'Stripe\\Service\\TaxCodeService' => $vendorDir . '/stripe/stripe-php/lib/Service/TaxCodeService.php',
'Stripe\\Service\\TaxRateService' => $vendorDir . '/stripe/stripe-php/lib/Service/TaxRateService.php', 'Stripe\\Service\\TaxRateService' => $vendorDir . '/stripe/stripe-php/lib/Service/TaxRateService.php',
'Stripe\\Service\\Terminal\\ConfigurationService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/ConfigurationService.php',
'Stripe\\Service\\Terminal\\ConnectionTokenService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/ConnectionTokenService.php', 'Stripe\\Service\\Terminal\\ConnectionTokenService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/ConnectionTokenService.php',
'Stripe\\Service\\Terminal\\LocationService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/LocationService.php', 'Stripe\\Service\\Terminal\\LocationService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/LocationService.php',
'Stripe\\Service\\Terminal\\ReaderService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/ReaderService.php', 'Stripe\\Service\\Terminal\\ReaderService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/ReaderService.php',
'Stripe\\Service\\Terminal\\TerminalServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/TerminalServiceFactory.php', 'Stripe\\Service\\Terminal\\TerminalServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/TerminalServiceFactory.php',
'Stripe\\Service\\TestHelpers\\RefundService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/RefundService.php',
'Stripe\\Service\\TestHelpers\\Terminal\\ReaderService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Terminal/ReaderService.php',
'Stripe\\Service\\TestHelpers\\Terminal\\TerminalServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Terminal/TerminalServiceFactory.php',
'Stripe\\Service\\TestHelpers\\TestClockService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/TestClockService.php',
'Stripe\\Service\\TestHelpers\\TestHelpersServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/TestHelpersServiceFactory.php',
'Stripe\\Service\\TokenService' => $vendorDir . '/stripe/stripe-php/lib/Service/TokenService.php', 'Stripe\\Service\\TokenService' => $vendorDir . '/stripe/stripe-php/lib/Service/TokenService.php',
'Stripe\\Service\\TopupService' => $vendorDir . '/stripe/stripe-php/lib/Service/TopupService.php', 'Stripe\\Service\\TopupService' => $vendorDir . '/stripe/stripe-php/lib/Service/TopupService.php',
'Stripe\\Service\\TransferService' => $vendorDir . '/stripe/stripe-php/lib/Service/TransferService.php', 'Stripe\\Service\\TransferService' => $vendorDir . '/stripe/stripe-php/lib/Service/TransferService.php',
@ -895,9 +917,11 @@ return array(
'Stripe\\TaxCode' => $vendorDir . '/stripe/stripe-php/lib/TaxCode.php', 'Stripe\\TaxCode' => $vendorDir . '/stripe/stripe-php/lib/TaxCode.php',
'Stripe\\TaxId' => $vendorDir . '/stripe/stripe-php/lib/TaxId.php', 'Stripe\\TaxId' => $vendorDir . '/stripe/stripe-php/lib/TaxId.php',
'Stripe\\TaxRate' => $vendorDir . '/stripe/stripe-php/lib/TaxRate.php', 'Stripe\\TaxRate' => $vendorDir . '/stripe/stripe-php/lib/TaxRate.php',
'Stripe\\Terminal\\Configuration' => $vendorDir . '/stripe/stripe-php/lib/Terminal/Configuration.php',
'Stripe\\Terminal\\ConnectionToken' => $vendorDir . '/stripe/stripe-php/lib/Terminal/ConnectionToken.php', 'Stripe\\Terminal\\ConnectionToken' => $vendorDir . '/stripe/stripe-php/lib/Terminal/ConnectionToken.php',
'Stripe\\Terminal\\Location' => $vendorDir . '/stripe/stripe-php/lib/Terminal/Location.php', 'Stripe\\Terminal\\Location' => $vendorDir . '/stripe/stripe-php/lib/Terminal/Location.php',
'Stripe\\Terminal\\Reader' => $vendorDir . '/stripe/stripe-php/lib/Terminal/Reader.php', 'Stripe\\Terminal\\Reader' => $vendorDir . '/stripe/stripe-php/lib/Terminal/Reader.php',
'Stripe\\TestHelpers\\TestClock' => $vendorDir . '/stripe/stripe-php/lib/TestHelpers/TestClock.php',
'Stripe\\ThreeDSecure' => $vendorDir . '/stripe/stripe-php/lib/ThreeDSecure.php', 'Stripe\\ThreeDSecure' => $vendorDir . '/stripe/stripe-php/lib/ThreeDSecure.php',
'Stripe\\Token' => $vendorDir . '/stripe/stripe-php/lib/Token.php', 'Stripe\\Token' => $vendorDir . '/stripe/stripe-php/lib/Token.php',
'Stripe\\Topup' => $vendorDir . '/stripe/stripe-php/lib/Topup.php', 'Stripe\\Topup' => $vendorDir . '/stripe/stripe-php/lib/Topup.php',

View File

@ -444,6 +444,7 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php', 'GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php',
'GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php', 'GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php',
'GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php', 'GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php',
'GuzzleHttp\\Psr7\\UriComparator' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriComparator.php',
'GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php', 'GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php',
'GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php', 'GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php',
'GuzzleHttp\\Psr7\\Utils' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Utils.php', 'GuzzleHttp\\Psr7\\Utils' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Utils.php',
@ -762,6 +763,9 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'Jose\\Component\\Signature\\Signature' => __DIR__ . '/..' . '/web-token/jwt-signature/Signature.php', 'Jose\\Component\\Signature\\Signature' => __DIR__ . '/..' . '/web-token/jwt-signature/Signature.php',
'Jose\\Component\\Signature\\Util\\RSA' => __DIR__ . '/..' . '/web-token/jwt-signature/Util/RSA.php', 'Jose\\Component\\Signature\\Util\\RSA' => __DIR__ . '/..' . '/web-token/jwt-signature/Util/RSA.php',
'KalkulacijaLatex' => __DIR__ . '/../..' . '/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php', 'KalkulacijaLatex' => __DIR__ . '/../..' . '/admin/survey/export/latexclasses/Vprasanja/KalkulacijaLatex.php',
'Kolektor' => __DIR__ . '/../..' . '/admin/survey/modules/mod_KOLEKTOR/class.Kolektor.php',
'KolektorNotifications' => __DIR__ . '/../..' . '/admin/survey/modules/mod_KOLEKTOR/class.KolektorNotifications.php',
'KolektorResponse' => __DIR__ . '/../..' . '/admin/survey/modules/mod_KOLEKTOR/class.KolektorResponse.php',
'KvotaLatex' => __DIR__ . '/../..' . '/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php', 'KvotaLatex' => __DIR__ . '/../..' . '/admin/survey/export/latexclasses/Vprasanja/KvotaLatex.php',
'LatexAnalysis' => __DIR__ . '/../..' . '/admin/survey/export/latexclasses/class.LatexAnalysis.php', 'LatexAnalysis' => __DIR__ . '/../..' . '/admin/survey/export/latexclasses/class.LatexAnalysis.php',
'LatexAnalysisElement' => __DIR__ . '/../..' . '/admin/survey/export/latexclasses/class.LatexAnalysisElement.php', 'LatexAnalysisElement' => __DIR__ . '/../..' . '/admin/survey/export/latexclasses/class.LatexAnalysisElement.php',
@ -814,6 +818,7 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'Notifications' => __DIR__ . '/../..' . '/admin/survey/classes/class.Notifications.php', 'Notifications' => __DIR__ . '/../..' . '/admin/survey/classes/class.Notifications.php',
'PHPMailer\\PHPMailer\\Exception' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/Exception.php', 'PHPMailer\\PHPMailer\\Exception' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/Exception.php',
'PHPMailer\\PHPMailer\\OAuth' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/OAuth.php', 'PHPMailer\\PHPMailer\\OAuth' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/OAuth.php',
'PHPMailer\\PHPMailer\\OAuthTokenProvider' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/OAuthTokenProvider.php',
'PHPMailer\\PHPMailer\\PHPMailer' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/PHPMailer.php', 'PHPMailer\\PHPMailer\\PHPMailer' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/PHPMailer.php',
'PHPMailer\\PHPMailer\\POP3' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/POP3.php', 'PHPMailer\\PHPMailer\\POP3' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/POP3.php',
'PHPMailer\\PHPMailer\\SMTP' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/SMTP.php', 'PHPMailer\\PHPMailer\\SMTP' => __DIR__ . '/..' . '/phpmailer/phpmailer/src/SMTP.php',
@ -902,6 +907,7 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'Stripe\\ApiOperations\\NestedResource' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/NestedResource.php', 'Stripe\\ApiOperations\\NestedResource' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/NestedResource.php',
'Stripe\\ApiOperations\\Request' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Request.php', 'Stripe\\ApiOperations\\Request' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Request.php',
'Stripe\\ApiOperations\\Retrieve' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Retrieve.php', 'Stripe\\ApiOperations\\Retrieve' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Retrieve.php',
'Stripe\\ApiOperations\\Search' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Search.php',
'Stripe\\ApiOperations\\Update' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Update.php', 'Stripe\\ApiOperations\\Update' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Update.php',
'Stripe\\ApiRequestor' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiRequestor.php', 'Stripe\\ApiRequestor' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiRequestor.php',
'Stripe\\ApiResource' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiResource.php', 'Stripe\\ApiResource' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiResource.php',
@ -920,6 +926,7 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'Stripe\\BitcoinTransaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/BitcoinTransaction.php', 'Stripe\\BitcoinTransaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/BitcoinTransaction.php',
'Stripe\\Capability' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Capability.php', 'Stripe\\Capability' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Capability.php',
'Stripe\\Card' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Card.php', 'Stripe\\Card' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Card.php',
'Stripe\\CashBalance' => __DIR__ . '/..' . '/stripe/stripe-php/lib/CashBalance.php',
'Stripe\\Charge' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Charge.php', 'Stripe\\Charge' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Charge.php',
'Stripe\\Checkout\\Session' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Checkout/Session.php', 'Stripe\\Checkout\\Session' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Checkout/Session.php',
'Stripe\\Collection' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Collection.php', 'Stripe\\Collection' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Collection.php',
@ -960,6 +967,11 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'Stripe\\ExchangeRate' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ExchangeRate.php', 'Stripe\\ExchangeRate' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ExchangeRate.php',
'Stripe\\File' => __DIR__ . '/..' . '/stripe/stripe-php/lib/File.php', 'Stripe\\File' => __DIR__ . '/..' . '/stripe/stripe-php/lib/File.php',
'Stripe\\FileLink' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FileLink.php', 'Stripe\\FileLink' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FileLink.php',
'Stripe\\FinancialConnections\\Account' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FinancialConnections/Account.php',
'Stripe\\FinancialConnections\\AccountOwner' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FinancialConnections/AccountOwner.php',
'Stripe\\FinancialConnections\\AccountOwnership' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FinancialConnections/AccountOwnership.php',
'Stripe\\FinancialConnections\\Session' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FinancialConnections/Session.php',
'Stripe\\FundingInstructions' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FundingInstructions.php',
'Stripe\\HttpClient\\ClientInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/HttpClient/ClientInterface.php', 'Stripe\\HttpClient\\ClientInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/HttpClient/ClientInterface.php',
'Stripe\\HttpClient\\CurlClient' => __DIR__ . '/..' . '/stripe/stripe-php/lib/HttpClient/CurlClient.php', 'Stripe\\HttpClient\\CurlClient' => __DIR__ . '/..' . '/stripe/stripe-php/lib/HttpClient/CurlClient.php',
'Stripe\\HttpClient\\StreamingClientInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/HttpClient/StreamingClientInterface.php', 'Stripe\\HttpClient\\StreamingClientInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/HttpClient/StreamingClientInterface.php',
@ -1003,6 +1015,7 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'Stripe\\RequestTelemetry' => __DIR__ . '/..' . '/stripe/stripe-php/lib/RequestTelemetry.php', 'Stripe\\RequestTelemetry' => __DIR__ . '/..' . '/stripe/stripe-php/lib/RequestTelemetry.php',
'Stripe\\Review' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Review.php', 'Stripe\\Review' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Review.php',
'Stripe\\SKU' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SKU.php', 'Stripe\\SKU' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SKU.php',
'Stripe\\SearchResult' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SearchResult.php',
'Stripe\\Service\\AbstractService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AbstractService.php', 'Stripe\\Service\\AbstractService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AbstractService.php',
'Stripe\\Service\\AbstractServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AbstractServiceFactory.php', 'Stripe\\Service\\AbstractServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AbstractServiceFactory.php',
'Stripe\\Service\\AccountLinkService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AccountLinkService.php', 'Stripe\\Service\\AccountLinkService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AccountLinkService.php',
@ -1028,6 +1041,9 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'Stripe\\Service\\ExchangeRateService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/ExchangeRateService.php', 'Stripe\\Service\\ExchangeRateService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/ExchangeRateService.php',
'Stripe\\Service\\FileLinkService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FileLinkService.php', 'Stripe\\Service\\FileLinkService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FileLinkService.php',
'Stripe\\Service\\FileService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FileService.php', 'Stripe\\Service\\FileService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FileService.php',
'Stripe\\Service\\FinancialConnections\\AccountService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FinancialConnections/AccountService.php',
'Stripe\\Service\\FinancialConnections\\FinancialConnectionsServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FinancialConnections/FinancialConnectionsServiceFactory.php',
'Stripe\\Service\\FinancialConnections\\SessionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FinancialConnections/SessionService.php',
'Stripe\\Service\\Identity\\IdentityServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Identity/IdentityServiceFactory.php', 'Stripe\\Service\\Identity\\IdentityServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Identity/IdentityServiceFactory.php',
'Stripe\\Service\\Identity\\VerificationReportService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Identity/VerificationReportService.php', 'Stripe\\Service\\Identity\\VerificationReportService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Identity/VerificationReportService.php',
'Stripe\\Service\\Identity\\VerificationSessionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Identity/VerificationSessionService.php', 'Stripe\\Service\\Identity\\VerificationSessionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Identity/VerificationSessionService.php',
@ -1073,10 +1089,16 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'Stripe\\Service\\SubscriptionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/SubscriptionService.php', 'Stripe\\Service\\SubscriptionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/SubscriptionService.php',
'Stripe\\Service\\TaxCodeService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TaxCodeService.php', 'Stripe\\Service\\TaxCodeService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TaxCodeService.php',
'Stripe\\Service\\TaxRateService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TaxRateService.php', 'Stripe\\Service\\TaxRateService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TaxRateService.php',
'Stripe\\Service\\Terminal\\ConfigurationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/ConfigurationService.php',
'Stripe\\Service\\Terminal\\ConnectionTokenService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/ConnectionTokenService.php', 'Stripe\\Service\\Terminal\\ConnectionTokenService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/ConnectionTokenService.php',
'Stripe\\Service\\Terminal\\LocationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/LocationService.php', 'Stripe\\Service\\Terminal\\LocationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/LocationService.php',
'Stripe\\Service\\Terminal\\ReaderService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/ReaderService.php', 'Stripe\\Service\\Terminal\\ReaderService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/ReaderService.php',
'Stripe\\Service\\Terminal\\TerminalServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/TerminalServiceFactory.php', 'Stripe\\Service\\Terminal\\TerminalServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/TerminalServiceFactory.php',
'Stripe\\Service\\TestHelpers\\RefundService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/RefundService.php',
'Stripe\\Service\\TestHelpers\\Terminal\\ReaderService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Terminal/ReaderService.php',
'Stripe\\Service\\TestHelpers\\Terminal\\TerminalServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Terminal/TerminalServiceFactory.php',
'Stripe\\Service\\TestHelpers\\TestClockService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/TestClockService.php',
'Stripe\\Service\\TestHelpers\\TestHelpersServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/TestHelpersServiceFactory.php',
'Stripe\\Service\\TokenService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TokenService.php', 'Stripe\\Service\\TokenService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TokenService.php',
'Stripe\\Service\\TopupService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TopupService.php', 'Stripe\\Service\\TopupService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TopupService.php',
'Stripe\\Service\\TransferService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TransferService.php', 'Stripe\\Service\\TransferService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TransferService.php',
@ -1099,9 +1121,11 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779
'Stripe\\TaxCode' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TaxCode.php', 'Stripe\\TaxCode' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TaxCode.php',
'Stripe\\TaxId' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TaxId.php', 'Stripe\\TaxId' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TaxId.php',
'Stripe\\TaxRate' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TaxRate.php', 'Stripe\\TaxRate' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TaxRate.php',
'Stripe\\Terminal\\Configuration' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/Configuration.php',
'Stripe\\Terminal\\ConnectionToken' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/ConnectionToken.php', 'Stripe\\Terminal\\ConnectionToken' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/ConnectionToken.php',
'Stripe\\Terminal\\Location' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/Location.php', 'Stripe\\Terminal\\Location' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/Location.php',
'Stripe\\Terminal\\Reader' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/Reader.php', 'Stripe\\Terminal\\Reader' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/Reader.php',
'Stripe\\TestHelpers\\TestClock' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TestHelpers/TestClock.php',
'Stripe\\ThreeDSecure' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ThreeDSecure.php', 'Stripe\\ThreeDSecure' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ThreeDSecure.php',
'Stripe\\Token' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Token.php', 'Stripe\\Token' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Token.php',
'Stripe\\Topup' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Topup.php', 'Stripe\\Topup' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Topup.php',

View File

@ -1,7 +1,7 @@
## ##
## Bundle of CA Root Certificates ## Bundle of CA Root Certificates
## ##
## Certificate data from Mozilla as of: Tue Oct 26 03:12:05 2021 GMT ## Certificate data from Mozilla as of: Tue Apr 26 03:12:05 2022 GMT
## ##
## This is a bundle of X.509 certificates of public Certificate Authorities ## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates ## (CA). These were automatically extracted from Mozilla's root certificates
@ -13,8 +13,8 @@
## an Apache+mod_ssl webserver for SSL client authentication. ## an Apache+mod_ssl webserver for SSL client authentication.
## Just configure this file as the SSLCACertificateFile. ## Just configure this file as the SSLCACertificateFile.
## ##
## Conversion done with mk-ca-bundle.pl version 1.28. ## Conversion done with mk-ca-bundle.pl version 1.29.
## SHA256: bb36818a81feaa4cca61101e6d6276cd09e972efcb08112dfed846918ca41d7f ## SHA256: 34a54d5191775c1bd37be6cfd3f09e831e072555dc3a2e51f4a2c4b0f8ada5cc
## ##
@ -39,28 +39,6 @@ hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
-----END CERTIFICATE----- -----END CERTIFICATE-----
GlobalSign Root CA - R2
=======================
-----BEGIN CERTIFICATE-----
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
-----END CERTIFICATE-----
Entrust.net Premium 2048 Secure Server CA Entrust.net Premium 2048 Secure Server CA
========================================= =========================================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -573,28 +551,6 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
-----END CERTIFICATE----- -----END CERTIFICATE-----
Cybertrust Global Root
======================
-----BEGIN CERTIFICATE-----
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
-----END CERTIFICATE-----
ePKI Root Certification Authority ePKI Root Certification Authority
================================= =================================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -1037,36 +993,6 @@ tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
-----END CERTIFICATE----- -----END CERTIFICATE-----
EC-ACC
======
-----BEGIN CERTIFICATE-----
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
5EI=
-----END CERTIFICATE-----
Hellenic Academic and Research Institutions RootCA 2011 Hellenic Academic and Research Institutions RootCA 2011
======================================================= =======================================================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -1737,20 +1663,6 @@ HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= 9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
-----END CERTIFICATE----- -----END CERTIFICATE-----
GlobalSign ECC Root CA - R4
===========================
-----BEGIN CERTIFICATE-----
MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
-----END CERTIFICATE-----
GlobalSign ECC Root CA - R5 GlobalSign ECC Root CA - R5
=========================== ===========================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -2472,96 +2384,6 @@ AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
-----END CERTIFICATE----- -----END CERTIFICATE-----
GTS Root R1
===========
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG
EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv
b3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG
A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx
9vaMf/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7r
aKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnW
r4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqM
LnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly
4cpk9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr
06zqkUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92
wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om
3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNu
JLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEM
BQADggIBADiWCu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1
d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6ZXPYfcX3v73sv
fuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZRgyFmxhE+885H7pwoHyXa/6xm
ld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9b
gsiG1eGZbYwE8na6SfZu6W0eX6DvJ4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq
4BjFbkerQUIpm/ZgDdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWEr
tXvM+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyyF62ARPBo
pY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9SQ98POyDGCBDTtWTurQ0
sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdwsE3PYJ/HQcu51OyLemGhmW/HGY0dVHLql
CFF1pkgl
-----END CERTIFICATE-----
GTS Root R2
===========
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG
EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv
b3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG
A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTuk
k3LvCvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo
7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWI
m8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5Gm
dFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbu
ak7MkogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscsz
cTJGr61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW
Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73Vululycsl
aVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy
5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEM
BQADggIBALZp8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT
vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiTz9D2PGcDFWEJ
+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiApJiS4wGWAqoC7o87xdFtCjMw
c3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvbpxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3Da
WsYDQvTtN6LwG1BUSw7YhN4ZKJmBR64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5r
n/WkhLx3+WuXrD5RRaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56Gtmwfu
Nmsk0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC5AwiWVIQ
7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiFizoHCBy69Y9Vmhh1fuXs
gWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLnyOd/xCxgXS/Dr55FBcOEArf9LAhST4Ld
o/DUhgkC
-----END CERTIFICATE-----
GTS Root R3
===========
-----BEGIN CERTIFICATE-----
MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq
hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU
Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej
QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP
0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0
glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa
KaqW04MjyaR7YbPMAuhd
-----END CERTIFICATE-----
GTS Root R4
===========
-----BEGIN CERTIFICATE-----
MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq
hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa
6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj
QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV
2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI
N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x
zPKwTdb+mciUqXWi4w==
-----END CERTIFICATE-----
UCA Global G2 Root UCA Global G2 Root
================== ==================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -3230,3 +3052,296 @@ ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW
rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw
CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps
-----END CERTIFICATE----- -----END CERTIFICATE-----
Autoridad de Certificacion Firmaprofesional CIF A62634068
=========================================================
-----BEGIN CERTIFICATE-----
MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud
DgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w
gZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j
b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A
bwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL
4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb
LIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il
I45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP
cjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA
LI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A
lun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH
9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf
NIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE
ZycPvEJdvSRUDewdcAZfpLz6IHxV
-----END CERTIFICATE-----
vTrus ECC Root CA
=================
-----BEGIN CERTIFICATE-----
MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE
BhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS
b290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa
BgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw
EAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c
ToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n
TPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO
BgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT
QJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL
YgmRWAD5Tfs0aNoJrSEGGJTO
-----END CERTIFICATE-----
vTrus Root CA
=============
-----BEGIN CERTIFICATE-----
MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQELBQAwQzELMAkG
A1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xFjAUBgNVBAMTDXZUcnVzIFJv
b3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMxMDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoG
A1UEChMTaVRydXNDaGluYSBDby4sTHRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJ
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZots
SKYcIrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykUAyyNJJrI
ZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+GrPSbcKvdmaVayqwlHeF
XgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z98Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KA
YPxMvDVTAWqXcoKv8R1w6Jz1717CbMdHflqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70
kLJrxLT5ZOrpGgrIDajtJ8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2
AXPKBlim0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZNpGvu
/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQUqqzApVg+QxMaPnu
1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHWOXSuTEGC2/KmSNGzm/MzqvOmwMVO
9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMBAAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYg
scasGrz2iTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOC
AgEAKbqSSaet8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd
nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1jbhd47F18iMjr
jld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvMKar5CKXiNxTKsbhm7xqC5PD4
8acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIivTDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJn
xDHO2zTlJQNgJXtxmOTAGytfdELSS8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554Wg
icEFOwE30z9J4nfrI8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4
sEb9b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNBUvupLnKW
nyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1PTi07NEPhmg4NpGaXutIc
SkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929vensBxXVsFy6K2ir40zSbofitzmdHxghm+H
l3s=
-----END CERTIFICATE-----
ISRG Root X2
============
-----BEGIN CERTIFICATE-----
MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV
UzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT
UkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT
MSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS
RyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H
ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb
d9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
HQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF
cP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5
U6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn
-----END CERTIFICATE-----
HiPKI Root CA - G1
==================
-----BEGIN CERTIFICATE-----
MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQG
EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xGzAZBgNVBAMMEkhpUEtJ
IFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRaFw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYT
AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kg
Um9vdCBDQSAtIEcxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0
o9QwqNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twvVcg3Px+k
wJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6lZgRZq2XNdZ1AYDgr/SE
YYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnzQs7ZngyzsHeXZJzA9KMuH5UHsBffMNsA
GJZMoYFL3QRtU6M9/Aes1MU3guvklQgZKILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfd
hSi8MEyr48KxRURHH+CKFgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj
1jOXTyFjHluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDry+K4
9a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ/W3c1pzAtH2lsN0/
Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgMa/aOEmem8rJY5AIJEzypuxC00jBF
8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYD
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQD
AgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi
7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqcSE5XCV0vrPSl
tJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6FzaZsT0pPBWGTMpWmWSBUdGSquE
wx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9TcXzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07Q
JNBAsNB1CI69aO4I1258EHBGG3zgiLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv
5wiZqAxeJoBF1PhoL5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+Gpz
jLrFNe85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wrkkVbbiVg
hUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+vhV4nYWBSipX3tUZQ9rb
yltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQUYDksswBVLuT1sw5XxJFBAJw/6KXf6vb/
yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ==
-----END CERTIFICATE-----
GlobalSign ECC Root CA - R4
===========================
-----BEGIN CERTIFICATE-----
MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i
YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
b2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i
YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
b2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW
ymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E
BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI
KoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg
UM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm
-----END CERTIFICATE-----
GTS Root R1
===========
-----BEGIN CERTIFICATE-----
MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
UjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0G
CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM
f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7raKb0
xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnWr4+w
B7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXW
nOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk
9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zq
kUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92wO1A
K/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om3xPX
V2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDW
cfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQAD
ggIBAJ+qQibbC5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe
QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuyh6f88/qBVRRi
ClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM47HLwEXWdyzRSjeZ2axfG34ar
J45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8JZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYci
NuaCp+0KueIHoI17eko8cdLiA6EfMgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5me
LMFrUKTX5hgUvYU/Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJF
fbdT6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ0E6yove+
7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm2tIMPNuzjsmhDYAPexZ3
FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bbbP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3
gm3c
-----END CERTIFICATE-----
GTS Root R2
===========
-----BEGIN CERTIFICATE-----
MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
UjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0G
CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv
CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo7JUl
e3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWIm8Wb
a96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS
+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7M
kogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJG
r61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RWIr9q
S34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73VululycslaVNV
J1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy5okL
dWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQAD
ggIBAB/Kzt3HvqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8
0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyCB19m3H0Q/gxh
swWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2uNmSRXbBoGOqKYcl3qJfEycel
/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMgyALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVn
jWQye+mew4K6Ki3pHrTgSAai/GevHyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y5
9PYjJbigapordwj6xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M
7YNRTOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924SgJPFI/2R8
0L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV7LXTWtiBmelDGDfrs7vR
WGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjW
HYbL
-----END CERTIFICATE-----
GTS Root R3
===========
-----BEGIN CERTIFICATE-----
MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi
MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw
HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ
R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO
PQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout
736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA
MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq
Er24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT
L818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV
11RZt+cRLInUue4X
-----END CERTIFICATE-----
GTS Root R4
===========
-----BEGIN CERTIFICATE-----
MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi
MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw
HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ
R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO
PQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu
hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA
MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1
PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C
r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh
4rsUecrNIdSUtUlD
-----END CERTIFICATE-----
Telia Root CA v2
================
-----BEGIN CERTIFICATE-----
MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNVBAYT
AkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2
MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQK
DBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZI
hvcNAQEBBQADggIPADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ7
6zBqAMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9vVYiQJ3q
9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9lRdU2HhE8Qx3FZLgmEKn
pNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTODn3WhUidhOPFZPY5Q4L15POdslv5e2QJl
tI5c0BE0312/UqeBAMN/mUWZFdUXyApT7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW
5olWK8jjfN7j/4nlNW4o6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNr
RBH0pUPCTEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6WT0E
BXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63RDolUK5X6wK0dmBR4
M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZIpEYslOqodmJHixBTB0hXbOKSTbau
BcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGjYzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7W
xy+G2CQ5MB0GA1UdDgQWBBRyrOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYD
VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ
8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi0f6X+J8wfBj5
tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMMA8iZGok1GTzTyVR8qPAs5m4H
eW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBSSRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+C
y748fdHif64W1lZYudogsYMVoe+KTTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygC
QMez2P2ccGrGKMOF6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15
h2Er3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMtTy3EHD70
sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pTVmBds9hCG1xLEooc6+t9
xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAWysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQ
raVplI/owd8k+BsHMYeB2F326CjYSlKArBPuUBQemMc=
-----END CERTIFICATE-----
D-TRUST BR Root CA 1 2020
=========================
-----BEGIN CERTIFICATE-----
MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE
RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEJSIFJvb3QgQ0EgMSAy
MDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNV
BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAG
ByqGSM49AgEGBSuBBAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7
dPYSzuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0QVK5buXu
QqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/VbNafAkl1bK6CKBrqx9t
MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu
bmV0L2NybC9kLXRydXN0X2JyX3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj
dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP
PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD
AwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFWwKrY7RjEsK70Pvom
AjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHVdWNbFJWcHwHP2NVypw87
-----END CERTIFICATE-----
D-TRUST EV Root CA 1 2020
=========================
-----BEGIN CERTIFICATE-----
MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE
RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEVWIFJvb3QgQ0EgMSAy
MDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNV
BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAG
ByqGSM49AgEGBSuBBAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8
ZRCC/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rDwpdhQntJ
raOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3OqQo5FD4pPfsazK2/umL
MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu
bmV0L2NybC9kLXRydXN0X2V2X3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj
dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP
PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD
AwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CAy/m0sRtW9XLS/BnR
AjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJbgfM0agPnIjhQW+0ZT0MW
-----END CERTIFICATE-----

View File

@ -2,17 +2,17 @@
"packages": [ "packages": [
{ {
"name": "composer/ca-bundle", "name": "composer/ca-bundle",
"version": "1.3.1", "version": "1.3.2",
"version_normalized": "1.3.1.0", "version_normalized": "1.3.2.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/ca-bundle.git", "url": "https://github.com/composer/ca-bundle.git",
"reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" "reference": "fd5dd441932a7e10ca6e5b490e272d34c8430640"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", "url": "https://api.github.com/repos/composer/ca-bundle/zipball/fd5dd441932a7e10ca6e5b490e272d34c8430640",
"reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", "reference": "fd5dd441932a7e10ca6e5b490e272d34c8430640",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -26,7 +26,7 @@
"symfony/phpunit-bridge": "^4.2 || ^5", "symfony/phpunit-bridge": "^4.2 || ^5",
"symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0"
}, },
"time": "2021-10-28T20:44:15+00:00", "time": "2022-05-24T11:56:16+00:00",
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
@ -61,7 +61,7 @@
"support": { "support": {
"irc": "irc://irc.freenode.org/composer", "irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/ca-bundle/issues", "issues": "https://github.com/composer/ca-bundle/issues",
"source": "https://github.com/composer/ca-bundle/tree/1.3.1" "source": "https://github.com/composer/ca-bundle/tree/1.3.2"
}, },
"funding": [ "funding": [
{ {
@ -220,25 +220,25 @@
}, },
{ {
"name": "guzzlehttp/guzzle", "name": "guzzlehttp/guzzle",
"version": "6.5.5", "version": "6.5.8",
"version_normalized": "6.5.5.0", "version_normalized": "6.5.8.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/guzzle.git", "url": "https://github.com/guzzle/guzzle.git",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-json": "*", "ext-json": "*",
"guzzlehttp/promises": "^1.0", "guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1", "guzzlehttp/psr7": "^1.9",
"php": ">=5.5", "php": ">=5.5",
"symfony/polyfill-intl-idn": "^1.17.0" "symfony/polyfill-intl-idn": "^1.17"
}, },
"require-dev": { "require-dev": {
"ext-curl": "*", "ext-curl": "*",
@ -248,7 +248,7 @@
"suggest": { "suggest": {
"psr/log": "Required for using the Log middleware" "psr/log": "Required for using the Log middleware"
}, },
"time": "2020-06-16T21:01:06+00:00", "time": "2022-06-20T22:16:07+00:00",
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
@ -257,22 +257,52 @@
}, },
"installation-source": "dist", "installation-source": "dist",
"autoload": { "autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
},
"files": [ "files": [
"src/functions_include.php" "src/functions_include.php"
] ],
"psr-4": {
"GuzzleHttp\\": "src/"
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
"MIT" "MIT"
], ],
"authors": [ "authors": [
{
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
},
{ {
"name": "Michael Dowling", "name": "Michael Dowling",
"email": "mtdowling@gmail.com", "email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling" "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", "description": "Guzzle is a PHP HTTP client library",
@ -286,6 +316,24 @@
"rest", "rest",
"web service" "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" "install-path": "../guzzlehttp/guzzle"
}, },
{ {
@ -377,17 +425,17 @@
}, },
{ {
"name": "guzzlehttp/psr7", "name": "guzzlehttp/psr7",
"version": "1.8.3", "version": "1.9.0",
"version_normalized": "1.8.3.0", "version_normalized": "1.9.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/psr7.git", "url": "https://github.com/guzzle/psr7.git",
"reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85" "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
"reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -405,21 +453,21 @@
"suggest": { "suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
}, },
"time": "2021-10-05T13:56:00+00:00", "time": "2022-06-20T21:43:03+00:00",
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.7-dev" "dev-master": "1.9-dev"
} }
}, },
"installation-source": "dist", "installation-source": "dist",
"autoload": { "autoload": {
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
},
"files": [ "files": [
"src/functions_include.php" "src/functions_include.php"
] ],
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@ -470,7 +518,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/guzzle/psr7/issues", "issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/1.8.3" "source": "https://github.com/guzzle/psr7/tree/1.9.0"
}, },
"funding": [ "funding": [
{ {
@ -558,17 +606,17 @@
}, },
{ {
"name": "maxmind/web-service-common", "name": "maxmind/web-service-common",
"version": "v0.8.1", "version": "v0.9.0",
"version_normalized": "0.8.1.0", "version_normalized": "0.9.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/maxmind/web-service-common-php.git", "url": "https://github.com/maxmind/web-service-common-php.git",
"reference": "32f274051c543fc865e5a84d3a2c703913641ea8" "reference": "4dc5a3e8df38aea4ca3b1096cee3a038094e9b53"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/32f274051c543fc865e5a84d3a2c703913641ea8", "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/4dc5a3e8df38aea4ca3b1096cee3a038094e9b53",
"reference": "32f274051c543fc865e5a84d3a2c703913641ea8", "reference": "4dc5a3e8df38aea4ca3b1096cee3a038094e9b53",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -578,11 +626,12 @@
"php": ">=7.2" "php": ">=7.2"
}, },
"require-dev": { "require-dev": {
"friendsofphp/php-cs-fixer": "2.*", "friendsofphp/php-cs-fixer": "3.*",
"phpstan/phpstan": "*",
"phpunit/phpunit": "^8.0 || ^9.0", "phpunit/phpunit": "^8.0 || ^9.0",
"squizlabs/php_codesniffer": "3.*" "squizlabs/php_codesniffer": "3.*"
}, },
"time": "2020-11-02T17:00:53+00:00", "time": "2022-03-28T17:43:20+00:00",
"type": "library", "type": "library",
"installation-source": "dist", "installation-source": "dist",
"autoload": { "autoload": {
@ -603,6 +652,10 @@
], ],
"description": "Internal MaxMind Web Service API", "description": "Internal MaxMind Web Service API",
"homepage": "https://github.com/maxmind/web-service-common-php", "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" "install-path": "../maxmind/web-service-common"
}, },
{ {
@ -714,17 +767,17 @@
}, },
{ {
"name": "paragonie/sodium_compat", "name": "paragonie/sodium_compat",
"version": "v1.17.0", "version": "v1.17.1",
"version_normalized": "1.17.0.0", "version_normalized": "1.17.1.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/paragonie/sodium_compat.git", "url": "https://github.com/paragonie/sodium_compat.git",
"reference": "c59cac21abbcc0df06a3dd18076450ea4797b321" "reference": "ac994053faac18d386328c91c7900f930acadf1e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/c59cac21abbcc0df06a3dd18076450ea4797b321", "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/ac994053faac18d386328c91c7900f930acadf1e",
"reference": "c59cac21abbcc0df06a3dd18076450ea4797b321", "reference": "ac994053faac18d386328c91c7900f930acadf1e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -738,7 +791,7 @@
"ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", "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." "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
}, },
"time": "2021-08-10T02:43:50+00:00", "time": "2022-03-23T19:32:04+00:00",
"type": "library", "type": "library",
"installation-source": "dist", "installation-source": "dist",
"autoload": { "autoload": {
@ -797,7 +850,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/paragonie/sodium_compat/issues", "issues": "https://github.com/paragonie/sodium_compat/issues",
"source": "https://github.com/paragonie/sodium_compat/tree/v1.17.0" "source": "https://github.com/paragonie/sodium_compat/tree/v1.17.1"
}, },
"install-path": "../paragonie/sodium_compat" "install-path": "../paragonie/sodium_compat"
}, },
@ -904,17 +957,17 @@
}, },
{ {
"name": "phpmailer/phpmailer", "name": "phpmailer/phpmailer",
"version": "v6.5.4", "version": "v6.6.3",
"version_normalized": "6.5.4.0", "version_normalized": "6.6.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git", "url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285" "reference": "9400f305a898f194caff5521f64e5dfa926626f3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c0d9f7dd3c2aa247ca44791e9209233829d82285", "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/9400f305a898f194caff5521f64e5dfa926626f3",
"reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285", "reference": "9400f305a898f194caff5521f64e5dfa926626f3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -926,8 +979,8 @@
"require-dev": { "require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2", "doctrine/annotations": "^1.2",
"php-parallel-lint/php-console-highlighter": "^0.5.0", "php-parallel-lint/php-console-highlighter": "^1.0.0",
"php-parallel-lint/php-parallel-lint": "^1.3.1", "php-parallel-lint/php-parallel-lint": "^1.3.2",
"phpcompatibility/php-compatibility": "^9.3.5", "phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest", "roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^3.6.2", "squizlabs/php_codesniffer": "^3.6.2",
@ -941,7 +994,7 @@
"stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", "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)" "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
}, },
"time": "2022-02-17T08:19:04+00:00", "time": "2022-06-20T09:21:02+00:00",
"type": "library", "type": "library",
"installation-source": "dist", "installation-source": "dist",
"autoload": { "autoload": {
@ -973,7 +1026,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP", "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": { "support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues", "issues": "https://github.com/PHPMailer/PHPMailer/issues",
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.4" "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.3"
}, },
"funding": [ "funding": [
{ {
@ -1217,17 +1270,17 @@
}, },
{ {
"name": "stripe/stripe-php", "name": "stripe/stripe-php",
"version": "v7.114.0", "version": "v7.128.0",
"version_normalized": "7.114.0.0", "version_normalized": "7.128.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/stripe/stripe-php.git", "url": "https://github.com/stripe/stripe-php.git",
"reference": "63be231686c6874befb5b3a47fb8effb4c30b78b" "reference": "c704949c49b72985c76cc61063aa26fefbd2724e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/63be231686c6874befb5b3a47fb8effb4c30b78b", "url": "https://api.github.com/repos/stripe/stripe-php/zipball/c704949c49b72985c76cc61063aa26fefbd2724e",
"reference": "63be231686c6874befb5b3a47fb8effb4c30b78b", "reference": "c704949c49b72985c76cc61063aa26fefbd2724e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1242,7 +1295,7 @@
"phpunit/phpunit": "^5.7 || ^9.0", "phpunit/phpunit": "^5.7 || ^9.0",
"squizlabs/php_codesniffer": "^3.3" "squizlabs/php_codesniffer": "^3.3"
}, },
"time": "2022-02-15T22:48:31+00:00", "time": "2022-05-05T17:18:02+00:00",
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
@ -1274,23 +1327,23 @@
], ],
"support": { "support": {
"issues": "https://github.com/stripe/stripe-php/issues", "issues": "https://github.com/stripe/stripe-php/issues",
"source": "https://github.com/stripe/stripe-php/tree/v7.114.0" "source": "https://github.com/stripe/stripe-php/tree/v7.128.0"
}, },
"install-path": "../stripe/stripe-php" "install-path": "../stripe/stripe-php"
}, },
{ {
"name": "symfony/polyfill-intl-idn", "name": "symfony/polyfill-intl-idn",
"version": "v1.24.0", "version": "v1.26.0",
"version_normalized": "1.24.0.0", "version_normalized": "1.26.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git", "url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44" "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44", "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1301,11 +1354,11 @@
"suggest": { "suggest": {
"ext-intl": "For best performance" "ext-intl": "For best performance"
}, },
"time": "2021-09-14T14:02:44+00:00", "time": "2022-05-24T11:49:31+00:00",
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "1.23-dev" "dev-main": "1.26-dev"
}, },
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
@ -1350,7 +1403,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0" "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
}, },
"funding": [ "funding": [
{ {
@ -1370,17 +1423,17 @@
}, },
{ {
"name": "symfony/polyfill-intl-normalizer", "name": "symfony/polyfill-intl-normalizer",
"version": "v1.24.0", "version": "v1.26.0",
"version_normalized": "1.24.0.0", "version_normalized": "1.26.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" "reference": "219aa369ceff116e673852dce47c3a41794c14bd"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", "reference": "219aa369ceff116e673852dce47c3a41794c14bd",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1389,11 +1442,11 @@
"suggest": { "suggest": {
"ext-intl": "For best performance" "ext-intl": "For best performance"
}, },
"time": "2021-02-19T12:13:01+00:00", "time": "2022-05-24T11:49:31+00:00",
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "1.23-dev" "dev-main": "1.26-dev"
}, },
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
@ -1437,7 +1490,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0" "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
}, },
"funding": [ "funding": [
{ {
@ -1457,27 +1510,27 @@
}, },
{ {
"name": "symfony/polyfill-php72", "name": "symfony/polyfill-php72",
"version": "v1.24.0", "version": "v1.26.0",
"version_normalized": "1.24.0.0", "version_normalized": "1.26.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php72.git", "url": "https://github.com/symfony/polyfill-php72.git",
"reference": "9a142215a36a3888e30d0a9eeea9766764e96976" "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2",
"reference": "9a142215a36a3888e30d0a9eeea9766764e96976", "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.1" "php": ">=7.1"
}, },
"time": "2021-05-27T09:17:38+00:00", "time": "2022-05-24T11:49:31+00:00",
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "1.23-dev" "dev-main": "1.26-dev"
}, },
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
@ -1516,7 +1569,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php72/tree/v1.24.0" "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0"
}, },
"funding": [ "funding": [
{ {

View File

@ -5,7 +5,7 @@
'type' => 'project', 'type' => 'project',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),
'reference' => '7ef2de91b37a2ff1ee48d8f7e529d3b34f2b754d', 'reference' => 'bdcf00e53774eee9bdd53d6213a3df5e7fd37b05',
'name' => '1ka/1ka.si', 'name' => '1ka/1ka.si',
'dev' => false, 'dev' => false,
), ),
@ -16,16 +16,16 @@
'type' => 'project', 'type' => 'project',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),
'reference' => '7ef2de91b37a2ff1ee48d8f7e529d3b34f2b754d', 'reference' => 'bdcf00e53774eee9bdd53d6213a3df5e7fd37b05',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'composer/ca-bundle' => array( 'composer/ca-bundle' => array(
'pretty_version' => '1.3.1', 'pretty_version' => '1.3.2',
'version' => '1.3.1.0', 'version' => '1.3.2.0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/./ca-bundle', 'install_path' => __DIR__ . '/./ca-bundle',
'aliases' => array(), 'aliases' => array(),
'reference' => '4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b', 'reference' => 'fd5dd441932a7e10ca6e5b490e272d34c8430640',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'fgrosse/phpasn1' => array( 'fgrosse/phpasn1' => array(
@ -47,12 +47,12 @@
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'guzzlehttp/guzzle' => array( 'guzzlehttp/guzzle' => array(
'pretty_version' => '6.5.5', 'pretty_version' => '6.5.8',
'version' => '6.5.5.0', 'version' => '6.5.8.0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../guzzlehttp/guzzle', 'install_path' => __DIR__ . '/../guzzlehttp/guzzle',
'aliases' => array(), 'aliases' => array(),
'reference' => '9d4290de1cfd701f38099ef7e183b64b4b7b0c5e', 'reference' => 'a52f0440530b54fa079ce76e8c5d196a42cad981',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'guzzlehttp/promises' => array( 'guzzlehttp/promises' => array(
@ -65,12 +65,12 @@
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'guzzlehttp/psr7' => array( 'guzzlehttp/psr7' => array(
'pretty_version' => '1.8.3', 'pretty_version' => '1.9.0',
'version' => '1.8.3.0', 'version' => '1.9.0.0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../guzzlehttp/psr7', 'install_path' => __DIR__ . '/../guzzlehttp/psr7',
'aliases' => array(), 'aliases' => array(),
'reference' => '1afdd860a2566ed3c2b0b4a3de6e23434a79ec85', 'reference' => 'e98e3e6d4f86621a9b75f623996e6bbdeb4b9318',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'maxmind-db/reader' => array( 'maxmind-db/reader' => array(
@ -83,12 +83,12 @@
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'maxmind/web-service-common' => array( 'maxmind/web-service-common' => array(
'pretty_version' => 'v0.8.1', 'pretty_version' => 'v0.9.0',
'version' => '0.8.1.0', 'version' => '0.9.0.0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../maxmind/web-service-common', 'install_path' => __DIR__ . '/../maxmind/web-service-common',
'aliases' => array(), 'aliases' => array(),
'reference' => '32f274051c543fc865e5a84d3a2c703913641ea8', 'reference' => '4dc5a3e8df38aea4ca3b1096cee3a038094e9b53',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'minishlink/web-push' => array( 'minishlink/web-push' => array(
@ -110,12 +110,12 @@
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'paragonie/sodium_compat' => array( 'paragonie/sodium_compat' => array(
'pretty_version' => 'v1.17.0', 'pretty_version' => 'v1.17.1',
'version' => '1.17.0.0', 'version' => '1.17.1.0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../paragonie/sodium_compat', 'install_path' => __DIR__ . '/../paragonie/sodium_compat',
'aliases' => array(), 'aliases' => array(),
'reference' => 'c59cac21abbcc0df06a3dd18076450ea4797b321', 'reference' => 'ac994053faac18d386328c91c7900f930acadf1e',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'paypal/paypal-checkout-sdk' => array( 'paypal/paypal-checkout-sdk' => array(
@ -137,12 +137,12 @@
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'phpmailer/phpmailer' => array( 'phpmailer/phpmailer' => array(
'pretty_version' => 'v6.5.4', 'pretty_version' => 'v6.6.3',
'version' => '6.5.4.0', 'version' => '6.6.3.0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../phpmailer/phpmailer', 'install_path' => __DIR__ . '/../phpmailer/phpmailer',
'aliases' => array(), 'aliases' => array(),
'reference' => 'c0d9f7dd3c2aa247ca44791e9209233829d82285', 'reference' => '9400f305a898f194caff5521f64e5dfa926626f3',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'psr/http-message' => array( 'psr/http-message' => array(
@ -188,39 +188,39 @@
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'stripe/stripe-php' => array( 'stripe/stripe-php' => array(
'pretty_version' => 'v7.114.0', 'pretty_version' => 'v7.128.0',
'version' => '7.114.0.0', 'version' => '7.128.0.0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../stripe/stripe-php', 'install_path' => __DIR__ . '/../stripe/stripe-php',
'aliases' => array(), 'aliases' => array(),
'reference' => '63be231686c6874befb5b3a47fb8effb4c30b78b', 'reference' => 'c704949c49b72985c76cc61063aa26fefbd2724e',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'symfony/polyfill-intl-idn' => array( 'symfony/polyfill-intl-idn' => array(
'pretty_version' => 'v1.24.0', 'pretty_version' => 'v1.26.0',
'version' => '1.24.0.0', 'version' => '1.26.0.0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn',
'aliases' => array(), 'aliases' => array(),
'reference' => '749045c69efb97c70d25d7463abba812e91f3a44', 'reference' => '59a8d271f00dd0e4c2e518104cc7963f655a1aa8',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'symfony/polyfill-intl-normalizer' => array( 'symfony/polyfill-intl-normalizer' => array(
'pretty_version' => 'v1.24.0', 'pretty_version' => 'v1.26.0',
'version' => '1.24.0.0', 'version' => '1.26.0.0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
'aliases' => array(), 'aliases' => array(),
'reference' => '8590a5f561694770bdcd3f9b5c69dde6945028e8', 'reference' => '219aa369ceff116e673852dce47c3a41794c14bd',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'symfony/polyfill-php72' => array( 'symfony/polyfill-php72' => array(
'pretty_version' => 'v1.24.0', 'pretty_version' => 'v1.26.0',
'version' => '1.24.0.0', 'version' => '1.26.0.0',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-php72', 'install_path' => __DIR__ . '/../symfony/polyfill-php72',
'aliases' => array(), 'aliases' => array(),
'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976', 'reference' => 'bf44a9fd41feaac72b074de600314a93e2ae78e2',
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'web-token/jwt-core' => array( 'web-token/jwt-core' => array(

View File

@ -1,5 +1,19 @@
# Change Log # Change Log
## 6.5.8 - 2022-06-20
* Fix change in port should be considered a change in origin
* Fix `CURLOPT_HTTPAUTH` option not cleared on change of origin
## 6.5.7 - 2022-06-09
* Fix failure to strip Authorization header on HTTP downgrade
* Fix failure to strip the Cookie header on change in host or HTTP downgrade
## 6.5.6 - 2022-05-25
* Fix cross-domain cookie leakage
## 6.5.5 - 2020-06-16 ## 6.5.5 - 2020-06-16
* Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678) * Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678)

View File

@ -1,4 +1,12 @@
Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com> The MIT License (MIT)
Copyright (c) 2011 Michael Dowling <mtdowling@gmail.com>
Copyright (c) 2012 Jeremy Lindblom <jeremeamia@gmail.com>
Copyright (c) 2014 Graham Campbell <hello@gjcampbell.co.uk>
Copyright (c) 2015 Márk Sági-Kazár <mark.sagikazar@gmail.com>
Copyright (c) 2015 Tobias Schultze <webmaster@tubo-world.de>
Copyright (c) 2016 Tobias Nyholm <tobias.nyholm@gmail.com>
Copyright (c) 2016 George Mponos <gmponos@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -1,8 +1,9 @@
Guzzle, PHP HTTP client ![Guzzle](.github/logo.png?raw=true)
=======================
# Guzzle, PHP HTTP client
[![Latest Version](https://img.shields.io/github/release/guzzle/guzzle.svg?style=flat-square)](https://github.com/guzzle/guzzle/releases) [![Latest Version](https://img.shields.io/github/release/guzzle/guzzle.svg?style=flat-square)](https://github.com/guzzle/guzzle/releases)
[![Build Status](https://img.shields.io/travis/guzzle/guzzle.svg?style=flat-square)](https://travis-ci.org/guzzle/guzzle) [![Build Status](https://img.shields.io/github/workflow/status/guzzle/guzzle/CI?label=ci%20build&style=flat-square)](https://github.com/guzzle/guzzle/actions?query=workflow%3ACI)
[![Total Downloads](https://img.shields.io/packagist/dt/guzzlehttp/guzzle.svg?style=flat-square)](https://packagist.org/packages/guzzlehttp/guzzle) [![Total Downloads](https://img.shields.io/packagist/dt/guzzlehttp/guzzle.svg?style=flat-square)](https://packagist.org/packages/guzzlehttp/guzzle)
Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and
@ -38,15 +39,18 @@ $promise->wait();
## Help and docs ## Help and docs
- [Documentation](http://guzzlephp.org/) We use GitHub issues only to discuss bugs and new features. For support please refer to:
- [Stack Overflow](http://stackoverflow.com/questions/tagged/guzzle)
- [Documentation](https://docs.guzzlephp.org)
- [Stack Overflow](https://stackoverflow.com/questions/tagged/guzzle)
- [#guzzle](https://app.slack.com/client/T0D2S9JCT/CE6UAAKL4) channel on [PHP-HTTP Slack](https://slack.httplug.io/)
- [Gitter](https://gitter.im/guzzle/guzzle) - [Gitter](https://gitter.im/guzzle/guzzle)
## Installing Guzzle ## Installing Guzzle
The recommended way to install Guzzle is through The recommended way to install Guzzle is through
[Composer](http://getcomposer.org). [Composer](https://getcomposer.org/).
```bash ```bash
# Install Composer # Install Composer
@ -74,17 +78,20 @@ composer update
## Version Guidance ## Version Guidance
| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | | Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version |
|---------|------------|---------------------|--------------|---------------------|---------------------|-------|-------------| |---------|----------------|---------------------|--------------|---------------------|---------------------|-------|--------------|
| 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >= 5.3.3 | | 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >=5.3.3,<7.0 |
| 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >= 5.4 | | 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >=5.4,<7.0 |
| 5.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >= 5.4 | | 5.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >=5.4,<7.4 |
| 6.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >= 5.5 | | 6.x | Security fixes | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >=5.5,<8.0 |
| 7.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes | >=7.2.5,<8.2 |
[guzzle-3-repo]: https://github.com/guzzle/guzzle3 [guzzle-3-repo]: https://github.com/guzzle/guzzle3
[guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x [guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x
[guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3 [guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3
[guzzle-6-repo]: https://github.com/guzzle/guzzle [guzzle-6-repo]: https://github.com/guzzle/guzzle/tree/6.5
[guzzle-3-docs]: http://guzzle3.readthedocs.org [guzzle-7-repo]: https://github.com/guzzle/guzzle
[guzzle-5-docs]: http://guzzle.readthedocs.org/en/5.3/ [guzzle-3-docs]: https://guzzle3.readthedocs.io/
[guzzle-6-docs]: http://guzzle.readthedocs.org/en/latest/ [guzzle-5-docs]: https://docs.guzzlephp.org/en/5.3/
[guzzle-6-docs]: https://docs.guzzlephp.org/en/6.5/
[guzzle-7-docs]: https://docs.guzzlephp.org/en/latest/

View File

@ -14,18 +14,48 @@
"homepage": "http://guzzlephp.org/", "homepage": "http://guzzlephp.org/",
"license": "MIT", "license": "MIT",
"authors": [ "authors": [
{
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
},
{ {
"name": "Michael Dowling", "name": "Michael Dowling",
"email": "mtdowling@gmail.com", "email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling" "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"
} }
], ],
"require": { "require": {
"php": ">=5.5", "php": ">=5.5",
"ext-json": "*", "ext-json": "*",
"symfony/polyfill-intl-idn": "^1.17.0", "symfony/polyfill-intl-idn": "^1.17",
"guzzlehttp/promises": "^1.0", "guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1" "guzzlehttp/psr7": "^1.9"
}, },
"require-dev": { "require-dev": {
"ext-curl": "*", "ext-curl": "*",
@ -36,7 +66,10 @@
"psr/log": "Required for using the Log middleware" "psr/log": "Required for using the Log middleware"
}, },
"config": { "config": {
"sort-packages": true "sort-packages": true,
"allow-plugins": {
"bamarni/composer-bin-plugin": true
}
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {

View File

@ -240,6 +240,11 @@ class CookieJar implements CookieJarInterface
if (0 !== strpos($sc->getPath(), '/')) { if (0 !== strpos($sc->getPath(), '/')) {
$sc->setPath($this->getCookiePathFromRequest($request)); $sc->setPath($this->getCookiePathFromRequest($request));
} }
if (!$sc->matchesDomain($request->getUri()->getHost())) {
continue;
}
// Note: At this point `$sc->getDomain()` being a public suffix should
// be rejected, but we don't want to pull in the full PSL dependency.
$this->setCookie($sc); $this->setCookie($sc);
} }
} }

View File

@ -333,12 +333,19 @@ class SetCookie
*/ */
public function matchesDomain($domain) public function matchesDomain($domain)
{ {
$cookieDomain = $this->getDomain();
if (null === $cookieDomain) {
return true;
}
// Remove the leading '.' as per spec in RFC 6265. // Remove the leading '.' as per spec in RFC 6265.
// http://tools.ietf.org/html/rfc6265#section-5.2.3 // http://tools.ietf.org/html/rfc6265#section-5.2.3
$cookieDomain = ltrim($this->getDomain(), '.'); $cookieDomain = ltrim(strtolower($cookieDomain), '.');
$domain = strtolower($domain);
// Domain not set or exact match. // Domain not set or exact match.
if (!$cookieDomain || !strcasecmp($domain, $cookieDomain)) { if ('' === $cookieDomain || $domain === $cookieDomain) {
return true; return true;
} }

View File

@ -94,6 +94,14 @@ class RedirectMiddleware
$this->guardMax($request, $options); $this->guardMax($request, $options);
$nextRequest = $this->modifyRequest($request, $options, $response); $nextRequest = $this->modifyRequest($request, $options, $response);
// If authorization is handled by curl, unset it if URI is cross-origin.
if (Psr7\UriComparator::isCrossOrigin($request->getUri(), $nextRequest->getUri()) && defined('\CURLOPT_HTTPAUTH')) {
unset(
$options['curl'][\CURLOPT_HTTPAUTH],
$options['curl'][\CURLOPT_USERPWD]
);
}
if (isset($options['allow_redirects']['on_redirect'])) { if (isset($options['allow_redirects']['on_redirect'])) {
call_user_func( call_user_func(
$options['allow_redirects']['on_redirect'], $options['allow_redirects']['on_redirect'],
@ -141,7 +149,7 @@ class RedirectMiddleware
} }
/** /**
* Check for too many redirects * Check for too many redirects.
* *
* @return void * @return void
* *
@ -190,7 +198,7 @@ class RedirectMiddleware
$modify['body'] = ''; $modify['body'] = '';
} }
$uri = $this->redirectUri($request, $response, $protocols); $uri = self::redirectUri($request, $response, $protocols);
if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) { if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
$idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion']; $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
$uri = Utils::idnUriConvert($uri, $idnOptions); $uri = Utils::idnUriConvert($uri, $idnOptions);
@ -210,16 +218,17 @@ class RedirectMiddleware
$modify['remove_headers'][] = 'Referer'; $modify['remove_headers'][] = 'Referer';
} }
// Remove Authorization header if host is different. // Remove Authorization and Cookie headers if URI is cross-origin.
if ($request->getUri()->getHost() !== $modify['uri']->getHost()) { if (Psr7\UriComparator::isCrossOrigin($request->getUri(), $modify['uri'])) {
$modify['remove_headers'][] = 'Authorization'; $modify['remove_headers'][] = 'Authorization';
$modify['remove_headers'][] = 'Cookie';
} }
return Psr7\modify_request($request, $modify); return Psr7\modify_request($request, $modify);
} }
/** /**
* Set the appropriate URL on the request based on the location header * Set the appropriate URL on the request based on the location header.
* *
* @param RequestInterface $request * @param RequestInterface $request
* @param ResponseInterface $response * @param ResponseInterface $response
@ -227,7 +236,7 @@ class RedirectMiddleware
* *
* @return UriInterface * @return UriInterface
*/ */
private function redirectUri( private static function redirectUri(
RequestInterface $request, RequestInterface $request,
ResponseInterface $response, ResponseInterface $response,
array $protocols array $protocols

View File

@ -3,12 +3,30 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased ## Unreleased
## 1.9.0 - 2022-06-20
### Added
- Added `UriComparator::isCrossOrigin` method
## 1.8.5 - 2022-03-20
### Fixed
- Correct header value validation
## 1.8.4 - 2022-03-20
### Fixed
- Validate header values properly
## 1.8.3 - 2021-10-05 ## 1.8.3 - 2021-10-05
### Fixed ### Fixed

View File

@ -1,6 +1,6 @@
# PSR-7 Message Implementation # PSR-7 Message Implementation
This repository contains a full [PSR-7](http://www.php-fig.org/psr/psr-7/) This repository contains a full [PSR-7](https://www.php-fig.org/psr/psr-7/)
message implementation, several stream decorators, and some helpful message implementation, several stream decorators, and some helpful
functionality like query string parsing. functionality like query string parsing.
@ -659,7 +659,7 @@ manually but instead is used indirectly via `Psr\Http\Message\UriInterface::__to
`public static function fromParts(array $parts): UriInterface` `public static function fromParts(array $parts): UriInterface`
Creates a URI from a hash of [`parse_url`](http://php.net/manual/en/function.parse-url.php) components. Creates a URI from a hash of [`parse_url`](https://www.php.net/manual/en/function.parse-url.php) components.
### `GuzzleHttp\Psr7\Uri::withQueryValue` ### `GuzzleHttp\Psr7\Uri::withQueryValue`
@ -684,6 +684,16 @@ associative array of key => value.
Creates a new URI with a specific query string value removed. Any existing query string values that exactly match the Creates a new URI with a specific query string value removed. Any existing query string values that exactly match the
provided key are removed. provided key are removed.
## Cross-Origin Detection
`GuzzleHttp\Psr7\UriComparator` provides methods to determine if a modified URL should be considered cross-origin.
### `GuzzleHttp\Psr7\UriComparator::isCrossOrigin`
`public static function isCrossOrigin(UriInterface $original, UriInterface $modified): bool`
Determines if a modified URL should be considered cross-origin with respect to an original URL.
## Reference Resolution ## Reference Resolution
`GuzzleHttp\Psr7\UriResolver` provides methods to resolve a URI reference in the context of a base URI according `GuzzleHttp\Psr7\UriResolver` provides methods to resolve a URI reference in the context of a base URI according
@ -809,14 +819,24 @@ This of course assumes they will be resolved against the same base URI. If this
equivalence or difference of relative references does not mean anything. equivalence or difference of relative references does not mean anything.
## Version Guidance
| Version | Status | PHP Version |
|---------|----------------|------------------|
| 1.x | Security fixes | >=5.4,<8.1 |
| 2.x | Latest | ^7.2.5 \|\| ^8.0 |
## Security ## Security
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/psr7/security/policy) for more information. 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/psr7/security/policy) for more information.
## License ## License
Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information. Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information.
## For Enterprise ## For Enterprise
Available as part of the Tidelift Subscription Available as part of the Tidelift Subscription

View File

@ -63,11 +63,14 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.7-dev" "dev-master": "1.9-dev"
} }
}, },
"config": { "config": {
"preferred-install": "dist", "preferred-install": "dist",
"sort-packages": true "sort-packages": true,
"allow-plugins": {
"bamarni/composer-bin-plugin": true
}
} }
} }

View File

@ -157,17 +157,22 @@ trait MessageTrait
} }
} }
/**
* @param mixed $value
*
* @return string[]
*/
private function normalizeHeaderValue($value) private function normalizeHeaderValue($value)
{ {
if (!is_array($value)) { if (!is_array($value)) {
return $this->trimHeaderValues([$value]); return $this->trimAndValidateHeaderValues([$value]);
} }
if (count($value) === 0) { if (count($value) === 0) {
throw new \InvalidArgumentException('Header value can not be an empty array.'); throw new \InvalidArgumentException('Header value can not be an empty array.');
} }
return $this->trimHeaderValues($value); return $this->trimAndValidateHeaderValues($value);
} }
/** /**
@ -178,13 +183,13 @@ trait MessageTrait
* header-field = field-name ":" OWS field-value OWS * header-field = field-name ":" OWS field-value OWS
* OWS = *( SP / HTAB ) * OWS = *( SP / HTAB )
* *
* @param string[] $values Header values * @param mixed[] $values Header values
* *
* @return string[] Trimmed header values * @return string[] Trimmed header values
* *
* @see https://tools.ietf.org/html/rfc7230#section-3.2.4 * @see https://tools.ietf.org/html/rfc7230#section-3.2.4
*/ */
private function trimHeaderValues(array $values) private function trimAndValidateHeaderValues(array $values)
{ {
return array_map(function ($value) { return array_map(function ($value) {
if (!is_scalar($value) && null !== $value) { if (!is_scalar($value) && null !== $value) {
@ -194,10 +199,20 @@ trait MessageTrait
)); ));
} }
return trim((string) $value, " \t"); $trimmed = trim((string) $value, " \t");
$this->assertValue($trimmed);
return $trimmed;
}, array_values($values)); }, array_values($values));
} }
/**
* @see https://tools.ietf.org/html/rfc7230#section-3.2
*
* @param mixed $header
*
* @return void
*/
private function assertHeader($header) private function assertHeader($header)
{ {
if (!is_string($header)) { if (!is_string($header)) {
@ -210,5 +225,46 @@ trait MessageTrait
if ($header === '') { if ($header === '') {
throw new \InvalidArgumentException('Header name can not be empty.'); throw new \InvalidArgumentException('Header name can not be empty.');
} }
if (! preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/', $header)) {
throw new \InvalidArgumentException(
sprintf(
'"%s" is not valid header name',
$header
)
);
}
}
/**
* @param string $value
*
* @return void
*
* @see https://tools.ietf.org/html/rfc7230#section-3.2
*
* field-value = *( field-content / obs-fold )
* field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
* field-vchar = VCHAR / obs-text
* VCHAR = %x21-7E
* obs-text = %x80-FF
* obs-fold = CRLF 1*( SP / HTAB )
*/
private function assertValue($value)
{
// The regular expression intentionally does not support the obs-fold production, because as
// per RFC 7230#3.2.4:
//
// A sender MUST NOT generate a message that includes
// line folding (i.e., that has any field-value that contains a match to
// the obs-fold rule) unless the message is intended for packaging
// within the message/http media type.
//
// Clients must not send a request with line folding and a server sending folded headers is
// likely very rare. Line folding is a fairly obscure feature of HTTP/1.1 and thus not accepting
// folding is not likely to break any legitimate use case.
if (! preg_match('/^[\x20\x09\x21-\x7E\x80-\xFF]*$/', $value)) {
throw new \InvalidArgumentException(sprintf('"%s" is not valid header value', $value));
}
} }
} }

View File

@ -0,0 +1,55 @@
<?php
namespace GuzzleHttp\Psr7;
use Psr\Http\Message\UriInterface;
/**
* Provides methods to determine if a modified URL should be considered cross-origin.
*
* @author Graham Campbell
*/
final class UriComparator
{
/**
* Determines if a modified URL should be considered cross-origin with
* respect to an original URL.
*
* @return bool
*/
public static function isCrossOrigin(UriInterface $original, UriInterface $modified)
{
if (\strcasecmp($original->getHost(), $modified->getHost()) !== 0) {
return true;
}
if ($original->getScheme() !== $modified->getScheme()) {
return true;
}
if (self::computePort($original) !== self::computePort($modified)) {
return true;
}
return false;
}
/**
* @return int
*/
private static function computePort(UriInterface $uri)
{
$port = $uri->getPort();
if (null !== $port) {
return $port;
}
return 'https' === $uri->getScheme() ? 443 : 80;
}
private function __construct()
{
// cannot be instantiated
}
}

View File

@ -1,6 +1,26 @@
CHANGELOG CHANGELOG
========= =========
0.9.0 (2022-03-28)
------------------
* Improved internal type hint usage.
0.8.1 (2020-11-02)
------------------
* We now correctly handle responses without a `Content-Type` header. In 0.8.0,
such responses could lead to a type error. In particular, this affected the
minFraud Report Transaction endpoint, which returns a response with no
content. Reported by Dmitry Malashko. GitHub #99 on
`maxmind/minfraud-api-php`.
0.8.0 (2020-10-01)
------------------
* PHP 7.2 or greater is now required.
* Added additional type hints.
0.7.0 (2020-05-06) 0.7.0 (2020-05-06)
------------------ ------------------

View File

@ -5,7 +5,7 @@ shared code between MaxMind's various web service client APIs.
## Requirements ## ## Requirements ##
The library requires PHP 5.6 or greater. The library requires PHP 7.2 or greater.
There are several other dependencies as defined in the `composer.json` file. There are several other dependencies as defined in the `composer.json` file.

View File

@ -12,15 +12,16 @@
} }
], ],
"require": { "require": {
"php": ">=5.6", "php": ">=7.2",
"composer/ca-bundle": "^1.0.3", "composer/ca-bundle": "^1.0.3",
"ext-curl": "*", "ext-curl": "*",
"ext-json": "*" "ext-json": "*"
}, },
"require-dev": { "require-dev": {
"friendsofphp/php-cs-fixer": "2.*", "friendsofphp/php-cs-fixer": "3.*",
"phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0", "phpunit/phpunit": "^8.0 || ^9.0",
"squizlabs/php_codesniffer": "3.*" "squizlabs/php_codesniffer": "3.*",
"phpstan/phpstan": "*"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {

View File

@ -51,10 +51,6 @@ fi
git push git push
message="$version gh release create --target "$(git branch --show-current)" -t "$version" -n "$notes" "$tag"
$notes"
hub release create -m "$message" "$tag"
git push --tags git push --tags

View File

@ -0,0 +1,7 @@
parameters:
level: 6
paths:
- src
- tests
checkMissingIterableValueType: false

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\Exception; namespace MaxMind\Exception;
/** /**

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\Exception; namespace MaxMind\Exception;
/** /**
@ -9,6 +11,8 @@ class HttpException extends WebServiceException
{ {
/** /**
* The URI queried. * The URI queried.
*
* @var string
*/ */
private $uri; private $uri;
@ -19,21 +23,21 @@ class HttpException extends WebServiceException
* @param \Exception $previous the previous exception, if any * @param \Exception $previous the previous exception, if any
*/ */
public function __construct( public function __construct(
$message, string $message,
$httpStatus, int $httpStatus,
$uri, string $uri,
\Exception $previous = null \Exception $previous = null
) { ) {
$this->uri = $uri; $this->uri = $uri;
parent::__construct($message, $httpStatus, $previous); parent::__construct($message, $httpStatus, $previous);
} }
public function getUri() public function getUri(): string
{ {
return $this->uri; return $this->uri;
} }
public function getStatusCode() public function getStatusCode(): int
{ {
return $this->getCode(); return $this->getCode();
} }

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\Exception; namespace MaxMind\Exception;
/** /**

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\Exception; namespace MaxMind\Exception;
/** /**

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\Exception; namespace MaxMind\Exception;
/** /**
@ -9,28 +11,30 @@ class InvalidRequestException extends HttpException
{ {
/** /**
* The code returned by the MaxMind web service. * The code returned by the MaxMind web service.
*
* @var string
*/ */
private $error; private $error;
/** /**
* @param string $message the exception message * @param string $message the exception message
* @param int $error the error code returned by the MaxMind web service * @param string $error the error code returned by the MaxMind web service
* @param int $httpStatus the HTTP status code of the response * @param int $httpStatus the HTTP status code of the response
* @param string $uri the URI queries * @param string $uri the URI queries
* @param \Exception $previous the previous exception, if any * @param \Exception $previous the previous exception, if any
*/ */
public function __construct( public function __construct(
$message, string $message,
$error, string $error,
$httpStatus, int $httpStatus,
$uri, string $uri,
\Exception $previous = null \Exception $previous = null
) { ) {
$this->error = $error; $this->error = $error;
parent::__construct($message, $httpStatus, $uri, $previous); parent::__construct($message, $httpStatus, $uri, $previous);
} }
public function getErrorCode() public function getErrorCode(): string
{ {
return $this->error; return $this->error;
} }

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\Exception; namespace MaxMind\Exception;
class IpAddressNotFoundException extends InvalidRequestException class IpAddressNotFoundException extends InvalidRequestException

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\Exception; namespace MaxMind\Exception;
/** /**

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\Exception; namespace MaxMind\Exception;
/** /**

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\WebService; namespace MaxMind\WebService;
use Composer\CaBundle\CaBundle; use Composer\CaBundle\CaBundle;
@ -22,16 +24,56 @@ use MaxMind\WebService\Http\RequestFactory;
*/ */
class Client class Client
{ {
const VERSION = '0.2.0'; public const VERSION = '0.2.0';
/**
* @var string|null
*/
private $caBundle; private $caBundle;
/**
* @var float|null
*/
private $connectTimeout; private $connectTimeout;
/**
* @var string
*/
private $host = 'api.maxmind.com'; private $host = 'api.maxmind.com';
/**
* @var bool
*/
private $useHttps = true;
/**
* @var RequestFactory
*/
private $httpRequestFactory; private $httpRequestFactory;
/**
* @var string
*/
private $licenseKey; private $licenseKey;
/**
* @var string|null
*/
private $proxy; private $proxy;
/**
* @var float|null
*/
private $timeout; private $timeout;
/**
* @var string
*/
private $userAgentPrefix; private $userAgentPrefix;
/**
* @var int
*/
private $accountId; private $accountId;
/** /**
@ -39,6 +81,7 @@ class Client
* @param string $licenseKey your MaxMind license key * @param string $licenseKey your MaxMind license key
* @param array $options an array of options. Possible keys: * @param array $options an array of options. Possible keys:
* * `host` - The host to use when connecting to the web service. * * `host` - The host to use when connecting to the web service.
* * `useHttps` - A boolean flag for sending the request via https.(True by default)
* * `userAgent` - The prefix of the User-Agent to use in the request. * * `userAgent` - The prefix of the User-Agent to use in the request.
* * `caBundle` - The bundle of CA root certificates to use in the request. * * `caBundle` - The bundle of CA root certificates to use in the request.
* * `connectTimeout` - The connect timeout to use for the request. * * `connectTimeout` - The connect timeout to use for the request.
@ -47,9 +90,9 @@ class Client
* username, and password, e.g., `http://username:password@127.0.0.1:10`. * username, and password, e.g., `http://username:password@127.0.0.1:10`.
*/ */
public function __construct( public function __construct(
$accountId, int $accountId,
$licenseKey, string $licenseKey,
$options = [] array $options = []
) { ) {
$this->accountId = $accountId; $this->accountId = $accountId;
$this->licenseKey = $licenseKey; $this->licenseKey = $licenseKey;
@ -61,6 +104,9 @@ class Client
if (isset($options['host'])) { if (isset($options['host'])) {
$this->host = $options['host']; $this->host = $options['host'];
} }
if (isset($options['useHttps'])) {
$this->useHttps = $options['useHttps'];
}
if (isset($options['userAgent'])) { if (isset($options['userAgent'])) {
$this->userAgentPrefix = $options['userAgent'] . ' '; $this->userAgentPrefix = $options['userAgent'] . ' ';
} }
@ -96,9 +142,9 @@ class Client
* @throws WebServiceException when some other error occurs. This also * @throws WebServiceException when some other error occurs. This also
* serves as the base class for the above exceptions. * 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); $requestBody = json_encode($input);
if ($requestBody === false) { if ($requestBody === false) {
@ -113,7 +159,7 @@ class Client
['Content-Type: application/json'] ['Content-Type: application/json']
); );
list($statusCode, $contentType, $responseBody) = $request->post($requestBody); [$statusCode, $contentType, $responseBody] = $request->post($requestBody);
return $this->handleResponse( return $this->handleResponse(
$statusCode, $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( return $this->handleResponse(
$statusCode, $statusCode,
@ -139,15 +187,15 @@ class Client
); );
} }
private function userAgent() private function userAgent(): string
{ {
$curlVersion = curl_version(); $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']; ' curl/' . $curlVersion['version'];
} }
private function createRequest($path, $headers = []) private function createRequest(string $path, array $headers = []): Http\Request
{ {
array_push( array_push(
$headers, $headers,
@ -170,11 +218,11 @@ class Client
} }
/** /**
* @param int $statusCode the HTTP status code of the response * @param int $statusCode the HTTP status code of the response
* @param string $contentType the Content-Type of the response * @param string|null $contentType the Content-Type of the response
* @param string $responseBody the response body * @param string|null $responseBody the response body
* @param string $service the name of the service * @param string $service the name of the service
* @param string $path the path used in the request * @param string $path the path used in the request
* *
* @throws AuthenticationException when there is an issue authenticating the * @throws AuthenticationException when there is an issue authenticating the
* request * request
@ -185,15 +233,15 @@ class Client
* @throws WebServiceException when some other error occurs. This also * @throws WebServiceException when some other error occurs. This also
* serves as the base class for the above exceptions * 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( private function handleResponse(
$statusCode, int $statusCode,
$contentType, ?string $contentType,
$responseBody, ?string $responseBody,
$service, string $service,
$path string $path
) { ): ?array {
if ($statusCode >= 400 && $statusCode <= 499) { if ($statusCode >= 400 && $statusCode <= 499) {
$this->handle4xx($statusCode, $contentType, $responseBody, $service, $path); $this->handle4xx($statusCode, $contentType, $responseBody, $service, $path);
} elseif ($statusCode >= 500) { } elseif ($statusCode >= 500) {
@ -208,20 +256,26 @@ class Client
/** /**
* @return string describing the JSON error * @return string describing the JSON error
*/ */
private function jsonErrorDescription() private function jsonErrorDescription(): string
{ {
$errno = json_last_error(); $errno = json_last_error();
switch ($errno) { switch ($errno) {
case JSON_ERROR_DEPTH: case \JSON_ERROR_DEPTH:
return 'The maximum stack depth has been exceeded.'; return 'The maximum stack depth has been exceeded.';
case JSON_ERROR_STATE_MISMATCH:
case \JSON_ERROR_STATE_MISMATCH:
return 'Invalid or malformed JSON.'; return 'Invalid or malformed JSON.';
case JSON_ERROR_CTRL_CHAR:
case \JSON_ERROR_CTRL_CHAR:
return 'Control character error.'; return 'Control character error.';
case JSON_ERROR_SYNTAX:
case \JSON_ERROR_SYNTAX:
return 'Syntax error.'; return 'Syntax error.';
case JSON_ERROR_UTF8:
case \JSON_ERROR_UTF8:
return 'Malformed UTF-8 characters.'; return 'Malformed UTF-8 characters.';
default: default:
return "Other JSON error ($errno)."; return "Other JSON error ($errno).";
} }
@ -232,17 +286,17 @@ class Client
* *
* @return string the constructed URL * @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 int $statusCode the HTTP status code
* @param string $contentType the response content-type * @param string|null $contentType the response content-type
* @param string $body the response body * @param string|null $body the response body
* @param string $service the service name * @param string $service the service name
* @param string $path the path used in the request * @param string $path the path used in the request
* *
* @throws AuthenticationException * @throws AuthenticationException
* @throws HttpException * @throws HttpException
@ -250,20 +304,20 @@ class Client
* @throws InvalidRequestException * @throws InvalidRequestException
*/ */
private function handle4xx( private function handle4xx(
$statusCode, int $statusCode,
$contentType, ?string $contentType,
$body, ?string $body,
$service, string $service,
$path string $path
) { ): void {
if (\strlen($body) === 0) { if ($body === null || $body === '') {
throw new HttpException( throw new HttpException(
"Received a $statusCode error for $service with no body", "Received a $statusCode error for $service with no body",
$statusCode, $statusCode,
$this->urlFor($path) $this->urlFor($path)
); );
} }
if (!strstr($contentType, 'json')) { if ($contentType === null || !strstr($contentType, 'json')) {
throw new HttpException( throw new HttpException(
"Received a $statusCode error for $service with " . "Received a $statusCode error for $service with " .
'the following body: ' . $body, 'the following body: ' . $body,
@ -311,11 +365,11 @@ class Client
* @throws InsufficientFundsException * @throws InsufficientFundsException
*/ */
private function handleWebServiceError( private function handleWebServiceError(
$message, string $message,
$code, string $code,
$statusCode, int $statusCode,
$path string $path
) { ): void {
switch ($code) { switch ($code) {
case 'IP_ADDRESS_NOT_FOUND': case 'IP_ADDRESS_NOT_FOUND':
case 'IP_ADDRESS_RESERVED': case 'IP_ADDRESS_RESERVED':
@ -325,6 +379,7 @@ class Client
$statusCode, $statusCode,
$this->urlFor($path) $this->urlFor($path)
); );
case 'ACCOUNT_ID_REQUIRED': case 'ACCOUNT_ID_REQUIRED':
case 'ACCOUNT_ID_UNKNOWN': case 'ACCOUNT_ID_UNKNOWN':
case 'AUTHORIZATION_INVALID': case 'AUTHORIZATION_INVALID':
@ -337,6 +392,7 @@ class Client
$statusCode, $statusCode,
$this->urlFor($path) $this->urlFor($path)
); );
case 'OUT_OF_QUERIES': case 'OUT_OF_QUERIES':
case 'INSUFFICIENT_FUNDS': case 'INSUFFICIENT_FUNDS':
throw new InsufficientFundsException( throw new InsufficientFundsException(
@ -345,6 +401,7 @@ class Client
$statusCode, $statusCode,
$this->urlFor($path) $this->urlFor($path)
); );
case 'PERMISSION_REQUIRED': case 'PERMISSION_REQUIRED':
throw new PermissionRequiredException( throw new PermissionRequiredException(
$message, $message,
@ -352,6 +409,7 @@ class Client
$statusCode, $statusCode,
$this->urlFor($path) $this->urlFor($path)
); );
default: default:
throw new InvalidRequestException( throw new InvalidRequestException(
$message, $message,
@ -369,7 +427,7 @@ class Client
* *
* @throws HttpException * @throws HttpException
*/ */
private function handle5xx($statusCode, $service, $path) private function handle5xx(int $statusCode, string $service, string $path): void
{ {
throw new HttpException( throw new HttpException(
"Received a server error ($statusCode) for $service", "Received a server error ($statusCode) for $service",
@ -385,7 +443,7 @@ class Client
* *
* @throws HttpException * @throws HttpException
*/ */
private function handleUnexpectedStatus($statusCode, $service, $path) private function handleUnexpectedStatus(int $statusCode, string $service, string $path): void
{ {
throw new HttpException( throw new HttpException(
'Received an unexpected HTTP status ' . 'Received an unexpected HTTP status ' .
@ -396,22 +454,22 @@ class Client
} }
/** /**
* @param int $statusCode the HTTP status code * @param int $statusCode the HTTP status code
* @param string $body the successful request body * @param string|null $body the successful request body
* @param string $service the service name * @param string $service the service name
* *
* @throws WebServiceException if a response body is included but not * @throws WebServiceException if a response body is included but not
* expected, or is not expected but not * expected, or is not expected but not
* included, or is expected and included * included, or is expected and included
* but cannot be decoded as JSON * 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 // A 204 should have no response body
if ($statusCode === 204) { if ($statusCode === 204) {
if (\strlen($body) !== 0) { if ($body !== null && $body !== '') {
throw new WebServiceException( throw new WebServiceException(
"Received a 204 response for $service along with an " . "Received a 204 response for $service along with an " .
"unexpected HTTP body: $body" "unexpected HTTP body: $body"
@ -422,7 +480,7 @@ class Client
} }
// A 200 should have a valid JSON body // A 200 should have a valid JSON body
if (\strlen($body) === 0) { if ($body === null || $body === '') {
throw new WebServiceException( throw new WebServiceException(
"Received a 200 response for $service but did not " . "Received a 200 response for $service but did not " .
'receive a HTTP body.' 'receive a HTTP body.'
@ -441,7 +499,7 @@ class Client
return $decodedContent; return $decodedContent;
} }
private function getCaBundle() private function getCaBundle(): ?string
{ {
$curlVersion = curl_version(); $curlVersion = curl_version();

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\WebService\Http; namespace MaxMind\WebService\Http;
use MaxMind\Exception\HttpException; use MaxMind\Exception\HttpException;
@ -12,7 +14,7 @@ use MaxMind\Exception\HttpException;
class CurlRequest implements Request class CurlRequest implements Request
{ {
/** /**
* @var resource * @var \CurlHandle
*/ */
private $ch; private $ch;
@ -26,11 +28,7 @@ class CurlRequest implements Request
*/ */
private $options; private $options;
/** public function __construct(string $url, array $options)
* @param string $url
* @param array $options
*/
public function __construct($url, $options)
{ {
$this->url = $url; $this->url = $url;
$this->options = $options; $this->options = $options;
@ -38,69 +36,65 @@ class CurlRequest implements Request
} }
/** /**
* @param string $body
*
* @throws HttpException * @throws HttpException
*
* @return array
*/ */
public function post($body) public function post(string $body): array
{ {
$curl = $this->createCurl(); $curl = $this->createCurl();
curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, \CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body); curl_setopt($curl, \CURLOPT_POSTFIELDS, $body);
return $this->execute($curl); return $this->execute($curl);
} }
public function get() public function get(): array
{ {
$curl = $this->createCurl(); $curl = $this->createCurl();
curl_setopt($curl, CURLOPT_HTTPGET, true); curl_setopt($curl, \CURLOPT_HTTPGET, true);
return $this->execute($curl); return $this->execute($curl);
} }
/** /**
* @return resource * @return \CurlHandle
*/ */
private function createCurl() private function createCurl()
{ {
curl_reset($this->ch); curl_reset($this->ch);
$opts = []; $opts = [];
$opts[CURLOPT_URL] = $this->url; $opts[\CURLOPT_URL] = $this->url;
if (!empty($this->options['caBundle'])) { if (!empty($this->options['caBundle'])) {
$opts[CURLOPT_CAINFO] = $this->options['caBundle']; $opts[\CURLOPT_CAINFO] = $this->options['caBundle'];
} }
$opts[CURLOPT_ENCODING] = ''; $opts[\CURLOPT_ENCODING] = '';
$opts[CURLOPT_SSL_VERIFYHOST] = 2; $opts[\CURLOPT_SSL_VERIFYHOST] = 2;
$opts[CURLOPT_FOLLOWLOCATION] = false; $opts[\CURLOPT_FOLLOWLOCATION] = false;
$opts[CURLOPT_SSL_VERIFYPEER] = true; $opts[\CURLOPT_SSL_VERIFYPEER] = true;
$opts[CURLOPT_RETURNTRANSFER] = true; $opts[\CURLOPT_RETURNTRANSFER] = true;
$opts[CURLOPT_HTTPHEADER] = $this->options['headers']; $opts[\CURLOPT_HTTPHEADER] = $this->options['headers'];
$opts[CURLOPT_USERAGENT] = $this->options['userAgent']; $opts[\CURLOPT_USERAGENT] = $this->options['userAgent'];
$opts[CURLOPT_PROXY] = $this->options['proxy']; $opts[\CURLOPT_PROXY] = $this->options['proxy'];
// The defined()s are here as the *_MS opts are not available on older // The defined()s are here as the *_MS opts are not available on older
// cURL versions // cURL versions
$connectTimeout = $this->options['connectTimeout']; $connectTimeout = $this->options['connectTimeout'];
if (\defined('CURLOPT_CONNECTTIMEOUT_MS')) { if (\defined('CURLOPT_CONNECTTIMEOUT_MS')) {
$opts[CURLOPT_CONNECTTIMEOUT_MS] = ceil($connectTimeout * 1000); $opts[\CURLOPT_CONNECTTIMEOUT_MS] = ceil($connectTimeout * 1000);
} else { } else {
$opts[CURLOPT_CONNECTTIMEOUT] = ceil($connectTimeout); $opts[\CURLOPT_CONNECTTIMEOUT] = ceil($connectTimeout);
} }
$timeout = $this->options['timeout']; $timeout = $this->options['timeout'];
if (\defined('CURLOPT_TIMEOUT_MS')) { if (\defined('CURLOPT_TIMEOUT_MS')) {
$opts[CURLOPT_TIMEOUT_MS] = ceil($timeout * 1000); $opts[\CURLOPT_TIMEOUT_MS] = ceil($timeout * 1000);
} else { } else {
$opts[CURLOPT_TIMEOUT] = ceil($timeout); $opts[\CURLOPT_TIMEOUT] = ceil($timeout);
} }
curl_setopt_array($this->ch, $opts); curl_setopt_array($this->ch, $opts);
@ -109,13 +103,11 @@ class CurlRequest implements Request
} }
/** /**
* @param resource $curl * @param \CurlHandle $curl
* *
* @throws HttpException * @throws HttpException
*
* @return array
*/ */
private function execute($curl) private function execute($curl): array
{ {
$body = curl_exec($curl); $body = curl_exec($curl);
if ($errno = curl_errno($curl)) { if ($errno = curl_errno($curl)) {
@ -128,9 +120,17 @@ class CurlRequest implements Request
); );
} }
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); $statusCode = curl_getinfo($curl, \CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($curl, CURLINFO_CONTENT_TYPE); $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,
];
} }
} }

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\WebService\Http; namespace MaxMind\WebService\Http;
/** /**
@ -9,21 +11,9 @@ namespace MaxMind\WebService\Http;
*/ */
interface Request interface Request
{ {
/** public function __construct(string $url, array $options);
* @param string $url
* @param array $options
*/
public function __construct($url, $options);
/** public function post(string $body): array;
* @param string $body
*
* @return mixed
*/
public function post($body);
/** public function get(): array;
* @return mixed
*/
public function get();
} }

View File

@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace MaxMind\WebService\Http; namespace MaxMind\WebService\Http;
/** /**
@ -14,7 +16,7 @@ class RequestFactory
* done the connection is kept alive, SSL resumption can be used * done the connection is kept alive, SSL resumption can be used
* etcetera. * etcetera.
* *
* @var resource * @var \CurlHandle|null
*/ */
private $ch; private $ch;
@ -25,6 +27,9 @@ class RequestFactory
} }
} }
/**
* @return \CurlHandle
*/
private function getCurlHandle() private function getCurlHandle()
{ {
if (empty($this->ch)) { if (empty($this->ch)) {
@ -34,13 +39,7 @@ class RequestFactory
return $this->ch; return $this->ch;
} }
/** public function request(string $url, array $options): Request
* @param string $url
* @param array $options
*
* @return Request
*/
public function request($url, $options)
{ {
$options['curlHandle'] = $this->getCurlHandle(); $options['curlHandle'] = $this->getCurlHandle();

View File

@ -13,7 +13,7 @@ jobs:
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0'] php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0']
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
@ -27,7 +27,7 @@ jobs:
run: composer self-update --1 run: composer self-update --1
- name: Install Composer dependencies - name: Install Composer dependencies
uses: "ramsey/composer-install@v1" uses: "ramsey/composer-install@v2"
- name: PHPUnit tests - name: PHPUnit tests
run: vendor/bin/phpunit run: vendor/bin/phpunit
@ -44,7 +44,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
@ -56,11 +56,11 @@ jobs:
- name: Install Composer dependencies (PHP < 8.1) - name: Install Composer dependencies (PHP < 8.1)
if: ${{ matrix.php-versions != '8.1' }} if: ${{ matrix.php-versions != '8.1' }}
uses: "ramsey/composer-install@v1" uses: "ramsey/composer-install@v2"
- name: Install Composer dependencies - ignore-platform-reqs (PHP 8.1) - name: Install Composer dependencies - ignore-platform-reqs (PHP 8.1)
if: ${{ matrix.php-versions == '8.1' }} if: ${{ matrix.php-versions == '8.1' }}
uses: "ramsey/composer-install@v1" uses: "ramsey/composer-install@v2"
with: with:
composer-options: --ignore-platform-reqs composer-options: --ignore-platform-reqs

View File

@ -12,7 +12,7 @@ jobs:
php-versions: ['7.4'] php-versions: ['7.4']
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
@ -22,7 +22,7 @@ jobs:
coverage: none coverage: none
- name: Install Composer dependencies - name: Install Composer dependencies
uses: "ramsey/composer-install@v1" uses: "ramsey/composer-install@v2"
with: with:
composer-options: --no-dev composer-options: --no-dev

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" backupGlobals="true" backupStaticAttributes="false" bootstrap="autoload-phpunit.php" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnError="false" stopOnFailure="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" backupGlobals="true" backupStaticAttributes="false" bootstrap="autoload-phpunit.php" colors="true" convertDeprecationsToExceptions="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnError="false" stopOnFailure="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
<coverage processUncoveredFiles="true"> <coverage processUncoveredFiles="true">
<include> <include>
<directory suffix=".php">./src</directory> <directory suffix=".php">./src</directory>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<psalm <psalm
useDocblockTypes="true" useDocblockTypes="true"
totallyTyped="true"
> >
<projectFiles> <projectFiles>
<directory name="src" /> <directory name="src" />

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<psalm <psalm
useDocblockTypes="true" useDocblockTypes="true"
totallyTyped="true"
> >
<projectFiles> <projectFiles>
<directory name="src" /> <directory name="src" />

View File

@ -3533,9 +3533,13 @@ class ParagonIE_Sodium_Compat
); );
} }
} }
/** @var positive-int $numBytes */
if (self::use_fallback('randombytes_buf')) { if (self::use_fallback('randombytes_buf')) {
return (string) call_user_func('\\Sodium\\randombytes_buf', $numBytes); return (string) call_user_func('\\Sodium\\randombytes_buf', $numBytes);
} }
if ($numBytes < 0) {
throw new SodiumException("Number of bytes must be a positive integer");
}
return random_bytes($numBytes); return random_bytes($numBytes);
} }

View File

@ -50,6 +50,9 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
*/ */
public static function new64($high, $low) public static function new64($high, $low)
{ {
if (PHP_INT_SIZE === 4) {
throw new SodiumException("Error, use 32-bit");
}
$i64 = new SplFixedArray(2); $i64 = new SplFixedArray(2);
$i64[0] = $high & 0xffffffff; $i64[0] = $high & 0xffffffff;
$i64[1] = $low & 0xffffffff; $i64[1] = $low & 0xffffffff;
@ -86,6 +89,9 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
*/ */
protected static function add64($x, $y) protected static function add64($x, $y)
{ {
if (PHP_INT_SIZE === 4) {
throw new SodiumException("Error, use 32-bit");
}
$l = ($x[1] + $y[1]) & 0xffffffff; $l = ($x[1] + $y[1]) & 0xffffffff;
return self::new64( return self::new64(
(int) ($x[0] + $y[0] + ( (int) ($x[0] + $y[0] + (
@ -119,6 +125,9 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
*/ */
protected static function xor64(SplFixedArray $x, SplFixedArray $y) protected static function xor64(SplFixedArray $x, SplFixedArray $y)
{ {
if (PHP_INT_SIZE === 4) {
throw new SodiumException("Error, use 32-bit");
}
if (!is_numeric($x[0])) { if (!is_numeric($x[0])) {
throw new SodiumException('x[0] is not an integer'); throw new SodiumException('x[0] is not an integer');
} }
@ -147,6 +156,9 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
*/ */
public static function rotr64($x, $c) public static function rotr64($x, $c)
{ {
if (PHP_INT_SIZE === 4) {
throw new SodiumException("Error, use 32-bit");
}
if ($c >= 64) { if ($c >= 64) {
$c %= 64; $c %= 64;
} }
@ -164,8 +176,8 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
$l0 = 0; $l0 = 0;
$c = 64 - $c; $c = 64 - $c;
/** @var int $c */
if ($c < 32) { if ($c < 32) {
/** @var int $h0 */
$h0 = ((int) ($x[0]) << $c) | ( $h0 = ((int) ($x[0]) << $c) | (
( (
(int) ($x[1]) & ((1 << $c) - 1) (int) ($x[1]) & ((1 << $c) - 1)
@ -173,10 +185,8 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
(32 - $c) (32 - $c)
) >> (32 - $c) ) >> (32 - $c)
); );
/** @var int $l0 */
$l0 = (int) ($x[1]) << $c; $l0 = (int) ($x[1]) << $c;
} else { } else {
/** @var int $h0 */
$h0 = (int) ($x[1]) << ($c - 32); $h0 = (int) ($x[1]) << ($c - 32);
} }
@ -184,12 +194,9 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
$c1 = 64 - $c; $c1 = 64 - $c;
if ($c1 < 32) { if ($c1 < 32) {
/** @var int $h1 */
$h1 = (int) ($x[0]) >> $c1; $h1 = (int) ($x[0]) >> $c1;
/** @var int $l1 */
$l1 = ((int) ($x[1]) >> $c1) | ((int) ($x[0]) & ((1 << $c1) - 1)) << (32 - $c1); $l1 = ((int) ($x[1]) >> $c1) | ((int) ($x[0]) & ((1 << $c1) - 1)) << (32 - $c1);
} else { } else {
/** @var int $l1 */
$l1 = (int) ($x[0]) >> ($c1 - 32); $l1 = (int) ($x[0]) >> ($c1 - 32);
} }

View File

@ -342,6 +342,9 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
ParagonIE_Sodium_Core_Curve25519_Fe $f, ParagonIE_Sodium_Core_Curve25519_Fe $f,
ParagonIE_Sodium_Core_Curve25519_Fe $g ParagonIE_Sodium_Core_Curve25519_Fe $g
) { ) {
// Ensure limbs aren't oversized.
$f = self::fe_normalize($f);
$g = self::fe_normalize($g);
$f0 = $f[0]; $f0 = $f[0];
$f1 = $f[1]; $f1 = $f[1];
$f2 = $f[2]; $f2 = $f[2];
@ -476,6 +479,7 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
$f9g7_38 = self::mul($g7_19, $f9_2, 26); $f9g7_38 = self::mul($g7_19, $f9_2, 26);
$f9g8_19 = self::mul($g8_19, $f9, 25); $f9g8_19 = self::mul($g8_19, $f9, 25);
$f9g9_38 = self::mul($g9_19, $f9_2, 26); $f9g9_38 = self::mul($g9_19, $f9_2, 26);
$h0 = $f0g0 + $f1g9_38 + $f2g8_19 + $f3g7_38 + $f4g6_19 + $f5g5_38 + $f6g4_19 + $f7g3_38 + $f8g2_19 + $f9g1_38; $h0 = $f0g0 + $f1g9_38 + $f2g8_19 + $f3g7_38 + $f4g6_19 + $f5g5_38 + $f6g4_19 + $f7g3_38 + $f8g2_19 + $f9g1_38;
$h1 = $f0g1 + $f1g0 + $f2g9_19 + $f3g8_19 + $f4g7_19 + $f5g6_19 + $f6g5_19 + $f7g4_19 + $f8g3_19 + $f9g2_19; $h1 = $f0g1 + $f1g0 + $f2g9_19 + $f3g8_19 + $f4g7_19 + $f5g6_19 + $f6g5_19 + $f7g4_19 + $f8g3_19 + $f9g2_19;
$h2 = $f0g2 + $f1g1_2 + $f2g0 + $f3g9_38 + $f4g8_19 + $f5g7_38 + $f6g6_19 + $f7g5_38 + $f8g4_19 + $f9g3_38; $h2 = $f0g2 + $f1g1_2 + $f2g0 + $f3g9_38 + $f4g8_19 + $f5g7_38 + $f6g6_19 + $f7g5_38 + $f8g4_19 + $f9g3_38;
@ -530,18 +534,20 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
$h1 += $carry0; $h1 += $carry0;
$h0 -= $carry0 << 26; $h0 -= $carry0 << 26;
return ParagonIE_Sodium_Core_Curve25519_Fe::fromArray( return self::fe_normalize(
array( ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
(int) $h0, array(
(int) $h1, (int) $h0,
(int) $h2, (int) $h1,
(int) $h3, (int) $h2,
(int) $h4, (int) $h3,
(int) $h5, (int) $h4,
(int) $h6, (int) $h5,
(int) $h7, (int) $h6,
(int) $h8, (int) $h7,
(int) $h9 (int) $h8,
(int) $h9
)
) )
); );
} }
@ -563,7 +569,7 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
for ($i = 0; $i < 10; ++$i) { for ($i = 0; $i < 10; ++$i) {
$h[$i] = -$f[$i]; $h[$i] = -$f[$i];
} }
return $h; return self::fe_normalize($h);
} }
/** /**
@ -578,6 +584,7 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
*/ */
public static function fe_sq(ParagonIE_Sodium_Core_Curve25519_Fe $f) public static function fe_sq(ParagonIE_Sodium_Core_Curve25519_Fe $f)
{ {
$f = self::fe_normalize($f);
$f0 = (int) $f[0]; $f0 = (int) $f[0];
$f1 = (int) $f[1]; $f1 = (int) $f[1];
$f2 = (int) $f[2]; $f2 = (int) $f[2];
@ -711,18 +718,20 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
$h1 += $carry0; $h1 += $carry0;
$h0 -= $carry0 << 26; $h0 -= $carry0 << 26;
return ParagonIE_Sodium_Core_Curve25519_Fe::fromArray( return self::fe_normalize(
array( ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
(int) $h0, array(
(int) $h1, (int) $h0,
(int) $h2, (int) $h1,
(int) $h3, (int) $h2,
(int) $h4, (int) $h3,
(int) $h5, (int) $h4,
(int) $h6, (int) $h5,
(int) $h7, (int) $h6,
(int) $h8, (int) $h7,
(int) $h9 (int) $h8,
(int) $h9
)
) )
); );
} }
@ -740,6 +749,7 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
*/ */
public static function fe_sq2(ParagonIE_Sodium_Core_Curve25519_Fe $f) public static function fe_sq2(ParagonIE_Sodium_Core_Curve25519_Fe $f)
{ {
$f = self::fe_normalize($f);
$f0 = (int) $f[0]; $f0 = (int) $f[0];
$f1 = (int) $f[1]; $f1 = (int) $f[1];
$f2 = (int) $f[2]; $f2 = (int) $f[2];
@ -874,18 +884,20 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
$h1 += $carry0; $h1 += $carry0;
$h0 -= $carry0 << 26; $h0 -= $carry0 << 26;
return ParagonIE_Sodium_Core_Curve25519_Fe::fromArray( return self::fe_normalize(
array( ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
(int) $h0, array(
(int) $h1, (int) $h0,
(int) $h2, (int) $h1,
(int) $h3, (int) $h2,
(int) $h4, (int) $h3,
(int) $h5, (int) $h4,
(int) $h6, (int) $h5,
(int) $h7, (int) $h6,
(int) $h8, (int) $h7,
(int) $h9 (int) $h8,
(int) $h9
)
) )
); );
} }
@ -958,6 +970,7 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
*/ */
public static function fe_pow22523(ParagonIE_Sodium_Core_Curve25519_Fe $z) public static function fe_pow22523(ParagonIE_Sodium_Core_Curve25519_Fe $z)
{ {
$z = self::fe_normalize($z);
# fe_sq(t0, z); # fe_sq(t0, z);
# fe_sq(t1, t0); # fe_sq(t1, t0);
# fe_sq(t1, t1); # fe_sq(t1, t1);
@ -1085,18 +1098,20 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
*/ */
public static function fe_sub(ParagonIE_Sodium_Core_Curve25519_Fe $f, ParagonIE_Sodium_Core_Curve25519_Fe $g) public static function fe_sub(ParagonIE_Sodium_Core_Curve25519_Fe $f, ParagonIE_Sodium_Core_Curve25519_Fe $g)
{ {
return ParagonIE_Sodium_Core_Curve25519_Fe::fromArray( return self::fe_normalize(
array( ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
(int) ($f[0] - $g[0]), array(
(int) ($f[1] - $g[1]), (int) ($f[0] - $g[0]),
(int) ($f[2] - $g[2]), (int) ($f[1] - $g[1]),
(int) ($f[3] - $g[3]), (int) ($f[2] - $g[2]),
(int) ($f[4] - $g[4]), (int) ($f[3] - $g[3]),
(int) ($f[5] - $g[5]), (int) ($f[4] - $g[4]),
(int) ($f[6] - $g[6]), (int) ($f[5] - $g[5]),
(int) ($f[7] - $g[7]), (int) ($f[6] - $g[6]),
(int) ($f[8] - $g[8]), (int) ($f[7] - $g[7]),
(int) ($f[9] - $g[9]) (int) ($f[8] - $g[8]),
(int) ($f[9] - $g[9])
)
) )
); );
} }
@ -2535,7 +2550,7 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
$s20 = 2097151 & (self::load_4(self::substr($s, 52, 4)) >> 4); $s20 = 2097151 & (self::load_4(self::substr($s, 52, 4)) >> 4);
$s21 = 2097151 & (self::load_3(self::substr($s, 55, 3)) >> 1); $s21 = 2097151 & (self::load_3(self::substr($s, 55, 3)) >> 1);
$s22 = 2097151 & (self::load_4(self::substr($s, 57, 4)) >> 6); $s22 = 2097151 & (self::load_4(self::substr($s, 57, 4)) >> 6);
$s23 = (self::load_4(self::substr($s, 60, 4)) >> 3); $s23 = 0x1fffffff & (self::load_4(self::substr($s, 60, 4)) >> 3);
$s11 += self::mul($s23, 666643, 20); $s11 += self::mul($s23, 666643, 20);
$s12 += self::mul($s23, 470296, 19); $s12 += self::mul($s23, 470296, 19);
@ -3782,4 +3797,40 @@ abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Cu
$s_[31] &= 128; $s_[31] &= 128;
return self::intArrayToString($s_); return self::intArrayToString($s_);
} }
/**
* Ensure limbs are less than 28 bits long to prevent float promotion.
*
* This uses a constant-time conditional swap under the hood.
*
* @param ParagonIE_Sodium_Core_Curve25519_Fe $f
* @return ParagonIE_Sodium_Core_Curve25519_Fe
*/
public static function fe_normalize(ParagonIE_Sodium_Core_Curve25519_Fe $f)
{
$x = (PHP_INT_SIZE << 3) - 1; // 31 or 63
$g = self::fe_copy($f);
for ($i = 0; $i < 10; ++$i) {
$mask = -(($g[$i] >> $x) & 1);
/*
* Get two candidate normalized values for $g[$i], depending on the sign of $g[$i]:
*/
$a = $g[$i] & 0x7ffffff;
$b = -((-$g[$i]) & 0x7ffffff);
/*
* Return the appropriate candidate value, based on the sign of the original input:
*
* The following is equivalent to this ternary:
*
* $g[$i] = (($g[$i] >> $x) & 1) ? $a : $b;
*
* Except what's written doesn't contain timing leaks.
*/
$g[$i] = ($a ^ (($a ^ $b) & $mask));
}
return $g;
}
} }

View File

@ -458,7 +458,7 @@ abstract class ParagonIE_Sodium_Core_Util
} }
/** @var array<int, int> $unpacked */ /** @var array<int, int> $unpacked */
$unpacked = unpack('V', $string); $unpacked = unpack('V', $string);
return (int) ($unpacked[1] & 0xffffffff); return (int) $unpacked[1];
} }
/** /**
@ -613,7 +613,11 @@ abstract class ParagonIE_Sodium_Core_Util
{ {
$high = 0; $high = 0;
/** @var int $low */ /** @var int $low */
$low = $num & 0xffffffff; if (PHP_INT_SIZE === 4) {
$low = (int) $num;
} else {
$low = $num & 0xffffffff;
}
if ((+(abs($num))) >= 1) { if ((+(abs($num))) >= 1) {
if ($num > 0) { if ($num > 0) {

View File

@ -325,25 +325,15 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
$carry9 = $f[9]->shiftRight(25); $carry9 = $f[9]->shiftRight(25);
$f[9] = $f[9]->subInt64($carry9->shiftLeft(25)); $f[9] = $f[9]->subInt64($carry9->shiftLeft(25));
/** @var int $h0 */
$h0 = $f[0]->toInt32()->toInt(); $h0 = $f[0]->toInt32()->toInt();
/** @var int $h1 */
$h1 = $f[1]->toInt32()->toInt(); $h1 = $f[1]->toInt32()->toInt();
/** @var int $h2 */
$h2 = $f[2]->toInt32()->toInt(); $h2 = $f[2]->toInt32()->toInt();
/** @var int $h3 */
$h3 = $f[3]->toInt32()->toInt(); $h3 = $f[3]->toInt32()->toInt();
/** @var int $h4 */
$h4 = $f[4]->toInt32()->toInt(); $h4 = $f[4]->toInt32()->toInt();
/** @var int $h5 */
$h5 = $f[5]->toInt32()->toInt(); $h5 = $f[5]->toInt32()->toInt();
/** @var int $h6 */
$h6 = $f[6]->toInt32()->toInt(); $h6 = $f[6]->toInt32()->toInt();
/** @var int $h7 */
$h7 = $f[7]->toInt32()->toInt(); $h7 = $f[7]->toInt32()->toInt();
/** @var int $h8 */
$h8 = $f[8]->toInt32()->toInt(); $h8 = $f[8]->toInt32()->toInt();
/** @var int $h9 */
$h9 = $f[9]->toInt32()->toInt(); $h9 = $f[9]->toInt32()->toInt();
/** /**
@ -418,7 +408,6 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
if ($zero === null) { if ($zero === null) {
$zero = str_repeat("\x00", 32); $zero = str_repeat("\x00", 32);
} }
/** @var string $str */
$str = self::fe_tobytes($f); $str = self::fe_tobytes($f);
/** @var string $zero */ /** @var string $zero */
return !self::verify_32($str, $zero); return !self::verify_32($str, $zero);
@ -497,15 +486,10 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
$g7_19 = $g7->mulInt(19, 5); $g7_19 = $g7->mulInt(19, 5);
$g8_19 = $g8->mulInt(19, 5); $g8_19 = $g8->mulInt(19, 5);
$g9_19 = $g9->mulInt(19, 5); $g9_19 = $g9->mulInt(19, 5);
/** @var ParagonIE_Sodium_Core32_Int64 $f1_2 */
$f1_2 = $f1->shiftLeft(1); $f1_2 = $f1->shiftLeft(1);
/** @var ParagonIE_Sodium_Core32_Int64 $f3_2 */
$f3_2 = $f3->shiftLeft(1); $f3_2 = $f3->shiftLeft(1);
/** @var ParagonIE_Sodium_Core32_Int64 $f5_2 */
$f5_2 = $f5->shiftLeft(1); $f5_2 = $f5->shiftLeft(1);
/** @var ParagonIE_Sodium_Core32_Int64 $f7_2 */
$f7_2 = $f7->shiftLeft(1); $f7_2 = $f7->shiftLeft(1);
/** @var ParagonIE_Sodium_Core32_Int64 $f9_2 */
$f9_2 = $f9->shiftLeft(1); $f9_2 = $f9->shiftLeft(1);
$f0g0 = $f0->mulInt64($g0, 27); $f0g0 = $f0->mulInt64($g0, 27);
$f0g1 = $f0->mulInt64($g1, 27); $f0g1 = $f0->mulInt64($g1, 27);
@ -775,28 +759,17 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
*/ */
public static function fe_sq(ParagonIE_Sodium_Core32_Curve25519_Fe $f) public static function fe_sq(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
{ {
/** @var ParagonIE_Sodium_Core32_Int64 $f0 */
$f0 = $f[0]->toInt64(); $f0 = $f[0]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f1 */
$f1 = $f[1]->toInt64(); $f1 = $f[1]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f2 */
$f2 = $f[2]->toInt64(); $f2 = $f[2]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f3 */
$f3 = $f[3]->toInt64(); $f3 = $f[3]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f4 */
$f4 = $f[4]->toInt64(); $f4 = $f[4]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f5 */
$f5 = $f[5]->toInt64(); $f5 = $f[5]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f6 */
$f6 = $f[6]->toInt64(); $f6 = $f[6]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f7 */
$f7 = $f[7]->toInt64(); $f7 = $f[7]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f8 */
$f8 = $f[8]->toInt64(); $f8 = $f[8]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f9 */
$f9 = $f[9]->toInt64(); $f9 = $f[9]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f0_2 */
$f0_2 = $f0->shiftLeft(1); $f0_2 = $f0->shiftLeft(1);
$f1_2 = $f1->shiftLeft(1); $f1_2 = $f1->shiftLeft(1);
$f2_2 = $f2->shiftLeft(1); $f2_2 = $f2->shiftLeft(1);
@ -810,7 +783,7 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
$f7_38 = $f7->mulInt(38, 6); $f7_38 = $f7->mulInt(38, 6);
$f8_19 = $f8->mulInt(19, 5); $f8_19 = $f8->mulInt(19, 5);
$f9_38 = $f9->mulInt(38, 6); $f9_38 = $f9->mulInt(38, 6);
/** @var ParagonIE_Sodium_Core32_Int64 $f0f0*/
$f0f0 = $f0->mulInt64($f0, 28); $f0f0 = $f0->mulInt64($f0, 28);
$f0f1_2 = $f0_2->mulInt64($f1, 28); $f0f1_2 = $f0_2->mulInt64($f1, 28);
$f0f2_2 = $f0_2->mulInt64($f2, 28); $f0f2_2 = $f0_2->mulInt64($f2, 28);
@ -979,25 +952,15 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
*/ */
public static function fe_sq2(ParagonIE_Sodium_Core32_Curve25519_Fe $f) public static function fe_sq2(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
{ {
/** @var ParagonIE_Sodium_Core32_Int64 $f0 */
$f0 = $f[0]->toInt64(); $f0 = $f[0]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f1 */
$f1 = $f[1]->toInt64(); $f1 = $f[1]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f2 */
$f2 = $f[2]->toInt64(); $f2 = $f[2]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f3 */
$f3 = $f[3]->toInt64(); $f3 = $f[3]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f4 */
$f4 = $f[4]->toInt64(); $f4 = $f[4]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f5 */
$f5 = $f[5]->toInt64(); $f5 = $f[5]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f6 */
$f6 = $f[6]->toInt64(); $f6 = $f[6]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f7 */
$f7 = $f[7]->toInt64(); $f7 = $f[7]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f8 */
$f8 = $f[8]->toInt64(); $f8 = $f[8]->toInt64();
/** @var ParagonIE_Sodium_Core32_Int64 $f9 */
$f9 = $f[9]->toInt64(); $f9 = $f[9]->toInt64();
$f0_2 = $f0->shiftLeft(1); $f0_2 = $f0->shiftLeft(1);
@ -1479,7 +1442,6 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
{ {
static $d = null; static $d = null;
if (!$d) { if (!$d) {
/** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
$d = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray( $d = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
array( array(
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[0]), ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[0]),
@ -1495,6 +1457,7 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
) )
); );
} }
/** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
# fe_frombytes(h->Y,s); # fe_frombytes(h->Y,s);
# fe_1(h->Z); # fe_1(h->Z);
@ -1833,7 +1796,14 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
*/ */
public static function equal($b, $c) public static function equal($b, $c)
{ {
return (int) ((($b ^ $c) - 1 & 0xffffffff) >> 31); $b0 = $b & 0xffff;
$b1 = ($b >> 16) & 0xffff;
$c0 = $c & 0xffff;
$c1 = ($c >> 16) & 0xffff;
$d0 = (($b0 ^ $c0) - 1) >> 31;
$d1 = (($b1 ^ $c1) - 1) >> 31;
return ($d0 & $d1) & 1;
} }
/** /**
@ -1850,7 +1820,6 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
return $char < 0 ? 1 : 0; return $char < 0 ? 1 : 0;
} }
/** @var string $char */ /** @var string $char */
/** @var int $x */
$x = self::chrToInt(self::substr($char, 0, 1)); $x = self::chrToInt(self::substr($char, 0, 1));
return (int) ($x >> 31); return (int) ($x >> 31);
} }
@ -1956,7 +1925,6 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
} }
$bnegative = self::negative($b); $bnegative = self::negative($b);
/** @var int $babs */
$babs = $b - (((-$bnegative) & $b) << 1); $babs = $b - (((-$bnegative) & $b) << 1);
$t = self::ge_precomp_0(); $t = self::ge_precomp_0();
@ -1964,7 +1932,7 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
$t = self::cmov( $t = self::cmov(
$t, $t,
$base[$pos][$i], $base[$pos][$i],
self::equal($babs, $i + 1) -self::equal($babs, $i + 1)
); );
} }
$minusT = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp( $minusT = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
@ -2230,9 +2198,7 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
$carry = 0; $carry = 0;
for ($i = 0; $i < 63; ++$i) { for ($i = 0; $i < 63; ++$i) {
$e[$i] += $carry; $e[$i] += $carry;
/** @var int $carry */
$carry = $e[$i] + 8; $carry = $e[$i] + 8;
/** @var int $carry */
$carry >>= 4; $carry >>= 4;
$e[$i] -= $carry << 4; $e[$i] -= $carry << 4;
} }
@ -3140,7 +3106,6 @@ abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core3
*/ */
public static function ge_mul_l(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A) public static function ge_mul_l(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A)
{ {
/** @var array<int, int> $aslide */
$aslide = array( $aslide = array(
13, 0, 0, 0, 0, -1, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 13, 0, 0, 0, 0, -1, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0,
0, 0, 0, -3, 0, 0, 0, 0, -13, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, -3, 0, 0, 0, 0, -13, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 3, 0,

View File

@ -48,6 +48,9 @@ class ParagonIE_Sodium_Core32_Curve25519_Fe implements ArrayAccess
} }
} else { } else {
for ($i = 0; $i < $count; ++$i) { for ($i = 0; $i < $count; ++$i) {
if (!($array[$i] instanceof ParagonIE_Sodium_Core32_Int32)) {
throw new TypeError('Expected ParagonIE_Sodium_Core32_Int32');
}
$array[$i]->overflow = 0; $array[$i]->overflow = 0;
$obj->offsetSet($i, $array[$i]); $obj->offsetSet($i, $array[$i]);
} }

View File

@ -138,9 +138,10 @@ class ParagonIE_Sodium_Core32_Int32
public function mask($m = 0) public function mask($m = 0)
{ {
/** @var int $hi */ /** @var int $hi */
$hi = ($m >> 16) & 0xffff; $hi = ((int) $m >> 16);
$hi &= 0xffff;
/** @var int $lo */ /** @var int $lo */
$lo = ($m & 0xffff); $lo = ((int) $m) & 0xffff;
return new ParagonIE_Sodium_Core32_Int32( return new ParagonIE_Sodium_Core32_Int32(
array( array(
(int) ($this->limbs[0] & $hi), (int) ($this->limbs[0] & $hi),
@ -168,8 +169,8 @@ class ParagonIE_Sodium_Core32_Int32
for ($j = 0; $j < $a_l; ++$j) { for ($j = 0; $j < $a_l; ++$j) {
$b_j = $b[$j]; $b_j = $b[$j];
$product = ($a_i * $b_j) + $r[$i + $j]; $product = ($a_i * $b_j) + $r[$i + $j];
$carry = ($product >> $baseLog2 & 0xffff); $carry = ((int) $product >> $baseLog2 & 0xffff);
$r[$i + $j] = ($product - (int) ($carry * $base)) & 0xffff; $r[$i + $j] = ((int) $product - (int) ($carry * $base)) & 0xffff;
$r[$i + $j + 1] += $carry; $r[$i + $j + 1] += $carry;
} }
} }

View File

@ -337,9 +337,9 @@ class ParagonIE_Sodium_Core32_Int64
$a_i = $a[$i]; $a_i = $a[$i];
for ($j = 0; $j < $a_l; ++$j) { for ($j = 0; $j < $a_l; ++$j) {
$b_j = $b[$j]; $b_j = $b[$j];
$product = ($a_i * $b_j) + $r[$i + $j]; $product = (($a_i * $b_j) + $r[$i + $j]);
$carry = ($product >> $baseLog2 & 0xffff); $carry = (((int) $product >> $baseLog2) & 0xffff);
$r[$i + $j] = ($product - (int) ($carry * $base)) & 0xffff; $r[$i + $j] = ((int) $product - (int) ($carry * $base)) & 0xffff;
$r[$i + $j + 1] += $carry; $r[$i + $j + 1] += $carry;
} }
} }

View File

@ -419,7 +419,7 @@ class ParagonIE_Sodium_Core32_Poly1305_State extends ParagonIE_Sodium_Core32_Uti
$g4 = $g4->mask($mask); $g4 = $g4->mask($mask);
/** @var int $mask */ /** @var int $mask */
$mask = (~$mask) & 0xffffffff; $mask = ~$mask;
$h0 = $h0->mask($mask)->orInt32($g0); $h0 = $h0->mask($mask)->orInt32($g0);
$h1 = $h1->mask($mask)->orInt32($g1); $h1 = $h1->mask($mask)->orInt32($g1);

View File

@ -61,4 +61,27 @@ class ParagonIE_Sodium_Core32_XChaCha20 extends ParagonIE_Sodium_Core32_HChaCha2
$message $message
); );
} }
/**
* @internal You should not use this directly from another application
*
* @param string $message
* @param string $nonce
* @param string $key
* @param string $ic
* @return string
* @throws SodiumException
* @throws TypeError
*/
public static function ietfStreamXorIc($message, $nonce = '', $key = '', $ic = '')
{
return self::encryptBytes(
new ParagonIE_Sodium_Core32_ChaCha20_IetfCtx(
self::hChaCha20(self::substr($nonce, 0, 16), $key),
"\x00\x00\x00\x00" . self::substr($nonce, 16, 8),
$ic
),
$message
);
}
} }

View File

@ -1154,19 +1154,15 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
*/ */
private static function sign_core32($filePath, $secretKey) private static function sign_core32($filePath, $secretKey)
{ {
/** @var int|bool $size */
$size = filesize($filePath); $size = filesize($filePath);
if (!is_int($size)) { if (!is_int($size)) {
throw new SodiumException('Could not obtain the file size'); throw new SodiumException('Could not obtain the file size');
} }
/** @var int $size */
/** @var resource|bool $fp */
$fp = fopen($filePath, 'rb'); $fp = fopen($filePath, 'rb');
if (!is_resource($fp)) { if (!is_resource($fp)) {
throw new SodiumException('Could not open input file for reading'); throw new SodiumException('Could not open input file for reading');
} }
/** @var resource $fp */
/** @var string $az */ /** @var string $az */
$az = hash('sha512', self::substr($secretKey, 0, 32), true); $az = hash('sha512', self::substr($secretKey, 0, 32), true);
@ -1179,16 +1175,9 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
/** @var resource $hs */ /** @var resource $hs */
$hs = self::updateHashWithFile($hs, $fp, $size); $hs = self::updateHashWithFile($hs, $fp, $size);
/** @var string $nonceHash */
$nonceHash = hash_final($hs, true); $nonceHash = hash_final($hs, true);
/** @var string $pk */
$pk = self::substr($secretKey, 32, 32); $pk = self::substr($secretKey, 32, 32);
/** @var string $nonce */
$nonce = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($nonceHash) . self::substr($nonceHash, 32); $nonce = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
/** @var string $sig */
$sig = ParagonIE_Sodium_Core32_Ed25519::ge_p3_tobytes( $sig = ParagonIE_Sodium_Core32_Ed25519::ge_p3_tobytes(
ParagonIE_Sodium_Core32_Ed25519::ge_scalarmult_base($nonce) ParagonIE_Sodium_Core32_Ed25519::ge_scalarmult_base($nonce)
); );
@ -1199,13 +1188,10 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
/** @var resource $hs */ /** @var resource $hs */
$hs = self::updateHashWithFile($hs, $fp, $size); $hs = self::updateHashWithFile($hs, $fp, $size);
/** @var string $hramHash */
$hramHash = hash_final($hs, true); $hramHash = hash_final($hs, true);
/** @var string $hram */
$hram = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($hramHash); $hram = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($hramHash);
/** @var string $sigAfter */
$sigAfter = ParagonIE_Sodium_Core32_Ed25519::sc_muladd($hram, $az, $nonce); $sigAfter = ParagonIE_Sodium_Core32_Ed25519::sc_muladd($hram, $az, $nonce);
/** @var string $sig */ /** @var string $sig */
@ -1243,6 +1229,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
if (ParagonIE_Sodium_Core32_Ed25519::small_order($sig)) { if (ParagonIE_Sodium_Core32_Ed25519::small_order($sig)) {
throw new SodiumException('Signature is on too small of an order'); throw new SodiumException('Signature is on too small of an order');
} }
if ((self::chrToInt($sig[63]) & 224) !== 0) { if ((self::chrToInt($sig[63]) & 224) !== 0) {
throw new SodiumException('Invalid signature'); throw new SodiumException('Invalid signature');
} }

View File

@ -1,3 +1,5 @@
[![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://supportukrainenow.org/)
![PHPMailer](https://raw.github.com/PHPMailer/PHPMailer/master/examples/images/phpmailer.png) ![PHPMailer](https://raw.github.com/PHPMailer/PHPMailer/master/examples/images/phpmailer.png)
# PHPMailer A full-featured email creation and transfer class for PHP # PHPMailer A full-featured email creation and transfer class for PHP

View File

@ -1 +1 @@
6.5.4 6.6.3

View File

@ -39,8 +39,8 @@
"require-dev": { "require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2", "doctrine/annotations": "^1.2",
"php-parallel-lint/php-console-highlighter": "^0.5.0", "php-parallel-lint/php-console-highlighter": "^1.0.0",
"php-parallel-lint/php-parallel-lint": "^1.3.1", "php-parallel-lint/php-parallel-lint": "^1.3.2",
"phpcompatibility/php-compatibility": "^9.3.5", "phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest", "roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^3.6.2", "squizlabs/php_codesniffer": "^3.6.2",
@ -70,7 +70,7 @@
"test": "./vendor/bin/phpunit --no-coverage", "test": "./vendor/bin/phpunit --no-coverage",
"coverage": "./vendor/bin/phpunit", "coverage": "./vendor/bin/phpunit",
"lint": [ "lint": [
"@php ./vendor/php-parallel-lint/php-parallel-lint/parallel-lint . -e php,phps --exclude vendor --exclude .git --exclude build" "@php ./vendor/php-parallel-lint/php-parallel-lint/parallel-lint . --show-deprecated -e php,phps --exclude vendor --exclude .git --exclude build"
] ]
} }
} }

View File

@ -45,13 +45,25 @@ use Hayageek\OAuth2\Client\Provider\Yahoo;
//@see https://github.com/stevenmaguire/oauth2-microsoft //@see https://github.com/stevenmaguire/oauth2-microsoft
use Stevenmaguire\OAuth2\Client\Provider\Microsoft; use Stevenmaguire\OAuth2\Client\Provider\Microsoft;
if (!isset($_GET['code']) && !isset($_GET['provider'])) { if (!isset($_GET['code']) && !isset($_POST['provider'])) {
?> ?>
<html> <html>
<body>Select Provider:<br> <body>
<a href='?provider=Google'>Google</a><br> <form method="post">
<a href='?provider=Yahoo'>Yahoo</a><br> <h1>Select Provider</h1>
<a href='?provider=Microsoft'>Microsoft/Outlook/Hotmail/Live/Office365</a><br> <input type="radio" name="provider" value="Google" id="providerGoogle">
<label for="providerGoogle">Google</label><br>
<input type="radio" name="provider" value="Yahoo" id="providerYahoo">
<label for="providerYahoo">Yahoo</label><br>
<input type="radio" name="provider" value="Microsoft" id="providerMicrosoft">
<label for="providerMicrosoft">Microsoft</label><br>
<h1>Enter id and secret</h1>
<p>These details are obtained by setting up an app in your provider's developer console.
</p>
<p>ClientId: <input type="text" name="clientId"><p>
<p>ClientSecret: <input type="text" name="clientSecret"></p>
<input type="submit" value="Continue">
</form>
</body> </body>
</html> </html>
<?php <?php
@ -63,21 +75,25 @@ require 'vendor/autoload.php';
session_start(); session_start();
$providerName = ''; $providerName = '';
$clientId = '';
$clientSecret = '';
if (array_key_exists('provider', $_GET)) { if (array_key_exists('provider', $_POST)) {
$providerName = $_GET['provider']; $providerName = $_POST['provider'];
$clientId = $_POST['clientId'];
$clientSecret = $_POST['clientSecret'];
$_SESSION['provider'] = $providerName; $_SESSION['provider'] = $providerName;
$_SESSION['clientId'] = $clientId;
$_SESSION['clientSecret'] = $clientSecret;
} elseif (array_key_exists('provider', $_SESSION)) { } elseif (array_key_exists('provider', $_SESSION)) {
$providerName = $_SESSION['provider']; $providerName = $_SESSION['provider'];
} $clientId = $_SESSION['clientId'];
if (!in_array($providerName, ['Google', 'Microsoft', 'Yahoo'])) { $clientSecret = $_SESSION['clientSecret'];
exit('Only Google, Microsoft and Yahoo OAuth2 providers are currently supported in this script.');
} }
//These details are obtained by setting up an app in the Google developer console, //If you don't want to use the built-in form, set your client id and secret here
//or whichever provider you're using. //$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com';
$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com'; //$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';
$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';
//If this automatic URL doesn't work, set it yourself manually to the URL of this script //If this automatic URL doesn't work, set it yourself manually to the URL of this script
$redirectUri = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; $redirectUri = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];

View File

@ -1,27 +0,0 @@
<?php
/**
* Chinese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author LiuXin <http://www.80x86.cn/blog/>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP 错误:身份验证失败。';
$PHPMAILER_LANG['connect_host'] = 'SMTP 错误: 不能连接SMTP主机。';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误: 数据不可接受。';
//$PHPMAILER_LANG['empty_message'] = 'Message body empty';
$PHPMAILER_LANG['encoding'] = '未知编码:';
$PHPMAILER_LANG['execute'] = '不能执行: ';
$PHPMAILER_LANG['file_access'] = '不能访问文件:';
$PHPMAILER_LANG['file_open'] = '文件错误:不能打开文件:';
$PHPMAILER_LANG['from_failed'] = '下面的发送地址邮件发送失败了: ';
$PHPMAILER_LANG['instantiate'] = '不能实现mail方法。';
//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' 您所选择的发送邮件的方法并不支持。';
$PHPMAILER_LANG['provide_address'] = '您必须提供至少一个 收信人的email地址。';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误: 下面的 收件人失败了: ';
//$PHPMAILER_LANG['signing'] = 'Signing Error: ';
//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.';
//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: ';
//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@ -0,0 +1,27 @@
<?php
/**
* Mongolian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author @wispas
*/
$PHPMAILER_LANG['authenticate'] = 'Алдаа SMTP: Холбогдож чадсангүй.';
$PHPMAILER_LANG['connect_host'] = 'Алдаа SMTP: SMTP- сервертэй холбогдож болохгүй байна.';
$PHPMAILER_LANG['data_not_accepted'] = 'Алдаа SMTP: зөвшөөрөгдсөнгүй.';
$PHPMAILER_LANG['encoding'] = 'Тодорхойгүй кодчилол: ';
$PHPMAILER_LANG['execute'] = 'Коммандыг гүйцэтгэх боломжгүй байна: ';
$PHPMAILER_LANG['file_access'] = 'Файлд хандах боломжгүй байна: ';
$PHPMAILER_LANG['file_open'] = 'Файлын алдаа: файлыг нээх боломжгүй байна: ';
$PHPMAILER_LANG['from_failed'] = 'Илгээгчийн хаяг буруу байна: ';
$PHPMAILER_LANG['instantiate'] = 'Mail () функцийг ажиллуулах боломжгүй байна.';
$PHPMAILER_LANG['provide_address'] = 'Хүлээн авагчийн имэйл хаягийг оруулна уу.';
$PHPMAILER_LANG['mailer_not_supported'] = ' — мэйл серверийг дэмжсэнгүй.';
$PHPMAILER_LANG['recipients_failed'] = 'Алдаа SMTP: ийм хаягийг илгээж чадсангүй: ';
$PHPMAILER_LANG['empty_message'] = 'Хоосон мессэж';
$PHPMAILER_LANG['invalid_address'] = 'И-Мэйл буруу форматтай тул илгээх боломжгүй: ';
$PHPMAILER_LANG['signing'] = 'Гарын үсгийн алдаа: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP сервертэй холбогдоход алдаа гарлаа';
$PHPMAILER_LANG['smtp_error'] = 'SMTP серверийн алдаа: ';
$PHPMAILER_LANG['variable_set'] = 'Хувьсагчийг тохируулах эсвэл дахин тохируулах боломжгүй байна: ';
$PHPMAILER_LANG['extension_missing'] = 'Өргөтгөл байхгүй: ';

View File

@ -33,7 +33,7 @@ use League\OAuth2\Client\Token\AccessToken;
* *
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
*/ */
class OAuth class OAuth implements OAuthTokenProvider
{ {
/** /**
* An instance of the League OAuth Client Provider. * An instance of the League OAuth Client Provider.

View File

@ -0,0 +1,44 @@
<?php
/**
* PHPMailer - PHP email creation and transport class.
* PHP Version 5.5.
*
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
*
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
namespace PHPMailer\PHPMailer;
/**
* OAuthTokenProvider - OAuth2 token provider interface.
* Provides base64 encoded OAuth2 auth strings for SMTP authentication.
*
* @see OAuth
* @see SMTP::authenticate()
*
* @author Peter Scopes (pdscopes)
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
*/
interface OAuthTokenProvider
{
/**
* Generate a base64-encoded OAuth token ensuring that the access token has not expired.
* The string to be base 64 encoded should be in the form:
* "user=<user_email_address>\001auth=Bearer <access_token>\001\001"
*
* @return string
*/
public function getOauth64();
}

View File

@ -358,9 +358,9 @@ class PHPMailer
public $AuthType = ''; public $AuthType = '';
/** /**
* An instance of the PHPMailer OAuth class. * An implementation of the PHPMailer OAuthTokenProvider interface.
* *
* @var OAuth * @var OAuthTokenProvider
*/ */
protected $oauth; protected $oauth;
@ -750,7 +750,7 @@ class PHPMailer
* *
* @var string * @var string
*/ */
const VERSION = '6.5.4'; const VERSION = '6.6.3';
/** /**
* Error severity: message only, continue processing. * Error severity: message only, continue processing.
@ -1066,8 +1066,8 @@ class PHPMailer
* Addresses that have been added already return false, but do not throw exceptions. * Addresses that have been added already return false, but do not throw exceptions.
* *
* @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo'
* @param string $address The email address to send, resp. to reply to * @param string $address The email address
* @param string $name * @param string $name An optional username associated with the address
* *
* @throws Exception * @throws Exception
* *
@ -1075,9 +1075,11 @@ class PHPMailer
*/ */
protected function addOrEnqueueAnAddress($kind, $address, $name) protected function addOrEnqueueAnAddress($kind, $address, $name)
{ {
$address = trim($address); $pos = false;
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim if ($address !== null) {
$pos = strrpos($address, '@'); $address = trim($address);
$pos = strrpos($address, '@');
}
if (false === $pos) { if (false === $pos) {
//At-sign is missing. //At-sign is missing.
$error_message = sprintf( $error_message = sprintf(
@ -1094,8 +1096,14 @@ class PHPMailer
return false; return false;
} }
if ($name !== null) {
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
} else {
$name = '';
}
$params = [$kind, $address, $name]; $params = [$kind, $address, $name];
//Enqueue addresses with IDN until we know the PHPMailer::$CharSet. //Enqueue addresses with IDN until we know the PHPMailer::$CharSet.
//Domain is assumed to be whatever is after the last @ symbol in the address
if (static::idnSupported() && $this->has8bitChars(substr($address, ++$pos))) { if (static::idnSupported() && $this->has8bitChars(substr($address, ++$pos))) {
if ('Reply-To' !== $kind) { if ('Reply-To' !== $kind) {
if (!array_key_exists($address, $this->RecipientsQueue)) { if (!array_key_exists($address, $this->RecipientsQueue)) {
@ -1547,17 +1555,17 @@ class PHPMailer
//Validate From, Sender, and ConfirmReadingTo addresses //Validate From, Sender, and ConfirmReadingTo addresses
foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) { foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) {
$this->$address_kind = trim($this->$address_kind); $this->{$address_kind} = trim($this->{$address_kind});
if (empty($this->$address_kind)) { if (empty($this->{$address_kind})) {
continue; continue;
} }
$this->$address_kind = $this->punyencodeAddress($this->$address_kind); $this->{$address_kind} = $this->punyencodeAddress($this->{$address_kind});
if (!static::validateAddress($this->$address_kind)) { if (!static::validateAddress($this->{$address_kind})) {
$error_message = sprintf( $error_message = sprintf(
'%s (%s): %s', '%s (%s): %s',
$this->lang('invalid_address'), $this->lang('invalid_address'),
$address_kind, $address_kind,
$this->$address_kind $this->{$address_kind}
); );
$this->setError($error_message); $this->setError($error_message);
$this->edebug($error_message); $this->edebug($error_message);
@ -1657,7 +1665,7 @@ class PHPMailer
default: default:
$sendMethod = $this->Mailer . 'Send'; $sendMethod = $this->Mailer . 'Send';
if (method_exists($this, $sendMethod)) { if (method_exists($this, $sendMethod)) {
return $this->$sendMethod($this->MIMEHeader, $this->MIMEBody); return $this->{$sendMethod}($this->MIMEHeader, $this->MIMEBody);
} }
return $this->mailSend($this->MIMEHeader, $this->MIMEBody); return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
@ -2161,7 +2169,8 @@ class PHPMailer
} }
if ($tls) { if ($tls) {
if (!$this->smtp->startTLS()) { if (!$this->smtp->startTLS()) {
throw new Exception($this->lang('connect_host')); $message = $this->getSmtpErrorMessage('connect_host');
throw new Exception($message);
} }
//We must resend EHLO after TLS negotiation //We must resend EHLO after TLS negotiation
$this->smtp->hello($hello); $this->smtp->hello($hello);
@ -2192,6 +2201,11 @@ class PHPMailer
if ($this->exceptions && null !== $lastexception) { if ($this->exceptions && null !== $lastexception) {
throw $lastexception; throw $lastexception;
} }
if ($this->exceptions) {
// no exception was thrown, likely $this->smtp->connect() failed
$message = $this->getSmtpErrorMessage('connect_host');
throw new Exception($message);
}
return false; return false;
} }
@ -3700,20 +3714,21 @@ class PHPMailer
* These differ from 'regular' attachments in that they are intended to be * These differ from 'regular' attachments in that they are intended to be
* displayed inline with the message, not just attached for download. * displayed inline with the message, not just attached for download.
* This is used in HTML messages that embed the images * This is used in HTML messages that embed the images
* the HTML refers to using the $cid value. * the HTML refers to using the `$cid` value in `img` tags, for example `<img src="cid:mylogo">`.
* Never use a user-supplied path to a file! * Never use a user-supplied path to a file!
* *
* @param string $path Path to the attachment * @param string $path Path to the attachment
* @param string $cid Content ID of the attachment; Use this to reference * @param string $cid Content ID of the attachment; Use this to reference
* the content when using an embedded image in HTML * the content when using an embedded image in HTML
* @param string $name Overrides the attachment name * @param string $name Overrides the attachment filename
* @param string $encoding File encoding (see $Encoding) * @param string $encoding File encoding (see $Encoding) defaults to `base64`
* @param string $type File MIME type * @param string $type File MIME type (by default mapped from the `$path` filename's extension)
* @param string $disposition Disposition to use * @param string $disposition Disposition to use: `inline` (default) or `attachment`
* * (unlikely you want this {@see `addAttachment()`} instead)
* @throws Exception
* *
* @return bool True on successfully adding an attachment * @return bool True on successfully adding an attachment
* @throws Exception
*
*/ */
public function addEmbeddedImage( public function addEmbeddedImage(
$path, $path,
@ -4091,12 +4106,8 @@ class PHPMailer
//Is it a valid IPv4 address? //Is it a valid IPv4 address?
return filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false; return filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false;
} }
if (filter_var('http://' . $host, FILTER_VALIDATE_URL) !== false) { //Is it a syntactically valid hostname (when embeded in a URL)?
//Is it a syntactically valid hostname? return filter_var('http://' . $host, FILTER_VALIDATE_URL) !== false;
return true;
}
return false;
} }
/** /**
@ -4127,6 +4138,26 @@ class PHPMailer
return $key; return $key;
} }
/**
* Build an error message starting with a generic one and adding details if possible.
*
* @param string $base_key
* @return string
*/
private function getSmtpErrorMessage($base_key)
{
$message = $this->lang($base_key);
$error = $this->smtp->getError();
if (!empty($error['error'])) {
$message .= ' ' . $error['error'];
if (!empty($error['detail'])) {
$message .= ' ' . $error['detail'];
}
}
return $message;
}
/** /**
* Check if an error occurred. * Check if an error occurred.
* *
@ -4546,7 +4577,7 @@ class PHPMailer
public function set($name, $value = '') public function set($name, $value = '')
{ {
if (property_exists($this, $name)) { if (property_exists($this, $name)) {
$this->$name = $value; $this->{$name} = $value;
return true; return true;
} }
@ -5027,9 +5058,9 @@ class PHPMailer
} }
/** /**
* Get the OAuth instance. * Get the OAuthTokenProvider instance.
* *
* @return OAuth * @return OAuthTokenProvider
*/ */
public function getOAuth() public function getOAuth()
{ {
@ -5037,9 +5068,9 @@ class PHPMailer
} }
/** /**
* Set an OAuth instance. * Set an OAuthTokenProvider instance.
*/ */
public function setOAuth(OAuth $oauth) public function setOAuth(OAuthTokenProvider $oauth)
{ {
$this->oauth = $oauth; $this->oauth = $oauth;
} }

View File

@ -46,7 +46,7 @@ class POP3
* *
* @var string * @var string
*/ */
const VERSION = '6.5.4'; const VERSION = '6.6.3';
/** /**
* Default POP3 port number. * Default POP3 port number.

View File

@ -35,7 +35,7 @@ class SMTP
* *
* @var string * @var string
*/ */
const VERSION = '6.5.4'; const VERSION = '6.6.3';
/** /**
* SMTP line break constant. * SMTP line break constant.
@ -483,7 +483,7 @@ class SMTP
* @param string $username The user name * @param string $username The user name
* @param string $password The password * @param string $password The password
* @param string $authtype The auth type (CRAM-MD5, PLAIN, LOGIN, XOAUTH2) * @param string $authtype The auth type (CRAM-MD5, PLAIN, LOGIN, XOAUTH2)
* @param OAuth $OAuth An optional OAuth instance for XOAUTH2 authentication * @param OAuthTokenProvider $OAuth An optional OAuthTokenProvider instance for XOAUTH2 authentication
* *
* @return bool True if successfully authenticated * @return bool True if successfully authenticated
*/ */
@ -1037,7 +1037,10 @@ class SMTP
return false; return false;
} }
$this->setError(''); //Don't clear the error store when using keepalive
if ($command !== 'RSET') {
$this->setError('');
}
return true; return true;
} }

View File

@ -56,6 +56,10 @@ $config->setRules([
// but we can feel free to remove it in a major version (or maybe in a minor if // but we can feel free to remove it in a major version (or maybe in a minor if
// we devote some effort into determining that it is safe) // we devote some effort into determining that it is safe)
'no_null_property_initialization' => false, 'no_null_property_initialization' => false,
// We have to support `@return void` to satisfy Symfony deprecations helper.
// See https://github.com/stripe/stripe-php/pull/1230
'phpdoc_no_empty_return' => false,
]); ]);
$config->setFinder($finder); $config->setFinder($finder);
return $config; return $config;

View File

@ -1,11 +1,105 @@
# Changelog # Changelog
## 7.128.0 - 2022-05-05
* [#1282](https://github.com/stripe/stripe-php/pull/1282) API Updates
* Add support for `default_price` on `Product`
* Add support for `instructions_email` on `Refund`
## 7.127.0 - 2022-05-05
* [#1281](https://github.com/stripe/stripe-php/pull/1281) API Updates
* Add support for new resources `FinancialConnections.AccountOwner`, `FinancialConnections.AccountOwnership`, `FinancialConnections.Account`, and `FinancialConnections.Session`
* [#1278](https://github.com/stripe/stripe-php/pull/1278) Pin setup-php action version.
* [#1277](https://github.com/stripe/stripe-php/pull/1277) API Updates
* Add support for `registered_address` on `Person`
## 7.126.0 - 2022-05-03
* [#1276](https://github.com/stripe/stripe-php/pull/1276) API Updates
* Add support for new resource `CashBalance`
* Change type of `BillingPortal.Configuration.application` from `$Application` to `deletable($Application)`
* Add support for `cash_balance` on `Customer`
* Add support for `application` on `Invoice`, `Quote`, `SubscriptionSchedule`, and `Subscription`
* Add support for new value `eu_oss_vat` on enum `TaxId.type`
* [#1274](https://github.com/stripe/stripe-php/pull/1274) Fix PHPDoc on Discount for nullable properties
* [#1272](https://github.com/stripe/stripe-php/pull/1272) Allow users to pass a custom IPRESOLVE cURL option.
## 7.125.0 - 2022-04-21
* [#1270](https://github.com/stripe/stripe-php/pull/1270) API Updates
* Add support for `expire` test helper method on resource `Refund`
## 7.124.0 - 2022-04-18
* [#1265](https://github.com/stripe/stripe-php/pull/1265) API Updates
* Add support for new resources `FundingInstructions` and `Terminal.Configuration`
* Add support for `create_funding_instructions` method on resource `Customer`
* Add support for `amount_details` on `PaymentIntent`
* Add support for `customer_balance` on `PaymentMethod`
* Add support for new value `customer_balance` on enum `PaymentMethod.type`
* Add support for `configuration_overrides` on `Terminal.Location`
## 7.123.0 - 2022-04-13
* [#1263](https://github.com/stripe/stripe-php/pull/1263) API Updates
* Add support for `increment_authorization` method on resource `PaymentIntent`
* [#1262](https://github.com/stripe/stripe-php/pull/1262) Add support for updating the version of the repo
* [#1230](https://github.com/stripe/stripe-php/pull/1230) Add PHPDoc return types
* [#1242](https://github.com/stripe/stripe-php/pull/1242) Fix some PHPDoc in tests
## 7.122.0 - 2022-04-08
* [#1261](https://github.com/stripe/stripe-php/pull/1261) API Updates
* Add support for `apply_customer_balance` method on resource `PaymentIntent`
* [#1259](https://github.com/stripe/stripe-php/pull/1259) API Updates
* Add `payment_intent.partially_funded`, `terminal.reader.action_failed`, and `terminal.reader.action_succeeded` events.
## 7.121.0 - 2022-03-30
* [#1258](https://github.com/stripe/stripe-php/pull/1258) API Updates
* Add support for `cancel_action`, `process_payment_intent`, `process_setup_intent`, and `set_reader_display` methods on resource `Terminal.Reader`
* Add support for `action` on `Terminal.Reader`
## 7.120.0 - 2022-03-29
* [#1257](https://github.com/stripe/stripe-php/pull/1257) API Updates
* Add support for Search API
* Add support for `search` method on resources `Charge`, `Customer`, `Invoice`, `PaymentIntent`, `Price`, `Product`, and `Subscription`
## 7.119.0 - 2022-03-25
* [#1256](https://github.com/stripe/stripe-php/pull/1256) API Updates
* Add support for PayNow and US Bank Accounts Debits payments
* Add support for `paynow` and `us_bank_account` on `PaymentMethod`
* Add support for new values `paynow` and `us_bank_account` on enum `PaymentMethod.type`
* Add support for `failure_balance_transaction` on `Charge`
## 7.118.0 - 2022-03-23
* [#1255](https://github.com/stripe/stripe-php/pull/1255) API Updates
* Add support for `cancel` method on resource `Refund`
* Add support for new values `bg_uic`, `hu_tin`, and `si_tin` on enum `TaxId.type`
* Add `test_helpers.test_clock.advancing`, `test_helpers.test_clock.created`, `test_helpers.test_clock.deleted`, `test_helpers.test_clock.internal_failure`, and `test_helpers.test_clock.ready` events.
## 7.117.0 - 2022-03-18
* [#1254](https://github.com/stripe/stripe-php/pull/1254) API Updates
* Add support for `status` on `Card`
* [#1251](https://github.com/stripe/stripe-php/pull/1251) Add support for SearchResult objects.
* [#1249](https://github.com/stripe/stripe-php/pull/1249) Add missing constant for payment_behavior
## 7.116.0 - 2022-03-02
* [#1248](https://github.com/stripe/stripe-php/pull/1248) API Updates
* Add support for `proration_details` on `InvoiceLineItem`
## 7.115.0 - 2022-03-01
* [#1245](https://github.com/stripe/stripe-php/pull/1245) [#1247](https://github.com/stripe/stripe-php/pull/1247) API Updates
* Add support for new resource `TestHelpers.TestClock`
* Add support for `test_clock` on `Customer`, `Invoice`, `InvoiceItem`, `Quote`, `Subscription`, and `SubscriptionSchedule`
* Add support for `next_action` on `Refund`
* Add support for `konbini` on `PaymentMethod`
* [#1244](https://github.com/stripe/stripe-php/pull/1244) API Updates
* Add support for new values `bbpos_wisepad3` and `stripe_m2` on enum `Terminal.Reader.device_type`
## 7.114.0 - 2022-02-15 ## 7.114.0 - 2022-02-15
* [#1243](https://github.com/stripe/stripe-php/pull/1243) Add test * [#1243](https://github.com/stripe/stripe-php/pull/1243) Add test
* [#1240](https://github.com/stripe/stripe-php/pull/1240) API Updates * [#1240](https://github.com/stripe/stripe-php/pull/1240) API Updates
* Add support for `verify_microdeposits` method on resources `PaymentIntent` and `SetupIntent` * Add support for `verify_microdeposits` method on resources `PaymentIntent` and `SetupIntent`
* [#1241](https://github.com/stripe/stripe-php/pull/1241) Add generic parameter to \Stripe\Collection usages * [#1241](https://github.com/stripe/stripe-php/pull/1241) Add generic parameter to \Stripe\Collection usages
## 7.113.0 - 2022-02-03 ## 7.113.0 - 2022-02-03
@ -16,7 +110,7 @@
* [#1235](https://github.com/stripe/stripe-php/pull/1235) API Updates * [#1235](https://github.com/stripe/stripe-php/pull/1235) API Updates
* Add support for `phone_number_collection` on `PaymentLink` * Add support for `phone_number_collection` on `PaymentLink`
* Add support for new value `is_vat` on enum `TaxId.type` * Add support for new value `is_vat` on enum `TaxId.type`
## 7.111.0 - 2022-01-20 ## 7.111.0 - 2022-01-20
* [#1233](https://github.com/stripe/stripe-php/pull/1233) API Updates * [#1233](https://github.com/stripe/stripe-php/pull/1233) API Updates

View File

@ -29,3 +29,11 @@ phpstan: vendor
phpstan-baseline: vendor/bin/phpstan phpstan-baseline: vendor/bin/phpstan
php -d memory_limit=512M vendor/bin/phpstan analyse lib tests --generate-baseline php -d memory_limit=512M vendor/bin/phpstan analyse lib tests --generate-baseline
.PHONY: phpstan-baseline .PHONY: phpstan-baseline
update-version:
@echo "$(VERSION)" > VERSION
@perl -pi -e 's|VERSION = '\''[.\d]+'\''|VERSION = '\''$(VERSION)'\''|' lib/Stripe.php
.PHONY: update-version
codegen-format: fmt
.PHONY: codegen-format

View File

@ -1 +1 @@
7.114.0 7.128.0

View File

@ -54,6 +54,7 @@ require __DIR__ . '/lib/ApiOperations/Delete.php';
require __DIR__ . '/lib/ApiOperations/NestedResource.php'; require __DIR__ . '/lib/ApiOperations/NestedResource.php';
require __DIR__ . '/lib/ApiOperations/Request.php'; require __DIR__ . '/lib/ApiOperations/Request.php';
require __DIR__ . '/lib/ApiOperations/Retrieve.php'; require __DIR__ . '/lib/ApiOperations/Retrieve.php';
require __DIR__ . '/lib/ApiOperations/Search.php';
require __DIR__ . '/lib/ApiOperations/Update.php'; require __DIR__ . '/lib/ApiOperations/Update.php';
// Plumbing // Plumbing
@ -89,6 +90,7 @@ require __DIR__ . '/lib/BitcoinReceiver.php';
require __DIR__ . '/lib/BitcoinTransaction.php'; require __DIR__ . '/lib/BitcoinTransaction.php';
require __DIR__ . '/lib/Capability.php'; require __DIR__ . '/lib/Capability.php';
require __DIR__ . '/lib/Card.php'; require __DIR__ . '/lib/Card.php';
require __DIR__ . '/lib/CashBalance.php';
require __DIR__ . '/lib/Charge.php'; require __DIR__ . '/lib/Charge.php';
require __DIR__ . '/lib/Checkout/Session.php'; require __DIR__ . '/lib/Checkout/Session.php';
require __DIR__ . '/lib/Collection.php'; require __DIR__ . '/lib/Collection.php';
@ -106,6 +108,11 @@ require __DIR__ . '/lib/Event.php';
require __DIR__ . '/lib/ExchangeRate.php'; require __DIR__ . '/lib/ExchangeRate.php';
require __DIR__ . '/lib/File.php'; require __DIR__ . '/lib/File.php';
require __DIR__ . '/lib/FileLink.php'; require __DIR__ . '/lib/FileLink.php';
require __DIR__ . '/lib/FinancialConnections/Account.php';
require __DIR__ . '/lib/FinancialConnections/AccountOwner.php';
require __DIR__ . '/lib/FinancialConnections/AccountOwnership.php';
require __DIR__ . '/lib/FinancialConnections/Session.php';
require __DIR__ . '/lib/FundingInstructions.php';
require __DIR__ . '/lib/Identity/VerificationReport.php'; require __DIR__ . '/lib/Identity/VerificationReport.php';
require __DIR__ . '/lib/Identity/VerificationSession.php'; require __DIR__ . '/lib/Identity/VerificationSession.php';
require __DIR__ . '/lib/Invoice.php'; require __DIR__ . '/lib/Invoice.php';
@ -142,6 +149,7 @@ require __DIR__ . '/lib/Refund.php';
require __DIR__ . '/lib/Reporting/ReportRun.php'; require __DIR__ . '/lib/Reporting/ReportRun.php';
require __DIR__ . '/lib/Reporting/ReportType.php'; require __DIR__ . '/lib/Reporting/ReportType.php';
require __DIR__ . '/lib/Review.php'; require __DIR__ . '/lib/Review.php';
require __DIR__ . '/lib/SearchResult.php';
require __DIR__ . '/lib/SetupAttempt.php'; require __DIR__ . '/lib/SetupAttempt.php';
require __DIR__ . '/lib/SetupIntent.php'; require __DIR__ . '/lib/SetupIntent.php';
require __DIR__ . '/lib/ShippingRate.php'; require __DIR__ . '/lib/ShippingRate.php';
@ -155,9 +163,11 @@ require __DIR__ . '/lib/SubscriptionSchedule.php';
require __DIR__ . '/lib/TaxCode.php'; require __DIR__ . '/lib/TaxCode.php';
require __DIR__ . '/lib/TaxId.php'; require __DIR__ . '/lib/TaxId.php';
require __DIR__ . '/lib/TaxRate.php'; require __DIR__ . '/lib/TaxRate.php';
require __DIR__ . '/lib/Terminal/Configuration.php';
require __DIR__ . '/lib/Terminal/ConnectionToken.php'; require __DIR__ . '/lib/Terminal/ConnectionToken.php';
require __DIR__ . '/lib/Terminal/Location.php'; require __DIR__ . '/lib/Terminal/Location.php';
require __DIR__ . '/lib/Terminal/Reader.php'; require __DIR__ . '/lib/Terminal/Reader.php';
require __DIR__ . '/lib/TestHelpers/TestClock.php';
require __DIR__ . '/lib/ThreeDSecure.php'; require __DIR__ . '/lib/ThreeDSecure.php';
require __DIR__ . '/lib/Token.php'; require __DIR__ . '/lib/Token.php';
require __DIR__ . '/lib/Topup.php'; require __DIR__ . '/lib/Topup.php';
@ -188,6 +198,8 @@ require __DIR__ . '/lib/Service/EventService.php';
require __DIR__ . '/lib/Service/ExchangeRateService.php'; require __DIR__ . '/lib/Service/ExchangeRateService.php';
require __DIR__ . '/lib/Service/FileService.php'; require __DIR__ . '/lib/Service/FileService.php';
require __DIR__ . '/lib/Service/FileLinkService.php'; require __DIR__ . '/lib/Service/FileLinkService.php';
require __DIR__ . '/lib/Service/FinancialConnections/AccountService.php';
require __DIR__ . '/lib/Service/FinancialConnections/SessionService.php';
require __DIR__ . '/lib/Service/Identity/VerificationReportService.php'; require __DIR__ . '/lib/Service/Identity/VerificationReportService.php';
require __DIR__ . '/lib/Service/Identity/VerificationSessionService.php'; require __DIR__ . '/lib/Service/Identity/VerificationSessionService.php';
require __DIR__ . '/lib/Service/InvoiceService.php'; require __DIR__ . '/lib/Service/InvoiceService.php';
@ -227,9 +239,13 @@ require __DIR__ . '/lib/Service/SubscriptionItemService.php';
require __DIR__ . '/lib/Service/SubscriptionScheduleService.php'; require __DIR__ . '/lib/Service/SubscriptionScheduleService.php';
require __DIR__ . '/lib/Service/TaxCodeService.php'; require __DIR__ . '/lib/Service/TaxCodeService.php';
require __DIR__ . '/lib/Service/TaxRateService.php'; require __DIR__ . '/lib/Service/TaxRateService.php';
require __DIR__ . '/lib/Service/Terminal/ConfigurationService.php';
require __DIR__ . '/lib/Service/Terminal/ConnectionTokenService.php'; require __DIR__ . '/lib/Service/Terminal/ConnectionTokenService.php';
require __DIR__ . '/lib/Service/Terminal/LocationService.php'; require __DIR__ . '/lib/Service/Terminal/LocationService.php';
require __DIR__ . '/lib/Service/Terminal/ReaderService.php'; require __DIR__ . '/lib/Service/Terminal/ReaderService.php';
require __DIR__ . '/lib/Service/TestHelpers/RefundService.php';
require __DIR__ . '/lib/Service/TestHelpers/Terminal/ReaderService.php';
require __DIR__ . '/lib/Service/TestHelpers/TestClockService.php';
require __DIR__ . '/lib/Service/TokenService.php'; require __DIR__ . '/lib/Service/TokenService.php';
require __DIR__ . '/lib/Service/TopupService.php'; require __DIR__ . '/lib/Service/TopupService.php';
require __DIR__ . '/lib/Service/TransferService.php'; require __DIR__ . '/lib/Service/TransferService.php';
@ -239,12 +255,14 @@ require __DIR__ . '/lib/Service/WebhookEndpointService.php';
require __DIR__ . '/lib/Service/BillingPortal/BillingPortalServiceFactory.php'; require __DIR__ . '/lib/Service/BillingPortal/BillingPortalServiceFactory.php';
require __DIR__ . '/lib/Service/Checkout/CheckoutServiceFactory.php'; require __DIR__ . '/lib/Service/Checkout/CheckoutServiceFactory.php';
require __DIR__ . '/lib/Service/CoreServiceFactory.php'; require __DIR__ . '/lib/Service/CoreServiceFactory.php';
require __DIR__ . '/lib/Service/FinancialConnections/FinancialConnectionsServiceFactory.php';
require __DIR__ . '/lib/Service/Identity/IdentityServiceFactory.php'; require __DIR__ . '/lib/Service/Identity/IdentityServiceFactory.php';
require __DIR__ . '/lib/Service/Issuing/IssuingServiceFactory.php'; require __DIR__ . '/lib/Service/Issuing/IssuingServiceFactory.php';
require __DIR__ . '/lib/Service/Radar/RadarServiceFactory.php'; require __DIR__ . '/lib/Service/Radar/RadarServiceFactory.php';
require __DIR__ . '/lib/Service/Reporting/ReportingServiceFactory.php'; require __DIR__ . '/lib/Service/Reporting/ReportingServiceFactory.php';
require __DIR__ . '/lib/Service/Sigma/SigmaServiceFactory.php'; require __DIR__ . '/lib/Service/Sigma/SigmaServiceFactory.php';
require __DIR__ . '/lib/Service/Terminal/TerminalServiceFactory.php'; require __DIR__ . '/lib/Service/Terminal/TerminalServiceFactory.php';
require __DIR__ . '/lib/Service/TestHelpers/TestHelpersServiceFactory.php';
// OAuth // OAuth
require __DIR__ . '/lib/OAuth.php'; require __DIR__ . '/lib/OAuth.php';

View File

@ -22,7 +22,7 @@ namespace Stripe;
* @property \Stripe\StripeObject $company * @property \Stripe\StripeObject $company
* @property \Stripe\StripeObject $controller * @property \Stripe\StripeObject $controller
* @property string $country The account's country. * @property string $country The account's country.
* @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. * @property int $created Time at which the account was connected. Measured in seconds since the Unix epoch.
* @property string $default_currency Three-letter ISO currency code representing the default currency for the account. This must be a currency that <a href="https://stripe.com/docs/payouts">Stripe supports in the account's country</a>. * @property string $default_currency Three-letter ISO currency code representing the default currency for the account. This must be a currency that <a href="https://stripe.com/docs/payouts">Stripe supports in the account's country</a>.
* @property bool $details_submitted Whether account details have been submitted. Standard accounts cannot receive payouts before this is true. * @property bool $details_submitted Whether account details have been submitted. Standard accounts cannot receive payouts before this is true.
* @property null|string $email An email address associated with the account. You can treat this as metadata: it is not used for authentication or messaging account holders. * @property null|string $email An email address associated with the account. You can treat this as metadata: it is not used for authentication or messaging account holders.

View File

@ -0,0 +1,37 @@
<?php
namespace Stripe\ApiOperations;
/**
* Trait for searchable resources.
*
* This trait should only be applied to classes that derive from StripeObject.
*/
trait Search
{
/**
* @param string $searchUrl
* @param null|array $params
* @param null|array|string $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return \Stripe\SearchResult of ApiResources
*/
protected static function _searchResource($searchUrl, $params = null, $opts = null)
{
self::_validateParams($params);
list($response, $opts) = static::_staticRequest('get', $searchUrl, $params, $opts);
$obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
if (!($obj instanceof \Stripe\SearchResult)) {
throw new \Stripe\Exception\UnexpectedValueException(
'Expected type ' . \Stripe\SearchResult::class . ', got "' . \get_class($obj) . '" instead.'
);
}
$obj->setLastResponse($response);
$obj->setFilters($params);
return $obj;
}
}

View File

@ -182,6 +182,30 @@ class BaseStripeClient implements StripeClientInterface, StripeStreamingClientIn
return $obj; return $obj;
} }
/**
* Sends a request to Stripe's API.
*
* @param string $method the HTTP method
* @param string $path the path of the request
* @param array $params the parameters of the request
* @param array|\Stripe\Util\RequestOptions $opts the special modifiers of the request
*
* @return \Stripe\SearchResult of ApiResources
*/
public function requestSearchResult($method, $path, $params, $opts)
{
$obj = $this->request($method, $path, $params, $opts);
if (!($obj instanceof \Stripe\SearchResult)) {
$received_class = \get_class($obj);
$msg = "Expected to receive `Stripe\\SearchResult` object from Stripe API. Instead received `{$received_class}`.";
throw new \Stripe\Exception\UnexpectedValueException($msg);
}
$obj->setFilters($params);
return $obj;
}
/** /**
* @param \Stripe\Util\RequestOptions $opts * @param \Stripe\Util\RequestOptions $opts
* *

View File

@ -11,7 +11,7 @@ namespace Stripe\BillingPortal;
* @property string $id Unique identifier for the object. * @property string $id Unique identifier for the object.
* @property string $object String representing the object's type. Objects of the same type share the same value. * @property string $object String representing the object's type. Objects of the same type share the same value.
* @property bool $active Whether the configuration is active and can be used to create portal sessions. * @property bool $active Whether the configuration is active and can be used to create portal sessions.
* @property null|string $application ID of the Connect Application that created the configuration. * @property null|string|\Stripe\StripeObject $application ID of the Connect Application that created the configuration.
* @property \Stripe\StripeObject $business_profile * @property \Stripe\StripeObject $business_profile
* @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch.
* @property null|string $default_return_url The default URL to redirect customers to when they click on the portal's link to return to your website. This can be <a href="https://stripe.com/docs/api/customer_portal/sessions/create#create_portal_session-return_url">overriden</a> when creating the session. * @property null|string $default_return_url The default URL to redirect customers to when they click on the portal's link to return to your website. This can be <a href="https://stripe.com/docs/api/customer_portal/sessions/create#create_portal_session-return_url">overriden</a> when creating the session.

View File

@ -39,6 +39,7 @@ namespace Stripe;
* @property null|\Stripe\StripeObject $metadata Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that you can attach to an object. This can be useful for storing additional information about the object in a structured format. * @property null|\Stripe\StripeObject $metadata Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
* @property null|string $name Cardholder name. * @property null|string $name Cardholder name.
* @property null|string|\Stripe\Recipient $recipient The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead. * @property null|string|\Stripe\Recipient $recipient The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
* @property null|string $status For external accounts, possible values are <code>new</code> and <code>errored</code>. If a transfer fails, the status is set to <code>errored</code> and transfers are stopped until account details are updated.
* @property null|string $tokenization_method If the card number is tokenized, this is the method that was used. Can be <code>android_pay</code> (includes Google Pay), <code>apple_pay</code>, <code>masterpass</code>, <code>visa_checkout</code>, or null. * @property null|string $tokenization_method If the card number is tokenized, this is the method that was used. Can be <code>android_pay</code> (includes Google Pay), <code>apple_pay</code>, <code>masterpass</code>, <code>visa_checkout</code>, or null.
*/ */
class Card extends ApiResource class Card extends ApiResource

View File

@ -0,0 +1,66 @@
<?php
// File generated from our OpenAPI spec
namespace Stripe;
/**
* A customer's <code>Cash balance</code> represents real funds. Customers can add
* funds to their cash balance by sending a bank transfer. These funds can be used
* for payment and can eventually be paid out to your bank account.
*
* @property string $object String representing the object's type. Objects of the same type share the same value.
* @property null|\Stripe\StripeObject $available A hash of all cash balances available to this customer. You cannot delete a customer with any cash balances, even if the balance is 0.
* @property string $customer The ID of the customer whose cash balance this object represents.
* @property bool $livemode Has the value <code>true</code> if the object exists in live mode or the value <code>false</code> if the object exists in test mode.
* @property \Stripe\StripeObject $settings
*/
class CashBalance extends ApiResource
{
const OBJECT_NAME = 'cash_balance';
/**
* @return string the API URL for this balance transaction
*/
public function instanceUrl()
{
$customer = $this['customer'];
$customer = Util\Util::utf8($customer);
$base = Customer::classUrl();
$customerExtn = \urlencode($customer);
return "{$base}/{$customerExtn}/cash_balance";
}
/**
* @param array|string $_id
* @param null|array|string $_opts
*
* @throws \Stripe\Exception\BadMethodCallException
*/
public static function retrieve($_id, $_opts = null)
{
$msg = 'Customer Cash Balance cannot be retrieved without a ' .
'customer ID. Retrieve a Customer Cash Balance using ' .
"`Customer::retrieveCashBalance('customer_id')`.";
throw new Exception\BadMethodCallException($msg);
}
/**
* @param string $_id
* @param null|array $_params
* @param null|array|string $_options
*
* @throws \Stripe\Exception\BadMethodCallException
*/
public static function update($_id, $_params = null, $_options = null)
{
$msg = 'Customer Cash Balance cannot be updated without a ' .
'customer ID. Retrieve a Customer Cash Balance using ' .
"`Customer::updateCashBalance('customer_id')`.";
throw new Exception\BadMethodCallException($msg);
}
}

View File

@ -32,6 +32,7 @@ namespace Stripe;
* @property null|string|\Stripe\Account $destination ID of an existing, connected Stripe account to transfer funds to if <code>transfer_data</code> was specified in the charge request. * @property null|string|\Stripe\Account $destination ID of an existing, connected Stripe account to transfer funds to if <code>transfer_data</code> was specified in the charge request.
* @property null|string|\Stripe\Dispute $dispute Details about the dispute if the charge has been disputed. * @property null|string|\Stripe\Dispute $dispute Details about the dispute if the charge has been disputed.
* @property bool $disputed Whether the charge has been disputed. * @property bool $disputed Whether the charge has been disputed.
* @property null|string|\Stripe\BalanceTransaction $failure_balance_transaction ID of the balance transaction that describes the reversal of the balance on your account due to payment failure.
* @property null|string $failure_code Error code explaining reason for charge failure if available (see <a href="https://stripe.com/docs/api#errors">the errors section</a> for a list of codes). * @property null|string $failure_code Error code explaining reason for charge failure if available (see <a href="https://stripe.com/docs/api#errors">the errors section</a> for a list of codes).
* @property null|string $failure_message Message to user further explaining reason for charge failure if available. * @property null|string $failure_message Message to user further explaining reason for charge failure if available.
* @property null|\Stripe\StripeObject $fraud_details Information on fraud assessments for the charge. * @property null|\Stripe\StripeObject $fraud_details Information on fraud assessments for the charge.
@ -68,6 +69,7 @@ class Charge extends ApiResource
use ApiOperations\All; use ApiOperations\All;
use ApiOperations\Create; use ApiOperations\Create;
use ApiOperations\Retrieve; use ApiOperations\Retrieve;
use ApiOperations\Search;
use ApiOperations\Update; use ApiOperations\Update;
const STATUS_FAILED = 'failed'; const STATUS_FAILED = 'failed';
@ -143,4 +145,19 @@ class Charge extends ApiResource
return $this; return $this;
} }
/**
* @param null|array $params
* @param null|array|string $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return \Stripe\SearchResult<Charge> the charge search results
*/
public static function search($params = null, $opts = null)
{
$url = '/v1/charges/search';
return self::_searchResource($url, $params, $opts);
}
} }

View File

@ -64,7 +64,7 @@ namespace Stripe\Checkout;
* @property string $success_url The URL the customer will be directed to after the payment or subscription creation is successful. * @property string $success_url The URL the customer will be directed to after the payment or subscription creation is successful.
* @property \Stripe\StripeObject $tax_id_collection * @property \Stripe\StripeObject $tax_id_collection
* @property null|\Stripe\StripeObject $total_details Tax and discount details for the computed total amount. * @property null|\Stripe\StripeObject $total_details Tax and discount details for the computed total amount.
* @property null|string $url The URL to the Checkout Session. * @property null|string $url The URL to the Checkout Session. Redirect customers to this URL to take them to Checkout. If youre using <a href="https://stripe.com/docs/payments/checkout/custom-domains">Custom Domains</a>, the URL will use your subdomain. Otherwise, itll use <code>checkout.stripe.com.</code>
*/ */
class Session extends \Stripe\ApiResource class Session extends \Stripe\ApiResource
{ {

View File

@ -16,6 +16,7 @@ namespace Stripe;
* @property string $object String representing the object's type. Objects of the same type share the same value. * @property string $object String representing the object's type. Objects of the same type share the same value.
* @property null|\Stripe\StripeObject $address The customer's address. * @property null|\Stripe\StripeObject $address The customer's address.
* @property int $balance Current balance, if any, being stored on the customer. If negative, the customer has credit to apply to their next invoice. If positive, the customer has an amount owed that will be added to their next invoice. The balance does not refer to any unpaid invoices; it solely takes into account amounts that have yet to be successfully applied to any invoice. This balance is only taken into account as invoices are finalized. * @property int $balance Current balance, if any, being stored on the customer. If negative, the customer has credit to apply to their next invoice. If positive, the customer has an amount owed that will be added to their next invoice. The balance does not refer to any unpaid invoices; it solely takes into account amounts that have yet to be successfully applied to any invoice. This balance is only taken into account as invoices are finalized.
* @property null|\Stripe\CashBalance $cash_balance The current funds being held by Stripe on behalf of the customer. These funds can be applied towards payment intents with source &quot;cash_balance&quot;.The settings[reconciliation_mode] field describes whether these funds are applied to such payment intents manually or automatically.
* @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch.
* @property null|string $currency Three-letter <a href="https://stripe.com/docs/currencies">ISO code for the currency</a> the customer can be charged in for recurring billing purposes. * @property null|string $currency Three-letter <a href="https://stripe.com/docs/currencies">ISO code for the currency</a> the customer can be charged in for recurring billing purposes.
* @property null|string|\Stripe\Account|\Stripe\AlipayAccount|\Stripe\BankAccount|\Stripe\BitcoinReceiver|\Stripe\Card|\Stripe\Source $default_source <p>ID of the default payment source for the customer.</p><p>If you are using payment methods created via the PaymentMethods API, see the <a href="https://stripe.com/docs/api/customers/object#customer_object-invoice_settings-default_payment_method">invoice_settings.default_payment_method</a> field instead.</p> * @property null|string|\Stripe\Account|\Stripe\AlipayAccount|\Stripe\BankAccount|\Stripe\BitcoinReceiver|\Stripe\Card|\Stripe\Source $default_source <p>ID of the default payment source for the customer.</p><p>If you are using payment methods created via the PaymentMethods API, see the <a href="https://stripe.com/docs/api/customers/object#customer_object-invoice_settings-default_payment_method">invoice_settings.default_payment_method</a> field instead.</p>
@ -37,6 +38,7 @@ namespace Stripe;
* @property \Stripe\StripeObject $tax * @property \Stripe\StripeObject $tax
* @property null|string $tax_exempt Describes the customer's tax exemption status. One of <code>none</code>, <code>exempt</code>, or <code>reverse</code>. When set to <code>reverse</code>, invoice and receipt PDFs include the text <strong>&quot;Reverse charge&quot;</strong>. * @property null|string $tax_exempt Describes the customer's tax exemption status. One of <code>none</code>, <code>exempt</code>, or <code>reverse</code>. When set to <code>reverse</code>, invoice and receipt PDFs include the text <strong>&quot;Reverse charge&quot;</strong>.
* @property \Stripe\Collection<\Stripe\TaxId> $tax_ids The customer's tax IDs. * @property \Stripe\Collection<\Stripe\TaxId> $tax_ids The customer's tax IDs.
* @property null|string|\Stripe\TestHelpers\TestClock $test_clock ID of the test clock this customer belongs to.
*/ */
class Customer extends ApiResource class Customer extends ApiResource
{ {
@ -47,6 +49,7 @@ class Customer extends ApiResource
use ApiOperations\Delete; use ApiOperations\Delete;
use ApiOperations\NestedResource; use ApiOperations\NestedResource;
use ApiOperations\Retrieve; use ApiOperations\Retrieve;
use ApiOperations\Search;
use ApiOperations\Update; use ApiOperations\Update;
const TAX_EXEMPT_EXEMPT = 'exempt'; const TAX_EXEMPT_EXEMPT = 'exempt';
@ -99,6 +102,52 @@ class Customer extends ApiResource
return $obj; return $obj;
} }
/**
* @param null|array $params
* @param null|array|string $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return \Stripe\SearchResult<Customer> the customer search results
*/
public static function search($params = null, $opts = null)
{
$url = '/v1/customers/search';
return self::_searchResource($url, $params, $opts);
}
const PATH_CASH_BALANCE = '/cash_balance';
/**
* @param string $id the ID of the customer to which the cash balance belongs
* @param null|array $params
* @param null|array|string $opts
* @param mixed $cashBalanceId
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return \Stripe\cash_balance
*/
public static function retrieveCashBalance($id, $cashBalanceId, $params = null, $opts = null)
{
return self::_retrieveNestedResource($id, static::PATH_CASH_BALANCE, $params, $opts);
}
/**
* @param string $id the ID of the customer to which the cash balance belongs
* @param null|array $params
* @param null|array|string $opts
* @param mixed $cashBalanceId
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return \Stripe\cash_balance
*/
public static function updateCashBalance($id, $cashBalanceId, $params = null, $opts = null)
{
return self::_updateNestedResource($id, static::PATH_CASH_BALANCE, $params, $opts);
}
const PATH_BALANCE_TRANSACTIONS = '/balance_transactions'; const PATH_BALANCE_TRANSACTIONS = '/balance_transactions';
/** /**

View File

@ -5,17 +5,17 @@ namespace Stripe;
/** /**
* Class Discount. * Class Discount.
* *
* @property string $checkout_session The Checkout session that this coupon is applied to, if it is applied to a particular session in payment mode. Will not be present for subscription mode. * @property null|string $checkout_session The Checkout session that this coupon is applied to, if it is applied to a particular session in payment mode. Will not be present for subscription mode.
* @property \Stripe\Coupon $coupon Hash describing the coupon applied to create this discount. * @property \Stripe\Coupon $coupon Hash describing the coupon applied to create this discount.
* @property string|\Stripe\Customer $customer The ID of the customer associated with this discount. * @property string|\Stripe\Customer $customer The ID of the customer associated with this discount.
* @property int $end If the coupon has a duration of repeating, the date that this discount will end. If the coupon has a duration of once or forever, this attribute will be null. * @property null|int $end If the coupon has a duration of repeating, the date that this discount will end. If the coupon has a duration of once or forever, this attribute will be null.
* @property string $id The ID of the discount object. * @property string $id The ID of the discount object.
* @property string $invoice The invoice that the discounts coupon was applied to, if it was applied directly to a particular invoice. * @property null|string $invoice The invoice that the discounts coupon was applied to, if it was applied directly to a particular invoice.
* @property string $invoice_item The invoice item id (or invoice line item id for invoice line items of type=subscription) that the discounts coupon was applied to, if it was applied directly to a particular invoice item or invoice line item. * @property null|string $invoice_item The invoice item id (or invoice line item id for invoice line items of type=subscription) that the discounts coupon was applied to, if it was applied directly to a particular invoice item or invoice line item.
* @property string $object String representing the objects type. Objects of the same type share the same value. * @property string $object String representing the objects type. Objects of the same type share the same value.
* @property string $promotion_code The promotion code applied to create this discount. * @property null|string $promotion_code The promotion code applied to create this discount.
* @property int $start Date that the coupon was applied. * @property int $start Date that the coupon was applied.
* @property string $subscription The subscription that this coupon is applied to, if it is applied to a particular subscription. * @property null|string $subscription The subscription that this coupon is applied to, if it is applied to a particular subscription.
*/ */
class Discount extends StripeObject class Discount extends StripeObject
{ {

View File

@ -39,6 +39,9 @@ namespace Stripe;
* href="https://stripe.com/docs/api#retrieve_event">Retrieve Event API</a> is * href="https://stripe.com/docs/api#retrieve_event">Retrieve Event API</a> is
* guaranteed only for 30 days. * guaranteed only for 30 days.
* *
* This class includes constants for the possible string representations of
* event types. See https://stripe.com/docs/api#event_types for more details.
*
* @property string $id Unique identifier for the object. * @property string $id Unique identifier for the object.
* @property string $object String representing the object's type. Objects of the same type share the same value. * @property string $object String representing the object's type. Objects of the same type share the same value.
* @property string $account The connected account that originated the event. * @property string $account The connected account that originated the event.
@ -57,40 +60,37 @@ class Event extends ApiResource
use ApiOperations\All; use ApiOperations\All;
use ApiOperations\Retrieve; use ApiOperations\Retrieve;
/**
* Possible string representations of event types.
*
* @see https://stripe.com/docs/api#event_types
*/
const ACCOUNT_UPDATED = 'account.updated';
const ACCOUNT_APPLICATION_AUTHORIZED = 'account.application.authorized'; const ACCOUNT_APPLICATION_AUTHORIZED = 'account.application.authorized';
const ACCOUNT_APPLICATION_DEAUTHORIZED = 'account.application.deauthorized'; const ACCOUNT_APPLICATION_DEAUTHORIZED = 'account.application.deauthorized';
const ACCOUNT_EXTERNAL_ACCOUNT_CREATED = 'account.external_account.created'; const ACCOUNT_EXTERNAL_ACCOUNT_CREATED = 'account.external_account.created';
const ACCOUNT_EXTERNAL_ACCOUNT_DELETED = 'account.external_account.deleted'; const ACCOUNT_EXTERNAL_ACCOUNT_DELETED = 'account.external_account.deleted';
const ACCOUNT_EXTERNAL_ACCOUNT_UPDATED = 'account.external_account.updated'; const ACCOUNT_EXTERNAL_ACCOUNT_UPDATED = 'account.external_account.updated';
const ACCOUNT_UPDATED = 'account.updated';
const APPLICATION_FEE_CREATED = 'application_fee.created'; const APPLICATION_FEE_CREATED = 'application_fee.created';
const APPLICATION_FEE_REFUNDED = 'application_fee.refunded';
const APPLICATION_FEE_REFUND_UPDATED = 'application_fee.refund.updated'; const APPLICATION_FEE_REFUND_UPDATED = 'application_fee.refund.updated';
const APPLICATION_FEE_REFUNDED = 'application_fee.refunded';
const BALANCE_AVAILABLE = 'balance.available'; const BALANCE_AVAILABLE = 'balance.available';
const BILLING_PORTAL_CONFIGURATION_CREATED = 'billing_portal.configuration.created'; const BILLING_PORTAL_CONFIGURATION_CREATED = 'billing_portal.configuration.created';
const BILLING_PORTAL_CONFIGURATION_UPDATED = 'billing_portal.configuration.updated'; const BILLING_PORTAL_CONFIGURATION_UPDATED = 'billing_portal.configuration.updated';
const CAPABILITY_UPDATED = 'capability.updated'; const CAPABILITY_UPDATED = 'capability.updated';
const CASH_BALANCE_FUNDS_AVAILABLE = 'cash_balance.funds_available';
const CHARGE_CAPTURED = 'charge.captured'; const CHARGE_CAPTURED = 'charge.captured';
const CHARGE_EXPIRED = 'charge.expired';
const CHARGE_FAILED = 'charge.failed';
const CHARGE_PENDING = 'charge.pending';
const CHARGE_REFUNDED = 'charge.refunded';
const CHARGE_SUCCEEDED = 'charge.succeeded';
const CHARGE_UPDATED = 'charge.updated';
const CHARGE_DISPUTE_CLOSED = 'charge.dispute.closed'; const CHARGE_DISPUTE_CLOSED = 'charge.dispute.closed';
const CHARGE_DISPUTE_CREATED = 'charge.dispute.created'; const CHARGE_DISPUTE_CREATED = 'charge.dispute.created';
const CHARGE_DISPUTE_FUNDS_REINSTATED = 'charge.dispute.funds_reinstated'; const CHARGE_DISPUTE_FUNDS_REINSTATED = 'charge.dispute.funds_reinstated';
const CHARGE_DISPUTE_FUNDS_WITHDRAWN = 'charge.dispute.funds_withdrawn'; const CHARGE_DISPUTE_FUNDS_WITHDRAWN = 'charge.dispute.funds_withdrawn';
const CHARGE_DISPUTE_UPDATED = 'charge.dispute.updated'; const CHARGE_DISPUTE_UPDATED = 'charge.dispute.updated';
const CHARGE_EXPIRED = 'charge.expired';
const CHARGE_FAILED = 'charge.failed';
const CHARGE_PENDING = 'charge.pending';
const CHARGE_REFUND_UPDATED = 'charge.refund.updated'; const CHARGE_REFUND_UPDATED = 'charge.refund.updated';
const CHARGE_REFUNDED = 'charge.refunded';
const CHARGE_SUCCEEDED = 'charge.succeeded';
const CHARGE_UPDATED = 'charge.updated';
const CHECKOUT_SESSION_ASYNC_PAYMENT_FAILED = 'checkout.session.async_payment_failed'; const CHECKOUT_SESSION_ASYNC_PAYMENT_FAILED = 'checkout.session.async_payment_failed';
const CHECKOUT_SESSION_ASYNC_PAYMENT_SUCCEEDED = 'checkout.session.async_payment_succeeded'; const CHECKOUT_SESSION_ASYNC_PAYMENT_SUCCEEDED = 'checkout.session.async_payment_succeeded';
const CHECKOUT_SESSION_COMPLETED = 'checkout.session.completed'; const CHECKOUT_SESSION_COMPLETED = 'checkout.session.completed';
const CHECKOUT_SESSION_EXPIRED = 'checkout.session.expired';
const COUPON_CREATED = 'coupon.created'; const COUPON_CREATED = 'coupon.created';
const COUPON_DELETED = 'coupon.deleted'; const COUPON_DELETED = 'coupon.deleted';
const COUPON_UPDATED = 'coupon.updated'; const COUPON_UPDATED = 'coupon.updated';
@ -99,7 +99,6 @@ class Event extends ApiResource
const CREDIT_NOTE_VOIDED = 'credit_note.voided'; const CREDIT_NOTE_VOIDED = 'credit_note.voided';
const CUSTOMER_CREATED = 'customer.created'; const CUSTOMER_CREATED = 'customer.created';
const CUSTOMER_DELETED = 'customer.deleted'; const CUSTOMER_DELETED = 'customer.deleted';
const CUSTOMER_UPDATED = 'customer.updated';
const CUSTOMER_DISCOUNT_CREATED = 'customer.discount.created'; const CUSTOMER_DISCOUNT_CREATED = 'customer.discount.created';
const CUSTOMER_DISCOUNT_DELETED = 'customer.discount.deleted'; const CUSTOMER_DISCOUNT_DELETED = 'customer.discount.deleted';
const CUSTOMER_DISCOUNT_UPDATED = 'customer.discount.updated'; const CUSTOMER_DISCOUNT_UPDATED = 'customer.discount.updated';
@ -116,6 +115,7 @@ class Event extends ApiResource
const CUSTOMER_TAX_ID_CREATED = 'customer.tax_id.created'; const CUSTOMER_TAX_ID_CREATED = 'customer.tax_id.created';
const CUSTOMER_TAX_ID_DELETED = 'customer.tax_id.deleted'; const CUSTOMER_TAX_ID_DELETED = 'customer.tax_id.deleted';
const CUSTOMER_TAX_ID_UPDATED = 'customer.tax_id.updated'; const CUSTOMER_TAX_ID_UPDATED = 'customer.tax_id.updated';
const CUSTOMER_UPDATED = 'customer.updated';
const FILE_CREATED = 'file.created'; const FILE_CREATED = 'file.created';
const IDENTITY_VERIFICATION_SESSION_CANCELED = 'identity.verification_session.canceled'; const IDENTITY_VERIFICATION_SESSION_CANCELED = 'identity.verification_session.canceled';
const IDENTITY_VERIFICATION_SESSION_CREATED = 'identity.verification_session.created'; const IDENTITY_VERIFICATION_SESSION_CREATED = 'identity.verification_session.created';
@ -163,10 +163,13 @@ class Event extends ApiResource
const PAYMENT_INTENT_AMOUNT_CAPTURABLE_UPDATED = 'payment_intent.amount_capturable_updated'; const PAYMENT_INTENT_AMOUNT_CAPTURABLE_UPDATED = 'payment_intent.amount_capturable_updated';
const PAYMENT_INTENT_CANCELED = 'payment_intent.canceled'; const PAYMENT_INTENT_CANCELED = 'payment_intent.canceled';
const PAYMENT_INTENT_CREATED = 'payment_intent.created'; const PAYMENT_INTENT_CREATED = 'payment_intent.created';
const PAYMENT_INTENT_PARTIALLY_FUNDED = 'payment_intent.partially_funded';
const PAYMENT_INTENT_PAYMENT_FAILED = 'payment_intent.payment_failed'; const PAYMENT_INTENT_PAYMENT_FAILED = 'payment_intent.payment_failed';
const PAYMENT_INTENT_PROCESSING = 'payment_intent.processing'; const PAYMENT_INTENT_PROCESSING = 'payment_intent.processing';
const PAYMENT_INTENT_REQUIRES_ACTION = 'payment_intent.requires_action'; const PAYMENT_INTENT_REQUIRES_ACTION = 'payment_intent.requires_action';
const PAYMENT_INTENT_SUCCEEDED = 'payment_intent.succeeded'; const PAYMENT_INTENT_SUCCEEDED = 'payment_intent.succeeded';
const PAYMENT_LINK_CREATED = 'payment_link.created';
const PAYMENT_LINK_UPDATED = 'payment_link.updated';
const PAYMENT_METHOD_ATTACHED = 'payment_method.attached'; const PAYMENT_METHOD_ATTACHED = 'payment_method.attached';
const PAYMENT_METHOD_AUTOMATICALLY_UPDATED = 'payment_method.automatically_updated'; const PAYMENT_METHOD_AUTOMATICALLY_UPDATED = 'payment_method.automatically_updated';
const PAYMENT_METHOD_CARD_AUTOMATICALLY_UPDATED = 'payment_method.card_automatically_updated'; const PAYMENT_METHOD_CARD_AUTOMATICALLY_UPDATED = 'payment_method.card_automatically_updated';
@ -193,6 +196,10 @@ class Event extends ApiResource
const PROMOTION_CODE_CREATED = 'promotion_code.created'; const PROMOTION_CODE_CREATED = 'promotion_code.created';
const PROMOTION_CODE_DELETED = 'promotion_code.deleted'; const PROMOTION_CODE_DELETED = 'promotion_code.deleted';
const PROMOTION_CODE_UPDATED = 'promotion_code.updated'; const PROMOTION_CODE_UPDATED = 'promotion_code.updated';
const QUOTE_ACCEPTED = 'quote.accepted';
const QUOTE_CANCELED = 'quote.canceled';
const QUOTE_CREATED = 'quote.created';
const QUOTE_FINALIZED = 'quote.finalized';
const RADAR_EARLY_FRAUD_WARNING_CREATED = 'radar.early_fraud_warning.created'; const RADAR_EARLY_FRAUD_WARNING_CREATED = 'radar.early_fraud_warning.created';
const RADAR_EARLY_FRAUD_WARNING_UPDATED = 'radar.early_fraud_warning.updated'; const RADAR_EARLY_FRAUD_WARNING_UPDATED = 'radar.early_fraud_warning.updated';
const RECIPIENT_CREATED = 'recipient.created'; const RECIPIENT_CREATED = 'recipient.created';
@ -228,12 +235,21 @@ class Event extends ApiResource
const SUBSCRIPTION_SCHEDULE_UPDATED = 'subscription_schedule.updated'; const SUBSCRIPTION_SCHEDULE_UPDATED = 'subscription_schedule.updated';
const TAX_RATE_CREATED = 'tax_rate.created'; const TAX_RATE_CREATED = 'tax_rate.created';
const TAX_RATE_UPDATED = 'tax_rate.updated'; const TAX_RATE_UPDATED = 'tax_rate.updated';
const TERMINAL_READER_ACTION_FAILED = 'terminal.reader.action_failed';
const TERMINAL_READER_ACTION_SUCCEEDED = 'terminal.reader.action_succeeded';
const TEST_HELPERS_TEST_CLOCK_ADVANCING = 'test_helpers.test_clock.advancing';
const TEST_HELPERS_TEST_CLOCK_CREATED = 'test_helpers.test_clock.created';
const TEST_HELPERS_TEST_CLOCK_DELETED = 'test_helpers.test_clock.deleted';
const TEST_HELPERS_TEST_CLOCK_INTERNAL_FAILURE = 'test_helpers.test_clock.internal_failure';
const TEST_HELPERS_TEST_CLOCK_READY = 'test_helpers.test_clock.ready';
const TOPUP_CANCELED = 'topup.canceled'; const TOPUP_CANCELED = 'topup.canceled';
const TOPUP_CREATED = 'topup.created'; const TOPUP_CREATED = 'topup.created';
const TOPUP_FAILED = 'topup.failed'; const TOPUP_FAILED = 'topup.failed';
const TOPUP_REVERSED = 'topup.reversed'; const TOPUP_REVERSED = 'topup.reversed';
const TOPUP_SUCCEEDED = 'topup.succeeded'; const TOPUP_SUCCEEDED = 'topup.succeeded';
const TRANSFER_CREATED = 'transfer.created'; const TRANSFER_CREATED = 'transfer.created';
const TRANSFER_FAILED = 'transfer.failed';
const TRANSFER_PAID = 'transfer.paid';
const TRANSFER_REVERSED = 'transfer.reversed'; const TRANSFER_REVERSED = 'transfer.reversed';
const TRANSFER_UPDATED = 'transfer.updated'; const TRANSFER_UPDATED = 'transfer.updated';
} }

View File

@ -0,0 +1,84 @@
<?php
// File generated from our OpenAPI spec
namespace Stripe\FinancialConnections;
/**
* A Financial Connections Account represents an account that exists outside of
* Stripe, to which you have been granted some degree of access.
*
* @property string $id Unique identifier for the object.
* @property string $object String representing the object's type. Objects of the same type share the same value.
* @property null|\Stripe\StripeObject $account_holder The account holder that this account belongs to.
* @property null|\Stripe\StripeObject $balance The most recent information about the account's balance.
* @property null|\Stripe\StripeObject $balance_refresh The state of the most recent attempt to refresh the account balance.
* @property string $category The type of the account. Account category is further divided in <code>subcategory</code>.
* @property int $created Time at which the object was created. Measured in seconds since the Unix epoch.
* @property null|string $display_name A human-readable name that has been assigned to this account, either by the account holder or by the institution.
* @property string $institution_name The name of the institution that holds this account.
* @property null|string $last4 The last 4 digits of the account number. If present, this will be 4 numeric characters.
* @property bool $livemode Has the value <code>true</code> if the object exists in live mode or the value <code>false</code> if the object exists in test mode.
* @property null|string|\Stripe\FinancialConnections\AccountOwnership $ownership The most recent information about the account's owners.
* @property null|\Stripe\StripeObject $ownership_refresh The state of the most recent attempt to refresh the account owners.
* @property null|string[] $permissions The list of permissions granted by this account.
* @property string $status The status of the link to the account.
* @property string $subcategory <p>If <code>category</code> is <code>cash</code>, one of:</p><p>- <code>checking</code> - <code>savings</code> - <code>other</code></p><p>If <code>category</code> is <code>credit</code>, one of:</p><p>- <code>mortgage</code> - <code>line_of_credit</code> - <code>credit_card</code> - <code>other</code></p><p>If <code>category</code> is <code>investment</code> or <code>other</code>, this will be <code>other</code>.</p>
* @property string[] $supported_payment_method_types The <a href="https://stripe.com/docs/api/payment_methods/object#payment_method_object-type">PaymentMethod type</a>(s) that can be created from this account.
*/
class Account extends \Stripe\ApiResource
{
const OBJECT_NAME = 'financial_connections.account';
use \Stripe\ApiOperations\Retrieve;
const CATEGORY_CASH = 'cash';
const CATEGORY_CREDIT = 'credit';
const CATEGORY_INVESTMENT = 'investment';
const CATEGORY_OTHER = 'other';
const STATUS_ACTIVE = 'active';
const STATUS_DISCONNECTED = 'disconnected';
const STATUS_INACTIVE = 'inactive';
const SUBCATEGORY_CHECKING = 'checking';
const SUBCATEGORY_CREDIT_CARD = 'credit_card';
const SUBCATEGORY_LINE_OF_CREDIT = 'line_of_credit';
const SUBCATEGORY_MORTGAGE = 'mortgage';
const SUBCATEGORY_OTHER = 'other';
const SUBCATEGORY_SAVINGS = 'savings';
/**
* @param null|array $params
* @param null|array|string $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return \Stripe\FinancialConnections\Account the disconnected account
*/
public function disconnect($params = null, $opts = null)
{
$url = $this->instanceUrl() . '/disconnect';
list($response, $opts) = $this->_request('post', $url, $params, $opts);
$this->refreshFrom($response, $opts);
return $this;
}
/**
* @param null|array $params
* @param null|array|string $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return \Stripe\FinancialConnections\Account the refreshed account
*/
public function refresh($params = null, $opts = null)
{
$url = $this->instanceUrl() . '/refresh';
list($response, $opts) = $this->_request('post', $url, $params, $opts);
$this->refreshFrom($response, $opts);
return $this;
}
}

View File

@ -0,0 +1,20 @@
<?php
// File generated from our OpenAPI spec
namespace Stripe\FinancialConnections;
/**
* @property string $id Unique identifier for the object.
* @property string $object String representing the object's type. Objects of the same type share the same value.
* @property null|string $email The email address of the owner.
* @property string $name The full name of the owner.
* @property string $ownership The ownership object that this owner belongs to.
* @property null|string $phone The raw phone number of the owner.
* @property null|string $raw_address The raw physical address of the owner.
* @property null|int $refreshed_at The timestamp of the refresh that updated this owner.
*/
class AccountOwner extends \Stripe\ApiResource
{
const OBJECT_NAME = 'financial_connections.account_owner';
}

View File

@ -0,0 +1,18 @@
<?php
// File generated from our OpenAPI spec
namespace Stripe\FinancialConnections;
/**
* Describes a snapshot of the owners of an account at a particular point in time.
*
* @property string $id Unique identifier for the object.
* @property string $object String representing the object's type. Objects of the same type share the same value.
* @property int $created Time at which the object was created. Measured in seconds since the Unix epoch.
* @property \Stripe\Collection<\Stripe\FinancialConnections\AccountOwner> $owners A paginated list of owners for this account.
*/
class AccountOwnership extends \Stripe\ApiResource
{
const OBJECT_NAME = 'financial_connections.account_ownership';
}

View File

@ -0,0 +1,27 @@
<?php
// File generated from our OpenAPI spec
namespace Stripe\FinancialConnections;
/**
* A Financial Connections Session is the secure way to programmatically launch the
* client-side Stripe.js modal that lets your users link their accounts.
*
* @property string $id Unique identifier for the object.
* @property string $object String representing the object's type. Objects of the same type share the same value.
* @property null|\Stripe\StripeObject $account_holder The account holder for whom accounts are collected in this session.
* @property \Stripe\Collection<\Stripe\FinancialConnections\Account> $accounts The accounts that were collected as part of this Session.
* @property string $client_secret A value that will be passed to the client to launch the authentication flow.
* @property \Stripe\StripeObject $filters
* @property bool $livemode Has the value <code>true</code> if the object exists in live mode or the value <code>false</code> if the object exists in test mode.
* @property string[] $permissions Permissions requested for accounts collected during this session.
* @property string $return_url For webview integrations only. Upon completing OAuth login in the native browser, the user will be redirected to this URL to return to your app.
*/
class Session extends \Stripe\ApiResource
{
const OBJECT_NAME = 'financial_connections.session';
use \Stripe\ApiOperations\Create;
use \Stripe\ApiOperations\Retrieve;
}

View File

@ -0,0 +1,28 @@
<?php
// File generated from our OpenAPI spec
namespace Stripe;
/**
* Each customer has a <a
* href="https://stripe.com/docs/api/customers/object#customer_object-balance"><code>balance</code></a>
* that is automatically applied to future invoices and payments using the
* <code>customer_balance</code> payment method. Customers can fund this balance by
* initiating a bank transfer to any account in the
* <code>financial_addresses</code> field. Related guide: <a
* href="https://stripe.com/docs/payments/customer-balance/funding-instructions">Customer
* Balance - Funding Instructions</a> to learn more.
*
* @property string $object String representing the object's type. Objects of the same type share the same value.
* @property \Stripe\StripeObject $bank_transfer
* @property string $currency Three-letter <a href="https://www.iso.org/iso-4217-currency-codes.html">ISO currency code</a>, in lowercase. Must be a <a href="https://stripe.com/docs/currencies">supported currency</a>.
* @property string $funding_type The <code>funding_type</code> of the returned instructions
* @property bool $livemode Has the value <code>true</code> if the object exists in live mode or the value <code>false</code> if the object exists in test mode.
*/
class FundingInstructions extends ApiResource
{
const OBJECT_NAME = 'funding_instructions';
const FUNDING_TYPE_BANK_TRANSFER = 'bank_transfer';
}

View File

@ -271,9 +271,14 @@ class CurlClient implements ClientInterface, StreamingClientInterface
$opts[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2TLS; $opts[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2TLS;
} }
// Stripe's API servers are only accessible over IPv4. Force IPv4 resolving to avoid // If the user didn't explicitly specify a CURLOPT_IPRESOLVE option, we
// potential issues (cf. https://github.com/stripe/stripe-php/issues/1045). // force IPv4 resolving as Stripe's API servers are only accessible over
$opts[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V4; // IPv4 (see. https://github.com/stripe/stripe-php/issues/1045).
// We let users specify a custom option in case they need to say proxy
// through an IPv6 proxy.
if (!isset($opts[\CURLOPT_IPRESOLVE])) {
$opts[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V4;
}
return [$opts, $absUrl]; return [$opts, $absUrl];
} }

View File

@ -49,6 +49,7 @@ namespace Stripe;
* @property int $amount_due Final amount due at this time for this invoice. If the invoice's total is smaller than the minimum charge amount, for example, or if there is account credit that can be applied to the invoice, the <code>amount_due</code> may be 0. If there is a positive <code>starting_balance</code> for the invoice (the customer owes money), the <code>amount_due</code> will also take that into account. The charge that gets generated for the invoice will be for the amount specified in <code>amount_due</code>. * @property int $amount_due Final amount due at this time for this invoice. If the invoice's total is smaller than the minimum charge amount, for example, or if there is account credit that can be applied to the invoice, the <code>amount_due</code> may be 0. If there is a positive <code>starting_balance</code> for the invoice (the customer owes money), the <code>amount_due</code> will also take that into account. The charge that gets generated for the invoice will be for the amount specified in <code>amount_due</code>.
* @property int $amount_paid The amount, in %s, that was paid. * @property int $amount_paid The amount, in %s, that was paid.
* @property int $amount_remaining The amount remaining, in %s, that is due. * @property int $amount_remaining The amount remaining, in %s, that is due.
* @property null|string|\Stripe\StripeObject $application ID of the Connect Application that created the invoice.
* @property null|int $application_fee_amount The fee in %s that will be applied to the invoice and transferred to the application owner's Stripe account when the invoice is paid. * @property null|int $application_fee_amount The fee in %s that will be applied to the invoice and transferred to the application owner's Stripe account when the invoice is paid.
* @property int $attempt_count Number of payment attempts made for this invoice, from the perspective of the payment retry schedule. Any payment attempt counts as the first attempt, and subsequently only automatic retries increment the attempt count. In other words, manual payment attempts after the first attempt do not affect the retry schedule. * @property int $attempt_count Number of payment attempts made for this invoice, from the perspective of the payment retry schedule. Any payment attempt counts as the first attempt, and subsequently only automatic retries increment the attempt count. In other words, manual payment attempts after the first attempt do not affect the retry schedule.
* @property bool $attempted Whether an attempt has been made to pay the invoice. An invoice is not attempted until 1 hour after the <code>invoice.created</code> webhook, for example, so you might not want to display that invoice as unpaid to your users. * @property bool $attempted Whether an attempt has been made to pay the invoice. An invoice is not attempted until 1 hour after the <code>invoice.created</code> webhook, for example, so you might not want to display that invoice as unpaid to your users.
@ -104,6 +105,7 @@ namespace Stripe;
* @property int $subscription_proration_date Only set for upcoming invoices that preview prorations. The time used to calculate prorations. * @property int $subscription_proration_date Only set for upcoming invoices that preview prorations. The time used to calculate prorations.
* @property int $subtotal Total of all subscriptions, invoice items, and prorations on the invoice before any invoice level discount or tax is applied. Item discounts are already incorporated * @property int $subtotal Total of all subscriptions, invoice items, and prorations on the invoice before any invoice level discount or tax is applied. Item discounts are already incorporated
* @property null|int $tax The amount of tax on this invoice. This is the sum of all the tax amounts on this invoice. * @property null|int $tax The amount of tax on this invoice. This is the sum of all the tax amounts on this invoice.
* @property null|string|\Stripe\TestHelpers\TestClock $test_clock ID of the test clock this invoice belongs to.
* @property \Stripe\StripeObject $threshold_reason * @property \Stripe\StripeObject $threshold_reason
* @property int $total Total after discounts and taxes. * @property int $total Total after discounts and taxes.
* @property null|\Stripe\StripeObject[] $total_discount_amounts The aggregate amounts calculated per discount across all line items. * @property null|\Stripe\StripeObject[] $total_discount_amounts The aggregate amounts calculated per discount across all line items.
@ -118,6 +120,7 @@ class Invoice extends ApiResource
use ApiOperations\Create; use ApiOperations\Create;
use ApiOperations\Delete; use ApiOperations\Delete;
use ApiOperations\Retrieve; use ApiOperations\Retrieve;
use ApiOperations\Search;
use ApiOperations\Update; use ApiOperations\Update;
const BILLING_CHARGE_AUTOMATICALLY = 'charge_automatically'; const BILLING_CHARGE_AUTOMATICALLY = 'charge_automatically';
@ -262,4 +265,19 @@ class Invoice extends ApiResource
return $this; return $this;
} }
/**
* @param null|array $params
* @param null|array|string $opts
*
* @throws \Stripe\Exception\ApiErrorException if the request fails
*
* @return \Stripe\SearchResult<Invoice> the invoice search results
*/
public static function search($params = null, $opts = null)
{
$url = '/v1/invoices/search';
return self::_searchResource($url, $params, $opts);
}
} }

View File

@ -34,6 +34,7 @@ namespace Stripe;
* @property null|string|\Stripe\Subscription $subscription The subscription that this invoice item has been created for, if any. * @property null|string|\Stripe\Subscription $subscription The subscription that this invoice item has been created for, if any.
* @property string $subscription_item The subscription item that this invoice item has been created for, if any. * @property string $subscription_item The subscription item that this invoice item has been created for, if any.
* @property null|\Stripe\TaxRate[] $tax_rates The tax rates which apply to the invoice item. When set, the <code>default_tax_rates</code> on the invoice do not apply to this invoice item. * @property null|\Stripe\TaxRate[] $tax_rates The tax rates which apply to the invoice item. When set, the <code>default_tax_rates</code> on the invoice do not apply to this invoice item.
* @property null|string|\Stripe\TestHelpers\TestClock $test_clock ID of the test clock this invoice item belongs to.
* @property null|int $unit_amount Unit amount (in the <code>currency</code> specified) of the invoice item. * @property null|int $unit_amount Unit amount (in the <code>currency</code> specified) of the invoice item.
* @property null|string $unit_amount_decimal Same as <code>unit_amount</code>, but contains a decimal value with at most 12 decimal places. * @property null|string $unit_amount_decimal Same as <code>unit_amount</code>, but contains a decimal value with at most 12 decimal places.
*/ */

View File

@ -20,6 +20,7 @@ namespace Stripe;
* @property null|\Stripe\Plan $plan The plan of the subscription, if the line item is a subscription or a proration. * @property null|\Stripe\Plan $plan The plan of the subscription, if the line item is a subscription or a proration.
* @property null|\Stripe\Price $price The price of the line item. * @property null|\Stripe\Price $price The price of the line item.
* @property bool $proration Whether this is a proration. * @property bool $proration Whether this is a proration.
* @property null|\Stripe\StripeObject $proration_details Additional details for proration line items
* @property null|int $quantity The quantity of the subscription, if the line item is a subscription or a proration. * @property null|int $quantity The quantity of the subscription, if the line item is a subscription or a proration.
* @property null|string $subscription The subscription that the invoice item pertains to, if any. * @property null|string $subscription The subscription that the invoice item pertains to, if any.
* @property string $subscription_item The subscription item that generated this invoice item. Left empty if the line item is not an explicit result of a subscription. * @property string $subscription_item The subscription item that generated this invoice item. Left empty if the line item is not an explicit result of a subscription.

Some files were not shown because too many files have changed in this diff Show More