Compare commits

...

4 Commits

Author SHA1 Message Date
Andreas Palm
99e40b0f1c Remove more of Hubspot and Google Ads 2024-10-28 10:48:39 +01:00
Andreas Palm
44b8dc0fe0 Remove Google Cloud Print 2024-10-28 10:46:22 +01:00
Andreas Palm
57e79d442c Remove Ioncube and License stuff 2024-10-28 10:14:32 +01:00
Andreas Palm
d155c99bfc Rebuild missing composer.json, thx to @Creativeloper 2024-10-28 09:47:43 +01:00
80 changed files with 11011 additions and 5215 deletions

View File

@ -44,14 +44,6 @@ class Bootstrap
/** @var LegacyApplication $app */
$app = $container->get('LegacyApplication');
if (!class_exists('License')) {
$test = dirname(__DIR__, 3) . '/phpwf/plugins/class.license.php';
$file = new SplFileInfo($test);
if ($file->isFile()) {
include $test;
}
}
return new EnvironmentConfigProvider(new License(), $app->Conf);
return new EnvironmentConfigProvider($app->Conf);
}
}

View File

@ -34,11 +34,6 @@ final class EnvironmentConfig
*/
private $userdataDirectoryPath;
/**
* @var array|null $ioncubeSystemInformation
*/
private $ioncubeSystemInformation;
/**
* @param string $databaseHost
* @param string $databaseName
@ -46,7 +41,6 @@ final class EnvironmentConfig
* @param string $databasePassword
* @param int $databasePort
* @param string $userdataDirectoryPath
* @param array $ioncubeSystemInformation
*/
public function __construct(
string $databaseHost,
@ -54,8 +48,7 @@ final class EnvironmentConfig
string $databaseUser,
string $databasePassword,
int $databasePort,
string $userdataDirectoryPath,
?array $ioncubeSystemInformation
string $userdataDirectoryPath
) {
$this->databaseHost = $databaseHost;
$this->databaseName = $databaseName;
@ -63,7 +56,6 @@ final class EnvironmentConfig
$this->databasePassword = $databasePassword;
$this->databasePort = $databasePort;
$this->userdataDirectoryPath = $userdataDirectoryPath;
$this->ioncubeSystemInformation = $ioncubeSystemInformation;
}
/**
@ -113,121 +105,4 @@ final class EnvironmentConfig
{
return $this->userdataDirectoryPath;
}
/**
* @return ?array
*/
public function getIoncubeSystemInformation(): ?array
{
return $this->ioncubeSystemInformation;
}
/**
* @return bool
*/
public function isSystemHostedOnCloud(): bool
{
return !empty($this->ioncubeSystemInformation['iscloud']['value']);
}
/**
* @return bool
*/
public function isSystemFlaggedAsDevelopmentVersion(): bool
{
return !empty($this->ioncubeSystemInformation['isdevelopmentversion']['value']);
}
/**
* @return bool
*/
public function isSystemFlaggedAsTestVersion(): bool
{
return !empty($this->ioncubeSystemInformation['testlizenz']['value']);
}
/**
* @return int
*/
public function getMaxUser(): int
{
if (!isset($this->ioncubeSystemInformation['maxuser']['value'])) {
return 0;
}
return (int)$this->ioncubeSystemInformation['maxuser']['value'];
}
/**
* @return int
*/
public function getMaxLightUser(): int
{
if (!isset($this->ioncubeSystemInformation['maxlightuser']['value'])) {
return 0;
}
return (int)$this->ioncubeSystemInformation['maxlightuser']['value'];
}
/**
* @return int|null
*/
public function getExpirationTimeStamp(): ?int
{
if (!isset($this->ioncubeSystemInformation['expdate']['value'])) {
return 0;
}
return (int)$this->ioncubeSystemInformation['expdate']['value'];
}
/**
* @param string $name
*
* @return string|null
*/
public function getValueOfSpecificIoncubeSystemInformation(string $name): ?string
{
if ($this->ioncubeSystemInformation === null) {
return null;
}
if (array_key_exists($name, $this->ioncubeSystemInformation)) {
return $this->ioncubeSystemInformation[$name]['value'];
}
return null;
}
/**
* @return array
*/
public function getSystemFallbackEmailAddresses(): array
{
$emailAddresses = [];
$mailAddressSelfBuyCustomer = (string)$this->getValueOfSpecificIoncubeSystemInformation('buyemail');
if ($mailAddressSelfBuyCustomer !== '') {
$emailAddresses[] = $mailAddressSelfBuyCustomer;
}
$mailAddressCustomerLicence = (string)$this->getValueOfSpecificIoncubeSystemInformation('emaillicence');
if ($mailAddressCustomerLicence !== ''
&& strpos($mailAddressCustomerLicence, '@') !== false
&& strpos($mailAddressCustomerLicence, '@xentral.com') === false
&& strpos($mailAddressCustomerLicence, '@xentral.biz') === false) {
$emailAddresses[] = $mailAddressCustomerLicence;
}
//in old licences email-address of customer can be insert in name instead email
$nameCustomerLicence = (string)$this->getValueOfSpecificIoncubeSystemInformation('namelicence');
if ($nameCustomerLicence !== ''
&& strpos($nameCustomerLicence, '@') !== false
&& strpos($nameCustomerLicence, '@xentral.com') === false
&& strpos($nameCustomerLicence, '@xentral.biz') === false) {
$emailAddresses[] = $nameCustomerLicence;
}
return $emailAddresses;
}
}

View File

