source: spip-zone/_plugins_/loudblog/loudblog.php @ 107913

Last change on this file since 107913 was 2376, checked in by phil@…, 15 years ago

Interface Interface loudblog -> spip version initiale. Ajout d'une balise <code>#LOUDBLOG{code htmeuleuh avec des balises loudblog dedans}</code> pour interfacer loudblog (http://loudblog.net) avec spip.
Voir exemple sur http://spiptest.africa-web.org/ pour se faire une idée de à quoi ca sert et lire le fichier lisezmoi.txt pour la configuration.

File size: 7.7 KB
Line 
1<?php
2
3function loudblog_parse($loublog_texte,$audioSkel="") { 
4        global $settings;
5        global $currentid;
6       
7        // Le contenu de toute cette fonction est un copier-coller de la partie globale
8        // du fichier /loudblog/inc/buildwebsite.php sauf section avec commentaires en français
9        // (c) Loudblog - http://www.loudblog.de
10       
11        // --------------------------------------------------------------------
12        // IMPORTANT Variables à changer en fonction de la configuration locale
13        // --------------------------------------------------------------------
14       
15        // URL relative du loudblog
16        $loudblog_path="/loudblog";     
17       
18        // Chemin (avec / à la fin) où se trouve physiquement le loudblog
19        // si pas possible avec hébergeur, faire lien(s) sympolique(s)
20        // sinon modifier tous les includes de loudblog/inc/* pour faire fonctionner : pas glop !
21        ini_set("include_path", ini_get("include_path").":/data/web/org/b/e/africa-web.org/t/s/spiptest/htdocs/loudblog/");     
22        // A la windaube : ini_set("include_path", ini_get("include_path").";C:/Web/www/spip-svn/loudblog/");   
23       
24        // --------------------------------------------------------------------
25               
26       
27        include "loudblog/custom/config.php";
28        include_once "loudblog/inc/database/adodb.inc.php";
29        include_once "loudblog/inc/connect.php";
30        include_once "loudblog/inc/functions.php";
31               
32        if (!isset($db['host'])) { die("<br /><br />Cannot find a valid configuration file! <a href=\"install.php\">Install Loudblog now!</a>"); }
33        $GLOBALS['prefix'] = $db['pref'];
34        $GLOBALS['path'] = $lb_path;
35        $GLOBALS['audiopath'] = $lb_path . "/audio/";
36        $GLOBALS['uploadpath'] = $lb_path . "/upload/";
37        $GLOBALS['templatepath'] = $lb_path . "/loudblog/custom/templates/";
38       
39        //getting basic data
40        $settings = getsettings();
41
42        dumpdata();
43       
44        //url
45        //get the language translation table
46        global $lang;
47        $lang = array();
48        @include_once($GLOBALS['path']."/loudblog/lang/".$settings['language'].".php"); 
49       
50        include_once "loudblog/inc/loudblogtags.php";
51               
52
53        // On fait parser par loudblog 
54        $loublog_parsed_texte=fullparse(firstparse(hrefmagic($loublog_texte)));
55       
56       
57        // Hacks pour corriger les chemins dans les liens, qui ne sont plus relatif au répertoire
58        // ou se trouve loudblog mais au repertoire de spip (liens en dur dans loudblog).
59        $loublog_parsed_texte=str_replace('"loudblog/','"'.$loudblog_path.'/loudblog/',$loublog_parsed_texte);
60        $loublog_parsed_texte=str_replace('"audio/','"'.$loudblog_path.'/audio/',$loublog_parsed_texte);
61        $loublog_parsed_texte=str_replace('src=audio/','src='.$loudblog_path.'/audio/',$loublog_parsed_texte);
62        $loublog_parsed_texte=str_replace('"podcast.php','"'.$loudblog_path.'/podcast.php',$loublog_parsed_texte);
63        $loublog_parsed_texte=str_replace('index.php?','spip.php?page='.$audioSkel.'&',$loublog_parsed_texte);
64       
65
66return ($loublog_parsed_texte); 
67}
68
69
70
71function balise_LOUDBLOG($p) {
72       
73        // Pas trés clean la récupération/vérification des paramètres mais j'ai pas
74        // encore tout à fait compris ce qu'était sensé contenir l'objet param
75       
76        $param=$p->param;
77        $texte=$param[0][1];
78        $texte=$texte[0];
79        $loublog_texte=$texte->texte;   
80               
81        $texte2=$param[0][2];
82        $texte2=$texte2[0];
83        $audioSkel=$texte2->texte;
84       
85        // Second paramètre : squelette spip (spip.php?page=) pour les liens à modifier
86        if ($audioSkel==NULL) $audioSkel=substr($_SERVER['REQUEST_URI'],1,strlen($_SERVER['REQUEST_URI'])-1);                   
87 
88        // Zoup, on envoie au parseur loudblog
89        if ($loublog_texte!=NULL) $p->code = 'loudblog_parse("'.addslashes($loublog_texte).'","'.$audioSkel.'")';
90        $p->interdire_scripts = true;
91        return $p;
92}
93
94        // Le contenu de toute ce qui suit est un copier-coller des fonctions
95        // du fichier /loudblog/inc/buildwebsite.php
96        // (c) Loudblog - http://www.loudblog.de
97
98function firstparse ($string) {
99
100//very first, we do the loop_postings, because we need some global data for other functions, aight?
101$postparsed = parsepostings ($string);
102
103//now we put the posting-parsing-results into the original string
104if ((isset($postparsed[0])) AND ($postparsed[0] != false)) {
105    foreach ($postparsed as $replace) {
106        $string = str_replace($replace['origin'], $replace['parsed'], $string);
107    }
108}
109return $string;
110}
111
112
113//--------------------------------------------------------
114
115
116function fullparse ($string) {
117
118//we have to look for container-tags and parse them.
119$contparsed = parsecontainer ($string);
120
121//now we put the container-parsing-results into the original string
122if ((isset($contparsed[0])) AND ($contparsed[0] != false)) {
123    foreach ($contparsed as $replace) {
124        $string = str_replace($replace['origin'], $replace['parsed'], $string);
125    }
126}
127
128//secondly, we have to look for single-tags and parse them, too.
129$singleparsed = parsesingle ($string);
130
131//now we put the single-parsing-results into the original template
132if (isset($singleparsed[0])) {
133    foreach ($singleparsed as $replace) {
134        $string = str_replace($replace['origin'], $replace['parsed'], $string);
135    }
136}
137return $string;
138}
139
140
141//--------------------------------------------------------------------
142function parsepostings ($string) {
143//search for postings-tags
144
145$parsing = "";
146$search = '|<(lb:loop_postings)[^>]*>.*?</\1>|s';
147preg_match_all($search, $string, $matches);
148$i = 0;
149$parsing = false;
150if (isset($matches[0])) {
151    foreach ($matches[1] as $containertag) {
152        $call = substr ($containertag, 3);
153        $parsing[$i]['origin'] = $matches[0][$i];
154        $parsing[$i]['parsed'] = call_user_func($call, $matches[0][$i]);
155        $i +=1;
156    } 
157}
158return $parsing;
159}
160
161//--------------------------------------------------------------------
162function parsecontainer ($string) {
163//search for container-tags
164
165$parsing = "";
166$search = '|<(lb:[_a-z][_a-z0-9]*)[^>]*>.*?</\1>|s';
167preg_match_all($search, $string, $matches);
168$i = 0;
169$parsing = false;
170if (isset($matches[0])) {
171    foreach ($matches[1] as $containertag) {
172        $call = substr ($containertag, 3);
173        $parsing[$i]['origin'] = $matches[0][$i];
174        $parsing[$i]['parsed'] = call_user_func($call, $matches[0][$i]);
175        $i +=1;
176    } 
177}
178return $parsing;
179}
180
181//--------------------------------------------------------------------
182function stripcontainer ($string) {
183//put those "<lb:something>content</lb:something>" tags to trash
184if ($string != "") {
185
186    $start = strpos ($string,">") + 1;
187    $length= strrpos($string,"<") - strlen($string);
188    $string = substr ($string, $start, $length);
189}
190return $string;
191}
192
193//--------------------------------------------------------------------
194function parsesingle ($string) {
195//search for single-tags
196
197$parsing = "";
198if ($string != "") {
199    $search = '|<(lb:[_a-z][_a-z0-9]*)[^>]* />|s';
200    preg_match_all($search, $string, $matches);
201    $i = 0;
202    $parsing = false;
203    if (isset($matches[0])) {
204        foreach ($matches[1] as $singletag) {
205            $call = substr ($singletag, 3);
206            $parsing[$i]['origin'] = $matches[0][$i];
207            $parsing[$i]['parsed'] = call_user_func($call, $matches[0][$i]);
208            $i +=1;
209        }
210    }
211} 
212return $parsing;
213}
214
215//--------------------------------------------------------------------
216function getattributes ($string) {
217//takes the whole loudblog-tag and returns the attributes as array
218
219$att = array();
220if ($string != "") {
221    $string = substr($string, 0, strpos($string, ">"));
222    $fragments = explode('"', strstr($string, " "));
223    for ($i = 0; $i < count($fragments)-1; $i+=2) {
224        $att[substr(trim($fragments[$i]), 0, -1)] = $fragments[$i+1];
225    } 
226}
227return $att;
228}
229
230//--------------------------------------------------------------------
231function hrefmagic ($string) {
232//takes all relative href-links and src-links and forward to template-location
233
234$return = false;
235if ($string != "") {
236    global $settings;
237        $search = '#(href|src)=["\']([^/][^:"\']*)["\']#';
238        $replace= '$1="loudblog/custom/templates/'.$settings['template'].'/$2"';
239    $return = preg_replace ($search, $replace, $string);
240}
241return $return;
242}
243?>
Note: See TracBrowser for help on using the repository browser.