From 8a02b723078a7395134b5eab746c66647456f35f Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Wed, 7 Sep 2016 22:00:57 -0600 Subject: [PATCH] Fallback for missing `tmp://` stream and unified method --- CHANGELOG.md | 6 ++++++ classes/admin.php | 10 ++++++++++ classes/controller.php | 2 +- classes/gpm.php | 7 +++---- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4efbe4ea..cf1d58b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.2.1 +## 09/07/2016 + +1. [](#bugfix) + * Fixed `tmp://` stream issue with Admin updated to 1.2 before Grav updated 1.1.4 + # v1.2.0 ## 09/07/2016 diff --git a/classes/admin.php b/classes/admin.php index 6e5d9b32..213abfc5 100644 --- a/classes/admin.php +++ b/classes/admin.php @@ -1322,4 +1322,14 @@ class Admin return trim($string); } + public static function getTempDir() + { + try { + $tmp_dir = Grav::instance()['locator']->findResource('tmp://', true, true); + } catch (\Exception $e) { + $tmp_dir = Grav::instance()['locator']->findResource('cache://', true, true); + } + return $tmp_dir; + } + } diff --git a/classes/controller.php b/classes/controller.php index 3c935356..1e644c2b 100644 --- a/classes/controller.php +++ b/classes/controller.php @@ -1637,7 +1637,7 @@ class AdminController // we need to move the file at this stage or else // it won't be available upon save later on // since php removes it from the upload location - $tmp_dir = Grav::instance()['locator']->findResource('tmp://', true, true); + $tmp_dir = Admin::getTempDir(); $tmp_file = $upload->file->tmp_name; $tmp = $tmp_dir . '/uploaded-files/' . basename($tmp_file); diff --git a/classes/gpm.php b/classes/gpm.php index cba89da9..df267715 100644 --- a/classes/gpm.php +++ b/classes/gpm.php @@ -8,6 +8,7 @@ use Grav\Common\GPM\Response; use Grav\Common\GPM\Upgrader; use Grav\Common\Filesystem\Folder; use Grav\Common\GPM\Common\Package; +use Grav\Plugin\Admin; /** * Class Gpm @@ -197,8 +198,7 @@ class Gpm { $contents = Response::get($package->zipball_url, []); - $tmp_dir = Grav::instance()['locator']->findResource('tmp://', true, true); - $tmp_dir = $tmp_dir . '/Grav-' . uniqid(); + $tmp_dir = Admin::getTempDir() . '/Grav-' . uniqid(); Folder::mkdir($tmp_dir); $filename = $package->slug . basename($package->zipball_url); @@ -253,8 +253,7 @@ class Gpm } $update = $upgrader->getAssets()['grav-update']; - $tmp_dir = Grav::instance()['locator']->findResource('tmp://', true, true); - $tmp = $tmp_dir . '/Grav-' . uniqid(); + $tmp = Admin::getTempDir() . '/Grav-' . uniqid(); $file = self::_downloadSelfupgrade($update, $tmp); Installer::install($file, GRAV_ROOT,