source: extensions/piclens/include/Piclens.class.php @ 3649

Last change on this file since 3649 was 3649, checked in by tiico, 15 years ago

Personnalize the icon in the cooliris feed (on the wall)
Unstall the plugin will suppress the configuration on the database

File size: 18.6 KB
Line 
1<?php
2/*
3 * Plugin Name: CoolIris-Piclens
4 * File :  piclens.class.php 
5 */
6 
7
8class Piclens
9{
10    var $my_config, $root_site_piclens;
11       
12        function Piclens()
13        {
14                // HTTPS
15                set_make_full_url();
16                $this->root_site_piclens = get_root_url();
17                // If needed NO_https can easily be set in your config_local thru LocalFiles Editor
18                if (isset($conf['NO_https']) and $conf['NO_https'] and strncasecmp($this->root_site_piclens, 'https://', 8) == 0 ) 
19                        $this->root_site_piclens = 'http://' . substr($this->root_site_piclens, 8);
20                // HTTPS
21                unset_make_full_url();
22        }
23       
24       
25        // Add Piclens CSS & Javascript in HEAD section
26        function piclens_link()
27        {
28            global $template, $page, $user;
29
30               
31                $jscript = '<script type="text/javascript"> function roll_over_piclens(img_name, img_src){document[img_name].src = img_src;}</script>';
32                $template->append('head_elements',$jscript);                   
33         
34
35                // Vérification d'activation du plugin (page administration)
36                if ($this->my_config['piclens_active'])
37                {
38                        // Correction bug compteur "fou". Les pages d'affichage des images seules ne sont pas a prendre en compte.
39                        if (isset($page['section']) && !isset($page['image_id']))
40                        {
41
42                                // Page Tags
43                                if (($page['section']) == 'tags' && $this->my_config['piclens_tags_active'])
44                                {
45                                        $tags = '';
46                                        foreach ($page['tag_ids'] as $id => $tag)
47                                                $tags .= '/'.$tag.'-'.$page['tags'][''.$id.'']['name'];
48                                       
49                                        $piclnkMaster='<link rel="alternate"'
50                                                                . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/tags'
51                                                                .$tags
52                                                                .'"'
53                                                                .' type="application/rss+xml" title="" id="recent_pics"'
54                                                                . ' >' . "\n";                 
55                                }
56                                // Page images recentes
57                                elseif (($page['section']) == 'recent_pics' && $this->my_config['piclens_recentpics_active'])
58                                {
59                                        $piclnkMaster='<link rel="alternate"'
60                                                                . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/recent_pics"'
61                                                                .' type="application/rss+xml" title="" id="recent_pics"'
62                                                                . ' >' . "\n";                 
63                                }
64                                // Page categories recentes
65                                elseif (($page['section']) == 'recent_cats' && $this->my_config['piclens_recentcats_active'])
66                                {
67                                        if ($this->my_config['piclens_recursive_mode'] != 'standard')
68                                        {
69                                                $query = 'SELECT c.id, c.permalink
70                                                  FROM '.CATEGORIES_TABLE.' c INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.'
71                                                  ON id = cat_id and user_id = '.$user['id'].'
72                                                  WHERE date_last >= SUBDATE(
73                                                        CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY
74                                                  )
75                                                '.get_sql_condition_FandF
76                                                  (
77                                                        array
78                                                          (
79                                                                'visible_categories' => 'id',
80                                                          ),
81                                                        'AND'
82                                                  ).'
83                                                ;';
84                                                $piclnkMaster='';
85                                                $result = pwg_query($query);
86                                                while ($row = mysql_fetch_assoc($result))
87                                                {
88                                                        // Gestion des permalinks
89                                                        $categoryId = $row['id'] ;
90                                                        if (!empty($row['permalink']))
91                                                                $categoryId = $row['permalink'];
92                                       
93                                                        $piclnkMaster.='<link rel="alternate"'
94                                                                                . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/category/'
95                                                                                . $categoryId .'&norecurs"'
96                                                                                .' type="application/rss+xml" title="" id="'.$row['id'].'"'
97                                                                                . ' >' . "\n";
98                                                       
99                                                }
100                                        }
101                                        else
102                                        {
103
104                                                $piclnkMaster='<link rel="alternate"'
105                                                                        . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/recent_cats"'
106                                                                        .' type="application/rss+xml" title="" id="recent_cats"'
107                                                                        . ' >' . "\n";                 
108
109                                        }
110                                }
111                                // Page plus vues
112                                elseif (($page['section']) == 'most_visited' && $this->my_config['piclens_mostvisited_active'])
113                                {
114                                        $piclnkMaster='<link rel="alternate"'
115                                                                . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/most_visited"'
116                                                                .' type="application/rss+xml" title="" id="most_visited"'
117                                                                . ' >' . "\n";                 
118                                }
119                                // mieux notees
120                                else if ($page['section'] == 'best_rated' && $this->my_config['piclens_bestrated_active'])
121                                {
122                                        $piclnkMaster='<link rel="alternate"'
123                                                                . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/best_rated"'
124                                                                .' type="application/rss+xml" title="" id="best_rated"'
125                                                                . ' >' . "\n";                 
126                                }
127                                // favories     
128                                else if ($page['section'] == 'favorites' && $this->my_config['piclens_favorites_active'])
129                                {
130                                        $piclnkMaster='<link rel="alternate"'
131                                                                . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/favorites"'
132                                                                .' type="application/rss+xml" title="" id="favorites"'
133                                                                . ' >' . "\n";                 
134                                }
135
136                                // Seulement sur une page type 'categorie'
137                                // Correction bug compteur "fou". Les pages d'affichage des images seules ne sont pas a prendre en compte.
138                                elseif (($page['section']) == 'categories' && !isset($page['image_id']))
139                                {
140                                       
141                                        // Page accueil et option gallerie activee
142                                    if( (empty($page['category'])) && $this->my_config['piclens_gallerie_active'] )
143                                    {
144                                                if ($this->my_config['piclens_recursive_mode'] != 'standard')
145                                                {
146                                                        $query = 'SELECT id,name,permalink FROM ' . CATEGORIES_TABLE
147                                                        .' WHERE id_uppercat is NULL';
148                                                       
149                                                        $piclnkMaster='';
150                                                        $result = pwg_query($query);
151
152                                                        while ($row = mysql_fetch_assoc($result))
153                                                        {
154                                                                if (!(in_array($row['id'], explode(',', $user['forbidden_categories']))))
155                                                                {
156                                                                        $piclnkMaster.='<link rel="alternate"'
157                                                                                                . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/category/'
158                                                                                                . $row['id'] .'"'
159                                                                                                .' type="application/rss+xml" title="" id="'.$row['id'].'"'
160                                                                                                . ' >' . "\n";                                                                         
161                                                                }
162                                                        }
163                                               
164                                                }
165                                                else
166                                                {
167                                                        $piclnkMaster='<link rel="alternate"'
168                                                                                . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/categories"'
169                                                                                .' type="application/rss+xml" title="" id="accueil"'
170                                                                                . ' >' . "\n";
171                                                }
172                                    }
173                                        // Add only if we are in category page
174                                    elseif (!empty($page['category']['id']))
175                                        {
176
177                                                if ($this->my_config['piclens_recursive_mode'] != 'standard')
178                                                {
179                                                        $categoryId = $page['category']['id'] ;
180                                                        if (!empty($page['category']['permalink']))
181                                                                $categoryId = $page['category']['permalink'];
182
183                                                        $piclnkMaster='<link rel="alternate"'
184                                                                                . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/category/'
185                                                                                . $categoryId .'&norecurs"'
186                                                                                .' type="application/rss+xml" title="" id="'.$page['category']['id'].'"'
187                                                                                . ' >' . "\n";
188
189                                                        $query = '
190                                                        SELECT DISTINCT(id)
191                                                        FROM '.CATEGORIES_TABLE.'
192                                                        WHERE id_uppercat='.$page['category']['id'].';';
193                                                        $result = pwg_query($query);
194
195                                                        while ($row = mysql_fetch_array($result))
196                                                        {
197                                                                $piclnkMaster.='<link rel="alternate"'
198                                                                                        . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/category/'
199                                                                                        . $row['id'] .'"'
200                                                                                        .' type="application/rss+xml" title="" id="'.$row['id'].'"'
201                                                                                        . ' >' . "\n";
202                                                        }
203/*                                                     
204                                                        $piclnkMaster.='<link rel="alternate"'
205                                                                                . ' href="'.get_root_url().PICLENS_PATH.'piclens-rss.php?/category/'
206                                                                                . $categoryId .'&norecurs"'
207                                                                                .' type="application/rss+xml" title="" id="'.$page['category']['id'].'"'
208                                                                                . ' >' . "\n";
209*/
210                                                }
211                                               
212                                                else
213                                                {
214                                                        // Gestion des permalinks
215                                                        $categoryId = $page['category']['id'] ;
216                                                        if (!empty($page['category']['permalink']))
217                                                                $categoryId = $page['category']['permalink'];
218                                       
219                                                        $piclnkMaster='<link rel="alternate"'
220                                                                                . ' href="'.$this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/category/'
221                                                                                . $categoryId .'"'
222                                                                                .' type="application/rss+xml" title="" id="'.$page['category']['id'].'"'
223                                                                                . ' >' . "\n";
224                                                }
225                                        }
226
227                                }
228                               
229                                if (isset($piclnkMaster))
230                                {
231                                        $piclnk=$piclnkMaster;
232                                        // We need absolute path
233                               
234                                         $template->append('head_elements',$piclnk.'<script type="text/javascript" src="http://lite.piclens.com/current/piclens.js"></script>');                       
235                                }
236                        }
237            }
238               
239        }
240
241
242        // Add piclens Flash slideshow to toolbar
243        // Thanks to P@t
244        function add_piclens_icon()
245        {
246                global $template, $page;
247                if ($this->my_config['piclens_lite_active'] && $this->my_config['piclens_active'])
248                {
249                        // Seulement sur une page type 'categorie'
250                        if (isset($page['section']))
251                        {
252                                // images recentes
253                               
254                                if (   (($page['section']) == 'recent_pics' && $this->my_config['piclens_recentpics_active'])
255                                        || (($page['section']) == 'recent_cats' && $this->my_config['piclens_recentcats_active'])
256                                        || (($page['section']) == 'most_visited' && $this->my_config['piclens_mostvisited_active'])
257                                        || (($page['section']) == 'best_rated' && $this->my_config['piclens_bestrated_active'])
258                                        || (($page['section']) == 'favorites' && $this->my_config['piclens_favorites_active'])
259                                        || (($page['section']) == 'tags' && $this->my_config['piclens_tags_active'])
260                                        || (($page['section']) == 'categories')
261                                        )
262                                // categories recentes
263                                // plus vues
264                                // mieux notees
265                                // favories     
266                                {
267                                        if($page['section'] == 'categories')
268                                        {
269                                                if (empty($page['category']))   //      acceuil
270                                                        $rssfeed = $this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/categories';
271                                                else
272                                                {
273                                                        $rssfeed = $this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/category/';
274                                                        $rssfeed .= empty($page['category']['permalink']) ? $page['category']['id'] : $page['category']['permalink'];
275                                                }
276                                                if (isset($conf['NO_https']) and $conf['NO_https'] and strncasecmp($rssfeed, 'https://', 8) == 0 ) 
277                                                                $rssfeed = 'http://' . substr($rssfeed, 8);
278                               
279                                        }
280                                        $tpl_code = '<li><a href="javascript:PicLensLite.start('.(isset($rssfeed) ? ' {feedUrl:\''.$rssfeed.'\'}' : '').');" title="'.l10n('piclens_button').'" onmouseover="roll_over_piclens(\'but1\', \''.$this->root_site_piclens.PICLENS_IMG_PATH.'cooliris-icon-point.png\')" onmouseout="roll_over_piclens(\'but1\', \''.$this->root_site_piclens.PICLENS_IMG_PATH.'cooliris-icon.png\')">';
281                                        $tpl_code.='<img src="'.$this->root_site_piclens.PICLENS_IMG_PATH.'cooliris-icon.png" NAME="but1" class="button" alt="'.l10n('piclens_button').'" width="24" height="24"></a></li>';
282                                        if(($page['section'] == 'categories') && empty($page['category']) && !$this->my_config['piclens_gallerie_active'])      // Accueil et option piclens gallerie desactivee
283                                                $tpl_code='<img src="'.$this->root_site_piclens.PICLENS_IMG_PATH.'cooliris-icon-black.png" NAME="but1" class="button" alt="'.l10n('piclens_button').'" width="24" height="24"></a></li>';
284                                }
285                                if (isset($tpl_code))
286                                        $template->concat('PLUGIN_INDEX_ACTIONS', $tpl_code."\n");
287                        }
288                       
289                }
290        }
291
292
293        // Add piclens pics to start slideshow
294        // Another thanks to P@t
295        function set_make_full_url_piclens()
296        {
297                global $page;
298
299                set_make_full_url();
300                // HTTPS PATCH : If needed NO_https can easily be set in your config_local thru LocalFiles Editor
301                if (isset($conf['NO_https']) and $conf['NO_https'] and strncasecmp($page['root_path'], 'https://', 8) == 0 ) 
302                        $page['root_path'] = 'http://' . substr($page['root_path'], 8);
303               
304        }
305
306        /* Loading of the configuration on database */
307        function load_config()
308        {
309
310            $query = '
311              SELECT value
312              FROM '.CONFIG_TABLE.'
313              WHERE param = \''.PICLENS_CFG_DB.'\'
314            ;';
315
316            $result = pwg_query($query);
317
318            if($result) 
319                {
320                     $row = mysql_fetch_row($result);
321                     if(is_string($row[0])) 
322                         {
323//                      $this->my_config = unserialize($row[0]);
324                        $this->my_config = unserialize(($row[0]));
325                     }
326            }
327                $this->load_default_config();
328                // Desactivation de piclenswall si PWG Stuff est installe
329                $this->my_config['piclens_wall'] = (get_db_plugins('active','PWG_Stuffs') ? false : $this->my_config['piclens_wall']);
330
331                // Si tri = defaut PIWIGO ==> l'ordre est egalement defaut PIWIGO
332                if ($this->my_config['piclens_order'] == 1)                     $this->my_config['piclens_sort'] = 1;
333                if ($this->my_config['piclens_order_cat'] == 1)         $this->my_config['piclens_sort_cat'] = 1;
334               
335        }
336
337        /* Loading of the configuration file - If not exist -> load default values */
338        function load_config_file()
339        {
340                // changement du nom du fichier de conf.
341                if (!file_exists(PICLENS_CFG_FILE))
342                {
343                        if (file_exists(PICLENS_CFG_FILE_OLD))
344                                @rename(PICLENS_CFG_FILE_OLD,PICLENS_CFG_FILE);
345                }
346               
347                $x = @file_get_contents( PICLENS_CFG_FILE );
348                if ($x!==false)
349                {
350                  $c = unserialize($x);
351                  $this->my_config = $c;
352                }
353                // Init default value for the config file
354                $this->load_default_config();
355               
356                // Desactivation de piclenswall si PWG Stuff est installe
357                $this->my_config['piclens_wall'] = (get_db_plugins('active','PWG_Stuffs') ? false : $this->my_config['piclens_wall']);
358
359                // Si tri = defaut PIWIGO ==> l'ordre est egalement defaut PIWIGO
360                if ($this->my_config['piclens_order'] == 1)                     $this->my_config['piclens_sort'] = 1;
361                if ($this->my_config['piclens_order_cat'] == 1)         $this->my_config['piclens_sort_cat'] = 1;
362        }
363
364        /* Saving of the configuration on DB*/
365        function save_config()
366        {
367            $query = '
368              REPLACE INTO '.CONFIG_TABLE.'
369              VALUES(
370                \''.PICLENS_CFG_DB.'\',
371                \''.(serialize($this->my_config)).'\',
372                \'Configuration de Piclens\')
373            ;';
374
375            $result = pwg_query($query);
376
377            if($result) 
378                        return true;
379            else 
380                        return false;
381
382        }
383
384        /* Saving of the configuration file with data */
385        function save_config_file()
386        {
387                $file = fopen( PICLENS_CFG_FILE, 'w' );
388                fwrite($file, serialize($this->my_config) );
389                fclose( $file );
390        }
391
392       
393        private function load_default_config()
394        {
395            include PICLENS_INC_PATH.'default_values.inc.php';
396            foreach ($piclens_default_values as $key => $value) 
397                {
398                    if (!isset($this->my_config[$key]))         $this->my_config[$key] = $value;
399                }
400        }
401       
402        function piclens_admin_menu($menu)
403        {
404            array_push($menu,
405               array(
406                    'NAME' => 'Cooliris-Piclens',
407                    'URL' => get_admin_plugin_menu_link(PICLENS_ADMIN_PATH.'piclens_admin.php')
408                ) 
409            );
410            return $menu;
411        }
412
413        function piclenswall()
414        {
415            global $page;
416                // piclens active+ activation du mur
417//              if ($this->my_config['piclens_active'] && $this->my_config['piclens_wall'])
418                if ($this->my_config['piclens_wall'])
419            if (isset($page['body_id']) and $page['section'] == 'categories')
420                        include_once(PICLENS_PATH.'piclenswall.php');   
421        }
422
423        function piclens_thumbnails()
424        {
425          global $template, $page;
426         
427                // piclens active
428                if (    isset($page['section'])
429                        and $this->my_config['piclens_active'])
430                {
431               
432                        // Pages speciales et configuration activee
433                        if ($this->my_config['piclens_wall_spec'])
434                        {
435                                // Page images recentes
436                                if (($page['section']) == 'recent_pics' && $this->my_config['piclens_wall_spec_recentpics'])
437                                        $rssfeed = $this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/recent_pics';
438
439                                // Page categories recentes
440                                elseif (($page['section']) == 'recent_cats' && $this->my_config['piclens_wall_spec_recentcats'])
441                                        $rssfeed = $this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/recent_cats';
442
443                                // Page plus vues
444                                elseif (($page['section']) == 'most_visited' && $this->my_config['piclens_wall_spec_mostvisited'])
445                                        $rssfeed = $this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/most_visited';
446
447                                        // mieux notees
448                                else if ($page['section'] == 'best_rated' && $this->my_config['piclens_wall_spec_bestrated'])
449                                        $rssfeed = $this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/best_rated';
450
451                                        // favories     
452                                else if ($page['section'] == 'favorites' && $this->my_config['piclens_wall_spec_favorites'])
453                                        $rssfeed = $this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/favorites';
454                                else if ($page['section'] == 'tags' && $this->my_config['piclens_wall_spec_tags'])
455                                {
456                                        $tags = '';
457                                        foreach ($page['tag_ids'] as $id => $tag)
458                                                $tags .= '/'.$tag.'-'.$page['tags'][''.$id.'']['name'];
459                                        $rssfeed = $this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/tags'.$tags;
460                                }
461                        }
462                        // Remplacement de la navigation
463                        if ($this->my_config['piclens_wall_nav'])
464                        {
465                                // Page categories     
466                                if ($page['section'] == 'categories'
467                                        and !empty($page['category'])
468                                    and !empty($page['items']))
469                                {
470                                        // verification de presence de la categorie dans la liste parametree
471                                        if (in_array($page['category']['id'], $this->my_config['piclens_wall_cat_nav_replace']))
472                                        {
473                                                $rssfeed = $this->root_site_piclens.PICLENS_PATH.'piclens-rss.php?/category/';
474                                                $rssfeed .= empty($page['category']['permalink']) ? $page['category']['id'] : $page['category']['permalink'];
475                                        }
476                                }
477                        }                       
478                }
479
480                if (isset($rssfeed))
481                {
482                        if (isset($conf['NO_https']) and $conf['NO_https'] and strncasecmp($rssfeed, 'https://', 8) == 0 ) 
483                                        $rssfeed = 'http://' . substr($rssfeed, 8);
484               
485                        $color = $this->my_config['piclens_wall_color'];
486                        $height = $this->my_config['piclens_wall_height'];
487                        $showfullscreen =  ($this->my_config['piclens_wall_showfullscreen'] ? "true" : "false");
488                        $showembed = ($this->my_config['piclens_wall_showembed'] ? "true" : "false");
489                        $showsearch = ($this->my_config['piclens_wall_showsearch'] ? "true" : "false");
490                        $template->assign('THUMBNAILS', 
491                                '<object id="o" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
492                                        width="100%" height="'.$this->my_config['piclens_wall_height'].'" >
493                                                <param name="movie" value="'
494// Test si utilisation du fichier flash local.
495                                                .($this->my_config['piclens_wall_swflocal'] ? $this->root_site_piclens.PICLENS_PATH.'swf/cooliris.swf' : 'http://apps.cooliris.com/embed/cooliris.swf') 
496                                                .'?feed='.$rssfeed.'&amp;style='.$color.'&amp;showEmbed='.$showembed.'&amp;showFullScreen='.$showfullscreen.'&amp;showSearch='.$showsearch.'" />
497                                                <param name="allowFullScreen" value="'.$showfullscreen.'" />
498                                                <param name="showEmbed" value="'.$showembed.'" />
499                                                <param name="showSearch" value="'.$showsearch.'" />
500                                                <param name="allowScriptAccess" value="always" />'
501                                                .($this->my_config['piclens_wall_transparent'] 
502                                                        ?       '<param name="wmode" value="transparent" />
503                                                                <embed WMODE="transparent"' 
504                                                        :       '<embed ')
505                                                .'type="application/x-shockwave-flash" src="'
506// Test si utilisation du fichier flash local.
507                                                .($this->my_config['piclens_wall_swflocal'] ? $this->root_site_piclens.PICLENS_PATH.'swf/cooliris.swf' : 'http://apps.cooliris.com/embed/cooliris.swf') 
508                                                .'?feed='.$rssfeed.'&amp;style='.$color.'&amp;showEmbed='.$showembed.'&amp;showFullScreen='.$showfullscreen.'&amp;showSearch='.$showsearch.'" width="100%" height="'.$height.'" showEmbed="'.$showembed.'" showSearch="'.$showsearch.'" allowFullScreen="'.$showfullscreen.'" allowScriptAccess="always" />
509                                </object>'); 
510
511                // Suppression de la barre de navigation
512                        $template->clear_assign('NAV_BAR');
513                        // Suppression de la barre de navigation categories (cas de l'affichage des categories recentes)
514                        if (($page['section']) == 'recent_cats')
515                                $template->clear_assign('CATEGORIES');
516                }
517               
518        }
519       
520
521       
522}
523
524?>
Note: See TracBrowser for help on using the repository browser.