Skip to content
Snippets Groups Projects
Commit 59d6be95 authored by Andreas Gohr's avatar Andreas Gohr
Browse files

update manager.dat correctly on install. closes #704

parent c0d17c85
No related branches found
No related tags found
No related merge requests found
......@@ -292,7 +292,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
*/
public function getUpdateDate() {
if (!empty($this->managerData['updated'])) return $this->managerData['updated'];
return false;
return $this->getInstallDate();
}
/**
......@@ -577,6 +577,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
try {
$installed = $this->installArchive("$tmp/upload.archive", true, $basename);
$this->updateManagerData('', $installed);
// purge cache
$this->purgeCache();
}catch (Exception $e){
......@@ -596,6 +597,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
try {
$path = $this->download($url);
$installed = $this->installArchive($path, true);
$this->updateManagerData($url, $installed);
// purge cache
$this->purgeCache();
......@@ -612,8 +614,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
* @return array The list of installed extensions
*/
public function installOrUpdate() {
$path = $this->download($this->getDownloadURL());
$url = $this->getDownloadURL();
$path = $this->download($url);
$installed = $this->installArchive($path, $this->isInstalled(), $this->getBase());
$this->updateManagerData($url, $installed);
// refresh extension information
if (!isset($installed[$this->getID()])) {
......@@ -727,6 +731,37 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
}
}
/**
* Save the given URL and current datetime in the manager.dat file of all installed extensions
*
* @param string $url Where the extension was downloaded from. (empty for manual installs via upload)
* @param array $installed Optional list of installed plugins
*/
protected function updateManagerData($url = '', $installed = null) {
$origID = $this->getID();
if(is_null($installed)) {
$installed = array($origID);
}
foreach($installed as $ext => $info) {
if($this->getID() != $ext) $this->setExtension($ext);
if($url) {
$this->managerData['downloadurl'] = $url;
} elseif(isset($this->managerData['downloadurl'])) {
unset($this->managerData['downloadurl']);
}
if(isset($this->managerData['installed'])) {
$this->managerData['updated'] = date('r');
} else {
$this->managerData['installed'] = date('r');
}
$this->writeManagerData();
}
if($this->getID() != $origID) $this->setExtension($origID);
}
/**
* Read the manager.dat file
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment