From 4752081caff32ce8c378fd97ba5525aabd94c8f7 Mon Sep 17 00:00:00 2001 From: Manish Verma Date: Mon, 15 Mar 2021 08:32:17 +0000 Subject: [PATCH] v1.11.0 updates bugfixes Rating functionality correction Apply fixes from StyleCI Due date client panel correction --- DB/demodatabase.sql | 2 +- DB/dummy-data.sql | 2 +- .../Agent/helpdesk/ReportController.php | 2 +- .../Agent/helpdesk/TicketController.php | 16 ++++--- app/Http/Middleware/CheckRole.php | 2 +- app/Http/Middleware/CheckRoleAgent.php | 2 +- app/Http/Middleware/CheckRoleUser.php | 2 +- config/app.php | 2 +- public/downloads/en.zip | Bin 24078 -> 24755 bytes release-notes.txt | 33 +++++++++++++++ .../helpdesk/organization/show.blade.php | 6 --- .../agent/helpdesk/report/index.blade.php | 1 + .../agent/helpdesk/report/pdf.blade.php | 6 +-- .../client/helpdesk/ckeckticket.blade.php | 11 +++-- routes/web.php | 12 +++--- vendor/composer/ClassLoader.php | 40 ++++++++++++++++-- vendor/composer/autoload_classmap.php | 1 + vendor/composer/autoload_real.php | 9 +++- vendor/composer/autoload_static.php | 1 + vendor/composer/platform_check.php | 26 ++++++++++++ 20 files changed, 138 insertions(+), 38 deletions(-) create mode 100644 vendor/composer/platform_check.php diff --git a/DB/demodatabase.sql b/DB/demodatabase.sql index 79aac83e9..ac18f8802 100644 --- a/DB/demodatabase.sql +++ b/DB/demodatabase.sql @@ -1457,7 +1457,7 @@ CREATE TABLE `settings_system` ( -- INSERT INTO `settings_system` (`id`, `status`, `url`, `name`, `department`, `page_size`, `log_level`, `purge_log`, `api_enable`, `api_key_mandatory`, `api_key`, `name_format`, `time_farmat`, `date_format`, `date_time_format`, `day_date_time`, `time_zone`, `content`, `version`, `created_at`, `updated_at`) VALUES -(1, 1, '', '', '1', '', '', '', 0, 0, '', '', NULL, NULL, 1, '', 32, '', '1.10.7', '2016-12-13 03:19:29', '2016-12-13 03:19:29'); +(1, 1, '', '', '1', '', '', '', 0, 0, '', '', NULL, NULL, 1, '', 32, '', '1.11.0', '2016-12-13 03:19:29', '2016-12-13 03:19:29'); -- -------------------------------------------------------- diff --git a/DB/dummy-data.sql b/DB/dummy-data.sql index 79aac83e9..ac18f8802 100644 --- a/DB/dummy-data.sql +++ b/DB/dummy-data.sql @@ -1457,7 +1457,7 @@ CREATE TABLE `settings_system` ( -- INSERT INTO `settings_system` (`id`, `status`, `url`, `name`, `department`, `page_size`, `log_level`, `purge_log`, `api_enable`, `api_key_mandatory`, `api_key`, `name_format`, `time_farmat`, `date_format`, `date_time_format`, `day_date_time`, `time_zone`, `content`, `version`, `created_at`, `updated_at`) VALUES -(1, 1, '', '', '1', '', '', '', 0, 0, '', '', NULL, NULL, 1, '', 32, '', '1.10.7', '2016-12-13 03:19:29', '2016-12-13 03:19:29'); +(1, 1, '', '', '1', '', '', '', 0, 0, '', '', NULL, NULL, 1, '', 32, '', '1.11.0', '2016-12-13 03:19:29', '2016-12-13 03:19:29'); -- -------------------------------------------------------- diff --git a/app/Http/Controllers/Agent/helpdesk/ReportController.php b/app/Http/Controllers/Agent/helpdesk/ReportController.php index e2c3b841f..16c697785 100644 --- a/app/Http/Controllers/Agent/helpdesk/ReportController.php +++ b/app/Http/Controllers/Agent/helpdesk/ReportController.php @@ -263,6 +263,6 @@ class ReportController extends Controller $html = view('themes.default1.agent.helpdesk.report.pdf', compact('table_datas', 'table_help_topic'))->render(); $html1 = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'); - return PDF::load($html1)->show(); + return @PDF::load($html1)->show(); } } diff --git a/app/Http/Controllers/Agent/helpdesk/TicketController.php b/app/Http/Controllers/Agent/helpdesk/TicketController.php index 409d2484a..765fc0b1c 100755 --- a/app/Http/Controllers/Agent/helpdesk/TicketController.php +++ b/app/Http/Controllers/Agent/helpdesk/TicketController.php @@ -125,7 +125,7 @@ class TicketController extends Controller $source = Ticket_source::where('name', '=', 'agent')->first(); $headers = null; $help = Help_topic::where('id', '=', $helptopic)->first(); - $form_data = $request->except('name', 'phone', 'email', 'subject', 'body', 'helptopic', '_wysihtml5_mode', '_token', 'mobile', 'code', 'priority', 'attachment', 'first_name', 'last_name', 'sla', 'duedate', 'assignto', 'files');//added "files" in exception list because some fool has added a new editor 'summernote' to impress his boss and screwed the functional code with his genius ability. Hence to make world capable of handling this genius's work I am adding a shitty workaround for it. After looking for solution everywhere and referring to https://stackoverflow.com/questions/59938588/summernote-adds-files-field-to-post + $form_data = $request->except('name', 'phone', 'email', 'subject', 'body', 'helptopic', '_wysihtml5_mode', '_token', 'mobile', 'code', 'priority', 'attachment', 'first_name', 'last_name', 'sla', 'duedate', 'assignto', 'files'); //added "files" in exception list because some genius has added a new editor 'summernote' to impress his boss and screwed the functional code with his genius ability. Hence to make world capable of handling this genius's work I am adding a shitty workaround for it. After looking for solution everywhere and referring to https://stackoverflow.com/questions/59938588/summernote-adds-files-field-to-post $auto_response = 0; $status = 1; if ($phone != null || $mobile_number != null) { @@ -499,9 +499,10 @@ class TicketController extends Controller $html = view('themes.default1.agent.helpdesk.ticket.pdf', compact('id', 'ticket', 'tickets'))->render(); $html1 = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'); /** - * This statement throws error with php7.1 + * This statement throws error with php7.1. + * * @see https://github.com/dompdf/dompdf/issues/1272 - * For time bieng we are silencing the error using "@" operator in front of it + * For time bieng we are silencing the error using "@" operator in front of it */ return @PDF::load($html1)->show(); } @@ -1923,7 +1924,7 @@ class TicketController extends Controller } $ratID = \App\Model\helpdesk\Ratings\Rating::where('name', '=', $ratName)->first(); $ratingrefs = $rating_ref->where('rating_id', '=', $ratID->id)->where('ticket_id', '=', $id)->first(); - if ($ratingrefs !== null) { + if ($ratingrefs !== null && $ratID->allow_modification) { $ratingrefs->rating_id = $ratID->id; $ratingrefs->ticket_id = $id; @@ -1964,7 +1965,7 @@ class TicketController extends Controller $ratID = \App\Model\helpdesk\Ratings\Rating::where('name', '=', $ratName)->first(); $ratingrefs = $rating_ref->where('rating_id', '=', $ratID->id)->where('thread_id', '=', $key1[1])->first(); - if ($ratingrefs !== null) { + if ($ratingrefs !== null && $ratID->allow_modification) { $ratingrefs->rating_id = $ratID->id; $ratingrefs->ticket_id = $id; @@ -2435,9 +2436,10 @@ class TicketController extends Controller $html = view('themes.default1.agent.helpdesk.ticket.thread-pdf', compact('thread', 'system', 'company', 'ticket'))->render(); $html1 = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'); /** - * This statement throws error with php7.1 + * This statement throws error with php7.1. + * * @see https://github.com/dompdf/dompdf/issues/1272 - * For time bieng we are silencing the error using "@" operator in front of it + * For time bieng we are silencing the error using "@" operator in front of it */ return @PDF::load($html1)->show(); } catch (Exception $ex) { diff --git a/app/Http/Middleware/CheckRole.php b/app/Http/Middleware/CheckRole.php index 763cac976..bd444a85e 100644 --- a/app/Http/Middleware/CheckRole.php +++ b/app/Http/Middleware/CheckRole.php @@ -25,6 +25,6 @@ class CheckRole return $next($request); } - return redirect('guest')->with('fails', 'You are not Autherised'); + return redirect('guest')->with('fails', 'You are not Authorised'); } } diff --git a/app/Http/Middleware/CheckRoleAgent.php b/app/Http/Middleware/CheckRoleAgent.php index 577173cd1..c6c2f6edd 100644 --- a/app/Http/Middleware/CheckRoleAgent.php +++ b/app/Http/Middleware/CheckRoleAgent.php @@ -25,6 +25,6 @@ class CheckRoleAgent return $next($request); } - return redirect('/')->with('fails', 'You are not Autherised'); + return redirect('/')->with('fails', 'You are not Authorised'); } } diff --git a/app/Http/Middleware/CheckRoleUser.php b/app/Http/Middleware/CheckRoleUser.php index 02b47c16f..79e6109ea 100644 --- a/app/Http/Middleware/CheckRoleUser.php +++ b/app/Http/Middleware/CheckRoleUser.php @@ -25,6 +25,6 @@ class CheckRoleUser return $next($request); } - return redirect('guest')->with('fails', 'You are not Autherised'); + return redirect('guest')->with('fails', 'You are not Authorised'); } } diff --git a/config/app.php b/config/app.php index f35f4e538..90cc7bbc7 100644 --- a/config/app.php +++ b/config/app.php @@ -33,7 +33,7 @@ return [ | This tells about aplication current version. | */ - 'version' => 'Community 1.10.7', + 'version' => 'Community 1.11.0', /* |-------------------------------------------------------------------------- | Application Name diff --git a/public/downloads/en.zip b/public/downloads/en.zip index cf0631e81f3b818bfda6e19e8e54e7822c39a5de..0df8944ec912d6fb36dd609d1857f4c8dce341ce 100644 GIT binary patch delta 22133 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 M|I~gm|NFRq02M!Xwg3PC diff --git a/release-notes.txt b/release-notes.txt index 0791aa9d2..1302cd5a8 100644 --- a/release-notes.txt +++ b/release-notes.txt @@ -7,6 +7,39 @@ |_| \__,_| \_/ \___|\___/ |_| |_|\___|_| .__/ \__,_|\___||___/_|\_\ | | |_| +|===================================================== +| v1.11.0 Urgent security patch and theme update +|===================================================== +This is an urgent patch for several security vulnerabilities found and reported by [Securized](https://github.com/securized) in the system. We highly recommend updating the system to get rid of all the security issues in your system and secure your system from vulnerabilities and attackers. + +Along with some urgent security updates, this release also updates the frontend framework and theme version to the latest which enhances the UI design of the system, keeping the same user experience. + +#### Updates +- Updated jQuery version to v3 +- Updated Bootstrap version to v4 +- Updated AdminLTE theme to v3 +- Updated Russian translation to cover 80% of the system. Thanks, @maranqz for raising the PR and providing proper translation files. + +#### Bugfixes +- Various UI bugs and issues +- Generate PDF error +- Laravel route middleware grouping correction +- Storage option functionality corrections +- Clients are not able to change ticket status +- Report PDF generation +- Security issues reported by @securized. More details can be found on their [gist](https://gist.github.com/securized/7c702ca002d3d72f3100bc5eb17ec0dd) + +**Important**: The system was not generating the unique APP_KEY in the environment which makes your system vulnerable to expose sensitive data due to a hardcoded encryption key. This can simply be fixed by generating your own Laravel APP_KEY using Laravel's artisan commands. +Faveo also introduced its own artisan command to alter the APP_KEY to replace your old key with the new key. The advantage of this command is it allows you to update the application's key and updates the required encrypted data in the system so you do not need to update configurations in the system manually. But we still recommend you update system configurations manually to minimize the possibility of attacks on your data. You can use this command from your Faveo root directory as below +``` +php artisan faveo:secure-key +``` + +> NOTE: This security patch requires all agents and admin to login and start their session again. Also, all the old encrypted URLs will be reset and will not work any longer. + +Follow this [Upgrade Guide](https://github.com/ladybirdweb/faveo-helpdesk/wiki/General-Faveo-Upgrade-Guide---Manual) to update your system. This update does not require any database update. After the update, we highly recommend running the below commands to secure your Faveo system. +`php artisan key:generate` or `php artisan faveo:secure-key` + |===================================================== | v1.10.7 Security patch |===================================================== diff --git a/resources/views/themes/default1/agent/helpdesk/organization/show.blade.php b/resources/views/themes/default1/agent/helpdesk/organization/show.blade.php index 4d080e22d..13a2baa05 100644 --- a/resources/views/themes/default1/agent/helpdesk/organization/show.blade.php +++ b/resources/views/themes/default1/agent/helpdesk/organization/show.blade.php @@ -66,12 +66,6 @@ class="nav-link active"
- -
- - Org Image -
-

{{str_limit($orgs->name,15)}}

Organization

diff --git a/resources/views/themes/default1/agent/helpdesk/report/index.blade.php b/resources/views/themes/default1/agent/helpdesk/report/index.blade.php index 268867b6a..b989d24a4 100755 --- a/resources/views/themes/default1/agent/helpdesk/report/index.blade.php +++ b/resources/views/themes/default1/agent/helpdesk/report/index.blade.php @@ -237,6 +237,7 @@ class="active"
+
diff --git a/resources/views/themes/default1/agent/helpdesk/report/pdf.blade.php b/resources/views/themes/default1/agent/helpdesk/report/pdf.blade.php index 3ca489b52..f245f420b 100644 --- a/resources/views/themes/default1/agent/helpdesk/report/pdf.blade.php +++ b/resources/views/themes/default1/agent/helpdesk/report/pdf.blade.php @@ -65,9 +65,9 @@ '; echo '' . $table_data->date . ''; diff --git a/resources/views/themes/default1/client/helpdesk/ckeckticket.blade.php b/resources/views/themes/default1/client/helpdesk/ckeckticket.blade.php index 49f34363e..37ad9bc8b 100755 --- a/resources/views/themes/default1/client/helpdesk/ckeckticket.blade.php +++ b/resources/views/themes/default1/client/helpdesk/ckeckticket.blade.php @@ -167,7 +167,7 @@ $thread = App\Model\helpdesk\Ticket\Ticket_Thread::where('ticket_id', '=', \Cryp $time = $tickets->created_at; $time = date_create($time); date_add($time, date_interval_create_from_date_string($SlaPlan->grace_period)); - echo UTC::usertimezone(date_format($time, 'd/m/Y H:i:s')); + echo UTC::usertimezone(date_format($time, 'Y-m-d H:i:s')); ?>
@@ -594,8 +594,9 @@ $thread = App\Model\helpdesk\Ticket\Ticket_Thread::where('ticket_id', '=', \Cryp // Close a ticket $('#close').on('click', function (e) { $.ajax({ - type: "GET", + type: "POST", url: "../ticket/close/{{$tickets->id}}", + data:{"_token": "{{ csrf_token() }}"}, beforeSend: function () { $("#refresh").hide(); $("#loader").show(); @@ -625,8 +626,9 @@ $thread = App\Model\helpdesk\Ticket\Ticket_Thread::where('ticket_id', '=', \Cryp // Resolved a ticket $('#resolved').on('click', function (e) { $.ajax({ - type: "GET", + type: "POST", url: "../ticket/resolve/{{$tickets->id}}", + data:{"_token": "{{ csrf_token() }}"}, beforeSend: function () { $("#refresh").hide(); $("#loader").show(); @@ -655,8 +657,9 @@ $thread = App\Model\helpdesk\Ticket\Ticket_Thread::where('ticket_id', '=', \Cryp // Open a ticket $('#open').on('click', function (e) { $.ajax({ - type: "GET", + type: "POST", url: "../ticket/open/{{$tickets->id}}", + data:{"_token": "{{ csrf_token() }}"}, beforeSend: function () { $("#refresh").hide(); $("#loader").show(); diff --git a/routes/web.php b/routes/web.php index 5fcd0cc68..b97f871fa 100644 --- a/routes/web.php +++ b/routes/web.php @@ -347,9 +347,6 @@ Route::group(['middleware' => ['web']], function () { Route::patch('/ticket/assign/{id}', ['as' => 'assign.ticket', 'uses' => 'Agent\helpdesk\TicketController@assign']); /* Patch Ticket assigned to whom */ Route::patch('/ticket/post/edit/{id}', ['as' => 'ticket.post.edit', 'uses' => 'Agent\helpdesk\TicketController@ticketEditPost']); /* Patchi Ticket Edit */ Route::get('/ticket/print/{id}', ['as' => 'ticket.print', 'uses' => 'Agent\helpdesk\TicketController@ticket_print']); /* Get Print Ticket */ - Route::post('/ticket/close/{id}', ['as' => 'ticket.close', 'uses' => 'Agent\helpdesk\TicketController@close']); /* Get Ticket Close */ - Route::post('/ticket/resolve/{id}', ['as' => 'ticket.resolve', 'uses' => 'Agent\helpdesk\TicketController@resolve']); /* Get ticket Resolve */ - Route::post('/ticket/open/{id}', ['as' => 'ticket.open', 'uses' => 'Agent\helpdesk\TicketController@open']); /* Get Ticket Open */ Route::post('/ticket/delete/{id}', ['as' => 'ticket.delete', 'uses' => 'Agent\helpdesk\TicketController@delete']); /* Get Ticket Delete */ Route::get('/email/ban/{id}', ['as' => 'ban.email', 'uses' => 'Agent\helpdesk\TicketController@ban']); /* Get Ban Email */ Route::get('/ticket/surrender/{id}', ['as' => 'ticket.surrender', 'uses' => 'Agent\helpdesk\TicketController@surrender']); /* Get Ticket Surrender */ @@ -357,7 +354,6 @@ Route::group(['middleware' => ['web']], function () { Route::get('dashboard', ['as' => 'dashboard', 'uses' => 'Agent\helpdesk\DashboardController@index']); /* To show dashboard pages */ Route::get('agen', 'Agent\helpdesk\DashboardController@ChartData'); - Route::get('image/{id}', ['as' => 'image', 'uses' => 'Agent\helpdesk\MailController@get_data']); /* get image */ Route::get('thread/auto/{id}', 'Agent\helpdesk\TicketController@autosearch'); Route::get('auto', 'Agent\helpdesk\TicketController@autosearch2'); Route::patch('search-user', 'Agent\helpdesk\TicketController@usersearch'); @@ -372,8 +368,6 @@ Route::group(['middleware' => ['web']], function () { Route::patch('/user-org/{id}', 'Agent\helpdesk\UserController@User_Create_Org'); Route::patch('/head-org/{id}', 'Agent\helpdesk\OrganizationController@Head_Org'); - Route::post('rating/{id}', ['as' => 'ticket.rating', 'uses' => 'Agent\helpdesk\TicketController@rating']); /* Get overall Ratings */ - Route::post('rating2/{id}', ['as' => 'ticket.rating2', 'uses' => 'Agent\helpdesk\TicketController@ratingReply']); /* Get reply Ratings */ // To check and lock tickets Route::get('check/lock/{id}', ['as' => 'lock', 'uses' => 'Agent\helpdesk\TicketController@checkLock']); Route::patch('/change-owner/{id}', ['as' => 'change.owner.ticket', 'uses' => 'Agent\helpdesk\TicketController@changeOwner']); /* change owner */ @@ -540,6 +534,12 @@ Route::group(['middleware' => ['web']], function () { Route::post('verify-client-number', ['as' => 'client-verify-number', 'uses' => 'Client\helpdesk\GuestController@resendOTP']); Route::post('verify-client-number2', ['as' => 'post-client-verify-number', 'uses' => 'Client\helpdesk\GuestController@verifyOTP']); + Route::post('/ticket/close/{id}', ['as' => 'ticket.close', 'uses' => 'Agent\helpdesk\TicketController@close']); /* Get Ticket Close */ + Route::post('/ticket/resolve/{id}', ['as' => 'ticket.resolve', 'uses' => 'Agent\helpdesk\TicketController@resolve']); /* Get ticket Resolve */ + Route::post('/ticket/open/{id}', ['as' => 'ticket.open', 'uses' => 'Agent\helpdesk\TicketController@open']); /* Get Ticket Open */ + Route::get('image/{id}', ['as' => 'image', 'uses' => 'Agent\helpdesk\MailController@get_data']); /* get image */ + Route::post('rating/{id}', ['as' => 'ticket.rating', 'uses' => 'Agent\helpdesk\TicketController@rating']); /* Get overall Ratings */ + Route::post('rating2/{id}', ['as' => 'ticket.rating2', 'uses' => 'Agent\helpdesk\TicketController@ratingReply']); /* Get reply Ratings */ }); //==================================================================================== Route::get('checkticket', 'Client\helpdesk\ClientTicketController@getCheckTicket'); /* Check your Ticket */ diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php index fce8549f0..247294d66 100644 --- a/vendor/composer/ClassLoader.php +++ b/vendor/composer/ClassLoader.php @@ -37,11 +37,13 @@ namespace Composer\Autoload; * * @author Fabien Potencier * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ */ class ClassLoader { + private $vendorDir; + // PSR-4 private $prefixLengthsPsr4 = array(); private $prefixDirsPsr4 = array(); @@ -57,10 +59,17 @@ class ClassLoader private $missingClasses = array(); private $apcuPrefix; + private static $registeredLoaders = array(); + + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + } + public function getPrefixes() { if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); } return array(); @@ -300,6 +309,17 @@ class ClassLoader public function register($prepend = false) { spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } } /** @@ -308,6 +328,10 @@ class ClassLoader public function unregister() { spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } } /** @@ -367,6 +391,16 @@ class ClassLoader return $file; } + /** + * Returns the currently registered loaders indexed by their corresponding vendor directories. + * + * @return self[] + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + private function findFileWithExtension($class, $ext) { // PSR-4 lookup diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 64607a470..423689e2b 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -53,6 +53,7 @@ return array( 'Codacy\\Coverage\\Util\\CodacyApiClient' => $vendorDir . '/codacy/coverage/src/Codacy/Coverage/Util/CodacyApiClient.php', 'Codacy\\Coverage\\Util\\GitClient' => $vendorDir . '/codacy/coverage/src/Codacy/Coverage/Util/GitClient.php', 'Codacy\\Coverage\\Util\\JsonProducer' => $vendorDir . '/codacy/coverage/src/Codacy/Coverage/Util/JsonProducer.php', + 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'CreateApiSettingsTable' => $baseDir . '/database/migrations/2016_05_11_105244_create_api_settings_table.php', 'CreateBanlistTable' => $baseDir . '/database/migrations/2016_02_16_140450_create_banlist_table.php', 'CreateBarNotificationsTable' => $baseDir . '/database/migrations/2016_05_10_102604_create_bar_notifications_table.php', diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index d78510043..6157a01c4 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -13,19 +13,24 @@ class ComposerAutoloaderInit598add4b9b35c76d3599603201ccdd6d } } + /** + * @return \Composer\Autoload\ClassLoader + */ public static function getLoader() { if (null !== self::$loader) { return self::$loader; } + require __DIR__ . '/platform_check.php'; + spl_autoload_register(array('ComposerAutoloaderInit598add4b9b35c76d3599603201ccdd6d', 'loadClassLoader'), true, true); - self::$loader = $loader = new \Composer\Autoload\ClassLoader(); + self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); spl_autoload_unregister(array('ComposerAutoloaderInit598add4b9b35c76d3599603201ccdd6d', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; + require __DIR__ . '/autoload_static.php'; call_user_func(\Composer\Autoload\ComposerStaticInit598add4b9b35c76d3599603201ccdd6d::getInitializer($loader)); } else { diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index dc7ab8082..d06b72e78 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -751,6 +751,7 @@ class ComposerStaticInit598add4b9b35c76d3599603201ccdd6d 'Codacy\\Coverage\\Util\\CodacyApiClient' => __DIR__ . '/..' . '/codacy/coverage/src/Codacy/Coverage/Util/CodacyApiClient.php', 'Codacy\\Coverage\\Util\\GitClient' => __DIR__ . '/..' . '/codacy/coverage/src/Codacy/Coverage/Util/GitClient.php', 'Codacy\\Coverage\\Util\\JsonProducer' => __DIR__ . '/..' . '/codacy/coverage/src/Codacy/Coverage/Util/JsonProducer.php', + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'CreateApiSettingsTable' => __DIR__ . '/../..' . '/database/migrations/2016_05_11_105244_create_api_settings_table.php', 'CreateBanlistTable' => __DIR__ . '/../..' . '/database/migrations/2016_02_16_140450_create_banlist_table.php', 'CreateBarNotificationsTable' => __DIR__ . '/../..' . '/database/migrations/2016_05_10_102604_create_bar_notifications_table.php', diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php new file mode 100644 index 000000000..cd1bd2c5b --- /dev/null +++ b/vendor/composer/platform_check.php @@ -0,0 +1,26 @@ += 70103)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.3". 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 + ); +}