diff --git a/application/controllers/system/extensions/Manager.php b/application/controllers/system/extensions/Manager.php index 0a8867c1f..aa4e76e9c 100644 --- a/application/controllers/system/extensions/Manager.php +++ b/application/controllers/system/extensions/Manager.php @@ -81,10 +81,15 @@ class Manager extends Auth_Controller } /** - * + * Installiert eine Extension. + * Es wird davon ausgegangen, dass die Extension ueber einen Fileupload hochgeladen wird. + * alternativ kann hier auch der Name und Filename uebergeben werden um die installation ueber + * die Commandline ohne Upload durchzufuehren. + * @param $extensioName string Name der Extension + * @param $filename Url Encoded Pfad zum tgz File der Extension */ - public function uploadExtension() + public function uploadExtension($extensionName = null, $filename = null) { - $this->extensionslib->installExtension(); + $this->extensionslib->installExtension($extensionName, urldecode($filename)); } } diff --git a/application/libraries/ExtensionsLib.php b/application/libraries/ExtensionsLib.php index 67fa9d117..f678a0bc1 100644 --- a/application/libraries/ExtensionsLib.php +++ b/application/libraries/ExtensionsLib.php @@ -59,17 +59,29 @@ class ExtensionsLib /** * Main method to install an extension + * If no filename / Extensionname is provided the extension should be uploaded via webupload + * + * @param $extensionName string Name of Extension (optional) + * @param $filename Path to tgz Extension File (optional) */ - public function installExtension() + public function installExtension($extensionName = null, $filename = null) { $extensionDB = null; // contains data from DB about an extension $extensionJson = null; // contains the extension.json data $this->_printInfo('WARNING!!! Please do not change page or stop this procedure before it is finished'); - $this->_loadUploadLibrary(); // loads CI upload library - - $uploadData = $this->_uploadExtension(); // perform the upload of the file and returns info about it + if (!is_null($extensionName) && !is_null($filename)) + { + $uploadData = new stdClass(); + $uploadData->fullPath = $filename; + $uploadData->extensionName = $extensionName; + } + else + { + $this->_loadUploadLibrary(); // loads CI upload library + $uploadData = $this->_uploadExtension(); // perform the upload of the file and returns info about it + } if ($uploadData != null) // if no error occurred { diff --git a/application/libraries/PermissionLib.php b/application/libraries/PermissionLib.php index 980598d9b..3b6e3ab5f 100644 --- a/application/libraries/PermissionLib.php +++ b/application/libraries/PermissionLib.php @@ -123,11 +123,12 @@ class PermissionLib public function isEntitled($requiredPermissions, $calledMethod) { $checkPermissions = false; - $requestMethod = $_SERVER['REQUEST_METHOD']; // If it's called from command line than it's trusted if (is_cli()) return true; + $requestMethod = $_SERVER['REQUEST_METHOD']; + // Checks if the parameter $requiredPermissions is set, is an array and contains at least one element if (isset($requiredPermissions) && !isEmptyArray($requiredPermissions)) {