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