source: extensions/LLGBO2/main.inc.php @ 7891

Last change on this file since 7891 was 7891, checked in by gbo, 13 years ago

Compliance Gmaps

  • Property svn:eol-style set to LF
File size: 18.0 KB
Line 
1<?php 
2/*
3Plugin Name: Look_like_gbo2
4Version:  2.1.h
5Plugin URI: http://phpwebgallery.net/ext/extension_view.php?eid=251
6Author: Ex-Ftb 
7Author URI: http://www.photos.bouteyron.fr/
8Description:  Display thumbnail under button. Add navigation on picture look like GBo Gallery
9Add a border around  picture ......
10  2.1.a compliant 2.1 Piwigo
11  2.1.b fix minor bugs in administration
12  2.1.c compatibility with simple
13  2.1.d bug Css with IE6 & IE8
14  2.1.e fix bug   $conf['question_mark_in_urls']
15  2.1.f fix bug   with metatda and video
16  2.1.g fix bug   with HD Shadowbow on first  and last picture and navigation on picture 
17  2.1.h language De, Sk, Lv and compliance GMaps */
18if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
19/* création d'une instance de la classe   */
20$obj = new look_like_gbo(); /* class loading */
21global $conf; 
22
23define ('LLGBO_INFO_VERSION','2.1.h');
24if (!defined('LLGBO_PATH'))
25{define('LLGBO_PATH' ,get_root_url().'plugins/'.basename(dirname(__FILE__)) . '/');}
26         
27 $conf['LLGBO_SETTINGS'] =  explode("," , $conf['LLGBO']);
28 $conf['LLGBO_TOOLTIP'] = explode(",",$conf['LLGBOTOOLTIP']);
29 $conf['LLGBO_FRAME'] = explode (",",$conf['LLGBOFRAME']); 
30 $conf['LLGBO_HEADER'] = explode (",",$conf['LLGBOHEADER']);   
31 
32/////////////////////////////////////////////////////
33/*  PLUGIN CLASS  */
34/////////////////////////////////////////////////////
35class look_like_gbo
36{/* Set the administration panel of the plugin */
37  function plugin_admin_menu($menu)
38  {    array_push($menu,
39        array(
40          'NAME' => 'Look_like_GBo',
41          'URL' => get_admin_plugin_menu_link(dirname(__FILE__).'/admin/llgbo_admin.php') ));
42    return $menu;  }
43
44//-------------------------------------------------------------
45/*       ALWAYS      DISPLAY      METADATA */
46//-------------------------------------------------------------
47function AutoDisplayMetadata()
48{global $conf;
49         If ($conf['LLGBO_SETTINGS'] [2]  == 'true' )  // exif under bt
50        {$_GET['metadata'] = 'O';}
51       
52        If ($conf['LLGBO_SETTINGS'][10]  == 'true' )  //always display metadata
53        {if ( pwg_get_session_var('show_metadata') == null )
54                {  pwg_set_session_var('show_metadata', 1 );
55                 }}
56}
57//-------------------------------------------------------------
58// RESET NOFOLLOW, NOINDEX
59//-------------------------------------------------------------
60function MyBeginheader()
61{ global $page,$conf;
62         If ($conf['LLGBO_SETTINGS'][2]  == 'true' ) // reset nofollow, noindex
63        { unset ($page['meta_robots']);}
64}
65//-------------------------------------------------------------
66//      MANAGE               H E A D E R
67//-------------------------------------------------------------
68function Myheader()
69{global $template,$conf;
70$page_name = script_basename();
71if (!isset($page_name)) {$page_name ='index';}
72if ($conf['LLGBO_SETTINGS'] [6] = 'true' ) 
73{$no_header = false;
74
75$input= $_SERVER['PHP_SELF'];
76if ($conf['question_mark_in_urls'] == true)
77 {      foreach($_GET as $cle  =>$valeur) 
78                {$input= $input.$cle ;}
79}
80// print_r($input.'----'.$page_name );
81if  ( strpos( $input,'index') == true )
82{               
83                if ((strpos( $input,'index.php/') == false )  and ($conf['LLGBO_HEADER'][0] == 'false')) {$no_header = true;}// home
84                if ((strpos( $input,'categories') == true ) and ($conf['LLGBO_HEADER'][0] == 'false')) {$no_header = true;}// categories
85                if ((strpos( $input,'category') == true ) and ($conf['LLGBO_HEADER'][1] == 'false')) {$no_header = true; }
86                if ((strpos( $input,'filter=') == true ) and ($conf['LLGBO_HEADER'][2] == 'false')) {$no_header = true; }
87                if ((strpos( $input,'categories/flat') == true ) and ($conf['LLGBO_HEADER'][3] == 'false')) {$no_header = true ;}
88                if ((strpos( $input,'categories/posted-monthly-list') == true ) and ($conf['LLGBO_HEADER'][4] == 'false')) {$no_header = true ;}
89                if ((strpos( $input,'additional_page') == true ) and ($conf['LLGBO_HEADER'][6] == 'false')) {$no_header = true; }
90                if ((strpos( $input,'most_visited') == true ) and ($conf['LLGBO_HEADER'][7] == 'false')) {$no_header = true ;}
91                if ((strpos( $input,'best_rated') == true ) and ($conf['LLGBO_HEADER'][8] == 'false')) {$no_header = true; }
92                if ((strpos( $input,'list') == true ) and ($conf['LLGBO_HEADER'][9] == 'false')) {$no_header = true; }
93                if ((strpos( $input,'recent_pics') == true ) and ($conf['LLGBO_HEADER'][10] == 'false')) {$no_header = true ;}
94                if ((strpos( $input,'tags') == true ) and ($conf['LLGBO_HEADER'][11] == 'false')) {$no_header = true; }
95                if ((strpos( $input,'created-monthly-list') == true ) and ($conf['LLGBO_HEADER'][12] == 'false')) {$no_header = true;}
96                if ((strpos( $input,'favorites') == true ) and ($conf['LLGBO_HEADER'][19] == 'false')) {$no_header = true;}
97                if ((strpos( $input,'recent_cats') == true ) and ($conf['LLGBO_HEADER'][20] == 'false')) {$no_header = true;;} 
98         
99        }
100        //print_r($_GET.'----'.$page_name );
101if  ( strpos( $input,'index') == false )
102         {if ( $page_name == 'index'   and ($conf['LLGBO_HEADER'][0] == 'false')) {$no_header = true;}// home
103         if ( $page_name == 'picture' and  $conf['LLGBO_HEADER'][5] == 'false')  {$no_header = true;}//picture page
104         if ( $page_name == 'tags' and  $conf['LLGBO_HEADER'][11] == 'false')  {$no_header = true;}//tags
105         if ( $page_name == 'search' and  $conf['LLGBO_HEADER'][13] == 'false')  {$no_header = true;}//search   
106         if ( $page_name == 'comments' and  $conf['LLGBO_HEADER'][14] == 'false')  {$no_header = true;}//comments
107         if ( $page_name == 'about' and  $conf['LLGBO_HEADER'][15] == 'false')  {$no_header = true;}//about     
108         if ( $page_name == 'notification' and  $conf['LLGBO_HEADER'][16] == 'false')  {$no_header = true;}//notification       
109         if ( $page_name == 'register' and  $conf['LLGBO_HEADER'][17] == 'false')  {$no_header = true;} //notification   
110         if ( $page_name == 'identification' and  $conf['LLGBO_HEADER'][18] == 'false')  {$no_header = true;}//about     
111         }
112 if ($no_header == true)
113{$template->append('head_elements','<!-- llgbo -->'."\n".'<STYLE type="text/css">'."\n".'#theHeader{display: none}'."\n".'header_msgs {position:static}'."\n".'</STYLE>');}
114}       
115 
116}  // end header
117 
118//-------------------------------------------------------------
119//* IMPROVE FUNCTIONNALITIES --> PICTURE.TPL
120//-------------------------------------------------------------
121function  DisplayGboLook()
122{ global $template,$conf,$lang;
123$ThePicture = $template->get_template_vars('current'); 
124// 2.1.f fix notice with video
125if ($ThePicture['is_picture'] <> 1 ) 
126        {  $lang['Show file metadata'] =  'No Metadata';
127                return;}
128// ---------------------------         
129    $meta = "";
130        $u_metadata = $template->get_template_vars('U_METADATA');
131        $swt =   ' swttips="'; 
132         If ($conf['LLGBO_SETTINGS'] [2]  == 'true' )  // exif under bt
133                {  $metadata = $template->get_template_vars('metadata');
134                if(is_array($metadata))
135                        {       if (isset($metadata[0]) and is_array($metadata[0]))
136                                { foreach($metadata[0] as $cle =>$tableau)
137                                         { if(is_array($tableau))
138                                         {   foreach($tableau as $cle=>$valeur)
139                                                {   $swt= $swt.$cle.' : '.$valeur.'<br>';
140                                                        $meta = 1;}
141                                        }       }
142                                        if  ( pwg_get_session_var('show_metadata') == 1 )
143                                        {       $lang['Show file metadata'] =  'EXIF Metadata';
144                                                if ($meta  != 1 ) {$lang['Show file metadata'] =  'No Metadata';}}
145                                       
146                                        $template->assign( 'U_METADATA', $u_metadata.'"'.$swt);
147                               
148                                 unset( $metadata[0]); 
149                                 $template->Clear_assign('metadata');// hide original metadata 
150                                 $template->assign('metadata',$metadata);//  original metadata item > 0
151                                }       
152                        } 
153                }
154               
155} 
156//-----------------------------------------------------------------
157/*  ------   MANAGE PICTURE PAGE----------------    */ 
158//-----------------------------------------------------------------
159function MyPictureOptions($content )
160{global $template,$conf,$user,$lang;   
161$llgbo_path = get_root_url().'plugins/'.basename(dirname(__FILE__)) . '/';
162$sweetcss = ' <! --- LLGBO tooltip css-->
163<style type="text/css"> 
164div#toolTip {position:absolute;z-index:1000;width:'.$conf['LLGBO_TOOLTIP'][0].'px;background:'.$conf['LLGBO_TOOLTIP'][3].';color:'.$conf['LLGBO_TOOLTIP'][5].';border:'.$conf['LLGBO_TOOLTIP'][1].'px solid '.$conf['LLGBO_TOOLTIP'][2].';padding:5px;min-height:1em;-moz-border-radius:5px}
165div#toolTip p {margin:0;padding:0;color:'.$conf['LLGBO_TOOLTIP'][5].';font-size:0.8em;font-family:Verdana,Arial,Helvetica,sans-serif;text-align:left}
166div#toolTip p em {display:block;margin-top:3px;font-style:normal;font-weight:bold;text-align:left}
167div#toolTip p.title {color:'.$conf['LLGBO_TOOLTIP'][4].';text-align:center;padding:0 0 3px 0;}
168</style>';
169//-----------------------------------------------------------------
170// -----------  add JS tooltip in footer --------------------
171//-----------------------------------------------------------------
172 If (($conf['LLGBO'][1]  == 'true' ) /*  tooltip  */  or  ($conf['LLGBO_SETTINGS'] [2]  == 'true' )  /* exif under bt */ 
173 or  ($conf['LLGBO_SETTINGS'] [4]  === 'true' ) /* usemap and Display Thumb  */)
174            {  $javacss = '<script type="text/javascript" charset="utf-8"  src="'.$llgbo_path;
175              $sweetcss =  $sweetcss."\n".$javacss.'js/sweettitlesn.js"></script>'."\n"; 
176                  $template->append('footer_elements',$sweetcss); }
177//-----------------------------------------------------------------
178// Navigation improvement are always available
179//-----------------------------------------------------------------
180$ThePicture = $template->get_template_vars('current');
181$next  = $template->get_template_vars('next');
182$prev = $template->get_template_vars('previous');
183$last = $template->get_template_vars('last');
184$first = $template->get_template_vars('first');
185$swtimg =   ' swttips="<center><img src=';     
186$nextthumb_title = $next['TITLE'];
187$prevthumb_title = $prev['TITLE'];     
188$usemap ='';
189//----------------------------------------------------   
190//-------      Tooltip                        -------------     
191//----------------------------------------------------   
192If ($conf['LLGBO_SETTINGS'][1]  == 'true' )/*  tooltip  */ 
193        { $nextthumb_title = $next['TITLE'];
194        $prevthumb_title = $prev['TITLE'];
195        if (isset($first)){$template->assign('first',  array('TITLE' =>  $first['TITLE'].'"'.$swtimg.$first['THUMB_SRC'].'>',
196                                                                                'U_IMG' =>  $first['U_IMG']));}
197          if (isset($prev)){$template->assign('previous',  array('TITLE' =>  $prev['TITLE'].'"'.$swtimg.$prev['THUMB_SRC'].'>',
198                                                                                'U_IMG' =>  $prev['U_IMG'], 'THUMB_SRC' => $prev['THUMB_SRC'])); }
199          if (isset($next)){$template->assign('next',  array('TITLE' =>  $next['TITLE'].'"'.$swtimg.$next['THUMB_SRC'].'>',
200                                                                                'U_IMG' =>  $next['U_IMG'], 'THUMB_SRC' => $next['THUMB_SRC']));}
201          if (isset($last)){$template->assign('last',  array('TITLE' =>  $last['TITLE'].'"'.$swtimg.$last['THUMB_SRC'].'>',
202                                                                        'U_IMG' =>  $last['U_IMG']));}
203        }       
204///// YOGA or SIMPLE /////////////////////     
205$tpl_name = "";
206$tpl_name =   $user['theme'] ;
207/////////////////////////////////////////////
208// AN OTHER PLUGIN IS WORKING -> GO BACK
209//   - - - - - - - - - - - - - - - - - - - -
210if ( !empty($content) )   {  return $content;  }       
211//////////////////////////////////////////////////////////////////////
212// frame and navigation on picture  are only available on picture extension
213/////////////////////////////////////////////////////////////////       
214if ($ThePicture['is_picture'] <> 1 )    {  return $content;  ; }       
215//echo  strpos(strtoupper($tpl_name) , 'GALLY');
216
217//if (( strpos(strtoupper($tpl_name) , 'GALLY') === 0) )
218//      {       return $content;  ; }   // Not compliant with Gally
219/////////////////////////////////////////////////////////////////       
220If (($conf['LLGBO_SETTINGS'] [1]  == 'true' )/*  tooltip display  */  or ($conf['LLGBO_SETTINGS'] [0] == 'true') /*  frame  */  )
221                        { $linkcss = '<link rel="stylesheet" type="text/css" href="'.$llgbo_path;
222                        $template->append('head_elements',$linkcss.'css/gbolook.css">');
223                         $template->append('head_elements',"\n".' <STYLE type="text/css">#theImage{margin:auto;overflow: hidden;}</STYLE>');
224                          }
225//----------------------------------------------------   
226//-------      Usemap   values         -------------     
227//----------------------------------------------------   
228If ($conf['LLGBO_SETTINGS'] [3]  == 'true' )  // usemap
229 {      $usemap = '  usemap="#prevnext"' ;
230        $imgw = $ThePicture['scaled_width'];
231                $imgh = $ThePicture['scaled_height'];   
232                $template->assign(array(
233                        /* left --> Prev */     'LEFT_X1'  => 0,  'LEFT_Y1'  => 0, 
234                                                'LEFT_X2'  => round($imgw * 0.24), 'LEFT_Y2'  => $imgh ,
235                        /* up */                'UP_X1'  => round($imgw * 0.24) ,  'UP_Y1'  => 0,
236                                                'UP_X2'  => round($imgw * 0.76), 'UP_Y2'  => round($imgh * 0.50),
237                        /* high */              'HIGH_X1'  => round($imgw * 0.24) , 'HIGH_Y1'  => round($imgh * 0.50) ,
238                                                'HIGH_X2'  => round($imgw * 0.76), 'HIGH_Y2'  => $imgh,
239                        /* right -> next */     'RIGHT_X1'  => round($imgw * 0.76) , 'RIGHT_Y1'  => 0,
240                                                'RIGHT_X2'  =>  $imgw  , 'RIGHT_Y2'  => $imgh ));
241                $template->assign( 'USEMAP', 'ok'  );
242                                                               
243        If ($conf['LLGBO_SETTINGS'] [4]  === 'true' )  // usemap and Display Thumb
244                        { $template->assign(array('NEXTTHUMB'  => $swtimg.$next['THUMB_SRC'].'>"',
245                         'NEXTTHUMBTITLE'  => $nextthumb_title,
246                         'PREVTHUMB'  =>  $swtimg.$prev['THUMB_SRC'].'>"',
247                         'PREVTHUMBTITLE'  =>  $prevthumb_title));} 
248}  // end usemap
249
250//----------------------------------------------------   
251//                  improve alt
252//----------------------------------------------------   
253$alt = $conf['allow_html_descriptions'] ? $ThePicture['name'] : strip_tags($ThePicture['name']);
254
255/*
256$related_cats =   $template->get_template_vars('related_categories');
257if (isset($related_cats))
258        {$related_cat = strip_tags($related_cats[0]);
259        $related_cat = str_replace('&nbsp;'," ",$related_cat);
260        $related_cat = str_replace($conf['level_separator'],"-",$related_cat);
261        }
262 $alt = $alt.' - ['.$related_cat.']'; */
263//-----------------------------------------------------------------
264$template->assign( array(
265           'SRC_IMG' => $ThePicture['image_url'],
266           'WIDTH_IMG' => $ThePicture['scaled_width'],
267           'HEIGHT_IMG' => $ThePicture['scaled_height'],           
268           'ALT_IMG' =>  $alt ,
269       'MAP_TO_USED' =>   $usemap         
270           )); 
271
272If (isset($ThePicture['has_high'])and isset($ThePicture['high_url']))
273                {  $uuid = uniqid(rand());
274                 $template->assign(
275                 'high', array(
276                                'U_HIGH' => $ThePicture['high_url'] ,
277                                'UUID'   => $uuid,      ));
278                // compliance HD Shadowbox     
279                If ($conf['LLGBO_SETTINGS'] [9]  == 'true' )
280                        {$nbarea = 3;
281                         if (!isset($next)){$nbarea = 2;}
282                         if (!isset($prev)){$nbarea = 2;}
283                         $template->assign('HDHREF', ' href="'.$ThePicture['high_url'].'" title= " HD --> '.$ThePicture['name'].'"');
284                          $template->append('head_elements', "\n".'<script type="text/javascript">'."\n".'window.onload = function() {'."\n".'Shadowbox.setup(document.getElementById("prevnext").getElementsByTagName("area")['.$nbarea.']);}'."\n".'</script>'  );} 
285           else
286           {$template->assign('HDHREF','title="'.$lang['Click on the picture to see it in high definition'].'" href="javascript:phpWGOpenWindow('."'".$ThePicture['high_url']."','".$uuid."','"."scrollbars=yes,toolbar=no,status=no,resizable=yes'".')"');}               
287                       
288} 
289
290If (($conf['LLGBO_SETTINGS'] [5]  == 'true' )  /* title on frame */ and ($conf['LLGBO_SETTINGS'] [0]  == 'true' )) // display frame
291         { $template->assign('SHOW_PICTURE_NAME_ON_TITLE', false);     
292                $template->assign('TITLE_FRAME_COLOR', $conf['LLGBO_FRAME'][0]);                 } 
293               
294// compatibility with extended description
295$comment = $template->get_template_vars('COMMENT_IMG');
296if (!isset($comment) )
297                {$template->assign( 'COMMENT_IMG' , $ThePicture['comment']);}
298//----------------------------------------------------   
299/*              HTML  frame                          */
300//----------------------------------------------------   
301If (($conf['LLGBO_SETTINGS'] [0] == 'true') )
302        {   $bds = 0; 
303                $frame_begin ='';
304                $frame_end='';
305                for ($x = 1   ;$x < 32  ; $x =$x +2)
306                {       if ((isset($conf['LLGBO_FRAME'][$x+1])) and  ($conf['LLGBO_FRAME'][$x+1] > 0))  // boder value > 0     
307                          {$frame_begin = '<div id ="llgboframe'.$x.'" style="border: '.$conf['LLGBO_FRAME'][$x+1].'px solid '.$conf['LLGBO_FRAME'][$x].'">'."\n".$frame_begin;
308                                $bds =  $bds + $conf['LLGBO_FRAME'][$x+1];      //define border sum     
309                                $frame_end = $frame_end .' </div>';
310                        }
311                }
312                $frame_width = $ThePicture["scaled_width"] + (2 * $bds);
313                $frame_height = $ThePicture["scaled_height"] + (2 * $bds);
314        $template->assign('FRAME_SIZE','style="width:'.$frame_width .'px; height:'.$frame_height.'px;"');
315        $template->assign('FRAME_BEGIN', $frame_begin);
316        $template->assign('FRAME_END', $frame_end); 
317// title on frame       
318    If ($conf['LLGBO_SETTINGS'] [5]  == 'true' )  // title on frame
319                {$template->assign( array( 'TITLE_FRAME' => $ThePicture['name'] )); }   
320        }       // end frame
321        else 
322        // no frame
323{$template->clear_assign('FRAME_BEGIN') ;}
324
325$template->set_filenames( array('default_content'=> dirname(__FILE__).'/template/picture_content.tpl') );
326return $template->parse( 'default_content', true);
327} //end --> MyPictureOptions
328} // End class
329       
330/* trigger à intercepter                                   */ 
331add_event_handler('loc_begin_page_header', array(&$obj, 'MyBeginheader'));
332add_event_handler('loc_end_page_header', array(&$obj, 'Myheader'));
333Add_event_handler( 'loc_begin_picture', array(&$obj, 'AutoDisplayMetadata'));
334Add_event_handler( 'loc_end_picture', array(&$obj, 'DisplayGboLook'));
335add_event_handler('render_element_content',
336  array(&$obj,'MyPictureOptions'),  EVENT_HANDLER_PRIORITY_NEUTRAL-1,  2  );
337add_event_handler('get_admin_plugin_menu_links', array(&$obj, 'plugin_admin_menu') );
338set_plugin_data($plugin['id'], $obj);
339function afficher_tableau($tableau) 
340    {
341    // on fait une boucle qui lit les éléments du tableau
342    foreach ($tableau as $cle=>$valeur) 
343        {
344        // si l'un des éléments est lui même un tableau
345        // alors on applique la fonction à ce tableau
346        if(is_array($valeur)) 
347            {
348            // on affiche le nom de la clé et
349            // le début d'une liste pour
350            //  décaler le contenu vers la droite
351            print_r ($cle);
352                         echo  ' : <ul>'; 
353           
354            // ici se réalise la récursivité
355            // c'est à dire qu'on applique la fonction
356            // à l'élément en cours car c'est lui aussi un tableau
357            afficher_tableau($valeur); 
358           
359            // on ferme la liste
360            echo '</ul>'; 
361            }
362        } 
363    }
364?>
Note: See TracBrowser for help on using the repository browser.