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

Last change on this file since 4869 was 4869, checked in by EXFTB, 14 years ago

Compatible extended description

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