@ -7,19 +7,14 @@ use License;
final class EnvironmentConfigProvider
{
/** @var License $license */
private $license;
/** @var Config $config */
private $config;
/**
* @param License $license
* @param Config $config
*/
public function __construct(License $license, Config $config)
public function __construct(Config $config)
{
$this->license = $license;
$this->config = $config;
}
@ -30,8 +25,7 @@ final class EnvironmentConfigProvider
{
$environmentConfig = new EnvironmentConfig(
$this->config->WFdbhost, $this->config->WFdbname, $this->config->WFdbuser,
$this->config->WFdbpass, $this->config->WFdbport, $this->config->WFuserdata,
(array)$this->license->getProperties()
$this->config->WFdbpass, $this->config->WFdbport, $this->config->WFuserdata
);
return $environmentConfig;

View File

@ -84,10 +84,6 @@ final class ErrorHandler
public function handleException($exception)
{
$title = null;
if ($this->isIoncubeError($exception)) {
$title = $this->handleIoncubeError($exception);
}
$data = new ErrorPageData($exception, $title);
$renderer = new ErrorPageRenderer($data);
header('HTTP/1.1 500 Internal Server Error');
@ -125,96 +121,4 @@ final class ErrorHandler
{
return in_array((int)$type, self::THROWABLE_ERROR_TYPES, true);
}
/**
* @param Throwable $exception
*
* @return bool
*/
private function isIoncubeError($exception)
{
if ((int)$exception->getCode() !== E_CORE_ERROR) {
return false;
}
if (strpos($exception->getMessage(), 'requires a license file.') !== false) {
return true;
}
if (strpos($exception->getMessage(), 'ionCube Encoder') !== false) {
return true;
}
return false;
}
/**
* @param Throwable $exception
*
* @return string|null
*/
private function handleIoncubeError($exception)
{
$file = $this->extractFileFromIoncubeError($exception);
if (empty($file)) {
return null;
}
if (!$this->isDeleteableFile($file)) {
return null;
}
@unlink($file);
if(is_file($file)) {
return sprintf('Es wurde eine alte Systemdatei gefunden die nicht manuell gelöscht werden konnte.
Bitte löschen Sie die Datei %s', $file);
}
return 'Es wurde eine alte Systemdatei gefunden und automatisch gelöscht.
Bitte führen Sie das Update nochmal durch dann sollte diese Meldung nicht mehr erscheinen.';
}
/**
* @param string $file
*
* @return bool
*/
private function isDeleteableFile(string $file)
{
if (!is_file($file)) {
return false;
}
$dir = dirname($file);
foreach (self::DELETE_FILE_FOLDERS as $folder) {
if (substr($dir, -strlen($folder)) === $folder) {
return true;
}
}
return false;
}
/**
* @example "<br>The encoded file <b>/var/www/xentral/www/pages/adresse.php</b> requires a license file.<br>"
* "The license file <b>/var/www/xentral/key.php</b> is corrupt."
*
* @param Throwable $exception
*
* @return string|null
*/
private function extractFileFromIoncubeError($exception)
{
$message = strip_tags($exception->getMessage());
$theFilePos = stripos($message, 'The File ');
if ($theFilePos === false) {
$theFilePos = strpos($message, 'The encoded file');
if ($theFilePos === false) {
return null;
}
$theFilePos += 16;
} else {
$theFilePos += 9;
}
$file = trim(substr($message, $theFilePos));
$file = explode(' ', $file);
return reset($file);
}
}

View File

@ -323,15 +323,6 @@ final class ErrorPageData implements JsonSerializable
'ldap' => function () {
return function_exists('ldap_connect');
},
'ioncube' => function () {
if (!function_exists('ioncube_loader_version')) {
return false;
}
$ioncubeMajorVersion = (int)@ioncube_loader_version();
return $ioncubeMajorVersion >= 5;
},
];
}

View File

@ -6,9 +6,6 @@ namespace Xentral\Modules\GoogleApi;
final class GoogleScope
{
/** @var string CLOUDPRINT */
public const CLOUDPRINT = 'https://www.googleapis.com/auth/cloudprint';
/** @var string CALENDAR */
public const CALENDAR = 'https://www.googleapis.com/auth/calendar';

View File

@ -213,25 +213,6 @@ final class GoogleAccountGateway
return array_values($pairs);
}
/**
* Will be removed after Dec 31. 2020
*
* @deprecated
*
* @codeCoverageIgnore
*
* @return GoogleAccountData
*/
public function getCloudPrintAccount(): GoogleAccountData
{
$accounts = $this->getAccountsByScope(GoogleScope::CLOUDPRINT);
if (count($accounts) < 1) {
throw new GoogleAccountNotFoundException('No cloud printing account available.');
}
return $accounts[0];
}
/**
* @param int $accountId
*

View File

@ -1,109 +0,0 @@
/**
* Für die Bedienung der Modul-Oberfläche
*/
var PrinterGoogleCloudPrint = (function ($) {
'use strict';
var me = {
isInitialized: false,
$apiSelect: null,
$printerSelect: null,
initApiValue: null,
initPrinterValue: null,
printercache: {},
/**
* @return void
*/
init: function () {
if (me.isInitialized === true) {
return;
}
me.$apiSelect = $('select[name="google_api"]');
me.$printerSelect = $('select[name="google_printer"]');
me.initApiValue = me.$apiSelect.val();
me.initPrinterValue = me.$printerSelect.val();
var options = {};
$('select[name="google_printer"] option').each( function () {
options[$(this).attr('value')] = $(this).text();
});
me.printercache[me.initApiValue] = options;
me.registerEvents();
me.isInitialized = true;
},
setPrinterSelectOptions: function(options, selected) {
me.$printerSelect.empty(); // remove old options
$.each(options, function(value, display) {
me.$printerSelect.append($('<option></option>').attr('value', value).text(display));
});
if (selected in options) {
me.$printerSelect.val(selected);
}
},
/**
* @return {void}
*/
registerEvents: function () {
me.$apiSelect.change(function () {
me.ajaxLoadPrinterOptions(this.value);
});
},
/**
* @param {number} fieldId
*
* @return {void}
*/
ajaxLoadPrinterOptions: function (apiName) {
if (apiName === '') {
return;
}
if (apiName in me.printercache) {
me.setPrinterSelectOptions(me.printercache[apiName], me.initPrinterValue);
return;
}
$.ajax({
url: 'index.php?module=googleapi&action=ajaxprinters',
data: {
api_name: apiName
},
method: 'post',
dataType: 'json',
beforeSend: function () {
me.$printerSelect.prop('disabled', true);
me.$apiSelect.prop('disabled', true);
App.loading.open();
},
complete: function() {
me.$printerSelect.prop('disabled', false);
me.$apiSelect.prop('disabled', false);
},
error: function (error) {
App.loading.close();
},
success: function (data) {
me.printercache[apiName] = data;
me.setPrinterSelectOptions(data, me.initPrinterValue);
App.loading.close();
}
});
},
};
return {
init: me.init,
};
})(jQuery);
$(document).ready(function () {
PrinterGoogleCloudPrint.init();
});

59
composer.json Normal file
View File

@ -0,0 +1,59 @@
{
"require": {
"php": "^7.4|^8",
"ext-gd": "*",
"aura/sqlquery": "2.7.1",
"aws/aws-sdk-php": "3.175.2",
"container-interop/container-interop": "1.2.0",
"ezyang/htmlpurifier": "v4.13.0",
"fiskaly/fiskaly-sdk-php": "1.2.100",
"guzzlehttp/guzzle": "6.5.5",
"guzzlehttp/promises": "1.4.1",
"guzzlehttp/psr7": "1.8.1",
"laminas/laminas-loader": "2.6.1",
"laminas/laminas-mime": "2.7.4",
"laminas/laminas-mail": "2.12.5",
"laminas/laminas-stdlib": "3.2.1",
"laminas/laminas-validator": "2.13.5",
"league/color-extractor": "0.3.2",
"league/flysystem": "1.0.70",
"league/oauth1-client": "v1.9.0",
"league/oauth2-client": "2.6.0",
"lfkeitel/phptotp": "v1.0.0",
"mtdowling/jmespath.php": "2.6.0",
"nikic/fast-route": "v1.3.0",
"phpmailer/phpmailer": "v6.3.0",
"phpseclib/phpseclib": "2.0.30",
"psr/container": "1.1.1",
"psr/http-message": "1.0.1",
"psr/log": "1.1.3",
"rakit/validation": "v0.22.3",
"sabre/dav": "3.2.3",
"smarty/smarty": "v3.1.39",
"swiss-payment-slip/swiss-payment-slip": "0.13.0 as 0.11.1",
"swiss-payment-slip/swiss-payment-slip-fpdf": "0.6.0",
"symfony/polyfill-intl-idn": "v1.22.1",
"symfony/polyfill-intl-normalizer": "v1.22.1",
"symfony/polyfill-mbstring": "v1.22.1",
"symfony/polyfill-php72": "v1.22.1",
"tecnickcom/tcpdf": "6.3.5",
"y0lk/oauth1-etsy": "1.1.0"
},
"replace": {
"itbz/fpdf": "*",
"laminas/laminas-zendframework-bridge": "*"
},
"autoload": {
"psr-4": {
"Xentral\\": "classes"
},
"classmap": ["www/lib/versandarten/"]
},
"config": {
"platform": {
"php": "7.4",
"ext-gd": "7.4"
},
"optimize-autoloader": true
}
}

3104
composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
/*
* SPDX-FileCopyrightText: 2019 Xentral ERP Software GmbH, Fuggerstrasse 11, D-86150 Augsburg
* SPDX-FileCopyrightText: 2023 Andreas Palm
* SPDX-FileCopyrightText: 2023-2024 Andreas Palm
*
* SPDX-License-Identifier: LicenseRef-EGPL-3.1
*/
@ -104,105 +104,7 @@ class Player {
$module = 'welcome';
$action = 'main';
}
if($this->app->erp->isIoncube() && method_exists($this->app->erp, 'IoncubeProperty')
&& WithGUI() && !(($module=='welcome' && $action=='upgrade') || $module=='' || ($module=='welcome' && $action=='start')))
{
if(method_exists('erpAPI','Ioncube_getMaxUser'))
{
$maxuser = erpAPI::Ioncube_getMaxUser();
}elseif(method_exists($this->app->erp, 'IoncubegetMaxUser'))
{
$maxuser = $this->app->erp->IoncubegetMaxUser();
}else{
$maxuser = 0;
}
if(method_exists('erpAPI','Ioncube_getMaxLightusers'))
{
$maxlightuser = erpAPI::Ioncube_getMaxLightusers();
}else{
$maxlightuser = 0;
}
if($maxuser)
{
$anzuser2 = 0;
if($maxlightuser > 0) {
$anzuser2 = (int)$this->app->DB->Select("SELECT count(DISTINCT u.id) FROM `user` u WHERE activ = 1 AND type = 'lightuser' ");
$anzuser = (int)$this->app->DB->Select("SELECT count(id) FROM `user` WHERE activ = 1 AND not isnull(hwtoken) AND hwtoken <> 4") - $anzuser2;
$anzuserzeiterfassung = (int)$this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken = 4 AND type != 'lightuser'");
}else{
$anzuser = $this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken <> 4 ");
$anzuserzeiterfassung = (int)$this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken = 4");
}
$maxmitarbeiterzeiterfassung = $this->app->erp->ModulVorhanden('mitarbeiterzeiterfassung')?$maxuser:0;
if($anzuser > $maxuser
|| (
($anzuser + $anzuserzeiterfassung + $anzuser2) >
$maxmitarbeiterzeiterfassung + $maxuser + $maxlightuser
)
|| (($anzuser + $anzuserzeiterfassung) > $maxmitarbeiterzeiterfassung + $maxuser)
) {
if(!(($module == 'welcome' &&
($action=='info' || $action == 'start' || $action == 'logout' || $action == '' || $action == 'main')) ||
($module == 'einstellungen' && ($action == 'list' || $action == '')) ||
$module == 'benutzer'
))
{
if($this->app->erp->RechteVorhanden('benutzer','list'))
{
$module = 'benutzer';
$action = 'list';
if($maxlightuser > 0){
$error = 'Es existieren mehr aktive Benutzer als Ihre Lizenz erlaubt: Benutzer ' . ($anzuser + $anzuser2) . ($maxlightuser > 0 ? ' (davon ' . $anzuser2 . ' Light-User)' : '') . ' von ' . ($maxuser + $maxlightuser) . ($maxlightuser > 0 ? ' (' . $maxlightuser . ' Light-User)' : '');
}else{
$error = 'Es existieren mehr aktive Benutzer als Ihre Lizenz erlaubt: Benutzer ' . ($anzuser + $anzuser2) . ($maxlightuser > 0 ? ' (davon ' . $anzuser2 . ' Zeiterfassungs-User)' : '') . ' von ' . ($maxuser + $anzuser2) . ($anzuser2 > 0 ? ' (' . $anzuser2 . ' Zeiterfassungs-User)' : '');
}
$error = '<div class="error">'.$error.'</div>';
$this->app->Tpl->Add('MESSAGE', $error);
$this->app->Secure->GET['msg'] = $this->app->erp->base64_url_encode($error);
}else{
$module = 'welcome';
$action = 'info';
}
$this->app->Secure->GET['module'] = $module;
$this->app->Secure->GET['action'] = $action;
}
}
}
if(method_exists('erpAPI','Ioncube_Property'))
{
$deaktivateonexp = erpAPI::Ioncube_Property('deaktivateonexp');
}else{
$deaktivateonexp = $this->app->erp->IoncubeProperty('deaktivateonexp');
}
if($deaktivateonexp)
{
if(method_exists('erpAPI','Ioncube_HasExpired'))
{
$IoncubeHasExpired = erpAPI::Ioncube_HasExpired();
}elseif(method_exists($this->app->erp, 'IoncubeHasExpired'))
{
$IoncubeHasExpired = $this->app->erp->IoncubeHasExpired();
}else{
$IoncubeHasExpired = false;
}
}else{
$IoncubeHasExpired = false;
}
if($deaktivateonexp && $IoncubeHasExpired
&& !(($module == 'welcome' && $action='logout') || ($module == 'welcome' && $action='start') || ($module == 'welcome' && $action='main'))
)
{
$module = 'welcome';
$action = 'info';
$this->app->Secure->GET['module'] = $module;
$this->app->Secure->GET['action'] = $action;
}
}
}
}
if($action!="list" && $action!="css" && $action!="logo" && $action!="poll" && $module!="ajax" && $module!="protokoll" && $action!="thumbnail"){
$this->app->erp->Protokoll();

View File

@ -295,8 +295,6 @@ class Acl
/** @var EnvironmentConfig $environmentConfig */
$environmentConfig = $this->app->Container->get('EnvironmentConfig');
$mailAddresses = array_merge($mailAddresses, $environmentConfig->getSystemFallbackEmailAddresses());
return array_unique($mailAddresses);
}
@ -438,37 +436,24 @@ class Acl
if(!empty($serverLocation)) {
$server = rtrim($serverLocation,'/') . '?module=welcome&action=passwortvergessen&code=' . $code;
}
foreach(['default', 'fallback'] as $sentSetting) {
if($sentSetting === 'fallback') {
$db = $this->app->Conf->WFdbname;
if(
empty(erpAPI::Ioncube_Property('cloudemail'))
|| $this->app->erp->firmendaten[$db]['email'] === erpAPI::Ioncube_Property('cloudemail')
) {
break;
}
$this->app->erp->firmendaten[$db]['mailanstellesmtp'] = 1;
$this->app->erp->firmendaten[$db]['email'] = erpAPI::Ioncube_Property('cloudemail');
foreach ($emailAddresses as $email) {
$recipientMailAddress = $email;
$recipientName = $name;
if(empty($recipientMailAddress) || empty($recipientName)) {
continue;
}
foreach ($emailAddresses as $email) {
$recipientMailAddress = $email;
$recipientName = $name;
if(empty($recipientMailAddress) || empty($recipientName)) {
continue;
}
$mailContent = str_replace(['{NAME}', '{ANREDE}', '{URL}'], [$recipientName, $anrede, $server], $mailContent);
$mailContent = str_replace(['{NAME}', '{ANREDE}', '{URL}'], [$recipientName, $anrede, $server], $mailContent);
if(!$this->app->erp->isHTML($mailContent)){
$mailContent = str_replace("\r\n", '<br>', $mailContent);
}
$mailSuccessfullySent = $this->app->erp->MailSend(
$this->app->erp->GetFirmaMail(), $this->app->erp->GetFirmaAbsender(),
$recipientMailAddress, $recipientName, $mailSubject, $mailContent, '', 0, true, '', '', true
);
if($mailSuccessfullySent){
break 2;
}
if(!$this->app->erp->isHTML($mailContent)){
$mailContent = str_replace("\r\n", '<br>', $mailContent);
}
$mailSuccessfullySent = $this->app->erp->MailSend(
$this->app->erp->GetFirmaMail(), $this->app->erp->GetFirmaAbsender(),
$recipientMailAddress, $recipientName, $mailSubject, $mailContent, '', 0, true, '', '', true
);
if($mailSuccessfullySent){
break;
}
}
}

18
vendor/autoload.php vendored
View File

@ -2,6 +2,24 @@
// autoload.php @generated by Composer
if (PHP_VERSION_ID < 50600) {
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit0c49a81c1214ef2f7493c6ce921b17ee::getLoader();

163
vendor/bin/jp.php vendored Normal file → Executable file
View File

@ -1,74 +1,119 @@
#!/usr/bin/env php
<?php
if (file_exists(__DIR__ . '/../vendor/autoload.php')) {
require __DIR__ . '/../vendor/autoload.php';
} elseif (file_exists(__DIR__ . '/../../../autoload.php')) {
require __DIR__ . '/../../../autoload.php';
} elseif (file_exists(__DIR__ . '/../autoload.php')) {
require __DIR__ . '/../autoload.php';
} else {
throw new RuntimeException('Unable to locate autoload.php file.');
}
/**
* Proxy PHP file generated by Composer
*
* This file includes the referenced bin path (../mtdowling/jmespath.php/bin/jp.php)
* using a stream wrapper to prevent the shebang from being output on PHP<8
*
* @generated
*/
use JmesPath\Env;
use JmesPath\DebugRuntime;
namespace Composer;
$description = <<<EOT
Runs a JMESPath expression on the provided input or a test case.
$GLOBALS['_composer_bin_dir'] = __DIR__;
$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..'.'/autoload.php';
Provide the JSON input and expression:
echo '{}' | jp.php expression
if (PHP_VERSION_ID < 80000) {
if (!class_exists('Composer\BinProxyWrapper')) {
/**
* @internal
*/
final class BinProxyWrapper
{
private $handle;
private $position;
private $realpath;
Or provide the path to a compliance script, a suite, and test case number:
jp.php --script path_to_script --suite test_suite_number --case test_case_number [expression]
public function stream_open($path, $mode, $options, &$opened_path)
{
// get rid of phpvfscomposer:// prefix for __FILE__ & __DIR__ resolution
$opened_path = substr($path, 17);
$this->realpath = realpath($opened_path) ?: $opened_path;
$opened_path = $this->realpath;
$this->handle = fopen($this->realpath, $mode);
$this->position = 0;
EOT;
return (bool) $this->handle;
}
$args = [];
$currentKey = null;
for ($i = 1, $total = count($argv); $i < $total; $i++) {
if ($i % 2) {
if (substr($argv[$i], 0, 2) == '--') {
$currentKey = str_replace('--', '', $argv[$i]);
} else {
$currentKey = trim($argv[$i]);
}
} else {
$args[$currentKey] = $argv[$i];
$currentKey = null;
}
}
public function stream_read($count)
{
$data = fread($this->handle, $count);
$expression = $currentKey;
if ($this->position === 0) {
$data = preg_replace('{^#!.*\r?\n}', '', $data);
}
if (isset($args['file']) || isset($args['suite']) || isset($args['case'])) {
if (!isset($args['file']) || !isset($args['suite']) || !isset($args['case'])) {
die($description);
}
// Manually run a compliance test
$path = realpath($args['file']);
file_exists($path) or die('File not found at ' . $path);
$json = json_decode(file_get_contents($path), true);
$set = $json[$args['suite']];
$data = $set['given'];
if (!isset($expression)) {
$expression = $set['cases'][$args['case']]['expression'];
echo "Expects\n=======\n";
if (isset($set['cases'][$args['case']]['result'])) {
echo json_encode($set['cases'][$args['case']]['result'], JSON_PRETTY_PRINT) . "\n\n";
} elseif (isset($set['cases'][$args['case']]['error'])) {
echo "{$set['cases'][$argv['case']]['error']} error\n\n";
} else {
echo "NULL\n\n";
$this->position += strlen($data);
return $data;
}
public function stream_cast($castAs)
{
return $this->handle;
}
public function stream_close()
{
fclose($this->handle);
}
public function stream_lock($operation)
{
return $operation ? flock($this->handle, $operation) : true;
}
public function stream_seek($offset, $whence)
{
if (0 === fseek($this->handle, $offset, $whence)) {
$this->position = ftell($this->handle);
return true;
}
return false;
}
public function stream_tell()
{
return $this->position;
}
public function stream_eof()
{
return feof($this->handle);
}
public function stream_stat()
{
return array();
}
public function stream_set_option($option, $arg1, $arg2)
{
return true;
}
public function url_stat($path, $flags)
{
$path = substr($path, 17);
if (file_exists($path)) {
return stat($path);
}
return false;
}
}
}
} elseif (isset($expression)) {
// Pass in an expression and STDIN as a standalone argument
$data = json_decode(stream_get_contents(STDIN), true);
} else {
die($description);
if (
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
) {
return include("phpvfscomposer://" . __DIR__ . '/..'.'/mtdowling/jmespath.php/bin/jp.php');
}
}
$runtime = new DebugRuntime(Env::createRuntime());
$runtime($expression, $data);
return include __DIR__ . '/..'.'/mtdowling/jmespath.php/bin/jp.php';

View File

@ -37,57 +37,126 @@ namespace Composer\Autoload;
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Jordi Boggiano <j.boggiano@seld.be>
* @see http://www.php-fig.org/psr/psr-0/
* @see http://www.php-fig.org/psr/psr-4/
* @see https://www.php-fig.org/psr/psr-0/
* @see https://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
/** @var \Closure(string):void */
private static $includeFile;
/** @var string|null */
private $vendorDir;
// PSR-4
/**
* @var array<string, array<string, int>>
*/
private $prefixLengthsPsr4 = array();
/**
* @var array<string, list<string>>
*/
private $prefixDirsPsr4 = array();
/**
* @var list<string>
*/
private $fallbackDirsPsr4 = array();
// PSR-0
/**
* List of PSR-0 prefixes
*
* Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
*
* @var array<string, array<string, list<string>>>
*/
private $prefixesPsr0 = array();
/**
* @var list<string>
*/
private $fallbackDirsPsr0 = array();
/** @var bool */
private $useIncludePath = false;
/**
* @var array<string, string>
*/
private $classMap = array();
/** @var bool */
private $classMapAuthoritative = false;
/**
* @var array<string, bool>
*/
private $missingClasses = array();
/** @var string|null */
private $apcuPrefix;
/**
* @var array<string, self>
*/
private static $registeredLoaders = array();
/**
* @param string|null $vendorDir
*/
public function __construct($vendorDir = null)
{
$this->vendorDir = $vendorDir;
self::initializeIncludeClosure();
}
/**
* @return array<string, list<string>>
*/
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
return call_user_func_array('array_merge', $this->prefixesPsr0);
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
}
return array();
}
/**
* @return array<string, list<string>>
*/
public function getPrefixesPsr4()
{
return $this->prefixDirsPsr4;
}
/**
* @return list<string>
*/
public function getFallbackDirs()
{
return $this->fallbackDirsPsr0;
}
/**
* @return list<string>
*/
public function getFallbackDirsPsr4()
{
return $this->fallbackDirsPsr4;
}
/**
* @return array<string, string> Array of classname => path
*/
public function getClassMap()
{
return $this->classMap;
}
/**
* @param array $classMap Class to filename map
* @param array<string, string> $classMap Class to filename map
*
* @return void
*/
public function addClassMap(array $classMap)
{
@ -102,22 +171,25 @@ class ClassLoader
* Registers a set of PSR-0 directories for a given prefix, either
* appending or prepending to the ones previously set for this prefix.
*
* @param string $prefix The prefix
* @param array|string $paths The PSR-0 root directories
* @param bool $prepend Whether to prepend the directories
* @param string $prefix The prefix
* @param list<string>|string $paths The PSR-0 root directories
* @param bool $prepend Whether to prepend the directories
*
* @return void
*/
public function add($prefix, $paths, $prepend = false)
{
$paths = (array) $paths;
if (!$prefix) {
if ($prepend) {
$this->fallbackDirsPsr0 = array_merge(
(array) $paths,
$paths,
$this->fallbackDirsPsr0
);
} else {
$this->fallbackDirsPsr0 = array_merge(
$this->fallbackDirsPsr0,
(array) $paths
$paths
);
}
@ -126,19 +198,19 @@ class ClassLoader
$first = $prefix[0];
if (!isset($this->prefixesPsr0[$first][$prefix])) {
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
$this->prefixesPsr0[$first][$prefix] = $paths;
return;
}
if ($prepend) {
$this->prefixesPsr0[$first][$prefix] = array_merge(
(array) $paths,
$paths,
$this->prefixesPsr0[$first][$prefix]
);
} else {
$this->prefixesPsr0[$first][$prefix] = array_merge(
$this->prefixesPsr0[$first][$prefix],
(array) $paths
$paths
);
}
}
@ -147,25 +219,28 @@ class ClassLoader
* Registers a set of PSR-4 directories for a given namespace, either
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param list<string>|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
*
* @return void
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
$paths = (array) $paths;
if (!$prefix) {
// Register directories for the root namespace.
if ($prepend) {
$this->fallbackDirsPsr4 = array_merge(
(array) $paths,
$paths,
$this->fallbackDirsPsr4
);
} else {
$this->fallbackDirsPsr4 = array_merge(
$this->fallbackDirsPsr4,
(array) $paths
$paths
);
}
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
@ -175,18 +250,18 @@ class ClassLoader
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
$this->prefixDirsPsr4[$prefix] = $paths;
} elseif ($prepend) {
// Prepend directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
(array) $paths,
$paths,
$this->prefixDirsPsr4[$prefix]
);
} else {
// Append directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
$this->prefixDirsPsr4[$prefix],
(array) $paths
$paths
);
}
}
@ -195,8 +270,10 @@ class ClassLoader
* Registers a set of PSR-0 directories for a given prefix,
* replacing any others previously set for this prefix.
*
* @param string $prefix The prefix
* @param array|string $paths The PSR-0 base directories
* @param string $prefix The prefix
* @param list<string>|string $paths The PSR-0 base directories
*
* @return void
*/
public function set($prefix, $paths)
{
@ -211,10 +288,12 @@ class ClassLoader
* Registers a set of PSR-4 directories for a given namespace,
* replacing any others previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-4 base directories
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param list<string>|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
*
* @return void
*/
public function setPsr4($prefix, $paths)
{
@ -234,6 +313,8 @@ class ClassLoader
* Turns on searching the include path for class files.
*
* @param bool $useIncludePath
*
* @return void
*/
public function setUseIncludePath($useIncludePath)
{
@ -256,6 +337,8 @@ class ClassLoader
* that have not been registered with the class map.
*
* @param bool $classMapAuthoritative
*
* @return void
*/
public function setClassMapAuthoritative($classMapAuthoritative)
{
@ -276,6 +359,8 @@ class ClassLoader
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
*
* @param string|null $apcuPrefix
*
* @return void
*/
public function setApcuPrefix($apcuPrefix)
{
@ -296,33 +381,55 @@ class ClassLoader
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
*
* @return void
*/
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
if (null === $this->vendorDir) {
return;
}
if ($prepend) {
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
} else {
unset(self::$registeredLoaders[$this->vendorDir]);
self::$registeredLoaders[$this->vendorDir] = $this;
}
}
/**
* Unregisters this instance as an autoloader.
*
* @return void
*/
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
if (null !== $this->vendorDir) {
unset(self::$registeredLoaders[$this->vendorDir]);
}
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
* @return bool|null True if loaded, null otherwise
* @return true|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
includeFile($file);
$includeFile = self::$includeFile;
$includeFile($file);
return true;
}
return null;
}
/**
@ -367,6 +474,21 @@ class ClassLoader
return $file;
}
/**
* Returns the currently registered loaders keyed by their corresponding vendor directories.
*
* @return array<string, self>
*/
public static function getRegisteredLoaders()
{
return self::$registeredLoaders;
}
/**
* @param string $class
* @param string $ext
* @return string|false
*/
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
@ -432,14 +554,26 @@ class ClassLoader
return false;
}
}
/**
* Scope isolated include.
*
* Prevents access to $this/self from included files.
*/
function includeFile($file)
{
include $file;
/**
* @return void
*/
private static function initializeIncludeClosure()
{
if (self::$includeFile !== null) {
return;
}
/**
* Scope isolated include.
*
* Prevents access to $this/self from included files.
*
* @param string $file
* @return void
*/
self::$includeFile = \Closure::bind(static function($file) {
include $file;
}, null, null);
}
}

359
vendor/composer/InstalledVersions.php vendored Normal file
View File

@ -0,0 +1,359 @@
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer;
use Composer\Autoload\ClassLoader;
use Composer\Semver\VersionParser;
/**
* This class is copied in every Composer installed project and available to all
*
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
*
* To require its presence, you can require `composer-runtime-api ^2.0`
*
* @final
*/
class InstalledVersions
{
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool|null
*/
private static $canGetVendors;
/**
* @var array[]
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
*/
private static $installedByVendor = array();
/**
* Returns a list of all package names which are present, either by being installed, replaced or provided
*
* @return string[]
* @psalm-return list<string>
*/
public static function getInstalledPackages()
{
$packages = array();
foreach (self::getInstalled() as $installed) {
$packages[] = array_keys($installed['versions']);
}
if (1 === \count($packages)) {
return $packages[0];
}
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
}
/**
* Returns a list of all package names with a specific type e.g. 'library'
*
* @param string $type
* @return string[]
* @psalm-return list<string>
*/
public static function getInstalledPackagesByType($type)
{
$packagesByType = array();
foreach (self::getInstalled() as $installed) {
foreach ($installed['versions'] as $name => $package) {
if (isset($package['type']) && $package['type'] === $type) {
$packagesByType[] = $name;
}
}
}
return $packagesByType;
}
/**
* Checks whether the given package is installed
*
* This also returns true if the package name is provided or replaced by another package
*
* @param string $packageName
* @param bool $includeDevRequirements
* @return bool
*/
public static function isInstalled($packageName, $includeDevRequirements = true)
{
foreach (self::getInstalled() as $installed) {
if (isset($installed['versions'][$packageName])) {
return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
}
}
return false;
}
/**
* Checks whether the given package satisfies a version constraint
*
* e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
*
* Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
*
* @param VersionParser $parser Install composer/semver to have access to this class and functionality
* @param string $packageName
* @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
* @return bool
*/
public static function satisfies(VersionParser $parser, $packageName, $constraint)
{
$constraint = $parser->parseConstraints((string) $constraint);
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
return $provided->matches($constraint);
}
/**
* Returns a version constraint representing all the range(s) which are installed for a given package
*
* It is easier to use this via isInstalled() with the $constraint argument if you need to check
* whether a given version of a package is installed, and not just whether it exists
*
* @param string $packageName
* @return string Version constraint usable with composer/semver
*/
public static function getVersionRanges($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
$ranges = array();
if (isset($installed['versions'][$packageName]['pretty_version'])) {
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
}
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
}
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
}
if (array_key_exists('provided', $installed['versions'][$packageName])) {
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
}
return implode(' || ', $ranges);
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
*/
public static function getVersion($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
if (!isset($installed['versions'][$packageName]['version'])) {
return null;
}
return $installed['versions'][$packageName]['version'];
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
*/
public static function getPrettyVersion($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
return null;
}
return $installed['versions'][$packageName]['pretty_version'];
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
*/
public static function getReference($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
if (!isset($installed['versions'][$packageName]['reference'])) {
return null;
}
return $installed['versions'][$packageName]['reference'];
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
*/
public static function getInstallPath($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @return array
* @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
*/
public static function getRootPackage()
{
$installed = self::getInstalled();
return $installed[0]['root'];
}
/**
* Returns the raw installed.php data for custom implementations
*
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
* @return array[]
* @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
*/
public static function getRawData()
{
@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
if (null === self::$installed) {
// only require the installed.php file if this file is loaded from its dumped location,
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
if (substr(__DIR__, -8, 1) !== 'C') {
self::$installed = include __DIR__ . '/installed.php';
} else {
self::$installed = array();
}
}
return self::$installed;
}
/**
* Returns the raw data of all installed.php which are currently loaded for custom implementations
*
* @return array[]
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
*/
public static function getAllRawData()
{
return self::getInstalled();
}
/**
* Lets you reload the static array from another file
*
* This is only useful for complex integrations in which a project needs to use
* this class but then also needs to execute another project's autoloader in process,
* and wants to ensure both projects have access to their version of installed.php.
*
* A typical case would be PHPUnit, where it would need to make sure it reads all
* the data it needs from this class, then call reload() with
* `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
* the project in which it runs can then also use this class safely, without
* interference between PHPUnit's dependencies and the project's dependencies.
*
* @param array[] $data A vendor/composer/installed.php data set
* @return void
*
* @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
*/
public static function reload($data)
{
self::$installed = $data;
self::$installedByVendor = array();
}
/**
* @return array[]
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
*/
private static function getInstalled()
{
if (null === self::$canGetVendors) {
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
}
$installed = array();
if (self::$canGetVendors) {
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
}
}
}
}
if (null === self::$installed) {
// only require the installed.php file if this file is loaded from its dumped location,
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
if (substr(__DIR__, -8, 1) !== 'C') {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require __DIR__ . '/installed.php';
self::$installed = $required;
} else {
self::$installed = array();
}
}
if (self::$installed !== array()) {
$installed[] = self::$installed;
}
return $installed;
}
}

View File

@ -2,7 +2,7 @@
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
@ -812,6 +812,7 @@ return array(
'Aws\\kendra\\kendraClient' => $vendorDir . '/aws/aws-sdk-php/src/kendra/kendraClient.php',
'Aws\\signer\\Exception\\signerException' => $vendorDir . '/aws/aws-sdk-php/src/signer/Exception/signerException.php',
'Aws\\signer\\signerClient' => $vendorDir . '/aws/aws-sdk-php/src/signer/signerClient.php',
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'Datamatrix' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php',
'Datto\\JsonRpc\\Client' => $vendorDir . '/datto/json-rpc/src/Client.php',
'Datto\\JsonRpc\\Evaluator' => $vendorDir . '/datto/json-rpc/src/Evaluator.php',
@ -1116,9 +1117,6 @@ return array(
'HTMLPurifier_Printer' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer.php',
'HTMLPurifier_Printer_CSSDefinition' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/CSSDefinition.php',
'HTMLPurifier_Printer_ConfigForm' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php',
'HTMLPurifier_Printer_ConfigForm_NullDecorator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php',
'HTMLPurifier_Printer_ConfigForm_bool' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php',
'HTMLPurifier_Printer_ConfigForm_default' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php',
'HTMLPurifier_Printer_HTMLDefinition' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/HTMLDefinition.php',
'HTMLPurifier_PropertyList' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/PropertyList.php',
'HTMLPurifier_PropertyListIterator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php',
@ -2190,6 +2188,57 @@ return array(
'TrueBV\\Exception\\LabelOutOfBoundsException' => $vendorDir . '/true/punycode/src/Exception/LabelOutOfBoundsException.php',
'TrueBV\\Exception\\OutOfBoundsException' => $vendorDir . '/true/punycode/src/Exception/OutOfBoundsException.php',
'TrueBV\\Punycode' => $vendorDir . '/true/punycode/src/Punycode.php',
'Versandart_dhl' => $baseDir . '/www/lib/versandarten/dhl.php',
'Versandart_sendcloud' => $baseDir . '/www/lib/versandarten/sendcloud.php',
'Xentral\\Carrier\\Dhl\\Data\\Bank' => $baseDir . '/classes/Carrier/Dhl/Data/Bank.php',
'Xentral\\Carrier\\Dhl\\Data\\Communication' => $baseDir . '/classes/Carrier/Dhl/Data/Communication.php',
'Xentral\\Carrier\\Dhl\\Data\\Contact' => $baseDir . '/classes/Carrier/Dhl/Data/Contact.php',
'Xentral\\Carrier\\Dhl\\Data\\Country' => $baseDir . '/classes/Carrier/Dhl/Data/Country.php',
'Xentral\\Carrier\\Dhl\\Data\\CreateShipmentOrderRequest' => $baseDir . '/classes/Carrier/Dhl/Data/CreateShipmentOrderRequest.php',
'Xentral\\Carrier\\Dhl\\Data\\CreateShipmentOrderResponse' => $baseDir . '/classes/Carrier/Dhl/Data/CreateShipmentOrderResponse.php',
'Xentral\\Carrier\\Dhl\\Data\\CreationState' => $baseDir . '/classes/Carrier/Dhl/Data/CreationState.php',
'Xentral\\Carrier\\Dhl\\Data\\Customer' => $baseDir . '/classes/Carrier/Dhl/Data/Customer.php',
'Xentral\\Carrier\\Dhl\\Data\\DeleteShipmentOrderRequest' => $baseDir . '/classes/Carrier/Dhl/Data/DeleteShipmentOrderRequest.php',
'Xentral\\Carrier\\Dhl\\Data\\DeleteShipmentOrderResponse' => $baseDir . '/classes/Carrier/Dhl/Data/DeleteShipmentOrderResponse.php',
'Xentral\\Carrier\\Dhl\\Data\\DeletionState' => $baseDir . '/classes/Carrier/Dhl/Data/DeletionState.php',
'Xentral\\Carrier\\Dhl\\Data\\DeliveryAddress' => $baseDir . '/classes/Carrier/Dhl/Data/DeliveryAddress.php',
'Xentral\\Carrier\\Dhl\\Data\\Dimension' => $baseDir . '/classes/Carrier/Dhl/Data/Dimension.php',
'Xentral\\Carrier\\Dhl\\Data\\ExportDocPosition' => $baseDir . '/classes/Carrier/Dhl/Data/ExportDocPosition.php',
'Xentral\\Carrier\\Dhl\\Data\\ExportDocument' => $baseDir . '/classes/Carrier/Dhl/Data/ExportDocument.php',
'Xentral\\Carrier\\Dhl\\Data\\LabelData' => $baseDir . '/classes/Carrier/Dhl/Data/LabelData.php',
'Xentral\\Carrier\\Dhl\\Data\\Name' => $baseDir . '/classes/Carrier/Dhl/Data/Name.php',
'Xentral\\Carrier\\Dhl\\Data\\NativeAddress' => $baseDir . '/classes/Carrier/Dhl/Data/NativeAddress.php',
'Xentral\\Carrier\\Dhl\\Data\\NativeAddressNew' => $baseDir . '/classes/Carrier/Dhl/Data/NativeAddressNew.php',
'Xentral\\Carrier\\Dhl\\Data\\PackStation' => $baseDir . '/classes/Carrier/Dhl/Data/PackStation.php',
'Xentral\\Carrier\\Dhl\\Data\\Postfiliale' => $baseDir . '/classes/Carrier/Dhl/Data/Postfiliale.php',
'Xentral\\Carrier\\Dhl\\Data\\Receiver' => $baseDir . '/classes/Carrier/Dhl/Data/Receiver.php',
'Xentral\\Carrier\\Dhl\\Data\\ReceiverNativeAddress' => $baseDir . '/classes/Carrier/Dhl/Data/ReceiverNativeAddress.php',
'Xentral\\Carrier\\Dhl\\Data\\Shipment' => $baseDir . '/classes/Carrier/Dhl/Data/Shipment.php',
'Xentral\\Carrier\\Dhl\\Data\\ShipmentDetails' => $baseDir . '/classes/Carrier/Dhl/Data/ShipmentDetails.php',
'Xentral\\Carrier\\Dhl\\Data\\ShipmentItem' => $baseDir . '/classes/Carrier/Dhl/Data/ShipmentItem.php',
'Xentral\\Carrier\\Dhl\\Data\\ShipmentNotification' => $baseDir . '/classes/Carrier/Dhl/Data/ShipmentNotification.php',
'Xentral\\Carrier\\Dhl\\Data\\ShipmentOrder' => $baseDir . '/classes/Carrier/Dhl/Data/ShipmentOrder.php',
'Xentral\\Carrier\\Dhl\\Data\\ShipmentService' => $baseDir . '/classes/Carrier/Dhl/Data/ShipmentService.php',
'Xentral\\Carrier\\Dhl\\Data\\Shipper' => $baseDir . '/classes/Carrier/Dhl/Data/Shipper.php',
'Xentral\\Carrier\\Dhl\\Data\\Status' => $baseDir . '/classes/Carrier/Dhl/Data/Status.php',
'Xentral\\Carrier\\Dhl\\Data\\StatusElement' => $baseDir . '/classes/Carrier/Dhl/Data/StatusElement.php',
'Xentral\\Carrier\\Dhl\\Data\\Statusinformation' => $baseDir . '/classes/Carrier/Dhl/Data/Statusinformation.php',
'Xentral\\Carrier\\Dhl\\Data\\Version' => $baseDir . '/classes/Carrier/Dhl/Data/Version.php',
'Xentral\\Carrier\\Dhl\\DhlApi' => $baseDir . '/classes/Carrier/Dhl/DhlApi.php',
'Xentral\\Carrier\\SendCloud\\Data\\Document' => $baseDir . '/classes/Carrier/SendCloud/Data/Document.php',
'Xentral\\Carrier\\SendCloud\\Data\\Label' => $baseDir . '/classes/Carrier/SendCloud/Data/Label.php',
'Xentral\\Carrier\\SendCloud\\Data\\ParcelBase' => $baseDir . '/classes/Carrier/SendCloud/Data/ParcelBase.php',
'Xentral\\Carrier\\SendCloud\\Data\\ParcelCreation' => $baseDir . '/classes/Carrier/SendCloud/Data/ParcelCreation.php',
'Xentral\\Carrier\\SendCloud\\Data\\ParcelCreationError' => $baseDir . '/classes/Carrier/SendCloud/Data/ParcelCreationError.php',
'Xentral\\Carrier\\SendCloud\\Data\\ParcelItem' => $baseDir . '/classes/Carrier/SendCloud/Data/ParcelItem.php',
'Xentral\\Carrier\\SendCloud\\Data\\ParcelResponse' => $baseDir . '/classes/Carrier/SendCloud/Data/ParcelResponse.php',
'Xentral\\Carrier\\SendCloud\\Data\\SenderAddress' => $baseDir . '/classes/Carrier/SendCloud/Data/SenderAddress.php',
'Xentral\\Carrier\\SendCloud\\Data\\Shipment' => $baseDir . '/classes/Carrier/SendCloud/Data/Shipment.php',
'Xentral\\Carrier\\SendCloud\\Data\\ShippingMethod' => $baseDir . '/classes/Carrier/SendCloud/Data/ShippingMethod.php',
'Xentral\\Carrier\\SendCloud\\Data\\ShippingProduct' => $baseDir . '/classes/Carrier/SendCloud/Data/ShippingProduct.php',
'Xentral\\Carrier\\SendCloud\\Data\\Status' => $baseDir . '/classes/Carrier/SendCloud/Data/Status.php',
'Xentral\\Carrier\\SendCloud\\SendCloudApi' => $baseDir . '/classes/Carrier/SendCloud/SendCloudApi.php',
'Xentral\\Carrier\\SendCloud\\SendcloudApiException' => $baseDir . '/classes/Carrier/SendCloud/SendcloudApiException.php',
'Xentral\\Components\\Backup\\Adapter\\AdapterInterface' => $baseDir . '/classes/Components/Backup/Adapter/AdapterInterface.php',
'Xentral\\Components\\Backup\\Adapter\\ExecAdapter' => $baseDir . '/classes/Components/Backup/Adapter/ExecAdapter.php',
'Xentral\\Components\\Backup\\Bootstrap' => $baseDir . '/classes/Components/Backup/Bootstrap.php',
@ -2726,6 +2775,7 @@ return array(
'Xentral\\Modules\\Article\\Exception\\InvalidArgumentException' => $baseDir . '/classes/Modules/Article/Exception/InvalidArgumentException.php',
'Xentral\\Modules\\Article\\Exception\\SellingPriceNotFoundException' => $baseDir . '/classes/Modules/Article/Exception/SellingPriceNotFoundException.php',
'Xentral\\Modules\\Article\\Gateway\\ArticleGateway' => $baseDir . '/classes/Modules/Article/Gateway/ArticleGateway.php',
'Xentral\\Modules\\Article\\Service\\ArticleService' => $baseDir . '/classes/Modules/Article/Service/ArticleService.php',
'Xentral\\Modules\\Article\\Service\\CurrencyConversionService' => $baseDir . '/classes/Modules/Article/Service/CurrencyConversionService.php',
'Xentral\\Modules\\Article\\Service\\PurchasePriceService' => $baseDir . '/classes/Modules/Article/Service/PurchasePriceService.php',
'Xentral\\Modules\\Article\\Service\\SellingPriceService' => $baseDir . '/classes/Modules/Article/Service/SellingPriceService.php',
@ -2832,10 +2882,7 @@ return array(
'Xentral\\Modules\\Datanorm\\Service\\DatanormIntermediateService' => $baseDir . '/classes/Modules/Datanorm/Service/DatanormIntermediateService.php',
'Xentral\\Modules\\Datanorm\\Service\\DatanormReader' => $baseDir . '/classes/Modules/Datanorm/Service/DatanormReader.php',
'Xentral\\Modules\\Datanorm\\Wrapper\\AddressWrapper' => $baseDir . '/classes/Modules/Datanorm/Wrapper/AddressWrapper.php',
'Xentral\\Modules\\DatevApi\\Bootstrap' => $baseDir . '/classes/Modules/DatevApi/Bootstrap.php',
'Xentral\\Modules\\DatevApi\\DataTable\\DatevExportDataTable' => $baseDir . '/classes/Modules/DatevApi/DataTable/DatevExportDataTable.php',
'Xentral\\Modules\\DatevApi\\DatevApiService' => $baseDir . '/classes/Modules/DatevApi/DatevApiService.php',
'Xentral\\Modules\\DatevApi\\DatevZipStream' => $baseDir . '/classes/Modules/DatevApi/DatevZipStream.php',
'Xentral\\Modules\\DemoExporter\\Bootstrap' => $baseDir . '/classes/Modules/DemoExporter/Bootstrap.php',
'Xentral\\Modules\\DemoExporter\\DemoExporterCleanerService' => $baseDir . '/classes/Modules/DemoExporter/DemoExporterCleanerService.php',
'Xentral\\Modules\\DemoExporter\\DemoExporterDateiService' => $baseDir . '/classes/Modules/DemoExporter/DemoExporterDateiService.php',
@ -3007,7 +3054,6 @@ return array(
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyApi' => $baseDir . '/classes/Modules/FiskalyApi/Service/FiskalyApi.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyCashPointClosingDBInterface' => $baseDir . '/classes/Modules/FiskalyApi/Service/FiskalyCashPointClosingDBInterface.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyCashPointClosingDBService' => $baseDir . '/classes/Modules/FiskalyApi/Service/FiskalyCashPointClosingDBService.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyConfig' => $baseDir . '/classes/Modules/FiskalyApi/Service/FiskalyConfig.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyDSFinVKApi' => $baseDir . '/classes/Modules/FiskalyApi/Service/FiskalyDSFinVKApi.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyEReceiptApi' => $baseDir . '/classes/Modules/FiskalyApi/Service/FiskalyEReceiptApi.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyKassenSichVApi' => $baseDir . '/classes/Modules/FiskalyApi/Service/FiskalyKassenSichVApi.php',
@ -3188,6 +3234,15 @@ return array(
'Xentral\\Modules\\MandatoryFields\\Service\\MandatoryFieldsGateway' => $baseDir . '/classes/Modules/MandatoryFields/Service/MandatoryFieldsGateway.php',
'Xentral\\Modules\\MandatoryFields\\Service\\MandatoryFieldsService' => $baseDir . '/classes/Modules/MandatoryFields/Service/MandatoryFieldsService.php',
'Xentral\\Modules\\MandatoryFields\\Service\\MandatoryFieldsValidator' => $baseDir . '/classes/Modules/MandatoryFields/Service/MandatoryFieldsValidator.php',
'Xentral\\Modules\\MatrixProduct\\Bootstrap' => $baseDir . '/classes/Modules/MatrixProduct/Bootstrap.php',
'Xentral\\Modules\\MatrixProduct\\Data\\Group' => $baseDir . '/classes/Modules/MatrixProduct/Data/Group.php',
'Xentral\\Modules\\MatrixProduct\\Data\\Option' => $baseDir . '/classes/Modules/MatrixProduct/Data/Option.php',
'Xentral\\Modules\\MatrixProduct\\Data\\Translation' => $baseDir . '/classes/Modules/MatrixProduct/Data/Translation.php',
'Xentral\\Modules\\MatrixProduct\\MatrixProductGateway' => $baseDir . '/classes/Modules/MatrixProduct/MatrixProductGateway.php',
'Xentral\\Modules\\MatrixProduct\\MatrixProductService' => $baseDir . '/classes/Modules/MatrixProduct/MatrixProductService.php',
'Xentral\\Modules\\Onlineshop\\Data\\OrderStatus' => $baseDir . '/classes/Modules/Onlineshop/Data/OrderStatus.php',
'Xentral\\Modules\\Onlineshop\\Data\\OrderStatusUpdateRequest' => $baseDir . '/classes/Modules/Onlineshop/Data/OrderStatusUpdateRequest.php',
'Xentral\\Modules\\Onlineshop\\Data\\Shipment' => $baseDir . '/classes/Modules/Onlineshop/Data/Shipment.php',
'Xentral\\Modules\\Onlineshop\\Data\\ShopConnectorOrderStatusUpdateResponse' => $baseDir . '/classes/Modules/Onlineshop/Data/ShopConnectorOrderStatusUpdateResponse.php',
'Xentral\\Modules\\Onlineshop\\Data\\ShopConnectorResponseInterface' => $baseDir . '/classes/Modules/Onlineshop/Data/ShopConnectorResponseInterface.php',
'Xentral\\Modules\\PartialDelivery\\Bootstrap' => $baseDir . '/classes/Modules/PartialDelivery/Bootstrap.php',
@ -3345,6 +3400,9 @@ return array(
'Xentral\\Modules\\ScanArticle\\Wrapper\\PriceWrapper' => $baseDir . '/classes/Modules/ScanArticle/Wrapper/PriceWrapper.php',
'Xentral\\Modules\\ScanArticle\\Wrapper\\SavePositionWrapper' => $baseDir . '/classes/Modules/ScanArticle/Wrapper/SavePositionWrapper.php',
'Xentral\\Modules\\Setting\\Bootstrap' => $baseDir . '/classes/Modules/Setting/Bootstrap.php',
'Xentral\\Modules\\ShippingMethod\\Model\\CreateShipmentResult' => $baseDir . '/classes/Modules/ShippingMethod/Model/CreateShipmentResult.php',
'Xentral\\Modules\\ShippingMethod\\Model\\CustomsInfo' => $baseDir . '/classes/Modules/ShippingMethod/Model/CustomsInfo.php',
'Xentral\\Modules\\ShippingMethod\\Model\\Product' => $baseDir . '/classes/Modules/ShippingMethod/Model/Product.php',
'Xentral\\Modules\\ShippingTaxSplit\\Bootstrap' => $baseDir . '/classes/Modules/ShippingTaxSplit/Bootstrap.php',
'Xentral\\Modules\\ShippingTaxSplit\\Exception\\InvalidArgumentException' => $baseDir . '/classes/Modules/ShippingTaxSplit/Exception/InvalidArgumentException.php',
'Xentral\\Modules\\ShippingTaxSplit\\Exception\\ShippingTaxSplitExceptionInterface' => $baseDir . '/classes/Modules/ShippingTaxSplit/Exception/ShippingTaxSplitExceptionInterface.php',
@ -3404,6 +3462,7 @@ return array(
'Xentral\\Modules\\SubscriptionCycle\\Service\\SubscriptionCycleJobService' => $baseDir . '/classes/Modules/SubscriptionCycle/Service/SubscriptionCycleJobService.php',
'Xentral\\Modules\\SubscriptionCycle\\SubscriptionCycleCacheFiller' => $baseDir . '/classes/Modules/SubscriptionCycle/SubscriptionCycleCacheFiller.php',
'Xentral\\Modules\\SubscriptionCycle\\SubscriptionCycleModuleInterface' => $baseDir . '/classes/Modules/SubscriptionCycle/SubscriptionCycleModuleInterface.php',
'Xentral\\Modules\\SubscriptionCycle\\SubscriptionModule' => $baseDir . '/classes/Modules/SubscriptionCycle/SubscriptionModule.php',
'Xentral\\Modules\\SubscriptionCycle\\SubscriptionModuleInterface' => $baseDir . '/classes/Modules/SubscriptionCycle/SubscriptionModuleInterface.php',
'Xentral\\Modules\\SubscriptionCycle\\Wrapper\\BusinessLetterWrapper' => $baseDir . '/classes/Modules/SubscriptionCycle/Wrapper/BusinessLetterWrapper.php',
'Xentral\\Modules\\SuperSearch\\Bootstrap' => $baseDir . '/classes/Modules/SuperSearch/Bootstrap.php',

View File

@ -2,24 +2,24 @@
// autoload_files.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
'383eaff206634a77a1be54e64e6459c7' => $vendorDir . '/sabre/uri/lib/functions.php',
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php',
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
'2b9d0f43f9552984cfa82fee95491826' => $vendorDir . '/sabre/event/lib/coroutine.php',
'd81bab31d3feb45bfe2f283ea3c8fdf7' => $vendorDir . '/sabre/event/lib/Loop/functions.php',
'a1cce3d26cc15c00fcd0b3354bd72c88' => $vendorDir . '/sabre/event/lib/Promise/functions.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php',
'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php',
'8a9dc1de0ca7e01f3e08231539562f61' => $vendorDir . '/aws/aws-sdk-php/src/functions.php',

View File

@ -2,7 +2,7 @@
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(

View File

@ -2,7 +2,7 @@
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(

View File

@ -22,52 +22,29 @@ class ComposerAutoloaderInit0c49a81c1214ef2f7493c6ce921b17ee
return self::$loader;
}
require __DIR__ . '/platform_check.php';
spl_autoload_register(array('ComposerAutoloaderInit0c49a81c1214ef2f7493c6ce921b17ee', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInit0c49a81c1214ef2f7493c6ce921b17ee', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require_once __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->set($namespace, $path);
}
$map = require __DIR__ . '/autoload_psr4.php';
foreach ($map as $namespace => $path) {
$loader->setPsr4($namespace, $path);
}
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
}
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee::getInitializer($loader));
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire0c49a81c1214ef2f7493c6ce921b17ee($fileIdentifier, $file);
$filesToLoad = \Composer\Autoload\ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee::$files;
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
require $file;
}
}, null, null);
foreach ($filesToLoad as $fileIdentifier => $file) {
$requireFile($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequire0c49a81c1214ef2f7493c6ce921b17ee($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
}
}

View File

@ -9,18 +9,18 @@ class ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee
public static $files = array (
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
'383eaff206634a77a1be54e64e6459c7' => __DIR__ . '/..' . '/sabre/uri/lib/functions.php',
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
'25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
'25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php',
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
'2b9d0f43f9552984cfa82fee95491826' => __DIR__ . '/..' . '/sabre/event/lib/coroutine.php',
'd81bab31d3feb45bfe2f283ea3c8fdf7' => __DIR__ . '/..' . '/sabre/event/lib/Loop/functions.php',
'a1cce3d26cc15c00fcd0b3354bd72c88' => __DIR__ . '/..' . '/sabre/event/lib/Promise/functions.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php',
'b067bc7112e384b61c701452d53a14a8' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/JmesPath.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php',
'8a9dc1de0ca7e01f3e08231539562f61' => __DIR__ . '/..' . '/aws/aws-sdk-php/src/functions.php',
@ -1131,6 +1131,7 @@ class ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee
'Aws\\kendra\\kendraClient' => __DIR__ . '/..' . '/aws/aws-sdk-php/src/kendra/kendraClient.php',
'Aws\\signer\\Exception\\signerException' => __DIR__ . '/..' . '/aws/aws-sdk-php/src/signer/Exception/signerException.php',
'Aws\\signer\\signerClient' => __DIR__ . '/..' . '/aws/aws-sdk-php/src/signer/signerClient.php',
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'Datamatrix' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php',
'Datto\\JsonRpc\\Client' => __DIR__ . '/..' . '/datto/json-rpc/src/Client.php',
'Datto\\JsonRpc\\Evaluator' => __DIR__ . '/..' . '/datto/json-rpc/src/Evaluator.php',
@ -1435,9 +1436,6 @@ class ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee
'HTMLPurifier_Printer' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer.php',
'HTMLPurifier_Printer_CSSDefinition' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/CSSDefinition.php',
'HTMLPurifier_Printer_ConfigForm' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php',
'HTMLPurifier_Printer_ConfigForm_NullDecorator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php',
'HTMLPurifier_Printer_ConfigForm_bool' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php',
'HTMLPurifier_Printer_ConfigForm_default' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php',
'HTMLPurifier_Printer_HTMLDefinition' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/HTMLDefinition.php',
'HTMLPurifier_PropertyList' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/PropertyList.php',
'HTMLPurifier_PropertyListIterator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php',
@ -2509,6 +2507,57 @@ class ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee
'TrueBV\\Exception\\LabelOutOfBoundsException' => __DIR__ . '/..' . '/true/punycode/src/Exception/LabelOutOfBoundsException.php',
'TrueBV\\Exception\\OutOfBoundsException' => __DIR__ . '/..' . '/true/punycode/src/Exception/OutOfBoundsException.php',
'TrueBV\\Punycode' => __DIR__ . '/..' . '/true/punycode/src/Punycode.php',
'Versandart_dhl' => __DIR__ . '/../..' . '/www/lib/versandarten/dhl.php',
'Versandart_sendcloud' => __DIR__ . '/../..' . '/www/lib/versandarten/sendcloud.php',
'Xentral\\Carrier\\Dhl\\Data\\Bank' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Bank.php',
'Xentral\\Carrier\\Dhl\\Data\\Communication' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Communication.php',
'Xentral\\Carrier\\Dhl\\Data\\Contact' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Contact.php',
'Xentral\\Carrier\\Dhl\\Data\\Country' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Country.php',
'Xentral\\Carrier\\Dhl\\Data\\CreateShipmentOrderRequest' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/CreateShipmentOrderRequest.php',
'Xentral\\Carrier\\Dhl\\Data\\CreateShipmentOrderResponse' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/CreateShipmentOrderResponse.php',
'Xentral\\Carrier\\Dhl\\Data\\CreationState' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/CreationState.php',
'Xentral\\Carrier\\Dhl\\Data\\Customer' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Customer.php',
'Xentral\\Carrier\\Dhl\\Data\\DeleteShipmentOrderRequest' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/DeleteShipmentOrderRequest.php',
'Xentral\\Carrier\\Dhl\\Data\\DeleteShipmentOrderResponse' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/DeleteShipmentOrderResponse.php',
'Xentral\\Carrier\\Dhl\\Data\\DeletionState' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/DeletionState.php',
'Xentral\\Carrier\\Dhl\\Data\\DeliveryAddress' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/DeliveryAddress.php',
'Xentral\\Carrier\\Dhl\\Data\\Dimension' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Dimension.php',
'Xentral\\Carrier\\Dhl\\Data\\ExportDocPosition' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/ExportDocPosition.php',
'Xentral\\Carrier\\Dhl\\Data\\ExportDocument' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/ExportDocument.php',
'Xentral\\Carrier\\Dhl\\Data\\LabelData' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/LabelData.php',
'Xentral\\Carrier\\Dhl\\Data\\Name' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Name.php',
'Xentral\\Carrier\\Dhl\\Data\\NativeAddress' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/NativeAddress.php',
'Xentral\\Carrier\\Dhl\\Data\\NativeAddressNew' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/NativeAddressNew.php',
'Xentral\\Carrier\\Dhl\\Data\\PackStation' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/PackStation.php',
'Xentral\\Carrier\\Dhl\\Data\\Postfiliale' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Postfiliale.php',
'Xentral\\Carrier\\Dhl\\Data\\Receiver' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Receiver.php',
'Xentral\\Carrier\\Dhl\\Data\\ReceiverNativeAddress' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/ReceiverNativeAddress.php',
'Xentral\\Carrier\\Dhl\\Data\\Shipment' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Shipment.php',
'Xentral\\Carrier\\Dhl\\Data\\ShipmentDetails' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/ShipmentDetails.php',
'Xentral\\Carrier\\Dhl\\Data\\ShipmentItem' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/ShipmentItem.php',
'Xentral\\Carrier\\Dhl\\Data\\ShipmentNotification' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/ShipmentNotification.php',
'Xentral\\Carrier\\Dhl\\Data\\ShipmentOrder' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/ShipmentOrder.php',
'Xentral\\Carrier\\Dhl\\Data\\ShipmentService' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/ShipmentService.php',
'Xentral\\Carrier\\Dhl\\Data\\Shipper' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Shipper.php',
'Xentral\\Carrier\\Dhl\\Data\\Status' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Status.php',
'Xentral\\Carrier\\Dhl\\Data\\StatusElement' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/StatusElement.php',
'Xentral\\Carrier\\Dhl\\Data\\Statusinformation' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Statusinformation.php',
'Xentral\\Carrier\\Dhl\\Data\\Version' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/Data/Version.php',
'Xentral\\Carrier\\Dhl\\DhlApi' => __DIR__ . '/../..' . '/classes/Carrier/Dhl/DhlApi.php',
'Xentral\\Carrier\\SendCloud\\Data\\Document' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/Document.php',
'Xentral\\Carrier\\SendCloud\\Data\\Label' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/Label.php',
'Xentral\\Carrier\\SendCloud\\Data\\ParcelBase' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/ParcelBase.php',
'Xentral\\Carrier\\SendCloud\\Data\\ParcelCreation' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/ParcelCreation.php',
'Xentral\\Carrier\\SendCloud\\Data\\ParcelCreationError' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/ParcelCreationError.php',
'Xentral\\Carrier\\SendCloud\\Data\\ParcelItem' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/ParcelItem.php',
'Xentral\\Carrier\\SendCloud\\Data\\ParcelResponse' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/ParcelResponse.php',
'Xentral\\Carrier\\SendCloud\\Data\\SenderAddress' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/SenderAddress.php',
'Xentral\\Carrier\\SendCloud\\Data\\Shipment' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/Shipment.php',
'Xentral\\Carrier\\SendCloud\\Data\\ShippingMethod' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/ShippingMethod.php',
'Xentral\\Carrier\\SendCloud\\Data\\ShippingProduct' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/ShippingProduct.php',
'Xentral\\Carrier\\SendCloud\\Data\\Status' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/Data/Status.php',
'Xentral\\Carrier\\SendCloud\\SendCloudApi' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/SendCloudApi.php',
'Xentral\\Carrier\\SendCloud\\SendcloudApiException' => __DIR__ . '/../..' . '/classes/Carrier/SendCloud/SendcloudApiException.php',
'Xentral\\Components\\Backup\\Adapter\\AdapterInterface' => __DIR__ . '/../..' . '/classes/Components/Backup/Adapter/AdapterInterface.php',
'Xentral\\Components\\Backup\\Adapter\\ExecAdapter' => __DIR__ . '/../..' . '/classes/Components/Backup/Adapter/ExecAdapter.php',
'Xentral\\Components\\Backup\\Bootstrap' => __DIR__ . '/../..' . '/classes/Components/Backup/Bootstrap.php',
@ -3045,6 +3094,7 @@ class ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee
'Xentral\\Modules\\Article\\Exception\\InvalidArgumentException' => __DIR__ . '/../..' . '/classes/Modules/Article/Exception/InvalidArgumentException.php',
'Xentral\\Modules\\Article\\Exception\\SellingPriceNotFoundException' => __DIR__ . '/../..' . '/classes/Modules/Article/Exception/SellingPriceNotFoundException.php',
'Xentral\\Modules\\Article\\Gateway\\ArticleGateway' => __DIR__ . '/../..' . '/classes/Modules/Article/Gateway/ArticleGateway.php',
'Xentral\\Modules\\Article\\Service\\ArticleService' => __DIR__ . '/../..' . '/classes/Modules/Article/Service/ArticleService.php',
'Xentral\\Modules\\Article\\Service\\CurrencyConversionService' => __DIR__ . '/../..' . '/classes/Modules/Article/Service/CurrencyConversionService.php',
'Xentral\\Modules\\Article\\Service\\PurchasePriceService' => __DIR__ . '/../..' . '/classes/Modules/Article/Service/PurchasePriceService.php',
'Xentral\\Modules\\Article\\Service\\SellingPriceService' => __DIR__ . '/../..' . '/classes/Modules/Article/Service/SellingPriceService.php',
@ -3151,10 +3201,7 @@ class ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee
'Xentral\\Modules\\Datanorm\\Service\\DatanormIntermediateService' => __DIR__ . '/../..' . '/classes/Modules/Datanorm/Service/DatanormIntermediateService.php',
'Xentral\\Modules\\Datanorm\\Service\\DatanormReader' => __DIR__ . '/../..' . '/classes/Modules/Datanorm/Service/DatanormReader.php',
'Xentral\\Modules\\Datanorm\\Wrapper\\AddressWrapper' => __DIR__ . '/../..' . '/classes/Modules/Datanorm/Wrapper/AddressWrapper.php',
'Xentral\\Modules\\DatevApi\\Bootstrap' => __DIR__ . '/../..' . '/classes/Modules/DatevApi/Bootstrap.php',
'Xentral\\Modules\\DatevApi\\DataTable\\DatevExportDataTable' => __DIR__ . '/../..' . '/classes/Modules/DatevApi/DataTable/DatevExportDataTable.php',
'Xentral\\Modules\\DatevApi\\DatevApiService' => __DIR__ . '/../..' . '/classes/Modules/DatevApi/DatevApiService.php',
'Xentral\\Modules\\DatevApi\\DatevZipStream' => __DIR__ . '/../..' . '/classes/Modules/DatevApi/DatevZipStream.php',
'Xentral\\Modules\\DemoExporter\\Bootstrap' => __DIR__ . '/../..' . '/classes/Modules/DemoExporter/Bootstrap.php',
'Xentral\\Modules\\DemoExporter\\DemoExporterCleanerService' => __DIR__ . '/../..' . '/classes/Modules/DemoExporter/DemoExporterCleanerService.php',
'Xentral\\Modules\\DemoExporter\\DemoExporterDateiService' => __DIR__ . '/../..' . '/classes/Modules/DemoExporter/DemoExporterDateiService.php',
@ -3326,7 +3373,6 @@ class ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyApi' => __DIR__ . '/../..' . '/classes/Modules/FiskalyApi/Service/FiskalyApi.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyCashPointClosingDBInterface' => __DIR__ . '/../..' . '/classes/Modules/FiskalyApi/Service/FiskalyCashPointClosingDBInterface.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyCashPointClosingDBService' => __DIR__ . '/../..' . '/classes/Modules/FiskalyApi/Service/FiskalyCashPointClosingDBService.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyConfig' => __DIR__ . '/../..' . '/classes/Modules/FiskalyApi/Service/FiskalyConfig.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyDSFinVKApi' => __DIR__ . '/../..' . '/classes/Modules/FiskalyApi/Service/FiskalyDSFinVKApi.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyEReceiptApi' => __DIR__ . '/../..' . '/classes/Modules/FiskalyApi/Service/FiskalyEReceiptApi.php',
'Xentral\\Modules\\FiskalyApi\\Service\\FiskalyKassenSichVApi' => __DIR__ . '/../..' . '/classes/Modules/FiskalyApi/Service/FiskalyKassenSichVApi.php',
@ -3507,6 +3553,15 @@ class ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee
'Xentral\\Modules\\MandatoryFields\\Service\\MandatoryFieldsGateway' => __DIR__ . '/../..' . '/classes/Modules/MandatoryFields/Service/MandatoryFieldsGateway.php',
'Xentral\\Modules\\MandatoryFields\\Service\\MandatoryFieldsService' => __DIR__ . '/../..' . '/classes/Modules/MandatoryFields/Service/MandatoryFieldsService.php',
'Xentral\\Modules\\MandatoryFields\\Service\\MandatoryFieldsValidator' => __DIR__ . '/../..' . '/classes/Modules/MandatoryFields/Service/MandatoryFieldsValidator.php',
'Xentral\\Modules\\MatrixProduct\\Bootstrap' => __DIR__ . '/../..' . '/classes/Modules/MatrixProduct/Bootstrap.php',
'Xentral\\Modules\\MatrixProduct\\Data\\Group' => __DIR__ . '/../..' . '/classes/Modules/MatrixProduct/Data/Group.php',
'Xentral\\Modules\\MatrixProduct\\Data\\Option' => __DIR__ . '/../..' . '/classes/Modules/MatrixProduct/Data/Option.php',
'Xentral\\Modules\\MatrixProduct\\Data\\Translation' => __DIR__ . '/../..' . '/classes/Modules/MatrixProduct/Data/Translation.php',
'Xentral\\Modules\\MatrixProduct\\MatrixProductGateway' => __DIR__ . '/../..' . '/classes/Modules/MatrixProduct/MatrixProductGateway.php',
'Xentral\\Modules\\MatrixProduct\\MatrixProductService' => __DIR__ . '/../..' . '/classes/Modules/MatrixProduct/MatrixProductService.php',
'Xentral\\Modules\\Onlineshop\\Data\\OrderStatus' => __DIR__ . '/../..' . '/classes/Modules/Onlineshop/Data/OrderStatus.php',
'Xentral\\Modules\\Onlineshop\\Data\\OrderStatusUpdateRequest' => __DIR__ . '/../..' . '/classes/Modules/Onlineshop/Data/OrderStatusUpdateRequest.php',
'Xentral\\Modules\\Onlineshop\\Data\\Shipment' => __DIR__ . '/../..' . '/classes/Modules/Onlineshop/Data/Shipment.php',
'Xentral\\Modules\\Onlineshop\\Data\\ShopConnectorOrderStatusUpdateResponse' => __DIR__ . '/../..' . '/classes/Modules/Onlineshop/Data/ShopConnectorOrderStatusUpdateResponse.php',
'Xentral\\Modules\\Onlineshop\\Data\\ShopConnectorResponseInterface' => __DIR__ . '/../..' . '/classes/Modules/Onlineshop/Data/ShopConnectorResponseInterface.php',
'Xentral\\Modules\\PartialDelivery\\Bootstrap' => __DIR__ . '/../..' . '/classes/Modules/PartialDelivery/Bootstrap.php',
@ -3664,6 +3719,9 @@ class ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee
'Xentral\\Modules\\ScanArticle\\Wrapper\\PriceWrapper' => __DIR__ . '/../..' . '/classes/Modules/ScanArticle/Wrapper/PriceWrapper.php',
'Xentral\\Modules\\ScanArticle\\Wrapper\\SavePositionWrapper' => __DIR__ . '/../..' . '/classes/Modules/ScanArticle/Wrapper/SavePositionWrapper.php',
'Xentral\\Modules\\Setting\\Bootstrap' => __DIR__ . '/../..' . '/classes/Modules/Setting/Bootstrap.php',
'Xentral\\Modules\\ShippingMethod\\Model\\CreateShipmentResult' => __DIR__ . '/../..' . '/classes/Modules/ShippingMethod/Model/CreateShipmentResult.php',
'Xentral\\Modules\\ShippingMethod\\Model\\CustomsInfo' => __DIR__ . '/../..' . '/classes/Modules/ShippingMethod/Model/CustomsInfo.php',
'Xentral\\Modules\\ShippingMethod\\Model\\Product' => __DIR__ . '/../..' . '/classes/Modules/ShippingMethod/Model/Product.php',
'Xentral\\Modules\\ShippingTaxSplit\\Bootstrap' => __DIR__ . '/../..' . '/classes/Modules/ShippingTaxSplit/Bootstrap.php',
'Xentral\\Modules\\ShippingTaxSplit\\Exception\\InvalidArgumentException' => __DIR__ . '/../..' . '/classes/Modules/ShippingTaxSplit/Exception/InvalidArgumentException.php',
'Xentral\\Modules\\ShippingTaxSplit\\Exception\\ShippingTaxSplitExceptionInterface' => __DIR__ . '/../..' . '/classes/Modules/ShippingTaxSplit/Exception/ShippingTaxSplitExceptionInterface.php',
@ -3723,6 +3781,7 @@ class ComposerStaticInit0c49a81c1214ef2f7493c6ce921b17ee
'Xentral\\Modules\\SubscriptionCycle\\Service\\SubscriptionCycleJobService' => __DIR__ . '/../..' . '/classes/Modules/SubscriptionCycle/Service/SubscriptionCycleJobService.php',
'Xentral\\Modules\\SubscriptionCycle\\SubscriptionCycleCacheFiller' => __DIR__ . '/../..' . '/classes/Modules/SubscriptionCycle/SubscriptionCycleCacheFiller.php',
'Xentral\\Modules\\SubscriptionCycle\\SubscriptionCycleModuleInterface' => __DIR__ . '/../..' . '/classes/Modules/SubscriptionCycle/SubscriptionCycleModuleInterface.php',
'Xentral\\Modules\\SubscriptionCycle\\SubscriptionModule' => __DIR__ . '/../..' . '/classes/Modules/SubscriptionCycle/SubscriptionModule.php',
'Xentral\\Modules\\SubscriptionCycle\\SubscriptionModuleInterface' => __DIR__ . '/../..' . '/classes/Modules/SubscriptionCycle/SubscriptionModuleInterface.php',
'Xentral\\Modules\\SubscriptionCycle\\Wrapper\\BusinessLetterWrapper' => __DIR__ . '/../..' . '/classes/Modules/SubscriptionCycle/Wrapper/BusinessLetterWrapper.php',
'Xentral\\Modules\\SuperSearch\\Bootstrap' => __DIR__ . '/../..' . '/classes/Modules/SuperSearch/Bootstrap.php',

File diff suppressed because it is too large Load Diff

502
vendor/composer/installed.php vendored Normal file
View File

@ -0,0 +1,502 @@
<?php return array(
'root' => array(
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '95cb03f43b1395537a50c081cd9287e4f5ea50c1',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'dev' => true,
),
'versions' => array(
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '95cb03f43b1395537a50c081cd9287e4f5ea50c1',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'dev_requirement' => false,
),
'aura/sqlquery' => array(
'pretty_version' => '2.7.1',
'version' => '2.7.1.0',
'reference' => 'dd81b57aeb43628180a9c70a4df58d872024d7f2',
'type' => 'library',
'install_path' => __DIR__ . '/../aura/sqlquery',
'aliases' => array(),
'dev_requirement' => false,
),
'aws/aws-sdk-php' => array(
'pretty_version' => '3.175.2',
'version' => '3.175.2.0',
'reference' => 'a8e88eac60b403ed76643327e74f55831570a64b',
'type' => 'library',
'install_path' => __DIR__ . '/../aws/aws-sdk-php',
'aliases' => array(),
'dev_requirement' => false,
),
'container-interop/container-interop' => array(
'pretty_version' => '1.2.0',
'version' => '1.2.0.0',
'reference' => '79cbf1341c22ec75643d841642dd5d6acd83bdb8',
'type' => 'library',
'install_path' => __DIR__ . '/../container-interop/container-interop',
'aliases' => array(),
'dev_requirement' => false,
),
'datto/json-rpc' => array(
'pretty_version' => '6.1.0',
'version' => '6.1.0.0',
'reference' => 'ad4d735f48d80c6b53f7405e5007d97c996533f6',
'type' => 'library',
'install_path' => __DIR__ . '/../datto/json-rpc',
'aliases' => array(),
'dev_requirement' => false,
),
'datto/json-rpc-http' => array(
'pretty_version' => '5.0.6',
'version' => '5.0.6.0',
'reference' => 'db15a075f3562c4e8d297b9082acc5b2869bd4b4',
'type' => 'library',
'install_path' => __DIR__ . '/../datto/json-rpc-http',
'aliases' => array(),
'dev_requirement' => false,
),
'ezyang/htmlpurifier' => array(
'pretty_version' => 'v4.13.0',
'version' => '4.13.0.0',
'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75',
'type' => 'library',
'install_path' => __DIR__ . '/../ezyang/htmlpurifier',
'aliases' => array(),
'dev_requirement' => false,
),
'fiskaly/fiskaly-sdk-php' => array(
'pretty_version' => '1.2.100',
'version' => '1.2.100.0',
'reference' => 'f2598d32f51ca18f81615df2b63deff7d9569097',
'type' => 'library',
'install_path' => __DIR__ . '/../fiskaly/fiskaly-sdk-php',
'aliases' => array(),
'dev_requirement' => false,
),
'guzzlehttp/guzzle' => array(
'pretty_version' => '6.5.5',
'version' => '6.5.5.0',
'reference' => '9d4290de1cfd701f38099ef7e183b64b4b7b0c5e',
'type' => 'library',
'install_path' => __DIR__ . '/../guzzlehttp/guzzle',
'aliases' => array(),
'dev_requirement' => false,
),
'guzzlehttp/promises' => array(
'pretty_version' => '1.4.1',
'version' => '1.4.1.0',
'reference' => '8e7d04f1f6450fef59366c399cfad4b9383aa30d',
'type' => 'library',
'install_path' => __DIR__ . '/../guzzlehttp/promises',
'aliases' => array(),
'dev_requirement' => false,
),
'guzzlehttp/psr7' => array(
'pretty_version' => '1.8.1',
'version' => '1.8.1.0',
'reference' => '35ea11d335fd638b5882ff1725228b3d35496ab1',
'type' => 'library',
'install_path' => __DIR__ . '/../guzzlehttp/psr7',
'aliases' => array(),
'dev_requirement' => false,
),
'itbz/fpdf' => array(
'dev_requirement' => false,
'replaced' => array(
0 => '*',
),
),
'laminas/laminas-loader' => array(
'pretty_version' => '2.6.1',
'version' => '2.6.1.0',
'reference' => '5d01c2c237ae9e68bec262f339947e2ea18979bc',
'type' => 'library',
'install_path' => __DIR__ . '/../laminas/laminas-loader',
'aliases' => array(),
'dev_requirement' => false,
),
'laminas/laminas-mail' => array(
'pretty_version' => '2.12.5',
'version' => '2.12.5.0',
'reference' => 'ed5b36a0deef4ffafe6138c2ae9cafcffafab856',
'type' => 'library',
'install_path' => __DIR__ . '/../laminas/laminas-mail',
'aliases' => array(),
'dev_requirement' => false,
),
'laminas/laminas-mime' => array(
'pretty_version' => '2.7.4',
'version' => '2.7.4.0',
'reference' => 'e45a7d856bf7b4a7b5bd00d6371f9961dc233add',
'type' => 'library',
'install_path' => __DIR__ . '/../laminas/laminas-mime',
'aliases' => array(),
'dev_requirement' => false,
),
'laminas/laminas-stdlib' => array(
'pretty_version' => '3.2.1',
'version' => '3.2.1.0',
'reference' => '2b18347625a2f06a1a485acfbc870f699dbe51c6',
'type' => 'library',
'install_path' => __DIR__ . '/../laminas/laminas-stdlib',
'aliases' => array(),
'dev_requirement' => false,
),
'laminas/laminas-validator' => array(
'pretty_version' => '2.13.5',
'version' => '2.13.5.0',
'reference' => 'd334dddda43af263d6a7e5024fd2b013cb6981f7',
'type' => 'library',
'install_path' => __DIR__ . '/../laminas/laminas-validator',
'aliases' => array(),
'dev_requirement' => false,
),
'laminas/laminas-zendframework-bridge' => array(
'dev_requirement' => false,
'replaced' => array(
0 => '*',
),
),
'league/color-extractor' => array(
'pretty_version' => '0.3.2',
'version' => '0.3.2.0',
'reference' => '837086ec60f50c84c611c613963e4ad2e2aec806',
'type' => 'library',
'install_path' => __DIR__ . '/../league/color-extractor',
'aliases' => array(),
'dev_requirement' => false,
),
'league/flysystem' => array(
'pretty_version' => '1.0.70',
'version' => '1.0.70.0',
'reference' => '585824702f534f8d3cf7fab7225e8466cc4b7493',
'type' => 'library',
'install_path' => __DIR__ . '/../league/flysystem',
'aliases' => array(),
'dev_requirement' => false,
),
'league/oauth1-client' => array(
'pretty_version' => 'v1.9.0',
'version' => '1.9.0.0',
'reference' => '1e7e6be2dc543bf466236fb171e5b20e1b06aee6',
'type' => 'library',
'install_path' => __DIR__ . '/../league/oauth1-client',
'aliases' => array(),
'dev_requirement' => false,
),
'league/oauth2-client' => array(
'pretty_version' => '2.6.0',
'version' => '2.6.0.0',
'reference' => 'badb01e62383430706433191b82506b6df24ad98',
'type' => 'library',
'install_path' => __DIR__ . '/../league/oauth2-client',
'aliases' => array(),
'dev_requirement' => false,
),
'lfkeitel/phptotp' => array(
'pretty_version' => 'v1.0.0',
'version' => '1.0.0.0',
'reference' => '2211fb6e025d3c10362771c54c9a9ad5593a3469',
'type' => 'library',
'install_path' => __DIR__ . '/../lfkeitel/phptotp',
'aliases' => array(),
'dev_requirement' => false,
),
'matthecat/colorextractor' => array(
'dev_requirement' => false,
'replaced' => array(
0 => '*',
),
),
'mtdowling/jmespath.php' => array(
'pretty_version' => '2.6.0',
'version' => '2.6.0.0',
'reference' => '42dae2cbd13154083ca6d70099692fef8ca84bfb',
'type' => 'library',
'install_path' => __DIR__ . '/../mtdowling/jmespath.php',
'aliases' => array(),
'dev_requirement' => false,
),
'nikic/fast-route' => array(
'pretty_version' => 'v1.3.0',
'version' => '1.3.0.0',
'reference' => '181d480e08d9476e61381e04a71b34dc0432e812',
'type' => 'library',
'install_path' => __DIR__ . '/../nikic/fast-route',
'aliases' => array(),
'dev_requirement' => false,
),
'paragonie/random_compat' => array(
'pretty_version' => 'v9.99.100',
'version' => '9.99.100.0',
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
'type' => 'library',
'install_path' => __DIR__ . '/../paragonie/random_compat',
'aliases' => array(),
'dev_requirement' => false,
),
'phpmailer/phpmailer' => array(
'pretty_version' => 'v6.3.0',
'version' => '6.3.0.0',
'reference' => '4a08cf4cdd2c38d12ee2b9fa69e5d235f37a6dcb',
'type' => 'library',
'install_path' => __DIR__ . '/../phpmailer/phpmailer',
'aliases' => array(),
'dev_requirement' => false,
),
'phpseclib/phpseclib' => array(
'pretty_version' => '2.0.30',
'version' => '2.0.30.0',
'reference' => '136b9ca7eebef78be14abf90d65c5e57b6bc5d36',
'type' => 'library',
'install_path' => __DIR__ . '/../phpseclib/phpseclib',
'aliases' => array(),
'dev_requirement' => false,
),
'psr/container' => array(
'pretty_version' => '1.1.1',
'version' => '1.1.1.0',
'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/container',
'aliases' => array(),
'dev_requirement' => false,
),
'psr/http-message' => array(
'pretty_version' => '1.0.1',
'version' => '1.0.1.0',
'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/http-message',
'aliases' => array(),
'dev_requirement' => false,
),
'psr/http-message-implementation' => array(
'dev_requirement' => false,
'provided' => array(
0 => '1.0',
),
),
'psr/log' => array(
'pretty_version' => '1.1.3',
'version' => '1.1.3.0',
'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/log',
'aliases' => array(),
'dev_requirement' => false,
),
'rakit/validation' => array(
'pretty_version' => 'v0.22.3',
'version' => '0.22.3.0',
'reference' => '61ed77b772c214faa67aaf1c4adf81502b06cd4b',
'type' => 'library',
'install_path' => __DIR__ . '/../rakit/validation',
'aliases' => array(),
'dev_requirement' => false,
),
'ralouphie/getallheaders' => array(
'pretty_version' => '3.0.3',
'version' => '3.0.3.0',
'reference' => '120b605dfeb996808c31b6477290a714d356e822',
'type' => 'library',
'install_path' => __DIR__ . '/../ralouphie/getallheaders',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/dav' => array(
'pretty_version' => '3.2.3',
'version' => '3.2.3.0',
'reference' => 'a9780ce4f35560ecbd0af524ad32d9d2c8954b80',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/dav',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/event' => array(
'pretty_version' => '3.0.0',
'version' => '3.0.0.0',
'reference' => '831d586f5a442dceacdcf5e9c4c36a4db99a3534',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/event',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/http' => array(
'pretty_version' => 'v4.2.4',
'version' => '4.2.4.0',
'reference' => 'acccec4ba863959b2d10c1fa0fb902736c5c8956',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/http',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/uri' => array(
'pretty_version' => '1.2.1',
'version' => '1.2.1.0',
'reference' => 'ada354d83579565949d80b2e15593c2371225e61',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/uri',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/vobject' => array(
'pretty_version' => '4.2.2',
'version' => '4.2.2.0',
'reference' => '449616b2d45b95c8973975de23f34a3d14f63b4b',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/vobject',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/xml' => array(
'pretty_version' => '1.5.1',
'version' => '1.5.1.0',
'reference' => 'a367665f1df614c3b8fefc30a54de7cd295e444e',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/xml',
'aliases' => array(),
'dev_requirement' => false,
),
'smarty/smarty' => array(
'pretty_version' => 'v3.1.39',
'version' => '3.1.39.0',
'reference' => 'e27da524f7bcd7361e3ea5cdfa99c4378a7b5419',
'type' => 'library',
'install_path' => __DIR__ . '/../smarty/smarty',
'aliases' => array(),
'dev_requirement' => false,
),
'swiss-payment-slip/swiss-payment-slip' => array(
'pretty_version' => '0.13.0',
'version' => '0.13.0.0',
'reference' => '3f5e23552e59ff486318c3af66b0374fa61a176f',
'type' => 'library',
'install_path' => __DIR__ . '/../swiss-payment-slip/swiss-payment-slip',
'aliases' => array(
0 => '0.11.1',
),
'dev_requirement' => false,
),
'swiss-payment-slip/swiss-payment-slip-fpdf' => array(
'pretty_version' => '0.6.0',
'version' => '0.6.0.0',
'reference' => '72f722188d89b2651d4751ab812146cb1f165061',
'type' => 'library',
'install_path' => __DIR__ . '/../swiss-payment-slip/swiss-payment-slip-fpdf',
'aliases' => array(),
'dev_requirement' => false,
),
'swiss-payment-slip/swiss-payment-slip-pdf' => array(
'pretty_version' => '0.13.1',
'version' => '0.13.1.0',
'reference' => '4355743b2406875e9fed2117d8df445ba6848be4',
'type' => 'library',
'install_path' => __DIR__ . '/../swiss-payment-slip/swiss-payment-slip-pdf',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-intl-idn' => array(
'pretty_version' => 'v1.22.1',
'version' => '1.22.1.0',
'reference' => '2d63434d922daf7da8dd863e7907e67ee3031483',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-intl-normalizer' => array(
'pretty_version' => 'v1.22.1',
'version' => '1.22.1.0',
'reference' => '43a0283138253ed1d48d352ab6d0bdb3f809f248',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-mbstring' => array(
'pretty_version' => 'v1.22.1',
'version' => '1.22.1.0',
'reference' => '5232de97ee3b75b0360528dae24e73db49566ab1',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-php72' => array(
'pretty_version' => 'v1.22.1',
'version' => '1.22.1.0',
'reference' => 'cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-php72',
'aliases' => array(),
'dev_requirement' => false,
),
'tecnickcom/tcpdf' => array(
'pretty_version' => '6.3.5',
'version' => '6.3.5.0',
'reference' => '19a535eaa7fb1c1cac499109deeb1a7a201b4549',
'type' => 'library',
'install_path' => __DIR__ . '/../tecnickcom/tcpdf',
'aliases' => array(),
'dev_requirement' => false,
),
'true/punycode' => array(
'pretty_version' => 'v2.1.1',
'version' => '2.1.1.0',
'reference' => 'a4d0c11a36dd7f4e7cd7096076cab6d3378a071e',
'type' => 'library',
'install_path' => __DIR__ . '/../true/punycode',
'aliases' => array(),
'dev_requirement' => false,
),
'y0lk/oauth1-etsy' => array(
'pretty_version' => '1.1.0',
'version' => '1.1.0.0',
'reference' => '3fef9d03787e01a72ef19cdcbbc243c166a5d425',
'type' => 'library',
'install_path' => __DIR__ . '/../y0lk/oauth1-etsy',
'aliases' => array(),
'dev_requirement' => false,
),
'zendframework/zend-loader' => array(
'dev_requirement' => false,
'replaced' => array(
0 => '2.6.1',
),
),
'zendframework/zend-mail' => array(
'dev_requirement' => false,
'replaced' => array(
0 => '^2.10.0',
),
),
'zendframework/zend-mime' => array(
'dev_requirement' => false,
'replaced' => array(
0 => '^2.7.2',
),
),
'zendframework/zend-stdlib' => array(
'dev_requirement' => false,
'replaced' => array(
0 => '3.2.1',
),
),
'zendframework/zend-validator' => array(
'dev_requirement' => false,
'replaced' => array(
0 => '^2.13.0',
),
),
),
);

26
vendor/composer/platform_check.php vendored Normal file
View File

@ -0,0 +1,26 @@
<?php
// platform_check.php @generated by Composer
$issues = array();
if (!(PHP_VERSION_ID >= 70400)) {
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.';
}
if ($issues) {
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
} elseif (!headers_sent()) {
echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
}
}
trigger_error(
'Composer detected issues in your platform: ' . implode(' ', $issues),
E_USER_ERROR
);
}

View File

@ -0,0 +1,58 @@
{
"name": "laminas/laminas-loader",
"description": "Autoloading and plugin loading strategies",
"license": "BSD-3-Clause",
"keywords": [
"laminas",
"loader"
],
"homepage": "https://laminas.dev",
"support": {
"docs": "https://docs.laminas.dev/laminas-loader/",
"issues": "https://github.com/laminas/laminas-loader/issues",
"source": "https://github.com/laminas/laminas-loader",
"rss": "https://github.com/laminas/laminas-loader/releases.atom",
"chat": "https://laminas.dev/chat",
"forum": "https://discourse.laminas.dev"
},
"config": {
"sort-packages": true
},
"extra": {
"branch-alias": {
"dev-master": "2.6.x-dev",
"dev-develop": "2.7.x-dev"
}
},
"require": {
"php": "^5.6 || ^7.0",
"laminas/laminas-zendframework-bridge": "^1.0"
},
"require-dev": {
"laminas/laminas-coding-standard": "~1.0.0",
"phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4"
},
"autoload": {
"psr-4": {
"Laminas\\Loader\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"LaminasTest\\Loader\\": "test/"
}
},
"scripts": {
"check": [
"@cs-check",
"@test"
],
"cs-check": "phpcs",
"cs-fix": "phpcbf",
"test": "phpunit --colors=always",
"test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
},
"replace": {
"zendframework/zend-loader": "self.version"
}
}

View File

@ -0,0 +1,63 @@
{
"name": "laminas/laminas-mime",
"description": "Create and parse MIME messages and parts",
"license": "BSD-3-Clause",
"keywords": [
"laminas",
"mime"
],
"homepage": "https://laminas.dev",
"support": {
"docs": "https://docs.laminas.dev/laminas-mime/",
"issues": "https://github.com/laminas/laminas-mime/issues",
"source": "https://github.com/laminas/laminas-mime",
"rss": "https://github.com/laminas/laminas-mime/releases.atom",
"chat": "https://laminas.dev/chat",
"forum": "https://discourse.laminas.dev"
},
"config": {
"sort-packages": true
},
"extra": {
"branch-alias": {
"dev-master": "2.7.x-dev",
"dev-develop": "2.8.x-dev"
}
},
"require": {
"php": "^5.6 || ^7.0",
"laminas/laminas-stdlib": "^2.7 || ^3.0",
"laminas/laminas-zendframework-bridge": "^1.0"
},
"require-dev": {
"laminas/laminas-coding-standard": "~1.0.0",
"laminas/laminas-mail": "^2.6",
"phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20"
},
"suggest": {
"laminas/laminas-mail": "Laminas\\Mail component"
},
"autoload": {
"psr-4": {
"Laminas\\Mime\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"LaminasTest\\Mime\\": "test/"
}
},
"scripts": {
"check": [
"@cs-check",
"@test"
],
"cs-check": "phpcs",
"cs-fix": "phpcbf",
"test": "phpunit --colors=always",
"test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
},
"replace": {
"zendframework/zend-mime": "^2.7.2"
}
}

View File

@ -0,0 +1,60 @@
{
"name": "laminas/laminas-stdlib",
"description": "SPL extensions, array utilities, error handlers, and more",
"license": "BSD-3-Clause",
"keywords": [
"laminas",
"stdlib"
],
"homepage": "https://laminas.dev",
"support": {
"docs": "https://docs.laminas.dev/laminas-stdlib/",
"issues": "https://github.com/laminas/laminas-stdlib/issues",
"source": "https://github.com/laminas/laminas-stdlib",
"rss": "https://github.com/laminas/laminas-stdlib/releases.atom",
"chat": "https://laminas.dev/chat",
"forum": "https://discourse.laminas.dev"
},
"config": {
"sort-packages": true
},
"extra": {
"branch-alias": {
"dev-master": "3.2.x-dev",
"dev-develop": "3.3.x-dev"
}
},
"require": {
"php": "^5.6 || ^7.0",
"laminas/laminas-zendframework-bridge": "^1.0"
},
"require-dev": {
"laminas/laminas-coding-standard": "~1.0.0",
"phpbench/phpbench": "^0.13",
"phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2"
},
"autoload": {
"psr-4": {
"Laminas\\Stdlib\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"LaminasTest\\Stdlib\\": "test/",
"LaminasBench\\Stdlib\\": "benchmark/"
}
},
"scripts": {
"check": [
"@cs-check",
"@test"
],
"cs-check": "phpcs",
"cs-fix": "phpcbf",
"test": "phpunit --colors=always",
"test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
},
"replace": {
"zendframework/zend-stdlib": "self.version"
}
}

View File

@ -0,0 +1,84 @@
{
"name": "laminas/laminas-validator",
"description": "Validation classes for a wide range of domains, and the ability to chain validators to create complex validation criteria",
"license": "BSD-3-Clause",
"keywords": [
"laminas",
"validator"
],
"homepage": "https://laminas.dev",
"support": {
"docs": "https://docs.laminas.dev/laminas-validator/",
"issues": "https://github.com/laminas/laminas-validator/issues",
"source": "https://github.com/laminas/laminas-validator",
"rss": "https://github.com/laminas/laminas-validator/releases.atom",
"chat": "https://laminas.dev/chat",
"forum": "https://discourse.laminas.dev"
},
"config": {
"sort-packages": true
},
"extra": {
"laminas": {
"component": "Laminas\\Validator",
"config-provider": "Laminas\\Validator\\ConfigProvider"
}
},
"require": {
"php": "^7.1",
"container-interop/container-interop": "^1.1",
"laminas/laminas-stdlib": "^3.2.1",
"laminas/laminas-zendframework-bridge": "^1.0"
},
"require-dev": {
"laminas/laminas-cache": "^2.6.1",
"laminas/laminas-coding-standard": "~1.0.0",
"laminas/laminas-config": "^2.6",
"laminas/laminas-db": "^2.7",
"laminas/laminas-filter": "^2.6",
"laminas/laminas-http": "^2.5.4",
"laminas/laminas-i18n": "^2.6",
"laminas/laminas-math": "^2.6",
"laminas/laminas-servicemanager": "^2.7.5 || ^3.0.3",
"laminas/laminas-session": "^2.8",
"laminas/laminas-uri": "^2.5",
"phpunit/phpunit": "^7.5.20 || ^8.5.2",
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0"
},
"suggest": {
"laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator",
"laminas/laminas-filter": "Laminas\\Filter component, required by the Digits validator",
"laminas/laminas-i18n": "Laminas\\I18n component to allow translation of validation error messages",
"laminas/laminas-i18n-resources": "Translations of validator messages",
"laminas/laminas-math": "Laminas\\Math component, required by the Csrf validator",
"laminas/laminas-servicemanager": "Laminas\\ServiceManager component to allow using the ValidatorPluginManager and validator chains",
"laminas/laminas-session": "Laminas\\Session component, ^2.8; required by the Csrf validator",
"laminas/laminas-uri": "Laminas\\Uri component, required by the Uri and Sitemap\\Loc validators",
"psr/http-message": "psr/http-message, required when validating PSR-7 UploadedFileInterface instances via the Upload and UploadFile validators"
},
"autoload": {
"psr-4": {
"Laminas\\Validator\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"LaminasTest\\Validator\\": "test/"
}
},
"scripts": {
"check": [
"@cs-check",
"@test"
],
"cs-check": "phpcs",
"cs-fix": "phpcbf",
"test": "phpunit --colors=always",
"test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
},
"replace": {
"zendframework/zend-validator": "^2.13.0"
}
}

0
vendor/laminas/laminas-validator/src/Db/AbstractDb.php vendored Normal file → Executable file
View File

0
vendor/laminas/laminas-validator/src/Isbn/Isbn10.php vendored Normal file → Executable file
View File

0
vendor/laminas/laminas-validator/src/Isbn/Isbn13.php vendored Normal file → Executable file
View File

View File

@ -0,0 +1,7 @@
/build
/vendor
/composer.lock
/coverage.xml
/.phpunit.result.cache
/.php_cs.cache
.DS_Store

View File

@ -0,0 +1,29 @@
<?php
$finder = PhpCsFixer\Finder::create()->in([__DIR__ . '/src', __DIR__ . '/tests']);
return PhpCsFixer\Config::create()
->setRules([
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
'binary_operator_spaces' => true,
'blank_line_before_return' => true,
'cast_spaces' => true,
'concat_space' => ['spacing' => 'one'],
'no_singleline_whitespace_before_semicolons' => true,
'not_operator_with_space' => true,
'ordered_imports' => true,
'phpdoc_align' => true,
'phpdoc_indent' => true,
'phpdoc_no_access' => true,
'phpdoc_no_alias_tag' => true,
'phpdoc_no_package' => true,
'phpdoc_scalar' => true,
'phpdoc_separation' => true,
'phpdoc_summary' => true,
'phpdoc_to_comment' => true,
'phpdoc_trim' => true,
'single_blank_line_at_eof' => true,
'ternary_operator_spaces' => true,
])
->setFinder($finder);

View File

@ -0,0 +1,35 @@
filter:
excluded_paths: [tests/*]
checks:
php:
code_rating: true
remove_extra_empty_lines: true
remove_php_closing_tag: true
remove_trailing_whitespace: true
fix_use_statements:
remove_unused: true
preserve_multiple: false
preserve_blanklines: true
order_alphabetically: true
fix_php_opening_tag: true
fix_linefeed: true
fix_line_ending: true
fix_identation_4spaces: true
fix_doc_comments: true
tools:
external_code_coverage:
timeout: 600
runs: 4
php_analyzer: true
php_code_coverage: false
php_code_sniffer:
config:
standard: PSR2
filter:
paths: ['src']
php_loc:
enabled: true
excluded_dirs: [vendor, tests]
php_cpd:
enabled: true
excluded_dirs: [vendor, tests]

57
vendor/league/oauth1-client/.travis.yml vendored Normal file
View File

@ -0,0 +1,57 @@
language: php
matrix:
include:
- php: 7.1
dist: bionic
env: COMPOSER_OPTS=""
- php: 7.1
dist: bionic
env: COMPOSER_OPTS="--prefer-lowest"
- php: 7.2
dist: bionic
env: COMPOSER_OPTS=""
- php: 7.2
dist: bionic
env: COMPOSER_OPTS="--prefer-lowest"
- php: 7.3
dist: bionic
env: COMPOSER_OPTS=""
- php: 7.3
dist: bionic
env: COMPOSER_OPTS="--prefer-lowest"
- php: 7.4
dist: bionic
env: COMPOSER_OPTS=""
- php: 7.4
dist: bionic
env: COMPOSER_OPTS="--prefer-lowest"
- php: 8.0
dist: bionic
env: COMPOSER_OPTS=""
- php: 8.0
dist: bionic
env: COMPOSER_OPTS="--prefer-lowest"
- php: nightly
dist: bionic
env: COMPOSER_OPTS="--ignore-platform-reqs"
- php: nightly
dist: bionic
env: COMPOSER_OPTS="--ignore-platform-reqs --prefer-lowest"
allow_failures:
- php: nightly
env: COMPOSER_OPTS="--ignore-platform-reqs"
- php: nightly
env: COMPOSER_OPTS="--ignore-platform-reqs --prefer-lowest"
install:
- travis_retry composer update --prefer-dist $COMPOSER_OPTS
script:
- composer php-cs-fixer:lint
- composer test:unit
- composer analyze
after_script:
- wget https://scrutinizer-ci.com/ocular.phar
- php ocular.phar code-coverage:upload --format=php-clover coverage.xml

View File

@ -0,0 +1,65 @@
{
"name": "league/oauth1-client",
"description": "OAuth 1.0 Client Library",
"license": "MIT",
"require": {
"php": ">=7.1||>=8.0",
"ext-json": "*",
"ext-openssl": "*",
"guzzlehttp/guzzle": "^6.0|^7.0"
},
"require-dev": {
"ext-simplexml": "*",
"phpunit/phpunit": "^7.5||9.5",
"mockery/mockery": "^1.3.3",
"phpstan/phpstan": "^0.12.42",
"friendsofphp/php-cs-fixer": "^2.17"
},
"scripts": {
"analyze": "vendor/bin/phpstan analyse -l 6 src/",
"php-cs-fixer:lint": "PHP_CS_FIXER_IGNORE_ENV=1 vendor/bin/php-cs-fixer fix --verbose --dry-run",
"php-cs-fixer:format": "PHP_CS_FIXER_IGNORE_ENV=1 vendor/bin/php-cs-fixer fix",
"test:unit": "vendor/bin/phpunit --coverage-text --coverage-clover coverage.xml"
},
"suggest": {
"ext-simplexml": "For decoding XML-based responses."
},
"keywords": [
"oauth",
"oauth1",
"authorization",
"authentication",
"idp",
"identity",
"sso",
"single sign on",
"bitbucket",
"trello",
"tumblr",
"twitter"
],
"authors": [
{
"name": "Ben Corlett",
"email": "bencorlett@me.com",
"homepage": "http://www.webcomm.com.au",
"role": "Developer"
}
],
"autoload": {
"psr-4": {
"League\\OAuth1\\Client\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"League\\OAuth1\\Client\\Tests\\": "tests/"
}
},
"extra": {
"branch-alias": {
"dev-master": "1.0-dev",
"dev-develop": "2.0-dev"
}
}
}

View File

@ -0,0 +1,28 @@
<?php
namespace League\OAuth1\Client\Tests;
use League\OAuth1\Client\Credentials\ClientCredentials;
use Mockery as m;
use PHPUnit\Framework\TestCase;
class ClientCredentialsTest extends TestCase
{
protected function tearDown(): void
{
m::close();
parent::tearDown();
}
public function testManipulating()
{
$credentials = new ClientCredentials;
$this->assertNull($credentials->getIdentifier());
$credentials->setIdentifier('foo');
$this->assertEquals('foo', $credentials->getIdentifier());
$this->assertNull($credentials->getSecret());
$credentials->setSecret('foo');
$this->assertEquals('foo', $credentials->getSecret());
}
}

View File

@ -0,0 +1,156 @@
<?php
namespace League\OAuth1\Client\Tests;
use League\OAuth1\Client\Signature\HmacSha1Signature;
use Mockery as m;
use PHPUnit\Framework\TestCase;
class HmacSha1SignatureTest extends TestCase
{
protected function tearDown(): void
{
m::close();
parent::tearDown();
}
public function testSigningRequest()
{
$signature = new HmacSha1Signature($this->getMockClientCredentials());
$uri = 'http://www.example.com/?qux=corge';
$parameters = ['foo' => 'bar', 'baz' => null];
$this->assertEquals('A3Y7C1SUHXR1EBYIUlT3d6QT1cQ=', $signature->sign($uri, $parameters));
}
public function testSigningRequestWhereThePortIsNotStandard()
{
$signature = new HmacSha1Signature($this->getMockClientCredentials());
$uri = 'http://www.example.com:8080/?qux=corge';
$parameters = ['foo' => 'bar', 'baz' => null];
$this->assertEquals('ECcWxyi5UOC1G0MxH0ygm6Pd6JE=', $signature->sign($uri, $parameters));
}
public function testQueryStringFromArray()
{
$array = ['a' => 'b'];
$res = $this->invokeQueryStringFromData($array);
$this->assertSame(
'a%3Db',
$res
);
}
public function testQueryStringFromIndexedArray()
{
$array = ['a', 'b'];
$res = $this->invokeQueryStringFromData($array);
$this->assertSame(
'0%3Da%261%3Db',
$res
);
}
public function testQueryStringFromMultiDimensionalArray()
{
$array = [
'a' => [
'b' => [
'c' => 'd',
],
'e' => [
'f' => 'g',
],
],
'h' => 'i',
'empty' => '',
'null' => null,
'false' => false,
];
// Convert to query string.
$res = $this->invokeQueryStringFromData($array);
$this->assertSame(
'a%5Bb%5D%5Bc%5D%3Dd%26a%5Be%5D%5Bf%5D%3Dg%26h%3Di%26empty%3D%26null%3D%26false%3D',
$res
);
// Reverse engineer the string.
$res = urldecode($res);
$this->assertSame(
'a[b][c]=d&a[e][f]=g&h=i&empty=&null=&false=',
$res
);
// Finally, parse the string back to an array.
parse_str($res, $original_array);
// And ensure it matches the orignal array (approximately).
$this->assertSame(
[
'a' => [
'b' => [
'c' => 'd',
],
'e' => [
'f' => 'g',
],
],
'h' => 'i',
'empty' => '',
'null' => '', // null value gets lost in string translation
'false' => '', // false value gets lost in string translation
],
$original_array
);
}
public function testSigningRequestWithMultiDimensionalParams()
{
$signature = new HmacSha1Signature($this->getMockClientCredentials());
$uri = 'http://www.example.com/';
$parameters = [
'a' => [
'b' => [
'c' => 'd',
],
'e' => [
'f' => 'g',
],
],
'h' => 'i',
'empty' => '',
'null' => null,
'false' => false,
];
$this->assertEquals('ZUxiJKugeEplaZm9e4hshN0I70U=', $signature->sign($uri, $parameters));
}
protected function invokeQueryStringFromData(array $args)
{
$signature = new HmacSha1Signature(m::mock('League\OAuth1\Client\Credentials\ClientCredentialsInterface'));
$refl = new \ReflectionObject($signature);
$method = $refl->getMethod('queryStringFromData');
$method->setAccessible(true);
return $method->invokeArgs($signature, [$args]);
}
protected function getMockClientCredentials()
{
$clientCredentials = m::mock('League\OAuth1\Client\Credentials\ClientCredentialsInterface');
$clientCredentials->shouldReceive('getSecret')->andReturn('clientsecret');
return $clientCredentials;
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace League\OAuth1\Client\Tests;
use League\OAuth1\Client\Signature\PlainTextSignature;
use Mockery as m;
use PHPUnit\Framework\TestCase;
class PlainTextSignatureTest extends TestCase
{
protected function tearDown(): void
{
m::close();
parent::tearDown();
}
public function testSigningRequest()
{
$signature = new PlainTextSignature($this->getMockClientCredentials());
$this->assertEquals('clientsecret&', $signature->sign($uri = 'http://www.example.com/'));
$signature->setCredentials($this->getMockCredentials());
$this->assertEquals('clientsecret&tokensecret', $signature->sign($uri));
$this->assertEquals('PLAINTEXT', $signature->method());
}
protected function getMockClientCredentials()
{
$clientCredentials = m::mock('League\OAuth1\Client\Credentials\ClientCredentialsInterface');
$clientCredentials->shouldReceive('getSecret')->andReturn('clientsecret');
return $clientCredentials;
}
protected function getMockCredentials()
{
$credentials = m::mock('League\OAuth1\Client\Credentials\CredentialsInterface');
$credentials->shouldReceive('getSecret')->andReturn('tokensecret');
return $credentials;
}
}

View File

@ -0,0 +1,75 @@
<?php
namespace League\OAuth1\Client\Tests;
use League\OAuth1\Client\Credentials\CredentialsException;
use League\OAuth1\Client\Credentials\RsaClientCredentials;
use OpenSSLAsymmetricKey;
use PHPUnit\Framework\TestCase;
class RsaClientCredentialsTest extends TestCase
{
public function testGetRsaPublicKey()
{
$credentials = new RsaClientCredentials();
$credentials->setRsaPublicKey(__DIR__ . '/test_rsa_publickey.pem');
/** @var resource|OpenSSLAsymmetricKey $key */
$key = $credentials->getRsaPublicKey();
$this->assertFalse(is_null($key));
$this->assertEquals($key, $credentials->getRsaPublicKey());
}
public function testGetRsaPublicKeyNotExists()
{
$this->expectException(CredentialsException::class);
$credentials = new RsaClientCredentials();
$credentials->setRsaPublicKey('fail');
$credentials->getRsaPublicKey();
}
public function testGetRsaPublicKeyInvalid()
{
$this->expectException(CredentialsException::class);
$credentials = new RsaClientCredentials();
$credentials->setRsaPublicKey(__DIR__ . '/test_rsa_invalidkey.pem');
$credentials->getRsaPublicKey();
}
public function testGetRsaPrivateKey()
{
$credentials = new RsaClientCredentials();
$credentials->setRsaPrivateKey(__DIR__ . '/test_rsa_privatekey.pem');
/** @var resource|OpenSSLAsymmetricKey $key */
$key = $credentials->getRsaPrivateKey();
$this->assertFalse(is_null($key));
$this->assertEquals($key, $credentials->getRsaPrivateKey());
}
public function testGetRsaPrivateKeyNotExists()
{
$this->expectException(CredentialsException::class);
$credentials = new RsaClientCredentials();
$credentials->setRsaPrivateKey('fail');
$credentials->getRsaPrivateKey();
}
public function testGetRsaPrivateKeyInvalid()
{
$this->expectException(CredentialsException::class);
$credentials = new RsaClientCredentials();
$credentials->setRsaPrivateKey(__DIR__ . '/test_rsa_invalidkey.pem');
$credentials->getRsaPrivateKey();
}
}

View File

@ -0,0 +1,148 @@
<?php
namespace League\OAuth1\Client\Tests;
use League\OAuth1\Client\Credentials\ClientCredentialsInterface;
use League\OAuth1\Client\Credentials\RsaClientCredentials;
use League\OAuth1\Client\Signature\RsaSha1Signature;
use Mockery;
use PHPUnit\Framework\TestCase;
class RsaSha1SignatureTest extends TestCase
{
public function testMethod()
{
$signature = new RsaSha1Signature($this->getClientCredentials());
$this->assertEquals('RSA-SHA1', $signature->method());
}
public function testSigningRequest()
{
$signature = new RsaSha1Signature($this->getClientCredentials());
$uri = 'http://www.example.com/?qux=corge';
$parameters = ['foo' => 'bar', 'baz' => null];
$this->assertEquals('h8vpV4CYnLwss+rWicKE4sY6AiW2+DT6Fe7qB8jA7LSLhX5jvLEeX1D8E2ynSePSksAY48j+OSLu9vo5juS2duwNK8UA2Rtnnvuj6UFxpx70dpjHAsQg6EbycGptL/SChDkxfpG8LhuwX1FlFa+H0jLYXI5Dy8j90g51GRJbj48=', $signature->sign($uri, $parameters));
}
public function testQueryStringFromArray()
{
$array = ['a' => 'b'];
$res = $this->invokeQueryStringFromData($array);
$this->assertSame(
'a%3Db',
$res
);
}
public function testQueryStringFromIndexedArray()
{
$array = ['a', 'b'];
$res = $this->invokeQueryStringFromData($array);
$this->assertSame(
'0%3Da%261%3Db',
$res
);
}
public function testQueryStringFromMultiDimensionalArray()
{
$array = [
'a' => [
'b' => [
'c' => 'd',
],
'e' => [
'f' => 'g',
],
],
'h' => 'i',
'empty' => '',
'null' => null,
'false' => false,
];
// Convert to query string.
$res = $this->invokeQueryStringFromData($array);
$this->assertSame(
'a%5Bb%5D%5Bc%5D%3Dd%26a%5Be%5D%5Bf%5D%3Dg%26h%3Di%26empty%3D%26null%3D%26false%3D',
$res
);
// Reverse engineer the string.
$res = urldecode($res);
$this->assertSame(
'a[b][c]=d&a[e][f]=g&h=i&empty=&null=&false=',
$res
);
// Finally, parse the string back to an array.
parse_str($res, $original_array);
// And ensure it matches the orignal array (approximately).
$this->assertSame(
[
'a' => [
'b' => [
'c' => 'd',
],
'e' => [
'f' => 'g',
],
],
'h' => 'i',
'empty' => '',
'null' => '', // null value gets lost in string translation
'false' => '', // false value gets lost in string translation
],
$original_array
);
}
public function testSigningRequestWithMultiDimensionalParams()
{
$signature = new RsaSha1Signature($this->getClientCredentials());
$uri = 'http://www.example.com/';
$parameters = [
'a' => [
'b' => [
'c' => 'd',
],
'e' => [
'f' => 'g',
],
],
'h' => 'i',
'empty' => '',
'null' => null,
'false' => false,
];
$this->assertEquals('X9EkmOEbA5CoF2Hicf3ciAumpp1zkKxnVZkh/mEwWyF2DDcrfou9XF11WvbBu3G4loJGeX4GY1FsIrQpsjEILbn0e7Alyii/x8VA9mBwdqMhQVl49jF0pdowocc03M04cAbAOMNObT7tMmDs+YTFgRxEGCiUkq9AizP1cW3+eBo=', $signature->sign($uri, $parameters));
}
protected function invokeQueryStringFromData(array $args)
{
$signature = new RsaSha1Signature(Mockery::mock(ClientCredentialsInterface::class));
$refl = new \ReflectionObject($signature);
$method = $refl->getMethod('queryStringFromData');
$method->setAccessible(true);
return $method->invokeArgs($signature, [$args]);
}
protected function getClientCredentials()
{
$credentials = new RsaClientCredentials();
$credentials->setRsaPublicKey(__DIR__ . '/test_rsa_publickey.pem');
$credentials->setRsaPrivateKey(__DIR__ . '/test_rsa_privatekey.pem');
return $credentials;
}
}

View File

@ -0,0 +1,313 @@
<?php
namespace League\OAuth1\Client\Tests;
use InvalidArgumentException;
use League\OAuth1\Client\Credentials\ClientCredentials;
use League\OAuth1\Client\Credentials\RsaClientCredentials;
use League\OAuth1\Client\Signature\RsaSha1Signature;
use Mockery as m;
use PHPUnit\Framework\TestCase;
use Psr\Http\Message\ResponseInterface;
class ServerTest extends TestCase
{
/**
* Setup resources and dependencies.
*/
public static function setUpBeforeClass(): void
{
parent::setUpBeforeClass();
require_once __DIR__ . '/stubs/ServerStub.php';
}
protected function tearDown(): void
{
m::close();
parent::tearDown();
}
public function testCreatingWithArray()
{
$server = new ServerStub($this->getMockClientCredentials());
$credentials = $server->getClientCredentials();
$this->assertInstanceOf('League\OAuth1\Client\Credentials\ClientCredentialsInterface', $credentials);
$this->assertEquals('myidentifier', $credentials->getIdentifier());
$this->assertEquals('mysecret', $credentials->getSecret());
$this->assertEquals('http://app.dev/', $credentials->getCallbackUri());
}
public function testCreatingWithArrayRsa()
{
$config = [
'identifier' => 'app_key',
'secret' => 'secret',
'callback_uri' => 'https://example.com/callback',
'rsa_public_key' => __DIR__ . '/test_rsa_publickey.pem',
'rsa_private_key' => __DIR__ . '/test_rsa_privatekey.pem',
];
$server = new ServerStub($config);
$credentials = $server->getClientCredentials();
$this->assertInstanceOf(RsaClientCredentials::class, $credentials);
$signature = $server->getSignature();
$this->assertInstanceOf(RsaSha1Signature::class, $signature);
}
public function testCreatingWithObject()
{
$credentials = new ClientCredentials;
$credentials->setIdentifier('myidentifier');
$credentials->setSecret('mysecret');
$credentials->setCallbackUri('http://app.dev/');
$server = new ServerStub($credentials);
$this->assertEquals($credentials, $server->getClientCredentials());
}
public function testCreatingWithInvalidInput()
{
$this->expectException(InvalidArgumentException::class);
new ServerStub(uniqid());
}
public function testGettingTemporaryCredentials()
{
$server = m::mock('League\OAuth1\Client\Tests\ServerStub[createHttpClient]', [$this->getMockClientCredentials()]);
$server->shouldReceive('createHttpClient')->andReturn($client = m::mock('stdClass'));
$me = $this;
$client->shouldReceive('post')->with('http://www.example.com/temporary', m::on(function ($options) use ($me) {
$headers = $options['headers'];
$me->assertTrue(isset($headers['Authorization']));
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern
= '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_callback="'
. preg_quote('http%3A%2F%2Fapp.dev%2F', '/') . '", oauth_signature=".*?"/';
$matches = preg_match($pattern, $headers['Authorization']);
$me->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
return true;
}))->once()->andReturn($response = m::mock('stdClass'));
$response->shouldReceive('getBody')
->andReturn('oauth_token=temporarycredentialsidentifier&oauth_token_secret=temporarycredentialssecret&oauth_callback_confirmed=true');
$credentials = $server->getTemporaryCredentials();
$this->assertInstanceOf('League\OAuth1\Client\Credentials\TemporaryCredentials', $credentials);
$this->assertEquals('temporarycredentialsidentifier', $credentials->getIdentifier());
$this->assertEquals('temporarycredentialssecret', $credentials->getSecret());
}
public function testGettingAuthorizationUrl()
{
$server = new ServerStub($this->getMockClientCredentials());
$expected = 'http://www.example.com/authorize?oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo'));
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->assertEquals($expected, $server->getAuthorizationUrl($credentials));
}
public function testGettingAuthorizationUrlWithOptions()
{
$server = new ServerStub($this->getMockClientCredentials());
$expected = 'http://www.example.com/authorize?oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo', ['oauth_token' => 'bar']));
$expected = 'http://www.example.com/authorize?test=bar&oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo', ['test' => 'bar']));
}
public function testGettingTokenCredentialsFailsWithManInTheMiddle()
{
$server = new ServerStub($this->getMockClientCredentials());
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->expectException(InvalidArgumentException::class);
$server->getTokenCredentials($credentials, 'bar', 'verifier');
}
public function testGettingTokenCredentials()
{
$server = m::mock('League\OAuth1\Client\Tests\ServerStub[createHttpClient]', [$this->getMockClientCredentials()]);
$temporaryCredentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$temporaryCredentials->shouldReceive('getIdentifier')->andReturn('temporarycredentialsidentifier');
$temporaryCredentials->shouldReceive('getSecret')->andReturn('temporarycredentialssecret');
$server->shouldReceive('createHttpClient')->andReturn($client = m::mock('stdClass'));
$me = $this;
$client->shouldReceive('post')->with('http://www.example.com/token', m::on(function ($options) use ($me) {
$headers = $options['headers'];
$body = $options['form_params'];
$me->assertTrue(isset($headers['Authorization']));
$me->assertFalse(isset($headers['User-Agent']));
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern
= '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_token="temporarycredentialsidentifier", oauth_signature=".*?"/';
$matches = preg_match($pattern, $headers['Authorization']);
$me->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
$me->assertSame($body, ['oauth_verifier' => 'myverifiercode']);
return true;
}))->once()->andReturn($response = m::mock('stdClass'));
$response->shouldReceive('getBody')
->andReturn('oauth_token=tokencredentialsidentifier&oauth_token_secret=tokencredentialssecret');
$credentials = $server->getTokenCredentials($temporaryCredentials, 'temporarycredentialsidentifier', 'myverifiercode');
$this->assertInstanceOf('League\OAuth1\Client\Credentials\TokenCredentials', $credentials);
$this->assertEquals('tokencredentialsidentifier', $credentials->getIdentifier());
$this->assertEquals('tokencredentialssecret', $credentials->getSecret());
}
public function testGettingTokenCredentialsWithUserAgent()
{
$userAgent = 'FooBar';
$server = m::mock('League\OAuth1\Client\Tests\ServerStub[createHttpClient]', [$this->getMockClientCredentials()]);
$temporaryCredentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$temporaryCredentials->shouldReceive('getIdentifier')->andReturn('temporarycredentialsidentifier');
$temporaryCredentials->shouldReceive('getSecret')->andReturn('temporarycredentialssecret');
$server->shouldReceive('createHttpClient')->andReturn($client = m::mock('stdClass'));
$me = $this;
$client->shouldReceive('post')->with('http://www.example.com/token', m::on(function ($options) use ($me, $userAgent) {
$headers = $options['headers'];
$body = $options['form_params'];
$me->assertTrue(isset($headers['Authorization']));
$me->assertTrue(isset($headers['User-Agent']));
$me->assertEquals($userAgent, $headers['User-Agent']);
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern
= '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_token="temporarycredentialsidentifier", oauth_signature=".*?"/';
$matches = preg_match($pattern, $headers['Authorization']);
$me->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
$me->assertSame($body, ['oauth_verifier' => 'myverifiercode']);
return true;
}))->once()->andReturn($response = m::mock('stdClass'));
$response->shouldReceive('getBody')
->andReturn('oauth_token=tokencredentialsidentifier&oauth_token_secret=tokencredentialssecret');
$credentials = $server->setUserAgent($userAgent)
->getTokenCredentials($temporaryCredentials, 'temporarycredentialsidentifier', 'myverifiercode');
$this->assertInstanceOf('League\OAuth1\Client\Credentials\TokenCredentials', $credentials);
$this->assertEquals('tokencredentialsidentifier', $credentials->getIdentifier());
$this->assertEquals('tokencredentialssecret', $credentials->getSecret());
}
public function testGettingUserDetails()
{
$server = m::mock(
'League\OAuth1\Client\Tests\ServerStub[createHttpClient,protocolHeader]',
[$this->getMockClientCredentials()]
);
$temporaryCredentials = m::mock('League\OAuth1\Client\Credentials\TokenCredentials');
$temporaryCredentials->shouldReceive('getIdentifier')->andReturn('tokencredentialsidentifier');
$temporaryCredentials->shouldReceive('getSecret')->andReturn('tokencredentialssecret');
$server->shouldReceive('createHttpClient')->andReturn($client = m::mock('stdClass'));
$me = $this;
$client->shouldReceive('get')->with('http://www.example.com/user', m::on(function ($options) use ($me) {
$headers = $options['headers'];
$me->assertTrue(isset($headers['Authorization']));
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern
= '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_token="tokencredentialsidentifier", oauth_signature=".*?"/';
$matches = preg_match($pattern, $headers['Authorization']);
$me->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
return true;
}))->once()->andReturn($response = m::mock(ResponseInterface::class));
$response->shouldReceive('getBody')->once()->andReturn(json_encode([
'foo' => 'bar',
'id' => 123,
'contact_email' => 'baz@qux.com',
'username' => 'fred',
]));
$user = $server->getUserDetails($temporaryCredentials);
$this->assertInstanceOf('League\OAuth1\Client\Server\User', $user);
$this->assertEquals('bar', $user->firstName);
$this->assertEquals(123, $server->getUserUid($temporaryCredentials));
$this->assertEquals('baz@qux.com', $server->getUserEmail($temporaryCredentials));
$this->assertEquals('fred', $server->getUserScreenName($temporaryCredentials));
}
public function testGettingHeaders()
{
$server = new ServerStub($this->getMockClientCredentials());
$tokenCredentials = m::mock('League\OAuth1\Client\Credentials\TokenCredentials');
$tokenCredentials->shouldReceive('getIdentifier')->andReturn('mock_identifier');
$tokenCredentials->shouldReceive('getSecret')->andReturn('mock_secret');
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern
= '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_token="mock_identifier", oauth_signature=".*?"/';
// With a GET request
$headers = $server->getHeaders($tokenCredentials, 'GET', 'http://example.com/');
$this->assertTrue(isset($headers['Authorization']));
$matches = preg_match($pattern, $headers['Authorization']);
$this->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
// With a POST request
$headers = $server->getHeaders($tokenCredentials, 'POST', 'http://example.com/', ['body' => 'params']);
$this->assertTrue(isset($headers['Authorization']));
$matches = preg_match($pattern, $headers['Authorization']);
$this->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
}
protected function getMockClientCredentials()
{
return [
'identifier' => 'myidentifier',
'secret' => 'mysecret',
'callback_uri' => 'http://app.dev/',
];
}
}

View File

@ -0,0 +1,349 @@
<?php namespace League\OAuth1\Client\Tests;
use InvalidArgumentException;
use League\OAuth1\Client\Credentials\ClientCredentials;
use League\OAuth1\Client\Server\Trello;
use Mockery as m;
use PHPUnit\Framework\TestCase;
use Psr\Http\Message\ResponseInterface;
class TrelloTest extends TestCase
{
protected function tearDown(): void
{
m::close();
parent::tearDown();
}
public function testCreatingWithArray()
{
$server = new Trello($this->getMockClientCredentials());
$credentials = $server->getClientCredentials();
$this->assertInstanceOf('League\OAuth1\Client\Credentials\ClientCredentialsInterface', $credentials);
$this->assertEquals($this->getApplicationKey(), $credentials->getIdentifier());
$this->assertEquals('mysecret', $credentials->getSecret());
$this->assertEquals('http://app.dev/', $credentials->getCallbackUri());
}
public function testCreatingWithObject()
{
$credentials = new ClientCredentials;
$credentials->setIdentifier('myidentifier');
$credentials->setSecret('mysecret');
$credentials->setCallbackUri('http://app.dev/');
$server = new Trello($credentials);
$this->assertEquals($credentials, $server->getClientCredentials());
}
public function testGettingTemporaryCredentials()
{
$server = m::mock('League\OAuth1\Client\Server\Trello[createHttpClient]', [$this->getMockClientCredentials()]);
$server->shouldReceive('createHttpClient')->andReturn($client = m::mock('stdClass'));
$me = $this;
$client->shouldReceive('post')->with('https://trello.com/1/OAuthGetRequestToken', m::on(function ($options) use ($me) {
$headers = $options['headers'];
$me->assertTrue(isset($headers['Authorization']));
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern = '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_callback="' . preg_quote('http%3A%2F%2Fapp.dev%2F', '/') . '", oauth_signature=".*?"/';
$matches = preg_match($pattern, $headers['Authorization']);
$me->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
return true;
}))->once()->andReturn($response = m::mock(ResponseInterface::class));
$response->shouldReceive('getBody')->andReturn('oauth_token=temporarycredentialsidentifier&oauth_token_secret=temporarycredentialssecret&oauth_callback_confirmed=true');
$credentials = $server->getTemporaryCredentials();
$this->assertInstanceOf('League\OAuth1\Client\Credentials\TemporaryCredentials', $credentials);
$this->assertEquals('temporarycredentialsidentifier', $credentials->getIdentifier());
$this->assertEquals('temporarycredentialssecret', $credentials->getSecret());
}
public function testGettingDefaultAuthorizationUrl()
{
$server = new Trello($this->getMockClientCredentials());
$expected = 'https://trello.com/1/OAuthAuthorizeToken?response_type=fragment&scope=read&expiration=1day&oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo'));
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->assertEquals($expected, $server->getAuthorizationUrl($credentials));
}
public function testGettingAuthorizationUrlWithExpirationAfterConstructingWithExpiration()
{
$credentials = $this->getMockClientCredentials();
$expiration = $this->getApplicationExpiration(2);
$credentials['expiration'] = $expiration;
$server = new Trello($credentials);
$expected = 'https://trello.com/1/OAuthAuthorizeToken?response_type=fragment&scope=read&expiration=' . urlencode($expiration) . '&oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo'));
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->assertEquals($expected, $server->getAuthorizationUrl($credentials));
}
public function testGettingAuthorizationUrlWithExpirationAfterSettingExpiration()
{
$expiration = $this->getApplicationExpiration(2);
$server = new Trello($this->getMockClientCredentials());
$server->setApplicationExpiration($expiration);
$expected = 'https://trello.com/1/OAuthAuthorizeToken?response_type=fragment&scope=read&expiration=' . urlencode($expiration) . '&oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo'));
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->assertEquals($expected, $server->getAuthorizationUrl($credentials));
}
public function testGettingAuthorizationUrlWithNameAfterConstructingWithName()
{
$credentials = $this->getMockClientCredentials();
$name = $this->getApplicationName();
$credentials['name'] = $name;
$server = new Trello($credentials);
$expected = 'https://trello.com/1/OAuthAuthorizeToken?response_type=fragment&scope=read&expiration=1day&name=' . urlencode($name) . '&oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo'));
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->assertEquals($expected, $server->getAuthorizationUrl($credentials));
}
public function testGettingAuthorizationUrlWithNameAfterSettingName()
{
$name = $this->getApplicationName();
$server = new Trello($this->getMockClientCredentials());
$server->setApplicationName($name);
$expected = 'https://trello.com/1/OAuthAuthorizeToken?response_type=fragment&scope=read&expiration=1day&name=' . urlencode($name) . '&oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo'));
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->assertEquals($expected, $server->getAuthorizationUrl($credentials));
}
public function testGettingAuthorizationUrlWithScopeAfterConstructingWithScope()
{
$credentials = $this->getMockClientCredentials();
$scope = $this->getApplicationScope(false);
$credentials['scope'] = $scope;
$server = new Trello($credentials);
$expected = 'https://trello.com/1/OAuthAuthorizeToken?response_type=fragment&scope=' . urlencode($scope) . '&expiration=1day&oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo'));
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->assertEquals($expected, $server->getAuthorizationUrl($credentials));
}
public function testGettingAuthorizationUrlWithScopeAfterSettingScope()
{
$scope = $this->getApplicationScope(false);
$server = new Trello($this->getMockClientCredentials());
$server->setApplicationScope($scope);
$expected = 'https://trello.com/1/OAuthAuthorizeToken?response_type=fragment&scope=' . urlencode($scope) . '&expiration=1day&oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo'));
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->assertEquals($expected, $server->getAuthorizationUrl($credentials));
}
public function testGettingTokenCredentialsFailsWithManInTheMiddle()
{
$server = new Trello($this->getMockClientCredentials());
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->expectException(InvalidArgumentException::class);
$server->getTokenCredentials($credentials, 'bar', 'verifier');
}
public function testGettingTokenCredentials()
{
$server = m::mock('League\OAuth1\Client\Server\Trello[createHttpClient]', [$this->getMockClientCredentials()]);
$temporaryCredentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$temporaryCredentials->shouldReceive('getIdentifier')->andReturn('temporarycredentialsidentifier');
$temporaryCredentials->shouldReceive('getSecret')->andReturn('temporarycredentialssecret');
$server->shouldReceive('createHttpClient')->andReturn($client = m::mock('stdClass'));
$me = $this;
$client->shouldReceive('post')->with('https://trello.com/1/OAuthGetAccessToken', m::on(function ($options) use ($me) {
$headers = $options['headers'];
$body = $options['form_params'];
$me->assertTrue(isset($headers['Authorization']));
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern = '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_token="temporarycredentialsidentifier", oauth_signature=".*?"/';
$matches = preg_match($pattern, $headers['Authorization']);
$me->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
$me->assertSame($body, ['oauth_verifier' => 'myverifiercode']);
return true;
}))->once()->andReturn($response = m::mock(ResponseInterface::class));
$response->shouldReceive('getBody')->andReturn('oauth_token=tokencredentialsidentifier&oauth_token_secret=tokencredentialssecret');
$credentials = $server->getTokenCredentials($temporaryCredentials, 'temporarycredentialsidentifier', 'myverifiercode');
$this->assertInstanceOf('League\OAuth1\Client\Credentials\TokenCredentials', $credentials);
$this->assertEquals('tokencredentialsidentifier', $credentials->getIdentifier());
$this->assertEquals('tokencredentialssecret', $credentials->getSecret());
}
public function testGettingUserDetails()
{
$server = m::mock('League\OAuth1\Client\Server\Trello[createHttpClient,protocolHeader]', [$this->getMockClientCredentials()]);
$temporaryCredentials = m::mock('League\OAuth1\Client\Credentials\TokenCredentials');
$temporaryCredentials->shouldReceive('getIdentifier')->andReturn('tokencredentialsidentifier');
$temporaryCredentials->shouldReceive('getSecret')->andReturn('tokencredentialssecret');
$server->shouldReceive('createHttpClient')->andReturn($client = m::mock('stdClass'));
$me = $this;
$client->shouldReceive('get')->with('https://trello.com/1/members/me?key=' . $this->getApplicationKey() . '&token=' . $this->getAccessToken(), m::on(function ($options) use ($me) {
$headers = $options['headers'];
$me->assertTrue(isset($headers['Authorization']));
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern = '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_token="tokencredentialsidentifier", oauth_signature=".*?"/';
$matches = preg_match($pattern, $headers['Authorization']);
$me->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
return true;
}))->once()->andReturn($response = m::mock(ResponseInterface::class));
$response->shouldReceive('getBody')->once()->andReturn($this->getUserPayload());
$user = $server
->setAccessToken($this->getAccessToken())
->getUserDetails($temporaryCredentials);
$this->assertInstanceOf('League\OAuth1\Client\Server\User', $user);
$this->assertEquals('Matilda Wormwood', $user->name);
$this->assertEquals('545df696e29c0dddaed31967', $server->getUserUid($temporaryCredentials));
$this->assertEquals(null, $server->getUserEmail($temporaryCredentials));
$this->assertEquals('matildawormwood12', $server->getUserScreenName($temporaryCredentials));
}
protected function getMockClientCredentials()
{
return [
'identifier' => $this->getApplicationKey(),
'secret' => 'mysecret',
'callback_uri' => 'http://app.dev/',
];
}
protected function getAccessToken()
{
return 'lmnopqrstuvwxyz';
}
protected function getApplicationKey()
{
return 'abcdefghijk';
}
protected function getApplicationExpiration($days = 0)
{
return is_numeric($days) && $days > 0 ? $days . 'day' . ($days == 1 ? '' : 's') : 'never';
}
protected function getApplicationName()
{
return 'fizz buzz';
}
protected function getApplicationScope($readonly = true)
{
return $readonly ? 'read' : 'read,write';
}
private function getUserPayload()
{
return '{
"id": "545df696e29c0dddaed31967",
"avatarHash": null,
"bio": "I have magical powers",
"bioData": null,
"confirmed": true,
"fullName": "Matilda Wormwood",
"idPremOrgsAdmin": [],
"initials": "MW",
"memberType": "normal",
"products": [],
"status": "idle",
"url": "https://trello.com/matildawormwood12",
"username": "matildawormwood12",
"avatarSource": "none",
"email": null,
"gravatarHash": "39aaaada0224f26f0bb8f1965326dcb7",
"idBoards": [
"545df696e29c0dddaed31968",
"545e01d6c7b2dd962b5b46cb"
],
"idOrganizations": [
"54adfd79f9aea14f84009a85",
"54adfde13b0e706947bc4789"
],
"loginTypes": null,
"oneTimeMessagesDismissed": [],
"prefs": {
"sendSummaries": true,
"minutesBetweenSummaries": 1,
"minutesBeforeDeadlineToNotify": 1440,
"colorBlind": false,
"timezoneInfo": {
"timezoneNext": "CDT",
"dateNext": "2015-03-08T08:00:00.000Z",
"offsetNext": 300,
"timezoneCurrent": "CST",
"offsetCurrent": 360
}
},
"trophies": [],
"uploadedAvatarHash": null,
"premiumFeatures": [],
"idBoardsPinned": null
}';
}
}

