Provides core\update\code_manager class.
Copyright: | 2012, 2013, 2015 David Mudrak <david@moodle.com> |
License: | http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
File Size: | 561 lines (20 kb) |
Included or required: | 0 times |
Referenced: | 0 times |
Includes or requires: | 0 files |
code_manager:: (15 methods):
__construct()
get_remote_plugin_zip()
unzip_plugin_file()
zip_plugin_folder()
archive_plugin_version()
get_archived_plugin_version()
list_plugin_folder_files()
get_plugin_zip_root_dir()
init_temp_directories()
debug()
download_plugin_zip_file()
download_file_content()
rename_extracted_rootdir()
set_plugin_files_permissions()
move_extracted_plugin_files()
Class: code_manager - X-Ref
General purpose class managing the plugins source code files deployment__construct($dirroot=null, $temproot=null) X-Ref |
Instantiate the class instance param: string $dirroot full path to the moodle app directory root param: string $temproot full path to our temp directory |
get_remote_plugin_zip($url, $md5) X-Ref |
Obtain the plugin ZIP file from the given URL The caller is supposed to know both downloads URL and the MD5 hash of the ZIP contents in advance, typically by using the API requests against the plugins directory. return: string|bool full path to the file, false on error param: string $url param: string $md5 |
unzip_plugin_file($zipfilepath, $targetdir, $rootdir = '') X-Ref |
Extracts the saved plugin ZIP file. Returns the list of files found in the ZIP. The format of that list is array of (string)filerelpath => (bool|string) where the array value is either true or a string describing the problematic file. return: array list of extracted files as returned by {@link zip_packer::extract_to_pathname()} param: string $zipfilepath full path to the saved ZIP file param: string $targetdir full path to the directory to extract the ZIP file to param: string $rootdir explicitly rename the root directory of the ZIP into this non-empty value |
zip_plugin_folder($folderpath, $targetzip) X-Ref |
Make an archive backup of the existing plugin folder. return: bool true if file created, false if not param: string $folderpath full path to the plugin folder param: string $targetzip full path to the zip file to be created |
archive_plugin_version($folderpath, $component, $version, $overwrite=false) X-Ref |
Archive the current plugin on-disk version. return: bool param: string $folderpath full path to the plugin folder param: string $component param: int $version param: bool $overwrite overwrite existing archive if found |
get_archived_plugin_version($component, $version) X-Ref |
Return the path to the ZIP file with the archive of the given plugin version. return: string|bool false if not found, full path otherwise param: string $component param: int $version |
list_plugin_folder_files($folderpath) X-Ref |
Returns list of all files in the given directory. Given a path like /full/path/to/mod/workshop, it returns array like [workshop/] => /full/path/to/mod/workshop [workshop/lang/] => /full/path/to/mod/workshop/lang [workshop/lang/workshop.php] => /full/path/to/mod/workshop/lang/workshop.php ... Which mathes the format used by Moodle file packers. return: array (string)relpath => (string)fullpath param: string $folderpath full path to the plugin directory |
get_plugin_zip_root_dir($zipfilepath) X-Ref |
Detects the plugin's name from its ZIP file. Plugin ZIP packages are expected to contain a single directory and the directory name would become the plugin name once extracted to the Moodle dirroot. return: string|bool false on error param: string $zipfilepath full path to the ZIP files |
init_temp_directories() X-Ref |
Makes sure all temp directories exist and are writable. |
debug($msg) X-Ref |
Raise developer debugging level message. param: string $msg |
download_plugin_zip_file($url, $tofile) X-Ref |
Download the ZIP file with the plugin package from the given location return: bool false on error param: string $url URL to the file param: string $tofile full path to where to store the downloaded file |
download_file_content($url, $tofile) X-Ref |
Thin wrapper for the core's download_file_content() function. return: bool param: string $url URL to the file param: string $tofile full path to where to store the downloaded file |
rename_extracted_rootdir($dirname, $rootdir, array $files) X-Ref |
Renames the root directory of the extracted ZIP package. This internal helper method assumes that the plugin ZIP package has been extracted into a temporary empty directory so the plugin folder is the only folder there. The ZIP package is supposed to be validated so that it contains just a single root folder. return: array eventually amended list of extracted files param: string $dirname fullpath location of the extracted ZIP package param: string $rootdir the requested name of the root directory param: array $files list of extracted files |
set_plugin_files_permissions($targetdir, array $files) X-Ref |
Sets the permissions of extracted subdirs and files As a result of unzipping, the subdirs and files are created with permissions set to $CFG->directorypermissions and $CFG->filepermissions. These are too benevolent by default (777 and 666 respectively) for PHP scripts and may lead to HTTP 500 errors in some environments. To fix this behaviour, we inherit the permissions of the plugin root directory itself. param: string $targetdir full path to the directory the ZIP file was extracted to param: array $files list of extracted files |
move_extracted_plugin_files($sourcedir, $targetdir, array $files) X-Ref |
Moves the extracted contents of the plugin ZIP into the target location. param: string $sourcedir full path to the directory the ZIP file was extracted to param: mixed $targetdir full path to the directory where the files should be moved to param: array $files list of extracted files |