-
Andreas Gohr authoredAndreas Gohr authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
extension.php 34.69 KiB
<?php
/**
* DokuWiki Plugin extension (Helper Component)
*
* @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
* @author Michael Hamann <michael@content-space.de>
*/
// must be run within Dokuwiki
if(!defined('DOKU_INC')) die();
if(!defined('DOKU_TPLLIB')) define('DOKU_TPLLIB', DOKU_INC.'lib/tpl/');
/**
* Class helper_plugin_extension_extension represents a single extension (plugin or template)
*/
class helper_plugin_extension_extension extends DokuWiki_Plugin {
private $id;
private $base;
private $is_template = false;
private $localInfo;
private $remoteInfo;
private $managerData;
/** @var helper_plugin_extension_repository $repository */
private $repository = null;
/** @var array list of temporary directories */
private $temporary = array();
/**
* Destructor
*
* deletes any dangling temporary directories
*/
public function __destruct() {
foreach($this->temporary as $dir){
io_rmdir($dir, true);
}
}
/**
* @return bool false, this component is not a singleton
*/
public function isSingleton() {
return false;
}
/**
* Set the name of the extension this instance shall represents, triggers loading the local and remote data
*
* @param string $id The id of the extension (prefixed with template: for templates)
* @return bool If some (local or remote) data was found
*/
public function setExtension($id) {
$this->id = $id;
$this->base = $id;
if(substr($id, 0 , 9) == 'template:'){
$this->base = substr($id, 9);
$this->is_template = true;
} else {
$this->is_template = false;
}
$this->localInfo = array();
$this->managerData = array();
$this->remoteInfo = array();
if ($this->isInstalled()) {
$this->readLocalData();
$this->readManagerData();