diff --git a/app/Console/Commands/ArtisanUpgrade.php b/app/Console/Commands/ArtisanUpgrade.php deleted file mode 100644 index 5fcd2b2f500c..000000000000 --- a/app/Console/Commands/ArtisanUpgrade.php +++ /dev/null @@ -1,77 +0,0 @@ -setVerbose() - ->setUpdate(true) - ->run(); - - \Log::error(print_r($output, 1)); - - - - // putenv('COMPOSER_HOME=' . __DIR__ . '/vendor/bin/composer'); - // $input = new ArrayInput(array('command' => 'update')); - // $application = new Application(); - // $application->setAutoExit(true); // prevent `$application->run` method from exitting the script - // $application->run($input); - } -} diff --git a/app/Console/Commands/PostUpdate.php b/app/Console/Commands/PostUpdate.php new file mode 100644 index 000000000000..0bc87a4a132e --- /dev/null +++ b/app/Console/Commands/PostUpdate.php @@ -0,0 +1,96 @@ + 'https://getcomposer.org/composer.phar', + 'dir' => __DIR__.'/.code', + 'bin' => __DIR__.'/.code/composer.phar', + 'json' => __DIR__.'/.code/composer.json', + 'conf' => array( + "autoload" => array( + "psr-4" => array( + "" => "local/" + ) + ) + ) + ); + + if(!is_dir($composer_data['dir'])) + mkdir($composer_data['dir'],0777,true); + + if(!is_dir("{$composer_data['dir']}/local")) + mkdir("{$composer_data['dir']}/local",0777,true); + + copy($composer_data['url'],$composer_data['bin']); + require_once "phar://{$composer_data['bin']}/src/bootstrap.php"; + + $conf_json = json_encode($composer_data['conf'],JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE); + file_put_contents($composer_data['json'],$conf_json); + chdir($composer_data['dir']); + putenv("COMPOSER_HOME={$composer_data['dir']}"); + putenv("OSTYPE=OS400"); + $app = new \Composer\Console\Application(); + + $factory = new \Composer\Factory(); + $output = $factory->createOutput(); + + $input = new \Symfony\Component\Console\Input\ArrayInput(array( + 'command' => 'update', + )); + $input->setInteractive(false); + echo "
"; + $cmdret = $app->doRun($input,$output); + echo "end!"; + + } +} diff --git a/app/DataMapper/FreeCompanySettings.php b/app/DataMapper/FreeCompanySettings.php new file mode 100644 index 000000000000..4ec96c7bb276 --- /dev/null +++ b/app/DataMapper/FreeCompanySettings.php @@ -0,0 +1,179 @@ + 'string', + 'currency_id' => 'string', + 'task_number_pattern' => 'string', + 'task_number_counter' => 'int', + 'expense_number_pattern' => 'string', + 'expense_number_counter' => 'int', + 'vendor_number_pattern' => 'string', + 'vendor_number_counter' => 'int', + 'ticket_number_pattern' => 'string', + 'ticket_number_counter' => 'int', + 'payment_number_pattern' => 'string', + 'payment_number_counter' => 'int', + 'company_gateway_ids' => 'string', + 'address1' => 'string', + 'address2' => 'string', + 'city' => 'string', + 'company_logo' => 'string', + 'country_id' => 'string', + 'currency_id' => 'string', + 'custom_value1' => 'string', + 'custom_value2' => 'string', + 'custom_value3' => 'string', + 'custom_value4' => 'string', + 'inclusive_taxes' => 'bool', + 'name' => 'string', + 'payment_terms' => 'integer', + 'payment_type_id' => 'string', + 'phone' => 'string', + 'postal_code' => 'string', + 'quote_design_id' => 'string', + 'credit_design_id' => 'string', + 'recurring_number_prefix' => 'string', + 'state' => 'string', + 'email' => 'string', + 'vat_number' => 'string', + 'id_number' => 'string', + 'tax_name1' => 'string', + 'tax_name2' => 'string', + 'tax_name3' => 'string', + 'tax_rate1' => 'float', + 'tax_rate2' => 'float', + 'tax_rate3' => 'float', + 'timezone_id' => 'string', + 'date_format_id' => 'string', + 'military_time' => 'bool', + 'language_id' => 'string', + 'show_currency_code' => 'bool', + 'design' => 'string', + 'website' => 'string', + ]; + + /** + * Cast object values and return entire class + * prevents missing properties from not being returned + * and always ensure an up to date class is returned + * + * @return \stdClass + */ + public function __construct($obj) + { + } + + /** + * Provides class defaults on init + * @return object + */ + public static function defaults():\stdClass + { + $config = json_decode(config('ninja.settings')); + + $data = (object) get_class_vars(CompanySettings::class); + + unset($data->casts); + unset($data->protected_fields); + + $data->timezone_id = (string) config('ninja.i18n.timezone_id'); + $data->currency_id = (string) config('ninja.i18n.currency_id'); + $data->language_id = (string) config('ninja.i18n.language_id'); + $data->payment_terms = (int) config('ninja.i18n.payment_terms'); + $data->military_time = (bool) config('ninja.i18n.military_time'); + $data->date_format_id = (string) config('ninja.i18n.date_format_id'); + $data->country_id = (string) config('ninja.i18n.country_id'); + $data->translations = (object) []; + $data->pdf_variables = (object) self::getEntityVariableDefaults(); + + return self::setCasts($data, self::$casts); + } + + +} diff --git a/app/Http/Controllers/SelfUpdateController.php b/app/Http/Controllers/SelfUpdateController.php index 2566244f8b83..d7bf85997ed8 100644 --- a/app/Http/Controllers/SelfUpdateController.php +++ b/app/Http/Controllers/SelfUpdateController.php @@ -66,8 +66,14 @@ class SelfUpdateController extends BaseController return response()->json(['message' => 'Self update not available on this system.'], 403); } - $res = $updater->update(); + // Get the new version available + $versionAvailable = $updater->source()->getVersionAvailable(); + // Create a release + $release = $updater->source()->fetch($versionAvailable); + + // Run the update process + $res = $updater->source()->update($release); return response()->json(['message'=>$res], 200); } diff --git a/composer.json b/composer.json index 5a37da7b774a..e1812c9c9391 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ "asgrim/ofxparser": "^1.2", "ashallendesign/laravel-exchange-rates": "^2.1", "cleverit/ubl_invoice": "^1.3", - "codedge/laravel-selfupdater": "2.5.1", + "codedge/laravel-selfupdater": "~3.0", "composer/composer": "^1.10", "dacastro4/laravel-gmail": "^3.2", "davejamesmiller/laravel-breadcrumbs": "5.x", diff --git a/config/self-update.php b/config/self-update.php index 3d5061cce7b8..e72cac6bc8ec 100644 --- a/config/self-update.php +++ b/config/self-update.php @@ -121,10 +121,13 @@ return [ ], 'post_update' => [ 'ninja:post-update' => [ - 'class' => \App\Console\Commands\ArtisanUpgrade::class, - 'params' => [], - ], + 'class' => \App\Console\Commands\PostUpdate::class, + 'params' => [ + 'log' => 1, + 'reset' => false, + // etc. + ] ], ], ], -]; +]; \ No newline at end of file