View File

@ -0,0 +1,255 @@
<?php namespace League\OAuth1\Client\Tests;
use InvalidArgumentException;
use League\OAuth1\Client\Credentials\ClientCredentials;
use League\OAuth1\Client\Server\Xing;
use Mockery as m;
use PHPUnit\Framework\TestCase;
use Psr\Http\Message\ResponseInterface;
class XingTest extends TestCase
{
protected function tearDown(): void
{
m::close();
parent::tearDown();
}
public function testCreatingWithArray()
{
$server = new Xing($this->getMockClientCredentials());
$credentials = $server->getClientCredentials();
$this->assertInstanceOf('League\OAuth1\Client\Credentials\ClientCredentialsInterface', $credentials);
$this->assertEquals($this->getApplicationKey(), $credentials->getIdentifier());
$this->assertEquals('mysecret', $credentials->getSecret());
$this->assertEquals('http://app.dev/', $credentials->getCallbackUri());
}
public function testCreatingWithObject()
{
$credentials = new ClientCredentials;
$credentials->setIdentifier('myidentifier');
$credentials->setSecret('mysecret');
$credentials->setCallbackUri('http://app.dev/');
$server = new Xing($credentials);
$this->assertEquals($credentials, $server->getClientCredentials());
}
public function testGettingTemporaryCredentials()
{
$server = m::mock('League\OAuth1\Client\Server\Xing[createHttpClient]', [$this->getMockClientCredentials()]);
$server->shouldReceive('createHttpClient')->andReturn($client = m::mock('stdClass'));
$me = $this;
$client->shouldReceive('post')->with('https://api.xing.com/v1/request_token', m::on(function ($options) use ($me) {
$headers = $options['headers'];
$me->assertTrue(isset($headers['Authorization']));
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern = '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_callback="' . preg_quote('http%3A%2F%2Fapp.dev%2F', '/') . '", oauth_signature=".*?"/';
$matches = preg_match($pattern, $headers['Authorization']);
$me->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
return true;
}))->once()->andReturn($response = m::mock(ResponseInterface::class));
$response->shouldReceive('getBody')->andReturn('oauth_token=temporarycredentialsidentifier&oauth_token_secret=temporarycredentialssecret&oauth_callback_confirmed=true');
$credentials = $server->getTemporaryCredentials();
$this->assertInstanceOf('League\OAuth1\Client\Credentials\TemporaryCredentials', $credentials);
$this->assertEquals('temporarycredentialsidentifier', $credentials->getIdentifier());
$this->assertEquals('temporarycredentialssecret', $credentials->getSecret());
}
public function testGettingDefaultAuthorizationUrl()
{
$server = new Xing($this->getMockClientCredentials());
$expected = 'https://api.xing.com/v1/authorize?oauth_token=foo';
$this->assertEquals($expected, $server->getAuthorizationUrl('foo'));
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->assertEquals($expected, $server->getAuthorizationUrl($credentials));
}
public function testGettingTokenCredentialsFailsWithManInTheMiddle()
{
$server = new Xing($this->getMockClientCredentials());
$credentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$credentials->shouldReceive('getIdentifier')->andReturn('foo');
$this->expectException(InvalidArgumentException::class);
$server->getTokenCredentials($credentials, 'bar', 'verifier');
}
public function testGettingTokenCredentials()
{
$server = m::mock('League\OAuth1\Client\Server\Xing[createHttpClient]', [$this->getMockClientCredentials()]);
$temporaryCredentials = m::mock('League\OAuth1\Client\Credentials\TemporaryCredentials');
$temporaryCredentials->shouldReceive('getIdentifier')->andReturn('temporarycredentialsidentifier');
$temporaryCredentials->shouldReceive('getSecret')->andReturn('temporarycredentialssecret');
$server->shouldReceive('createHttpClient')->andReturn($client = m::mock('stdClass'));
$me = $this;
$client->shouldReceive('post')->with('https://api.xing.com/v1/access_token', m::on(function ($options) use ($me) {
$headers = $options['headers'];
$body = $options['form_params'];
$me->assertTrue(isset($headers['Authorization']));
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern = '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_token="temporarycredentialsidentifier", oauth_signature=".*?"/';
$matches = preg_match($pattern, $headers['Authorization']);
$me->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
$me->assertSame($body, ['oauth_verifier' => 'myverifiercode']);
return true;
}))->once()->andReturn($response = m::mock(ResponseInterface::class));
$response->shouldReceive('getBody')->andReturn('oauth_token=tokencredentialsidentifier&oauth_token_secret=tokencredentialssecret');
$credentials = $server->getTokenCredentials($temporaryCredentials, 'temporarycredentialsidentifier', 'myverifiercode');
$this->assertInstanceOf('League\OAuth1\Client\Credentials\TokenCredentials', $credentials);
$this->assertEquals('tokencredentialsidentifier', $credentials->getIdentifier());
$this->assertEquals('tokencredentialssecret', $credentials->getSecret());
}
public function testGettingUserDetails()
{
$server = m::mock('League\OAuth1\Client\Server\Xing[createHttpClient,protocolHeader]', [$this->getMockClientCredentials()]);
$temporaryCredentials = m::mock('League\OAuth1\Client\Credentials\TokenCredentials');
$temporaryCredentials->shouldReceive('getIdentifier')->andReturn('tokencredentialsidentifier');
$temporaryCredentials->shouldReceive('getSecret')->andReturn('tokencredentialssecret');
$server->shouldReceive('createHttpClient')->andReturn($client = m::mock('stdClass'));
$me = $this;
$client->shouldReceive('get')->with('https://api.xing.com/v1/users/me', m::on(function ($options) use ($me) {
$headers = $options['headers'];
$me->assertTrue(isset($headers['Authorization']));
// OAuth protocol specifies a strict number of
// headers should be sent, in the correct order.
// We'll validate that here.
$pattern = '/OAuth oauth_consumer_key=".*?", oauth_nonce="[a-zA-Z0-9]+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\d{10}", oauth_version="1.0", oauth_token="tokencredentialsidentifier", oauth_signature=".*?"/';
$matches = preg_match($pattern, $headers['Authorization']);
$me->assertEquals(1, $matches, 'Asserting that the authorization header contains the correct expression.');
return true;
}))->once()->andReturn($response = m::mock(ResponseInterface::class));
$response->shouldReceive('getBody')->once()->andReturn($this->getUserPayload());
$user = $server->getUserDetails($temporaryCredentials);
$this->assertInstanceOf('League\OAuth1\Client\Server\User', $user);
$this->assertEquals('Roman Gelembjuk', $user->name);
$this->assertEquals('17144430_0f9409', $server->getUserUid($temporaryCredentials));
$this->assertEquals('XXXXXXXXXX@gmail.com', $server->getUserEmail($temporaryCredentials));
$this->assertEquals('Roman Gelembjuk', $server->getUserScreenName($temporaryCredentials));
}
protected function getMockClientCredentials()
{
return [
'identifier' => $this->getApplicationKey(),
'secret' => 'mysecret',
'callback_uri' => 'http://app.dev/',
];
}
protected function getApplicationKey()
{
return 'abcdefghijk';
}
protected function getApplicationExpiration($days = 0)
{
return is_numeric($days) && $days > 0 ? $days . 'day' . ($days == 1 ? '' : 's') : 'never';
}
protected function getApplicationName()
{
return 'fizz buzz';
}
private function getUserPayload()
{
return '{
"users":[
{
"id":"17144430_0f9409",
"active_email":"XXXXXXXXXX@gmail.com",
"time_zone":
{
"utc_offset":3.0,
"name":"Europe/Kiev"
},
"display_name":"Roman Gelembjuk",
"first_name":"Roman",
"last_name":"Gelembjuk",
"gender":"m",
"page_name":"Roman_Gelembjuk",
"birth_date":
{"year":null,"month":null,"day":null},
"wants":null,
"haves":null,
"interests":null,
"web_profiles":{},
"badges":[],
"photo_urls":
{
"large":"https://x1.xingassets.com/assets/frontend_minified/img/users/nobody_m.140x185.jpg",
"maxi_thumb":"https://x1.xingassets.com/assets/frontend_minified/img/users/nobody_m.70x93.jpg",
"medium_thumb":"https://x1.xingassets.com/assets/frontend_minified/img/users/nobody_m.57x75.jpg"
},
"permalink":"https://www.xing.com/profile/Roman_Gelembjuk",
"languages":{"en":null},
"employment_status":"EMPLOYEE",
"organisation_member":null,
"instant_messaging_accounts":{},
"educational_background":
{"degree":null,"primary_school":null,"schools":[],"qualifications":[]},
"private_address":{
"street":null,
"zip_code":null,
"city":null,
"province":null,
"country":null,
"email":"XXXXXXXX@gmail.com",
"fax":null,
"phone":null,
"mobile_phone":null}
,"business_address":
{
"street":null,
"zip_code":null,
"city":"Ivano-Frankivsk",
"province":null,
"country":"UA",
"email":null,
"fax":null,"phone":null,"mobile_phone":null
},
"premium_services":[]
}]}';
}
}

