1<?php 2/** 3 * DokuWiki Plugin autogallery (Action Component) 4 * 5 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 6 * @author Tim Siebentaler <tsvamp333@googlemail.com> 7 */ 8 9// must be run within Dokuwiki 10if (!defined('DOKU_INC')) die(); 11 12class action_plugin_autogallery extends DokuWiki_Action_Plugin { 13 14 /* Registers a callback function for a given event 15 * 16 * @param Doku_Event_Handler $controller DokuWiki's event controller object 17 * @return void 18 */ 19 public function register(Doku_Event_Handler $controller) { 20 21 $controller->register_hook('NON_SENSE', 'AFTER', $this, 'do_it');//event registrieren 22 23 } 24 /* [Custom event handler which performs action] 25 * 26 * @param Doku_Event $event event object by reference 27 * @param mixed $param [the parameters passed as fifth argument to register_hook() when this 28 * handler was registered] 29 * @return void 30 */ 31 32 public function do_it(Doku_Event &$event, $param) { 33 global $ID,$INFO; 34 $tstamp=''; 35 foreach($event->data as $name=>$X) { 36 if ($name=='tstamp') { 37 $tstamp=$X; 38 } 39 if ($name=='mydata') { 40 $mydata=$X; 41 42 } 43 } 44 if ($mydata['namespace']) { 45 $tstamp=$mydata['namespace']; 46 } 47 48 /** 49 * Initilisierung beim ersten start 50 * Prüfe ob NS wiki existiert, wenn nicht erstellen 51 * Prüfe ob NS wiki:bilder existiert, wenn nicht erstellen 52 * Nutzer über Erstellung informieren 53 * Erstelle zentralen Index (dort werden die Gallerien künftig zentral verlinkt) 54 */ 55 if (!is_dir(dirname(wikiFN("wiki:dummy.txt")))) { 56 $inidir= dirname(wikiFN("wiki:dummy.txt")); 57 $inidir=str_replace("/","\\", $inidir); 58 io_makeFileDir($inidir); 59 msg("First time initialisation 1/3: created Namespache wiki"); 60 } 61 if (!is_dir(dirname(wikiFN("wiki:bilder:dummy.txt")))) { 62 $inidir=dirname(wikiFN("wiki:bilder:dummy.txt")); 63 $inidir=str_replace("/","\\", $inidir); 64 io_makeFileDir($inidir); 65 msg("First time initialisation 2/3: created (sub-)namespache wiki:bilder"); 66 } 67 if (!is_file(str_replace("/","\\",dirname(wikiFN("wiki:bilder:dummy"))."\\index.txt"))) { 68 $inidir=dirname(wikiFN("wiki:bilder:dummy.txt")); 69 $inidir=str_replace("/","\\", $inidir); 70 io_saveFile($inidir."\\index.txt",""); 71 msg(str_replace("/","\\",dirname(wikiFN("wiki:bilder:dummy"))."\\index.txt")); 72 msg("First time initialisation 3/3: Created base-index for your future galleries"); 73 } 74 75 /** 76 * Gallerie-Index-Verzeichnis 1/2 77 * ermittle künftiges Verzeichnis aus NS 78 */ 79 $imggal = dirname(wikiFN("wiki:bilder:" . $tstamp . ":123")); 80 81 /** 82 * Gallerie-Bilder-Verzeichnis 1/2 83 * ermittle künftiges Verzeichnis aus NS 84 */ 85 $imgbase = dirname(wikiFN("wiki:bilder:" . $tstamp . ":" . $tstamp . ":123")); 86 87 /** 88 * Gallerie-Index-Verzeichnis 2/2 89 * erstellen wenn Verzeichnis nicht existiert 90 * Benutzer informieren, dass erstellt 91 */ 92 if (!is_dir($imggal)) { 93 io_makeFileDir($imggal . '/dummy.txt'); 94 msg("made an own NS for gallery!", 1); 95 } 96 97 /** 98 * Gallerie-Bilder-Verzeichnis 2/2 99 * erstellen wenn Verzeichnis nicht existiert 100 * Benutzer informieren, dass erstellt 101 */ 102 if (!is_dir($imgbase)) { 103 io_makeFileDir($imgbase . '/dummy.txt'); 104 msg("made a Sub-NS for images of gallery!", 1); 105 } 106 107 /** 108 * Index der zu erstellenden Gallerie 109 * Wenn Datei noch nicht existiert erstellen sie 110 * Schreibe Code für Plugin Gallery hinein um Gallerie zu erzeugen 111 * Informiere den benutzer darüber 112 * teile Benutzer mit, wohin Bilder hochgeleden werden müssen 113 */ 114 115 $imgpage = $imggal . '/index.txt'; 116 if (!is_file($imgpage)) { 117 118 $page = "{{gallery>'" . "wiki:bilder:" . $tstamp . ":" . $tstamp . "'}}";//Nutze Gallery Plugin 119 $page = str_replace("\\", ":", $page); 120 $page =str_replace("/", ":", $page); 121 io_saveFile($imgpage, $page); 122 msg("made gallery file. Please Upload your images to: " . "wiki:bilder:" . $tstamp . ":" . $tstamp); 123 124 /** 125 * Gallerie verlinken 126 * Zentral-Index einlesen 127 * String mit Link zur neuen Gallerie erstellen 128 * alten Inhalt der Datei an neuen Link anhängen 129 * speichere neuen Index ab 130 * informiere Nutzer über Verlinkung 131 */ 132 $indexbase = dirname(wikiFN("wiki:bilder:index")); 133 $indexbase=str_replace("/","\\", $indexbase); 134 $page=io_readFile($indexbase."\\index.txt", $clean=false); 135 $page_fin="[[wiki:bilder:".$tstamp.":index|".$tstamp."]]\n\n".$page; 136 io_saveFile($indexbase."\\index.txt", $page_fin); 137 msg("Link to new gallery created in wiki:bilder:index",1); 138 139 /** 140 * Aktuelle Datei leeren 141 * schreibe leeren String in aktuelle Datei und lösche damit den Content 142 * ist erforderlich, da sonst sinnlose Uploadpage zurück bleibt, editieren auf konventionellem Wege wäre nicht möglich 143 * informiere Nutzer über Vorgang 144 */ 145 io_saveFile($INFO["filepath"],"");//leere aktuelle Datei 146 msg("Deleted content of this actual file...otherwise it would not be editable in future!",-1); 147 148 } 149 } 150 151} 152 153// vim:ts=4:sw=4:et: 154