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