View File

@ -0,0 +1,77 @@
<?php
namespace League\OAuth1\Client\Tests;
use League\OAuth1\Client\Credentials\TokenCredentials;
use League\OAuth1\Client\Server\Server;
use League\OAuth1\Client\Server\User;
class ServerStub extends Server
{
/**
* @inheritDoc
*/
public function urlTemporaryCredentials()
{
return 'http://www.example.com/temporary';
}
/**
* @inheritDoc
*/
public function urlAuthorization()
{
return 'http://www.example.com/authorize';
}
/**
* @inheritDoc
*/
public function urlTokenCredentials()
{
return 'http://www.example.com/token';
}
/**
* @inheritDoc
*/
public function urlUserDetails()
{
return 'http://www.example.com/user';
}
/**
* @inheritDoc
*/
public function userDetails($data, TokenCredentials $tokenCredentials)
{
$user = new User;
$user->firstName = $data['foo'];
return $user;
}
/**
* @inheritDoc
*/
public function userUid($data, TokenCredentials $tokenCredentials)
{
return isset($data['id']) ? $data['id'] : null;
}
/**
* @inheritDoc
*/
public function userEmail($data, TokenCredentials $tokenCredentials)
{
return isset($data['contact_email']) ? $data['contact_email'] : null;
}
/**
* @inheritDoc
*/
public function userScreenName($data, TokenCredentials $tokenCredentials)
{
return isset($data['username']) ? $data['username'] : null;
}
}

View File

@ -0,0 +1 @@
not a valid RSA key

View File

@ -0,0 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDJScPCpHHPakw9v4nhxi+cBumCml3WpMNDaE3Cxnkf6HALzoi8
fQPx3XRfKSoLG6b7uTG+vDoLCL49ZCyYwrnggsFF08bJMqIhUHlZrkiyT5UhdTIh
XEEFfb6XmieHNtra+ur8E3PVal4PEdOCEmJehBMJkiCsxNOJ/kCeYSMdbQIDAQAB
AoGAMo7JkcEWKP/NCJFsg33xBWKjEj/NpBUcSnkPVwXc9IvAYObOZ3GLJRv3l9NS
ERov9fgNK5hBh/X5OphHr1LxtqU5gAFYx5Qgt/WG3ZH9KScXkaPS3Oq2qK9krbA2
BXYKP4NEqhjJTecy7M8bju5+lsjteyqVSsVLHdLhUfPRbE0CQQDyYP6iChqZm1AK
A8x8PKvJsd4zSdxWXUYSmD7mAtek5VeWblbcXYYdeYPN6hNmqzaLelmrZI51x1Uf
hf1ryIfrAkEA1JmdSsNuxi9MOY3HqErWYsqZ//mVOxVyCAwf7OWQ0rTHEQBhQwpS
9nk0YFHI9t6nVUwXrZ7/7UJPTu8OjPKyBwJAYw2OomwcqM/XKvCYfeFRl1DwbOdv
e4AM5gaAFgHtXP85B0o6hz5VU/BYFCvoF9o6pU+wG6IxsiJvQD3C7mx6VwJAbXYW
PVs4WsQZe/ya0vSNQ1pLRjdr9XrKNoh/m4prMYGwiPloGotjQdIP/JO/ZBQplcpS
2qrl3HPqv5poJHwE2wJBAM37BVINHR0zcSHfFLmSYrqmLx2oC3UAB3exmpYSUgOz
wJqPfmPWuuXuu6h0Z2DazUan+2EiecX6C4ywkm+qk1I=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDEDCCAnmgAwIBAgIJAMhMVuHMz+EgMA0GCSqGSIb3DQEBBQUAMGQxCzAJBgNV
BAYTAlVTMQswCQYDVQQIEwJUWDEPMA0GA1UEBxMGQXVzdGluMSEwHwYDVQQKExhJ
bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMTC2V4YW1wbGUuY29tMB4X
DTE2MTEwMjIxMDUzNVoXDTIxMTEwMTIxMDUzNVowZDELMAkGA1UEBhMCVVMxCzAJ
BgNVBAgTAlRYMQ8wDQYDVQQHEwZBdXN0aW4xITAfBgNVBAoTGEludGVybmV0IFdp
ZGdpdHMgUHR5IEx0ZDEUMBIGA1UEAxMLZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcN
AQEBBQADgY0AMIGJAoGBAMlJw8Kkcc9qTD2/ieHGL5wG6YKaXdakw0NoTcLGeR/o
cAvOiLx9A/HddF8pKgsbpvu5Mb68OgsIvj1kLJjCueCCwUXTxskyoiFQeVmuSLJP
lSF1MiFcQQV9vpeaJ4c22tr66vwTc9VqXg8R04ISYl6EEwmSIKzE04n+QJ5hIx1t
AgMBAAGjgckwgcYwHQYDVR0OBBYEFLYKQbsK2oqRO83NbNXC2R6MkNcRMIGWBgNV
HSMEgY4wgYuAFLYKQbsK2oqRO83NbNXC2R6MkNcRoWikZjBkMQswCQYDVQQGEwJV
UzELMAkGA1UECBMCVFgxDzANBgNVBAcTBkF1c3RpbjEhMB8GA1UEChMYSW50ZXJu
ZXQgV2lkZ2l0cyBQdHkgTHRkMRQwEgYDVQQDEwtleGFtcGxlLmNvbYIJAMhMVuHM
z+EgMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASwEwGQnRCqcNrb6k
g6/xpeyHE9/ruTBIE4dtArQI0NosaERC3i4nRKbgfJfIuYEaYiga4dC51CQqKrbH
YZ0dgYMzzp21OMQyKdz3E7csMJv5xxe5D2svdPzbBGU5+N80FYLx17f3UqsYFaAC
X0/YTQsdlM5tHZOd1ZbQUrERqLs=
-----END CERTIFICATE-----

0
vendor/mtdowling/jmespath.php/bin/jp.php vendored Normal file → Executable file
View File

0
vendor/mtdowling/jmespath.php/bin/perf.php vendored Normal file → Executable file
View File

View File

@ -0,0 +1,39 @@
{
"name": "mtdowling/jmespath.php",
"description": "Declaratively specify how to extract elements from a JSON document",
"keywords": ["json", "jsonpath"],
"license": "MIT",
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"require": {
"php": "^5.4 || ^7.0 || ^8.0",
"symfony/polyfill-mbstring": "^1.17"
},
"require-dev": {
"composer/xdebug-handler": "^1.4",
"phpunit/phpunit": "^4.8.36 || ^7.5.15"
},
"autoload": {
"psr-4": {
"JmesPath\\": "src/"
},
"files": ["src/JmesPath.php"]
},
"bin": ["bin/jp.php"],
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
}
}

3
vendor/psr/container/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
composer.lock
composer.phar
/vendor/

22
vendor/psr/container/composer.json vendored Normal file
View File

@ -0,0 +1,22 @@
{
"name": "psr/container",
"type": "library",
"description": "Common Container Interface (PHP FIG PSR-11)",
"keywords": ["psr", "psr-11", "container", "container-interop", "container-interface"],
"homepage": "https://github.com/php-fig/container",
"license": "MIT",
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"require": {
"php": ">=7.2.0"
},
"autoload": {
"psr-4": {
"Psr\\Container\\": "src/"
}
}
}

26
vendor/psr/http-message/composer.json vendored Normal file
View File

@ -0,0 +1,26 @@
{
"name": "psr/http-message",
"description": "Common interface for HTTP messages",
"keywords": ["psr", "psr-7", "http", "http-message", "request", "response"],
"homepage": "https://github.com/php-fig/http-message",
"license": "MIT",
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"require": {
"php": ">=5.3.0"
},
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
}
}

26
vendor/psr/log/composer.json vendored Normal file
View File

@ -0,0 +1,26 @@
{
"name": "psr/log",
"description": "Common interface for logging libraries",
"keywords": ["psr", "psr-3", "log"],
"homepage": "https://github.com/php-fig/log",
"license": "MIT",
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"require": {
"php": ">=5.3.0"
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
}
}
}

View File

@ -0,0 +1,5 @@
linters:
phpcs:
standard: PSR2
extensions: '.php,.ctp'
tab_width: 4

View File

@ -0,0 +1,63 @@
{
"name": "swiss-payment-slip/swiss-payment-slip",
"description": "A library for creating Swiss payment slips (ESR)",
"license": "MIT",
"homepage": "https://github.com/ravage84/SwissPaymentSlip",
"keywords": [
"Payment slip",
"Inpayment slip",
"Einzahlungsschein",
"ESR"
],
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.0.0",
"squizlabs/php_codesniffer": "^2.1.0"
},
"authors": [
{
"name": "Marc Würth",
"email": "ravage@bluewin.ch",
"role": "Lead developer"
},
{
"name": "Manuel Reinhard",
"email": "manu@sprain.ch",
"homepage": "http://www.sprain.ch",
"role": "Developer of the original class"
},
{
"name": "Peter Siska",
"email": "pesche@gridonic.ch",
"homepage": "http://www.gridonic.ch",
"role": "Contributor"
}
],
"support": {
"email": "ravage@bluewin.ch",
"issues": "https://github.com/ravage84/SwissPaymentSlip/issues",
"source": "https://github.com/ravage84/SwissPaymentSlip"
},
"autoload": {
"psr-4": {
"SwissPaymentSlip\\SwissPaymentSlip\\": "src"
}
},
"autoload-dev": {
"psr-4": {
"SwissPaymentSlip\\SwissPaymentSlip\\Tests\\": "tests"
}
},
"scripts": {
"test": "phpunit",
"check-codestyle": "phpcs -p --standard=PSR2 --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 src tests examples",
"fix-codestyle": "phpcbf -p --standard=PSR2 --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 src tests examples"
},
"config": {
"platform": {
"php": "5.4.0"
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,44 @@
{
"name": "symfony/polyfill-intl-idn",
"type": "library",
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "idn"],
"homepage": "https://symfony.com",
"license": "MIT",
"authors": [
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
{
"name": "Trevor Rowbotham",
"email": "trevor.rowbotham@pm.me"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"require": {
"php": ">=7.1",
"symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"autoload": {
"psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" },
"files": [ "bootstrap.php" ]
},
"suggest": {
"ext-intl": "For best performance"
},
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
}
}

View File

@ -323,50 +323,6 @@ class erpooSystem extends Application
}
}
$isTestlizenz = !empty(erpAPI::Ioncube_Property('testlizenz'));
$isCloud = erpAPI::Ioncube_Property('iscloud');
$isDemo = $isTestlizenz && $isCloud;
$activateDoubleClick = false;
/** @var Dataprotection $dataProtectionModule */
$dataProtectionModule = $this->loadModule('dataprotection');
if($isCloud
&& $dataProtectionModule !== null
&& $dataProtectionModule->isGoogleAnalyticsActive()
){
$activateDoubleClick = true;
$this->Tpl->Add(
'SCRIPTJAVASCRIPT',
'<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-1088253-14"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(\'js\', new Date());
gtag(\'config\', \'UA-1088253-14\');
</script>');
$this->Tpl->Add('ADDITIONALCSPHEADER', ' www.googletagmanager.com www.google-analytics.com ssl.google-analytics.com stats.g.doubleclick.net ');
}
if($dataProtectionModule !== null && $dataProtectionModule->isHubspotActive()) {
$activateDoubleClick = true;
$this->Tpl->Add(
'SCRIPTJAVASCRIPT',
'<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/6748263.js"></script>'
);
$this->Tpl->Add(
'ADDITIONALCSPHEADER',
' js.hs-scripts.com js.hscollectedforms.net js.hsleadflows.net js.hs-banner.com js.hs-analytics.net api.hubapi.com js.hsadspixel.net '
);
$this->Tpl->Add(
'ADDITIONALCSPHEADER',
'forms.hubspot.com forms.hsforms.com track.hubspot.com www.google.com www.google.de '
);
}
if($activateDoubleClick) {
$this->Tpl->Add('ADDITIONALCSPHEADER', ' googleads.g.doubleclick.net ' );
}
$hooktpl = 'JSSCRIPTS';
$this->erp->RunHook('eproosystem_ende', 1, $hooktpl);
}
@ -468,13 +424,6 @@ class erpooSystem extends Application
];*/
if(!empty(erpAPI::Ioncube_Property('testlizenz')) && $this->User->GetType() === 'admin'){
$possibleUserItems['Starte hier!'] = [
'link' => 'index.php?module=learningdashboard&action=list',
'type' => 'cta'
];
}
$userItems = '<div class="sidebar-list small-items separator-bottom">';
foreach($possibleUserItems as $title => $data){
@ -545,10 +494,7 @@ class erpooSystem extends Application
/** @var Dataprotection $obj */
$obj = $this->loadModule('dataprotection');
$showChat = method_exists('erpAPI','Ioncube_Property')
&& !empty(erpAPI::Ioncube_Property('chatactive'))
&& !empty(erpAPI::Ioncube_Property('chat'))
&& $obj !== null
$showChat = $obj !== null
&& method_exists($obj, 'isZenDeskActive')
&& $obj->isZenDeskActive();
@ -608,23 +554,8 @@ class erpooSystem extends Application
$this->Tpl->Set('FIXEDITEMS', $fixedItems);
$this->Tpl->Set('XENTRALVERSION', $version);
$this->Tpl->Set('SIDEBAR_CLASSES', $sidebarClasses);
$isDevelopmentVersion = method_exists('erpAPI','Ioncube_Property')
&& !empty(erpAPI::Ioncube_Property('isdevelopmentversion'));
if($isDevelopmentVersion) {
$this->Tpl->Add(
'SIDEBARLOGO',
@file_get_contents(__DIR__ . '/themes/new/templates/sidebar_development_version_logo.svg')
);
$this->Tpl->Add(
'SIDEBARLOGO',
'<img class="development" src="themes/new/templates/development_version_logo.png" alt="logo" />'
);
}
else{
// $this->Tpl->Add('SIDEBARLOGO', @file_get_contents(__DIR__ . '/themes/new/templates/sidebar_logo.svg'));
$this->Tpl->Add('SIDEBARLOGO','<div class="sidebar_logo">'.@file_get_contents(__DIR__ . '/themes/new/templates/sidebar_logo.svg').'</div>');
$this->Tpl->Add('SIDEBARLOGO','<div class="sidebar_icon_logo">'.@file_get_contents(__DIR__ . '/themes/new/templates/sidebar_icon_logo.svg').'</div>');
}
$this->Tpl->Add('SIDEBARLOGO','<div class="sidebar_logo">'.@file_get_contents(__DIR__ . '/themes/new/templates/sidebar_logo.svg').'</div>');
$this->Tpl->Add('SIDEBARLOGO','<div class="sidebar_icon_logo">'.@file_get_contents(__DIR__ . '/themes/new/templates/sidebar_icon_logo.svg').'</div>');
$this->Tpl->Parse('SIDEBAR', 'sidebar.tpl');
$this->Tpl->Parse('PROFILE_MENU', 'profile_menu.tpl');
@ -1342,41 +1273,6 @@ if (typeof document.hidden !== \"undefined\") { // Opera 12.10 and Firefox 18 an
$this->erp->SetKonfigurationValue('eproosystem_skipcheckuserdata', '1');
}
}
if(!$this->erp->ServerOK()) {
$serverlist = $this->erp->GetIoncubeServerList();
if(method_exists($this->erp, 'setSystemHealth')) {
$this->erp->setSystemHealth(
'server',
'ioncube',
'error',
'Die Ioncube-Lizenz ist nur g&uuml;ltig f&uuml;r folgene'.
(count($serverlist) == 1?'n':'').' Server: '.implode(', ',$serverlist)
);
}
}
else {
$expDays = erpAPI::Ioncube_ExpireInDays();
$testLicence = erpAPI::Ioncube_Property('testlizenz');
if(!$testLicence && $expDays !== false && $expDays < 14) {
$this->erp->setSystemHealth(
'server',
'ioncube',
'error',
sprintf(
'Die Lizenz am %s aus.',
erpAPI::Ioncube_ExpireDate()
)
);
}
else{
$this->erp->setSystemHealth(
'server',
'ioncube',
'ok',
''
);
}
}
if ($this->ModuleScriptCache->IsCacheDirWritable() === false) {
$this->erp->setSystemHealth(
'server',
@ -1823,21 +1719,6 @@ if (typeof document.hidden !== \"undefined\") { // Opera 12.10 and Firefox 18 an
$this->Tpl->Set('NACHCHATNACHRICHTENBOX','-->');
}
if(!empty(erpAPI::Ioncube_Property('testlizenz'))){
$upgradeButton = '<li id="upgrade-licence"><a href="./index.php?module=appstore&action=buy">'.
'<svg width="18" height="16" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.47287 12.0104C2.04566 9.80074 1.66708 6.11981 3.59372 3.46237C5.52036 0.804943 9.13654 0.0202146 11.9914 1.64005" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2.21273 11.9649C1.39377 13.3996 1.11966 14.513 1.58214 14.9761C2.2843 15.6776 4.48124 14.6858 7.02522 12.6684" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.93719 12.1581L7.52014 9.74109L12.8923 4.3689C13.3305 3.93091 13.8797 3.62049 14.481 3.47095L15.863 3.12392C16.0571 3.07558 16.2623 3.1325 16.4037 3.27392C16.5451 3.41534 16.602 3.62054 16.5537 3.8146L16.208 5.19732C16.0578 5.7984 15.7469 6.34731 15.3087 6.78527L9.93719 12.1581Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.51976 9.7409L5.54021 9.08128C5.44619 9.05019 5.37505 8.97252 5.35233 8.87613C5.32961 8.77974 5.35857 8.67847 5.42881 8.60867L6.11882 7.91866C6.7306 7.30697 7.63548 7.09343 8.45619 7.36706L9.53644 7.72625L7.51976 9.7409Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.93713 12.1584L10.5968 14.1386C10.6278 14.2326 10.7055 14.3038 10.8019 14.3265C10.8983 14.3492 10.9996 14.3203 11.0694 14.25L11.7594 13.56C12.3711 12.9482 12.5846 12.0434 12.311 11.2226L11.9518 10.1424L9.93713 12.1584Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
'.
'<span>Upgrade</span></a></li>';
$this->Tpl->Set('UPGRADELICENCECTA', $upgradeButton);
}
if(!$this->erp->ModulVorhanden('aufgaben') || !$this->erp->RechteVorhanden('aufgaben','list')) {
$this->Tpl->Set('AUFGABENVOR','<!--');
$this->Tpl->Set('AUFGABENNACH','-->');

View File

@ -1,156 +0,0 @@
<?php
use Xentral\Components\HttpClient\Exception\TransferErrorExceptionInterface;
use Xentral\Components\HttpClient\HttpClient;
use Xentral\Components\HttpClient\RequestOptions;
use Xentral\Modules\GoogleApi\Exception\GoogleAccountNotFoundException;
use Xentral\Modules\GoogleApi\Service\GoogleAccountGateway;
use Xentral\Modules\GoogleApi\Service\GoogleAuthorizationService;
class PrinterGoogleCloudPrint extends PrinterBase
{
/** @var string */
private $url = 'https://www.google.com/cloudprint/';
/** @var string URL_SEARCH */
private const URL_SEARCH = 'https://www.google.com/cloudprint/search';
/** @var string URL_PRINT */
private const URL_PRINT = 'https://www.google.com/cloudprint/submit';
/** @var string */
private const URL_JOBS = 'https://www.google.com/cloudprint/jobs';
/** @var string */
private const URL_PRINTER = 'https://www.google.com/cloudprint/printer';
/** @var HttpClient $client */
private $client;
/**
* PrinterGoogleCloudPrint constructor.
*
* @param Application $app
* @param int $id
*/
public function __construct($app, $id)
{
parent::__construct($app, $id);
$token = $this->getAuthToken();
$options = new RequestOptions();
$options->setHeader('Authorization', sprintf('Bearer %s', $token));
$this->client = new HttpClient($options);
$this->app->ModuleScriptCache->IncludeJavascriptFiles(
'drucker',
['./classes/Modules/GoogleCloudPrint/www/js/PrinterGoogleCloudPrint.js']
);
}
/**
* @return string
*/
public static function getName() {
return 'Google Cloud Print';
}
/**
* @return array
*/
public function getPrinters()
{
try {
$response = $this->client->request('GET', self::URL_SEARCH);
$result = json_decode($response->getBody()->getContents(), true);
return $result['printers'];
} catch (Exception $e) {
return [];
}
}
/**
* @return array
*/
public function SettingsStructure()
{
$googlePrinters = [];
try {
$googlePrinterArr = $this->getPrinters();
} catch (Exception $e) {
return [];
}
foreach($googlePrinterArr as $item) {
$googlePrinters[$item['id']] = sprintf('%s:%s', $item['displayName'], $item['connectionStatus']);
}
return [
'google_printer' => ['bezeichnung' => 'Drucker:','typ' => 'select', 'optionen' => $googlePrinters],
];
}
/**
* @param string $document
* @param int $count
*
* @return bool
*/
public function printDocument($document, $count = 1)
{
if(empty($this->settings['google_printer'])) {
return false;
}
if($count < 1) {
$count = 1;
}
$title = '';
$contenttype = 'application/pdf';
if(is_file($document)) {
$title = basename($document);
$document = file_get_contents($document);
}
$title .= date('YmdHis');
$titleFirst = $title;
for($i = 1; $i <= $count; $i++) {
if($i > 1) {
$title = $titleFirst.$i;
}
$postFields = array(
'printerid' => $this->settings['google_printer'],
'title' => $title,
'contentTransferEncoding' => 'base64',
'content' => base64_encode($document),
'contentType' => $contenttype
);
try {
$response = $this->client->request('POST', self::URL_PRINT, [], json_encode($postFields));
$data = json_decode($response->getBody()->getContents(), true);
return (isset($data['success']) && $data['success'] === true);
} catch (TransferErrorExceptionInterface $e) {
return false;
}
}
return true;
}
protected function getAuthToken()
{
try {
/** @var GoogleAccountGateway $gateway */
$gateway = $this->app->Container->get('GoogleAccountGateway');
$account = $gateway->getCloudPrintAccount();
$token = $gateway->getAccessToken($account->getId());
} catch (GoogleAccountNotFoundException $e) {
throw new GoogleAccountNotFoundException($e->getMessage(), $e->getCode(), $e);
} catch (Exception $e) {
$token = null;
}
if ($token === null || $token->getTimeToLive() < 10) {
/** @var GoogleAuthorizationService $auth */
$auth = $this->app->Container->get('GoogleAuthorizationService');
$token = $auth->refreshAccessToken($account);
}
return $token->getToken();
}
}

View File

@ -56,7 +56,6 @@ class erpAPI
private static $license;
private $modulvorhandenlist = null;
private static $ioncubeproperties = null;
public static $lasttime = 0;
public $uebersetzungId;
@ -615,271 +614,6 @@ function Belegeexport($datei, $doctype, $doctypeid, $append = false, $optionen =
return [];
}
/**
* @deprecated
*
* @return bool
*/
function checkLicense()
{
return true;
}
// @refactor LicenceManager Komponente
final public function isIoncube()
{
if(empty(erpAPI::$license))
{
erpAPI::Ioncube_Property('');
}
return !empty(erpAPI::$license);
}
// @refactor LicenceManager Komponente
static function Ioncube_Property($key = '')
{
if(!class_exists('License'))
{
if(is_file(dirname(dirname(__DIR__)).'/phpwf/plugins/class.license.php'))
{
include(dirname(dirname(__DIR__)).'/phpwf/plugins/class.license.php');
}
}
if(class_exists('License'))
{
if(!erpAPI::$license) {
erpAPI::$license = new License();
}
}
if(erpAPI::$license) {
return erpAPI::$license->getProperty($key);
}
if(function_exists('ioncube_license_properties'))
{
if(!self::$ioncubeproperties) {
self::$ioncubeproperties = ioncube_license_properties();
}
$data = self::$ioncubeproperties;
if($data && is_array($data) && isset($data[$key]) && is_array($data[$key]) && isset($data[$key]['value'])) {
$value = $data[$key]['value'];
return $value;
}
}
return false;
}
// @refactor LicenceManager Komponente
static function Ioncube_getMaxUser()
{
return erpAPI::Ioncube_Property('maxuser');
}
// @refactor LicenceManager Komponente
static function Ioncube_getMaxLightusers()
{
return erpAPI::Ioncube_Property('maxlightuser');
}
// @refactor LicenceManager Komponente
static function Ioncube_getMaxLightusersRights()
{
$rechte = (int)erpAPI::Ioncube_Property('maxlightuserrights');
if($rechte < 5) {
$rechte = 30;
}
return $rechte;
}
// @refactor LicenceManager Komponente
static function Ioncube_BenutzervorlageAnzahlLightuser(&$app, $vorlage)
{
if(!isset($app->DB)) {
return;
}
return $app->DB->Select("SELECT count(id) FROM `user` WHERE activ = 1 AND type = 'lightuser' AND vorlage = '$vorlage'");
}
// @refactor LicenceManager Komponente
static function Ioncube_LightuserRechteanzahl($app, $id, $type = 'user')
{
if(!isset($app->DB)) {
return false;
}
if($type === 'vorlage') {
$id = $app->DB->Select("SELECT id FROM `uservorlage` WHERE bezeichnung <> '' AND bezeichnung = '".$app->DB->real_escape_string($id)."' LIMIT 1");
}
$id = (int)$id;
if($id <= 0) {
return false;
}
if($type === 'vorlage')
{
if(!$app->DB->Select("SELECT id FROM `uservorlage` WHERE id = '$id' LIMIT 1")) {
return false;
}
return $app->DB->Select("SELECT count(DISTINCT module, action) FROM `uservorlagerights` WHERE vorlage = '$id' AND permission = 1");
}
if(!$app->DB->Select("SELECT id FROM `user` WHERE id = '$id' LIMIT 1")) {
return false;
}
return $app->DB->Select("SELECT count(DISTINCT module, action) FROM `userrights` WHERE `user` = '$id' AND permission = 1");
}
// @refactor LicenceManager Komponente
static function Ioncube_HasExpired()
{
return erpAPI::Ioncube_Property('expdate') && (int)erpAPI::Ioncube_Property('expdate') < time();
}
// @refactor LicenceManager Komponente
static function Ioncube_ExpireInDays()
{
if(function_exists('ioncube_file_info'))
{
if(erpAPI::Ioncube_Property('expdate')) {
return round(((int)erpAPI::Ioncube_Property('expdate')-time())/86400);
}
}
return false;
}
// @refactor LicenceManager Komponente
static function Ioncube_BeforeExpire()
{
if(false === erpAPI::Ioncube_ExpireInDays()) {
return false;
}
return erpAPI::Ioncube_ExpireInDays() < 42;
}
// @refactor LicenceManager Komponente
static function Ioncube_ExpireDate($format = 'd.m.Y')
{
if(function_exists('ioncube_file_info'))
{
$dat = erpAPI::Ioncube_Property('expdate');
if(!$dat) {
return false;
}
return date($format,(int)$dat);
}
return false;
}
// @refactor LicenceManager Komponente
final function GetIoncubeServerList()
{
$ret = null;
$i = 1;
while($check = $this->IoncubeProperty('servername'.$i))
{
$ret[] = $check;
$i++;
}
return $ret;
}
// @refactor LicenceManager Komponente
/**
* @return bool
*/
final function ServerOK()
{
$servername = (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] != '')?$_SERVER['SERVER_NAME']:(isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'');
$serverlist = $this->GetIoncubeServerList();
if(!$serverlist) {
return true;
}
foreach($serverlist as $check) {
if($servername == $check) {
return true;
}
}
return false;
}
// @refactor LicenceManager Komponente
final function IoncubeProperty($key)
{
if(!class_exists('License'))
{
if(is_file(dirname(dirname(__DIR__)).'/phpwf/plugins/class.license.php'))
{
include(dirname(dirname(__DIR__)).'/phpwf/plugins/class.license.php');
}
}
if(class_exists('License'))
{
if(!erpAPI::$license)erpAPI::$license = new License();
}
if(erpAPI::$license)return erpAPI::$license->getProperty($key);
if(method_exists('erpAPI','Ioncube_Property'))return erpAPI::Ioncube_Property($key);
if(function_exists('ioncube_license_properties'))
{
$data = ioncube_license_properties();
if($data && isset($data[$key]) && isset($data[$key]['value']))return $data[$key]['value'];
}
return false;
}
// @refactor LicenceManager Komponente
final function IoncubegetMaxUser()
{
return $this->IoncubeProperty('maxuser');
}
// @refactor LicenceManager Komponente
final function IoncubeHasExpired()
{
if($this->IoncubeProperty('expdate'))
{
if((int)$this->IoncubeProperty('expdate') < time())return true;
}
return false;
if(function_exists('ioncube_license_has_expired'))return ioncube_license_has_expired();
return false;
}
// @refactor LicenceManager Komponente
final function IoncubeServerOK()
{
if(function_exists('ioncube_license_matches_server'))return ioncube_license_matches_server();
return true;
}
// @refactor LicenceManager Komponente
final function IoncubeExpireInDays()
{
if(function_exists('ioncube_file_info'))
{
if($this->IoncubeProperty('expdate'))return round(((int)$this->IoncubeProperty('expdate')-time())/86400);
}
return false;
}
// @refactor LicenceManager Komponente
final function IoncubeBeforeExpire()
{
if(false === $this->IoncubeExpireInDays())return false;
return $this->IoncubeExpireInDays() < 42;
}
// @refactor LicenceManager Komponente
final function IoncubeExpireDate($format = 'd.m.Y')
{
if(function_exists('ioncube_file_info'))
{
$dat = $this->IoncubeProperty('expdate');
if(!$dat) {
return false;
}
return date($format,(int)$dat);
}
return false;
}
/**
* @return array|null
*/
@ -892,127 +626,6 @@ function Belegeexport($datei, $doctype, $doctypeid, $append = false, $optionen =
return $this->appList[$this->app->Conf->WFdbname];
}
// @refactor LicenceManager Komponente
function ModuleBenutzeranzahlLizenzFehler($add = '', $typ = 'module', $vorlage = 0)
{
if(!method_exists($this->app->erp, 'IoncubeProperty')) {
return null;
}
if($typ === 'module')
{
if(strpos($add, 'shopimporter_') === 0) {
return null;
}
if($add === 'welcome' || $add === 'api' || $add === 'ajax') {
return null;
}
$anz = (int)$this->IoncubeProperty('moduleanzX'.str_replace('_','X',$add));
if($anz > 1) {
$anzadmin = (int)$this->app->DB->Select("SELECT count(id) FROM `user` WHERE activ = 1 AND type = 'admin'");
$rechte = (int)$this->app->DB->Select("SELECT count(u.i) FROM `user` u
INNER JOIN (SELECT DISTINCT `user` FROM `userrights` WHERE module = '$add' AND permission = 1) ur ON u.id = ur.`user`
WHERE activ = 1 AND type <> 'admin'
");
if($anzadmin + $rechte + 1 > $anz) {
return array('Error'=> 'Es '.($anz > 1?'sind':'ist').' nur '.$anz.' User f&uuml;r das Modul '.ucfirst($add).' lizenziert, es werden aber '.($anzadmin + $rechte + 1).' ben&ouml;tigt');
}
}
return null;
}
if($typ === 'vorlage' && $vorlage)
{
if(strpos($add, 'shopimporter_') === 0) {
return null;
}
if($add === 'welcome' || $add === 'api' || $add === 'ajax') {
return null;
}
$anz = (int)$this->IoncubeProperty('moduleanzX'.str_replace('_','X',$add));
if($anz > 1)
{
$anzadmin = (int)$this->app->DB->Select("SELECT count(id) FROM `user` WHERE activ = 1 AND type = 'admin'");
$bezeichnung = $this->app->DB->Select("SELECT bezeichnung FROM uservorlage WHERE id = '$vorlage' LIMIT 1");
if($bezeichnung == '') {
return null;
}
$rechte = (int)$this->app->DB->Select("SELECT count(u.i) FROM `user` u
INNER JOIN (SELECT DISTINCT `user` FROM `userrights` WHERE module = '$add' AND permission = 1) ur ON u.id = ur.`user`
WHERE activ = 1 AND type <> 'admin' AND vorlage != '".$this->app->DB->real_escape_string($bezeichnung)."'
");
$neueuser = (int)$this->app->DB->Select("SELECT count(u.id) FROM `user` u
WHERE activ = 1 AND type <> 'admin' AND vorlage = '".$this->app->DB->real_escape_string($bezeichnung)."'
");
if($anzadmin + $rechte + $neueuser > $anz) {
return array('Error'=> 'Es '.($anz > 1?'sind':'ist').' nur '.$anz.' User f&uuml;r das Modul '.ucfirst($add).' lizenziert, es werden aber '.($anzadmin + $rechte + $neueuser).' ben&ouml;tigt');
}
}
}
return null;
}
// @refactor LicenceManager Komponente
function OnlineshopsLizenzFehler($add = '')
{
if(!method_exists($this->app->erp, 'IoncubeProperty')) {
return false;
}
$shops = $this->app->DB->SelectArr("SELECT shoptyp,modulename FROM shopexport WHERE aktiv = 1 AND (shoptyp = 'intern' OR shoptyp = 'custom') AND modulename <> '' ORDER BY modulename");
if(!$shops) {
return false;
}
$counts = null;
foreach($shops as $shop)
{
if($shop['shoptyp'] === 'intern')
{
$modulename = $shop['modulename'];
}else{
if(preg_match_all('/(.*)\_(\d+).php/i',$shop['modulename'],$erg))
{
$modulename = $erg[1][0];
}else $modulename = '';
}
if($modulename != '')
{
if(!isset($counts[$modulename]))$counts[$modulename] = 0;
$counts[$modulename]++;
}
}
if($add != '')
{
if(substr($add,-4) === '.php')
{
if(preg_match_all('/(.*)\_(\d+).php/i',$add,$erg))
{
$add = $erg[1][0];
}else {
$add = '';
}
}
}
if($add != '')
{
if(!isset($counts[$add])) {
$counts[$add] = 0;
}
$counts[$add]++;
}
if($counts) {
foreach($counts as $k => $v) {
if($v <= 1) {
continue;
}
$anz = (int)$this->IoncubeProperty('moduleanzX'.str_replace('_','X',$k));
if($anz > 0 && $anz < $v) {
return array('Error'=> 'Es '.($anz > 1?'sind':'ist').' nur '.$anz.' Importer des Typs '.ucfirst(str_replace('shopimporter_','',$k)).' lizenziert');
}
}
}
return false;
}
function getApps()
{
/** @var Appstore $obj */
@ -6283,59 +5896,9 @@ title: 'Abschicken',
$this->modulvorhandenlist[$module] = false;
return false;
}
if(!$this->IoncubeProperty('modullizenzen')) {
$this->modulvorhandenlist[$module] = true;
return true;
}
if($module === 'chat') {
$this->modulvorhandenlist[$module] = true;
return true;
}
$apps = $this->getAppList();
$hasAppModuleProperty = !empty($apps[$module]) && isset($apps[$module]['Versionen']);
if($hasAppModuleProperty && (string)$apps[$module]['Versionen'] === '') {
$this->modulvorhandenlist[$module] = true;
return true;
}
$ablaufdatum = $this->IoncubeProperty('moduleablaufdatumX'.str_replace('_','X',$module));
if(!empty($ablaufdatum) && strtotime($ablaufdatum) < strtotime(date('Y-m-d'))) {
@unlink(__DIR__.$subdir.$modulefile.'.php');
$this->modulvorhandenlist[$module] = false;
return false;
}
if(!isset($apps[$module])) {
$this->modulvorhandenlist[$module] = true;
return true;
}
$version = $this->Version();
if($hasAppModuleProperty && strpos($apps[$module]['Versionen'], $version) !== false) {
$this->modulvorhandenlist[$module] = true;
return true;
}
if(!empty(erpAPI::Ioncube_Property('moduleX'.str_replace('_','X',$module)))) {
$this->modulvorhandenlist[$module] = true;
return true;
}
if($isModuleCronjob && !empty('moduleX'.str_replace('_','X',substr($module, 8)))) {
$this->modulvorhandenlist[$module] = true;
return true;
}
if(empty(erpAPI::Ioncube_Property('modulecheck'))) {
$this->modulvorhandenlist[$module] = true;
return true;
}
if($isModulePage && strpos($module, 'shopimporter_') === 0 && !empty($this->IoncubeProperty('newversion'))) {
$this->modulvorhandenlist[$module] = true;
return true;
}
$this->modulvorhandenlist[$module] = false;
return false;
$this->modulvorhandenlist[$module] = true;
return true;
}
// @refactor in UserPermission Komponente
@ -7901,14 +7464,7 @@ function SetCheckCronjob($value)
*/
public function CheckCronjob($checkMaintenance = true)
{
if(!empty(erpAPI::Ioncube_Property('isdevelopmentversion'))) {
if (empty($this->app->erp->GetKonfiguration('last_isdevelopmentversion'))) {
$this->app->erp->SetKonfigurationValue('last_isdevelopmentversion', '1');
$this->app->erp->SetKonfigurationValue('checkcronjob_deaktiviert', '1');
return false;
}
}
elseif (!empty($this->app->erp->GetKonfiguration('last_isdevelopmentversion'))) {
if (!empty($this->app->erp->GetKonfiguration('last_isdevelopmentversion'))) {
$this->app->erp->SetKonfigurationValue('last_isdevelopmentversion', '');
$this->app->erp->SetKonfigurationValue('checkcronjob_deaktiviert', '1');
return false;
@ -12095,22 +11651,6 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
if($this->app->User->GetParameter('tooltipinline_autoopen')) {
$this->app->Tpl->Add('INLINEHELPOPEN', ' class="inlineautoopen" ');
}
$phone = str_replace(['-',' '],'', erpAPI::Ioncube_Property('phone_smb'));
if(empty($phone)) {
$this->app->Tpl->Set('BEFORESUPPORTPHONE', '<!--');
$this->app->Tpl->Set('AFTERSUPPORTPHONE', '-->');
}
else {
$this->app->Tpl->Set('SUPPORTPHONENUMBER', $phone);
$sipuid = $this->app->erp->ModulVorhanden('sipgate') && $this->app->erp->GetPlacetelSipuid();
if(!empty($sipuid)) {
$this->app->Tpl->Set('SIPGATEACTIVE', 1);
$this->app->Tpl->Set('SUPPORTPHONENUMBERLINK', '#');
}
else{
$this->app->Tpl->Set('SUPPORTPHONENUMBERLINK', 'tel://'.$phone);
}
}
$this->app->Tpl->Parse('PAGE','tooltipinline.tpl');
}

View File

@ -101,10 +101,7 @@ class Briefpapier extends SuperFPDF {
$hintergrund = $this->getStyleElement('hintergrund');
if(!empty(erpAPI::Ioncube_Property('isdevelopmentversion'))) {
$this->setDevelopmentVersionBackground();
}
elseif($this->app->erp->BriefpapierHintergrunddisable)
if($this->app->erp->BriefpapierHintergrunddisable)
{
}
else if($hintergrund=='logo')

View File

@ -305,10 +305,8 @@ class Appstore {
$ret['lightuser'] = (int)$art['menge'];
}
$maxUser = erpAPI::Ioncube_Property('maxuser');
$maxLightUser = erpAPI::Ioncube_Property('maxlightuser');
$ret['maxuser'] = (int)$maxUser;
$ret['maxlightuser'] = (int)$maxLightUser;
$ret['maxuser'] = 0;
$ret['maxlightuser'] = 0;
if(!empty($data['customerinfo'])) {
$ret = array_merge($ret, $data['customerinfo']);
$ret['customerinfo'] = $this->getCustomInfoHtml($data['customerinfo']);
@ -386,12 +384,12 @@ class Appstore {
'user' => 'Benutzeranzahl',
'agreement' => 'Einverständnis',
];
$isTestlizenz = !empty(erpAPI::Ioncube_Property('testlizenz'));
$isTestlizenz = false;
if(!$isTestlizenz) {
unset($mapping['agreement']);
$field = 'add_user';
$new = $data['user'];
$old = erpAPI::Ioncube_Property('maxuser');
$old = 0;
return $this->SendBuyInfo($field, $new, $old);
}
$error = [];
@ -808,8 +806,8 @@ class Appstore {
*/
private function isPossibleToChangeUser($type, $count)
{
$oldUser = (int)erpAPI::Ioncube_Property('maxuser');
$oldLightUser = (int)erpAPI::Ioncube_Property('maxlightuser');
$oldUser = 0;
$oldLightUser = 0;
$maxUser = $oldUser;
$maxLightUser = $oldLightUser;
if($type === 'user') {
@ -986,33 +984,6 @@ class Appstore {
];
}
protected function showUpdateMessage(): void
{
if(!$this->canBuy()) {
return;
}
if($this->app->User->GetType() !== 'admin') {
return;
}
$moduleForInfos = $this->getModulesForUpdateInfo();
if(empty($moduleForInfos)) {
return;
}
$this->app->Tpl->Set(
'MESSAGE',
'<div class="info">Es sind Module zum Herunterladen verfügbar. Sie können nun ein Update installieren.
<a target="_blank" href="update.php?rand='.sha1(uniqid('', true)).'"><input type="button" value="Update starten" /></a></div>'
);
}
/**
* @return bool
*/
public function canBuy(): bool
{
return method_exists('erpAPI', 'Ioncube_Property') && !empty(erpAPI::Ioncube_Property('canbuy'));
}
/**
* @param string $iban
*
@ -1070,30 +1041,6 @@ class Appstore {
return $mod === 1;
}
/**
* @param string $module
*
* @return bool
*/
public function isModulePossibleToBuy($module): bool
{
if(!$this->canBuy()) {
return false;
}
if($this->app->erp->ModulVorhanden($module)) {
return false;
}
$buyList = $this->getActualBuyList();
if(empty($buyList['modules']) || !is_array($buyList['modules'])) {
return false;
}
return in_array($module, $buyList['modules']);
//return !empty(erpAPI::Ioncube_Property('canbuymodule'.str_replace('_','X', $module)));
}
/**
* @param bool $intern
*
@ -1445,14 +1392,6 @@ class Appstore {
if(!isset($app['project_sensitive'])){
$app['project_sensitive'] = false;
}
$ablaufdatum = $this->app->erp->IoncubeProperty('moduleablaufdatumX'.str_replace('_','X',$key));
$test = $this->app->erp->IoncubeProperty('testmoduleX'.str_replace('_','X',$key));
if(!empty($ablaufdatum)) {
$app['ablaufdatum'] = $ablaufdatum;
}
if($test) {
$app['test'] = $test;
}
if($this->app->erp->ModulVorhanden($key, $withDeactivated)) {
if($app['Versionen'] == '' || $app['Versionen'] === 'ALL') {
$res['installiert'][] = $app;
@ -3865,16 +3804,14 @@ class Appstore {
],
);
if(empty(erpAPI::Ioncube_Property('disabledevelopmentprogram'))) {
$apps['developmentprogram'] = [
'Bezeichnung' => 'Development Programm',
'Link' => 'index.php?module=developmentprogram&action=list',
'Icon' => 'Icons_dunkel_25.gif',
'Versionen' => 'ENT',
'kategorie' => '{|System|}',
'beta' => false,
];
}
$apps['developmentprogram'] = [
'Bezeichnung' => 'Development Programm',
'Link' => 'index.php?module=developmentprogram&action=list',
'Icon' => 'Icons_dunkel_25.gif',
'Versionen' => 'ENT',
'kategorie' => '{|System|}',
'beta' => false,
];
if(!empty($this->app->Tpl) && method_exists($this->app->Tpl,'pruefeuebersetzung')) {
foreach($apps as $k => $v) {
@ -4245,52 +4182,7 @@ class Appstore {
$canUserTestModule = $this->app->erp->RechteVorhanden('appstore', 'testmodule');
if($canUserTestModule && $this->app->erp->isIoncube() && $this->app->Secure->GetPOST('testen')) {
$modul = $this->app->Secure->GetPOST('modul');
$get = $this->app->Secure->GetPOST('modulbestaetigen');
$json = false;
if($modul == '' && $get != '') {
$json = true;
$message = '';
if($module && !empty($module['kauf'])) {
foreach($module['kauf'] as $k => $v) {
if($v['md5'] === $get) {
$mods = $this->app->erp->getAppList();
foreach($mods as $k2 => $v2) {
if(md5($v2['Bezeichnung']) === $get) {
$modul = $k2;
break;
}
}
}
}
}
}
if($modul) {
$testapp = $modul;
if(is_file(dirname(__DIR__).'/update.php')) {
$result = '';
include_once dirname(__DIR__).'/update.php';
if($result === 'OK') {
$message = '<div class="info">Das Modul wurde zum Testen angefragt. Bitte ziehen Sie sich über den Update-Prozess in ca 10 Minuten ein Update. Sie erhalten mit diesem das Modul zum Testen.</div>';
if(!$json) {
$this->app->Tpl->Add('MESSAGE', $message);
}
}
else{
$message = '<div class="error">Es ist ein Fehler beim Senden der Anfrage aufgetreten: '.$result.'</div>';
if(!$json) {
$this->app->Tpl->Add('MESSAGE', $message);
}
}
}
}
if($json) {
return new JsonResponse(['html'=>$message]);
}
$this->clearCache();
}
elseif($canUserTestModule && !empty($get = $this->app->Secure->GetGET('get')) && !empty($module['kauf'])) {
if($canUserTestModule && !empty($get = $this->app->Secure->GetGET('get')) && !empty($module['kauf'])) {
foreach($module['kauf'] as $v) {
if($v['md5'] === $get) {
$mods = $this->app->erp->getAppList();
@ -4360,7 +4252,6 @@ class Appstore {
// Detail-Seite ausblenden
$this->app->Tpl->Set('APPSTOREDETAILSEITEAUSBLENDEN', 'display: none;');
$this->showUpdateMessage();
/** @var Welcome $welcome */
$welcome = $this->app->loadModule('welcome');

View File

@ -906,38 +906,6 @@ class Benutzer
if(is_numeric($user) && $module!='' && $action!='' && $value!='') {
$id = $this->app->DB->Select("SELECT id FROM userrights WHERE user='$user' AND module='$module' AND action='$action' LIMIT 1");
if($value && $this->app->erp->isIoncube() && method_exists('erpAPI','Ioncube_getMaxLightusersRights') && method_exists('erpAPI','Ioncube_LightuserRechteanzahl'))
{
$lightuser = $this->app->DB->Select("SELECT id FROM `user` WHERE id = '$user' AND type='lightuser' LIMIT 1");
if($lightuser)
{
$anzerlaubt = erpAPI::Ioncube_getMaxLightusersRights();
$anzvorhanden = erpAPI::Ioncube_LightuserRechteanzahl($this->app, $user);
if($anzvorhanden >= $anzerlaubt)
{
exit;
}
if($id)
{
if(!$this->app->DB->Select("SELECT permission FROM userrights WHERE id = '$id'"))exit;
}else{
if($anzvorhanden + 1 > $anzerlaubt)exit;
}
}
if($value && method_exists($this->app->erp, 'ModuleBenutzeranzahlLizenzFehler') && ($err = $this->app->erp->ModuleBenutzeranzahlLizenzFehler($module)))
{
if(isset($err['Error']))
{
if(is_array($err['Error']))
{
echo "Error".implode('<br />',$err['Error']);
}else{
echo "Error".$err['Error'];
}
}
exit;
}
}
if(is_numeric($id) && $id>0)
{
if($value=="1")

View File

@ -1,57 +0,0 @@
<!-- gehort zu tabview -->
<div id="tabs">
<ul>
<li><a href="#tabs-1"></a></li>
</ul>
<!-- ende gehort zu tabview -->
<!-- erstes tab -->
<div id="tabs-1">
[MESSAGE]
<div class="col-xs-12 col-md-2 col-md-height">
<div class="inside inside-full-height">
<form action="?module=googleapi&action=print" method="POST">
<fieldset>
<legend>{|Google Cloud Print verwenden|}</legend>
<div></div>
<table width="100%" border="0" class="mkTableFormular">
<tbody>
<tr>
<td></td>
<td>
</td>
</tr>
<tr>
<td>Google Cloud Print:</td>
<td>
<i>
Um Google Cloud Print zu verwenden klicke auf Verbinden und wähle im nächsten Schritt, das Google
Konto aus, das für Cloud Printing verwendet werden soll.
</i>
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="authorize_cloudprint" value="{|Verbinden|}"/>
<input type="submit" name="unauthorize" value="{|Trennen|}"/>
</td>
</tr>
</tbody>
</table>
</fieldset>
</form>
</div>
</div>
[TAB1NEXT]
</div>
<!-- tab view schließen -->
</div>

View File

@ -1,4 +1,4 @@
<?php
<?php
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
@ -10,8 +10,8 @@
* to obtain the text of the corresponding license version.
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/
?>
*/
?>
<?php
use Xentral\Modules\SystemConfig\SystemConfigModule;
@ -80,8 +80,6 @@ class Dataprotection
$this->app->Location->execute('index.php?module=dataprotection&action=services');
}
$isDemo = !empty(erpAPI::Ioncube_Property('testlizenz'))
&& !empty(erpAPI::Ioncube_Property('iscloud'));
$google = $this->isGoogleAnalyticsActive();
$improvement = $this->isImprovementProgramActive();
$hubspot = $this->isHubspotActive();
@ -102,9 +100,7 @@ class Dataprotection
if($zendesk) {
$this->app->Tpl->Set('DATAPROTECTION_ZENDESK', ' checked="checked" ');
}
if(!$isDemo) {
$this->app->Tpl->Set('DISABLED_HUBSPOT', ' disabled="disabled" ');
}
$this->app->Tpl->Set('DISABLED_HUBSPOT', ' disabled="disabled" ');
$this->app->erp->MenuEintrag('index.php?module=dataprotection&action=list', 'Datenschutzerklärung');
$this->app->erp->MenuEintrag('index.php?module=dataprotection&action=services', 'Dienste');
@ -163,12 +159,6 @@ class Dataprotection
{
$hubspot = $this->systemConfigModule->tryGetValue('dataprotection', 'hubspot');
$isDemo = !empty(erpAPI::Ioncube_Property('testlizenz'))
&& !empty(erpAPI::Ioncube_Property('iscloud'));
if($hubspot === null) {
return $isDemo;
}
return $hubspot === '1';
}
}

View File

@ -126,7 +126,7 @@ class Einstellungen {
}
$this->app->erp->MenuEintrag('index.php?module=einstellungen&action=betaprogram', 'Beta Programm');
if(!empty(erpAPI::Ioncube_Property('isbetaactive'))) {
if(false) {
$this->app->Tpl->Set('BEFORESHOWIFBETADEACTIVATED', '<!--');
$this->app->Tpl->Set('AFTERSHOWIFBETADEACTIVATED', '-->');
}

View File

@ -22,9 +22,6 @@ class GoogleApi
/** @var string MODULE_NAME */
public const MODULE_NAME = 'GoogleApi';
/** @var string GOOGLE_API_TESTURL_PRINT */
//private const TESTURL_PRINT = 'https://www.google.com/cloudprint/search';
/** @var string GOOGLE_API_TESTURL_CALENDAR */
//private const TESTURL_CALENDAR = 'https://www.googleapis.com/calendar/v3/users/me/calendarList';
@ -64,9 +61,7 @@ class GoogleApi
// ab hier alle Action Handler definieren die das Modul hat
$this->app->ActionHandler('list', 'GoogleApiEdit');
$this->app->ActionHandler('edit', 'GoogleApiEdit');
$this->app->ActionHandler('print', 'GoogleApiPrint');
$this->app->ActionHandler('redirect', 'GoogleApiRedirect');
$this->app->ActionHandler('ajaxprinters', 'GoogleApiAjaxPrinters');
$this->app->ActionHandlerListen($app);
}
@ -135,7 +130,6 @@ class GoogleApi
$sql = "SELECT SQL_CALC_FOUND_ROWS g.id, g.id_name, g.description,
(CASE g.type
WHEN 'print' THEN 'Google Cloud Print'
WHEN 'mail' THEN 'Google Mail'
WHEN 'calendar' THEN 'Google Calendar'
ELSE ''
@ -319,41 +313,6 @@ class GoogleApi
$this->app->Tpl->Parse('PAGE', 'googleapi_edit.tpl');
}
/**
* @return void
*/
public function GoogleApiPrint(): void
{
/** @var Request $request */
$request = $this->app->Container->get('Request');
if ($request->post->has('authorize_cloudprint')) {
/** @var Session $session */
$session = $this->app->Container->get('Session');
$redirect = $this->auth->requestScopeAuthorization(
$session,
[GoogleScope::CLOUDPRINT],
'index.php?module=googleapi&action=print'
);
SessionHandler::commitSession($session);
$redirect->send();
$this->app->ExitXentral();
}
if ($request->post->has('unauthorize')) {
$this->unauthorize();
}
$this->app->Tpl->Add(
'MESSAGE',
'<div class="warning">
Hinweis: Google wird den Cloud Print Dienst am 31.12.2020 abschalten.</div>'
);
$this->app->erp->Headlines('Google Cloud Print');
$this->createMenu();
$this->app->Tpl->Parse('PAGE', 'googleapi_print.tpl');
}
/**
* After user confirmed access to Google API manually, Google API
* redirects user to this action sending authentication code and API scope
@ -382,47 +341,6 @@ class GoogleApi
}
/**
* Action for the printer setup gui to get printer options from api connection
*
* @return void
*/
public function GoogleApiAjaxPrinters()
{
$data = [];
$apiName = $this->app->DB->real_escape_string(trim($this->app->Secure->GetPOST('api_name')));
if(!empty($apiName)) {
$id = $this->getGoogleApiByName($apiName);
$token = $this->getAccessToken($id);
$authHeader = sprintf('Authorization: Bearer %s', $token);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, [$authHeader]);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION,true);
curl_setopt( $ch, CURLOPT_HEADER,false);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt( $ch, CURLOPT_HTTPAUTH,CURLAUTH_ANY);
curl_setopt( $ch, CURLOPT_URL, 'https://www.google.com/cloudprint/search');
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, ['printerid' => $id]);
$response = curl_exec($ch);
$result = json_decode($response, true);
$printers = $result['printers'];
if(!empty($printers)) {
foreach ($printers as $item) {
$data[$item['id']] = sprintf('%s:%s', $item['displayName'], $item['connectionStatus']);
}
}
}
$responseData = json_encode($data);
header('Content-Type: application/json');
echo $responseData;
$this->app->ExitXentral();
}
/**
* Automatically calls getAccessTokenByRederect if needed.
*
@ -682,11 +600,6 @@ class GoogleApi
}
switch ($type) {
case 'print':
$scope = self::GOOGLE_API_SCOPE_PRINT;
break;
case 'mail':
$scope = self::GOOGLE_API_SCOPE_MAIL;
@ -855,10 +768,6 @@ class GoogleApi
$type = $this->app->DB->Select(sprintf("SELECT g.type FROM googleapi AS g WHERE g.id = '%s';", $id));
switch ($type) {
case 'print':
$testurl = self::GOOGLE_API_TESTURL_PRINT;
break;
case 'mail':
$this->app->Tpl->Add(
$messageTarget,
@ -893,18 +802,6 @@ class GoogleApi
return false;
}
if ($type === 'print' &&
(!isset($info['content_type']) || explode(';', $info['content_type'])[0] !== 'text/plain')
) {
$error = 'Test fehlgeschlagen: Fehlerhafte Antwort vom Server';
$this->app->Tpl->Add(
$messageTarget,
sprintf('<div class="error">%s</div>', $error)
);
return false;
}
if ($type === 'mail' &&
(!isset($info['content_type']) || explode(';', $info['content_type'])[0] !== 'text/plain')
) {
@ -977,6 +874,5 @@ class GoogleApi
$this->app->erp->MenuEintrag('index.php?module=googleapi&action=list',
'Zur&uuml;ck zur &Uuml;bersicht');
$this->app->erp->MenuEintrag('index.php?module=googleapi&action=list', 'Übersicht');
$this->app->erp->MenuEintrag('index.php?module=googleapi&action=print', 'Google Cloud Print');
}
}

View File

@ -1,4 +1,4 @@
<?php
<?php
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
@ -10,8 +10,8 @@
* to obtain the text of the corresponding license version.
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/
?>
*/
?>
<?php
use Xentral\Components\Http\JsonResponse;
@ -124,12 +124,6 @@ class Learningdashboard
$initialSetupLesson->addTask(new Task($wizardService->getWizard('basic_settings', $userId)));
$initialSetupLesson->addTask(new Task($wizardService->getWizard('parts_list', $userId)));
/** @var EnvironmentConfig $environmentConfig */
$environmentConfig = $this->app->Container->get('EnvironmentConfig');
if($environmentConfig->isSystemFlaggedAsDevelopmentVersion() || $environmentConfig->isSystemFlaggedAsTestVersion()){
$initialSetupLesson->addTask(new Task($wizardService->getWizard('restore_factory_settings', $userId)));
}
$shopConnectionLesson = new Lesson('Shopanbindung');
$shopConnectionLesson->addTask(new Task($wizardService->getWizard('shopify', $userId)));
$shopConnectionLesson->addTask(new Task($wizardService->getWizard('amazon', $userId)));

View File

@ -1765,9 +1765,6 @@ INNER JOIN shopexport s ON
*/
public function createInternShop($auswahlmodul)
{
if($fehler = $this->app->erp->OnlineshopsLizenzFehler($auswahlmodul)) {
return ['success'=>false,'error'=>$fehler['Error']];
}
$bezeichnung = ucfirst(str_replace('shopimporter_','',$auswahlmodul));
$i = 1;
while($this->app->DB->Select("SELECT id FROM shopexport WHERE bezeichnung = '$bezeichnung' LIMIT 1")) {

View File

@ -989,57 +989,6 @@ class Supportapp Extends GenSupportapp {
}
}
/*
$updatedaten = $this->app->DB->SelectArr("SELECT w.*,
date_format(versionupdate,'%d.%m.%Y %H:%i:%s') as versionupdatede ,
date_format(ioncube_expdate,'%d.%m.%Y') as ioncube_expdatede,
datediff(ioncube_expdate,CURDATE()) as diff FROM wawisionsupport w WHERE adresse = '$kundenid' LIMIT 1");
if($updatedaten)
{
$updatedaten = reset($updatedaten);
$this->app->Tpl->Add('UPDATE_MODULLIST',str_replace(',',', ',$updatedaten['module']));
$revision = $updatedaten['revision'];
if($revision)$revision = '<a target="_blank" href="http://192.168.0.81/versionen/versionen.php?version='.$revision.'">'.$revision.'</a>';
$this->app->Tpl->Add('UPDATE_REVISION',$revision);
$this->app->Tpl->Add('UPDATE_MAXUSER', $updatedaten['ioncube_maxuser']);
$this->app->Tpl->Add('UPDATE_MAXLIGHTUSER', $updatedaten['ioncube_maxlightuser']);
$this->app->Tpl->Add('UPDATE_VERSIONUPATE', $updatedaten['versionupdatede']);
$this->app->Tpl->Add('UPDATE_ABLAUFAM',$updatedaten['ioncube_expdatede']);
$this->app->Tpl->Add('UPDATE_ABLAUFIN',$updatedaten['diff']);
$this->app->Tpl->Add('UPDATE_VERSIONSHINWEIS',$updatedaten['versionshinweis']);
$this->app->Tpl->Add('UPDATE_DEAKTIVIEREN', $updatedaten['ioncube_deaktivateonexp']?'ja':'nein');
$this->app->Tpl->Add('UPDATE_GESPERRT', $updatedaten['gesperrt']?'ja':'nein');
$this->app->Tpl->Add('UPDATE_TESTLIZENZ', $updatedaten['testlizenz']?'ja':'nein');
$this->app->Tpl->Add('UPDATE_CLOUD', $updatedaten['cloud']!=''?ucfirst($updatedaten['cloud']):'Kauf Erstvertrag');
if($updatedaten['module_custom']!='')
{
$this->app->Tpl->Add('UPDATEWARNUNG','<div class="error">Kundenspezifische Modifikationen vorhanden!</div>');
$module_custom = json_decode($updatedaten['module_custom']);
foreach($module_custom as $datei => $arr)
{
if(strpos($datei,'/download/') !== 0)
{
$this->app->Tpl->Add('UEBERLADENLISTE','<div >'.$datei.'');
//foreach($arr as $fkey => $arr2)
// {
// $this->app->Tpl->Add('UEBERLADENLISTE','<pre>'."\r\n...\r\n");
// foreach($arr2 as $v)$this->app->Tpl->Add('UEBERLADENLISTE',$v);
// $this->app->Tpl->Add('UEBERLADENLISTE',"\r\n...\r\n".'</pre><br /><br />');
//}
$this->app->Tpl->Add('UEBERLADENLISTE','</div>');
}
}
}
}*/
//$this->app->Tpl->Add('MODULEUPDATE');
$updates ='<table class="mkTable" cellpadding="0" cellspacing="0">
<tr>
<td>Datum</td>

View File

@ -719,7 +719,6 @@ class Systemhealth {
'max_upload' => 'Upload-Kapazit&auml;t',
'max_execution_time' => 'Scriptlauftzeit',
'userdata_writeable' => 'Schreibrechte in Userdata',
'ioncube' => 'Lizenz',
'tls1-2' => 'TLS v1.2',
],
'settings' => [

View File

@ -720,25 +720,6 @@ class Systemlog {
}
}
$typeToMessage['php-ssh2'] = (!empty($ret)?count($ret):0) - 1;
if(!function_exists('ioncube_loader_version')) {
$tmp['status'] = 'warning';
$tmp['text'] = 'Ioncube ist nicht installiert (Eine Installation ist trotzdem m&ouml;glich)';
$ret[] = $tmp;
}
else {
$ioncube_loader_version = ioncube_loader_version();
if($ioncube_loader_version[0]< 5 && $ioncube_loader_version[1] === '.') {
$tmp['status'] = 'warning';
$tmp['text'] = 'Die Ioncubeversion ist zu alt (Eine Installation ist trotzdem m&ouml;glich)';
$ret[] = $tmp;
}
else{
$tmp['status'] = 'ok';
$tmp['text'] = 'Ioncube verf&uuml;gbar';
$ret[] = $tmp;
}
}
$typeToMessage['ioncube'] = (!empty($ret)?count($ret):0) - 1;
$post_max_size = @ini_get('client_max_body_size');
if($post_max_size == ''){
$post_max_size = @ini_get('post_max_size');

View File

@ -2244,41 +2244,6 @@ $this->app->Tpl->Add('TODOFORUSER',"<tr><td width=\"90%\">".$tmp[$i]['aufgabe'].
$this->app->Tpl->Add('TAB1','OpenXE is free open source software under AGPL/EGPL license, based on <a href="https://xentral.com" target="_blank">Xentral®</a> by Xentral&nbsp;ERP&nbsp;Software&nbsp;GmbH.<br><br><div class="info"><img src="themes/new/images/Xentral_ERP_Logo-200.png"><br>Das Logo und der Link zur Homepage <a href="https://xentral.biz" target=\_blank\>https://xentral.biz</a> d&uuml;rfen nicht entfernt werden.</div><br>&copy; Copyright by OpenXE project & Xentral ERP Software GmbH Augsburg');
}
if($this->app->erp->isIoncube() && method_exists($this->app->erp, 'IoncubeProperty'))
{
if(method_exists('erpAPI','Ioncube_Property'))
{
$hinweis = erpAPI::Ioncube_Property('versionshinweis');
}else{
$hinweis = $this->app->erp->IoncubeProperty('versionshinweis');
}
if($hinweis){$hinweis = ' ('.$hinweis.')';}else{$hinweis = '';}
if(method_exists('erpAPI', 'Ioncube_HasExpired'))
{
$hasexpired = erpAPI::Ioncube_HasExpired();
}else{
$hasexpired = $this->app->erp->IoncubeHasExpired();
}
if(method_exists('erpAPI', 'Ioncube_ExpireDate'))
{
$expiredate = erpAPI::Ioncube_ExpireDate();
}else{
$expiredate = $this->app->erp->IoncubeExpireDate();
}
if($hasexpired && is_dir(dirname(dirname(__DIR__)).'/www_oss') && is_dir(dirname(dirname(__DIR__)) . '/phpwf_oss') && is_dir(dirname(dirname(__DIR__)) . '/phpwf_oss/types') && $this->app->User->GetType() == 'admin')
{
if(is_dir(dirname(dirname(__DIR__)).'/www_oss') && is_dir(dirname(dirname(__DIR__)) . '/phpwf_oss') && is_dir(dirname(dirname(__DIR__)) . '/phpwf_oss/types') && $this->app->User->GetType() == 'admin')
{
$this->app->Tpl->Add('TAB1','<form method="post"><div class="info">
<input type="checkbox" value="1" name="restoreoss" /> {|Wieder auf Open-Source Version wechseln|}<br />
Hinweis: Bitte sichern Sie wenn Sie eigene Quelltexte in Xentral hinterlegt haben diese gesondert. Es werden alle fremden Quelltextdateien entfernt.<br />
<input type="submit" style="margin:5px;" value="{|Jetzt auf Open-Source Version wechseln|}" /><div style="clear:both;"></div>
</div></form>');
}
}
}
$tmp = file_get_contents('../LICENSE');
$phpmailer = file_get_contents('../www/plugins/phpmailer/LICENSE');
@ -2288,109 +2253,6 @@ $this->app->Tpl->Add('TODOFORUSER',"<tr><td width=\"90%\">".$tmp[$i]['aufgabe'].
$this->app->Tpl->Add('TAB1','</td></tr>');
if($this->app->erp->isIoncube() && method_exists($this->app->erp, 'IoncubeProperty'))
{
$first = true;
if(method_exists('erpAPI','Ioncube_getMaxUser'))
{
$maxuser = erpAPI::Ioncube_getMaxUser();
}else{
$maxuser = $this->app->erp->IoncubegetMaxUser();
}
$maxlightuser = 0;
$maxlightuserrechte = 0;
$anzahllightuser = 0;
if(method_exists('erpAPI','Ioncube_getMaxLightusers') && method_exists('erpAPI','Ioncube_getMaxLightusersRights'))
{
$maxlightuser = erpAPI::Ioncube_getMaxLightusers();
$maxlightuserrechte = erpAPI::Ioncube_getMaxLightusersRights();
}
$mitarbeiterzeiterfassung = $this->app->erp->ModulVorhanden('mitarbeiterzeiterfassung')?$maxuser:0;
if($maxuser) {
$anzuser2 = 0;
if($maxlightuser > 0) {
$anzuser2 = (int)$this->app->DB->Select("SELECT count(DISTINCT u.id) FROM `user` u WHERE activ = 1 AND type = 'lightuser' ");
$anzahllightuser = $anzuser2;
$anzuser = (int)$this->app->DB->Select("SELECT count(id) FROM `user` WHERE activ = 1 AND not isnull(hwtoken) AND hwtoken <> 4") - $anzuser2;
$anzuserzeiterfassung = (int)$this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken = 4 AND type != 'lightuser'");
}else{
$anzuser = (int)$this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken <> 4 ");
$anzuserzeiterfassung = (int)$this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken = 4");
}
$userred = $anzuser > $maxuser
|| (
($anzuser + $anzuserzeiterfassung + $anzuser2) >
$mitarbeiterzeiterfassung + $maxuser + $maxlightuser
)
|| (($anzuser + $anzuserzeiterfassung) > $mitarbeiterzeiterfassung + $maxuser);
$this->app->Tpl->Add(
'TAB1',
'<tr><td><div' . ($userred ? ' style="color:red;" ' : '') . '>Benutzer ' .
($anzuser + $anzahllightuser + $anzuserzeiterfassung) .
($maxlightuser > 0 || $anzuserzeiterfassung > 0?' (davon ':'').
($maxlightuser > 0 ? $anzahllightuser . ' Light-User' : '') .
($maxlightuser > 0 && $anzuserzeiterfassung > 0?', ':'').
($anzuserzeiterfassung > 0 ? $anzuserzeiterfassung . ' Zeiterfassung-User' : '') .
($maxlightuser > 0 || $anzuserzeiterfassung > 0?')':'').
' von ' .
($maxuser + $maxlightuser + $mitarbeiterzeiterfassung) .
($maxlightuser > 0 || $mitarbeiterzeiterfassung > 0?' (davon ':'').
($maxlightuser > 0 ? $maxlightuser . ' Light-User' : '') .
($maxlightuser > 0 && $mitarbeiterzeiterfassung > 0?', ':'').
($mitarbeiterzeiterfassung > 0 ? $mitarbeiterzeiterfassung . ' Zeiterfassung-User' : '') .
($maxlightuser > 0 || $mitarbeiterzeiterfassung > 0?')':'').
'</div></td></tr>'
);
}
if(method_exists('erpAPI','Ioncube_Property'))
{
$hinweis = erpAPI::Ioncube_Property('versionshinweis');
}else{
$hinweis = $this->app->erp->IoncubeProperty('versionshinweis');
}
if($hinweis){
$hinweis = ' ('.$hinweis.')';
}else{
$hinweis = '';
}
if(method_exists('erpAPI', 'Ioncube_HasExpired'))
{
$hasexpired = erpAPI::Ioncube_HasExpired();
}else{
$hasexpired = $this->app->erp->IoncubeHasExpired();
}
if(method_exists('erpAPI', 'Ioncube_ExpireDate'))
{
$expiredate = erpAPI::Ioncube_ExpireDate();
}else{
$expiredate = $this->app->erp->IoncubeExpireDate();
}
if(method_exists('erpAPI', 'Ioncube_BeforeExpire'))
{
$ioncubebeforeexpire = erpAPI::Ioncube_BeforeExpire();
}else{
$ioncubebeforeexpire = $this->app->erp->IoncubeBeforeExpire();
}
if($hasexpired)
{
$first = false;
$this->app->Tpl->Add('TAB1','<tr><td><div style="color:red;">Ihre Lizenz ist am '.$expiredate.' abgelaufen'.$hinweis.'.</div></td></tr>');
} elseif($ioncubebeforeexpire) {
$first = false;
$this->app->Tpl->Add('TAB1','<tr><td><div style="color:red;">Ihre Lizenz l&auml;uft am '.$expiredate.' ab'.$hinweis.'.</div></td></tr>');
} elseif($expiredate) {
$first = false;
$this->app->Tpl->Add('TAB1','<tr><td><div>Die Lizenz l&auml;uft am '.$expiredate.' ab'.$hinweis.'.</div></td></tr>');
}
}
if(method_exists($this->app->erp, 'VersionsInfos'))
{
$ver = $this->app->erp->VersionsInfos();
@ -3117,8 +2979,6 @@ $this->app->Tpl->Add('TODOFORUSER',"<tr><td width=\"90%\">".$tmp[$i]['aufgabe'].
{
$userNames = [];
$members = [];
$needToPreventExampleImportFailure = !empty(erpAPI::Ioncube_Property('testlizenz'))
&& !empty(erpAPI::Ioncube_Property('iscloud'));
for($i = 0; $i < 5; $i++) {
$userName = $this->app->Secure->GetPOST('teamMemberName'.($i > 0?(string)$i:''));
if(empty($userName)) {
@ -3160,9 +3020,6 @@ $this->app->Tpl->Add('TODOFORUSER',"<tr><td width=\"90%\">".$tmp[$i]['aufgabe'].
)
);
$addressId = (int)$this->app->DB->GetInsertID();
if($needToPreventExampleImportFailure) {
$addressId = $this->ChangeAddressIdIfCollideWithExampleData($addressId);
}
$this->app->erp->AddRolleZuAdresse($addressId, 'Mitarbeiter', 'von', 'Projekt', $projectId);
$vorlage =
$this->app->DB->real_escape_string(
@ -3185,9 +3042,6 @@ $this->app->Tpl->Add('TODOFORUSER',"<tr><td width=\"90%\">".$tmp[$i]['aufgabe'].
)
);
$newUserId = (int)$this->app->DB->GetInsertID();
if($needToPreventExampleImportFailure){
$newUserId = $this->ChangeUserIdIfCollideWithExampleData($newUserId);
}
$this->app->erp->insertDefaultUserRights($newUserId);
if($vorlage !== '') {
$this->app->erp->AbgleichBenutzerVorlagen($newUserId);

View File

@ -794,50 +794,26 @@ class Zahlungsweisen {
}
}
if($this->app->erp->isIoncube() && $this->app->Secure->GetPOST('testen')) {
$modul = $this->app->Secure->GetPOST('modul');
if($modul) {
$testapp = $modul;
if(is_file(dirname(__DIR__).'/update.php')) {
$result = '';
include_once dirname(__DIR__).'/update.php';
if($result === 'OK') {
$this->app->Tpl->Add(
'MESSAGE',
'<div class="info">Das Modul wurde zum Testen angefragt. Bitte update xentral in
fr&uuml;hestens 10 Minuten um das Modul zu laden</div>'
);
}
else{
$this->app->Tpl->Add(
'MESSAGE',
'<div class="error">Es ist ein Fehler beim Updaten aufgetreten: '.$result.'</div>');
}
}
}
}
else{
$get = $this->app->Secure->GetGET('get');
if($get && $module){
if(isset($module['kauf'])){
foreach($module['kauf'] as $k => $v) {
if($v['md5'] == $get){
$mods = $this->app->erp->getAppList();
foreach($mods as $k2 => $v2) {
if(md5($v2['Bezeichnung']) == $get){
$this->app->Tpl->Add(
'MESSAGE',
'<div class="info">Bitte best&auml;tigen: <form method="POST" action="index.php?module=versandarten&action=create"><input type="hidden" name="modul" value="'.$k2.'" /><input type="submit" style="float:right;" value="Testmodul '.$v2['Bezeichnung'].' anfragen" name="testen" /></form></div>'
);
break;
}
$get = $this->app->Secure->GetGET('get');
if($get && $module){
if(isset($module['kauf'])){
foreach($module['kauf'] as $k => $v) {
if($v['md5'] == $get){
$mods = $this->app->erp->getAppList();
foreach($mods as $k2 => $v2) {
if(md5($v2['Bezeichnung']) == $get){
$this->app->Tpl->Add(
'MESSAGE',
'<div class="info">Bitte best&auml;tigen: <form method="POST" action="index.php?module=versandarten&action=create"><input type="hidden" name="modul" value="'.$k2.'" /><input type="submit" style="float:right;" value="Testmodul '.$v2['Bezeichnung'].' anfragen" name="testen" /></form></div>'
);
break;
}
}
}
}
}
}
$modullist = $this->getApps();
/** @var Appstore $appstore */
$appstore = $this->app->loadModule('appstore');

View File

@ -354,25 +354,6 @@
$ret[] = $tmp;
}
if(!function_exists('ioncube_loader_version'))
{
$tmp['status'] = 'warning';
$tmp['text'] = 'Ioncube ist nicht installiert (Eine Installation ist trotzdem m&ouml;glich)';
$ret[] = $tmp;
} else {
$ioncube_loader_version = ioncube_loader_version();
if($ioncube_loader_version[0]< 5 && $ioncube_loader_version[1] == '.')
{
$tmp['status'] = 'warning';
$tmp['text'] = 'Die Ioncubeversion ist zu alt (Eine Installation ist trotzdem m&ouml;glich)';
$ret[] = $tmp;
}else{
$tmp['status'] = 'ok';
$tmp['text'] = 'Ioncube verf&uuml;gbar';
$ret[] = $tmp;
}
}
if(!file_exists("../../database/struktur.sql"))
{
$tmp['status'] = 'error';

View File

@ -21,14 +21,6 @@
<div class="header-headlines">
<p>{|Hilfe & Ressourcen|}</p>
<strong>[INLINEHELPHEADING]</strong>
[BEFORESUPPORTPHONE]
<a class="inlinehelphonenumber" href="[SUPPORTPHONENUMBERLINK]" data-phonenumber="[SUPPORTPHONENUMBER]" data-sipgate="[SIPGATEACTIVE]">
<svg width="26" height="26" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M25.5 13C25.5 19.9036 19.9036 25.5 13 25.5C6.09644 25.5 0.5 19.9036 0.5 13C0.5 6.09644 6.09644 0.5 13 0.5C19.9036 0.5 25.5 6.09644 25.5 13Z" stroke="#2DCA73"/>
<path d="M18.3333 15.2053C17.1827 15.2053 16.0853 14.9547 15.0733 14.46C14.9147 14.384 14.7307 14.372 14.5627 14.4293C14.3947 14.488 14.2573 14.6107 14.18 14.7693L13.7 15.7627C12.26 14.936 11.0653 13.74 10.2373 12.3L11.232 11.82C11.392 11.7427 11.5133 11.6053 11.572 11.4373C11.6293 11.2693 11.6187 11.0853 11.5413 10.9267C11.0453 9.916 10.7947 8.81867 10.7947 7.66667C10.7947 7.29867 10.496 7 10.128 7H7.66667C7.29867 7 7 7.29867 7 7.66667C7 13.916 12.084 19 18.3333 19C18.7013 19 19 18.7013 19 18.3333V15.872C19 15.504 18.7013 15.2053 18.3333 15.2053Z" fill="#2DCA73"/>
</svg>
</a>
[AFTERSUPPORTPHONE]
</div>
</div>
[BEFOREINLINEMENU]

View File

@ -296,17 +296,6 @@ class WidgetShopexport extends WidgetGenShopexport
}
}
}
$err = null;
if($altedaten && $this->app->Secure->GetPOST('aktiv') && method_exists($this->app->erp, 'OnlineshopsLizenzFehler'))
{
if($err = $this->app->erp->OnlineshopsLizenzFehler($data['modulename']))
{
$this->app->DB->Update("UPDATE shopexport SET aktiv = '0' WHERE id = '$id' LIMIT 1");
$this->form->HTMLList['aktiv']->dbvalue = 0;
$this->form->HTMLList['aktiv']->htmlvalue = 0;
$this->app->User->SetParameter('shopexport_meldung', '<div class="error">'.$err['Error'].'</div>');
}
}
$this->app->erp->RunHook('shopexport_speichern',1, $id);
}
}else