source: extensions/FacebookPlug/Plugin/include/header.inc.php @ 8436

Last change on this file since 8436 was 8436, checked in by rub, 13 years ago

Add share icon on picture and album page

Rename footer.lang.php to common.lang.php
Remove use of target to open a new window

  • Property svn:eol-style set to LF
File size: 7.0 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | FacebookPlug - a Piwigo Plugin                                        |
4// | Copyright (C) 2010-2011 Ruben ARNAUD - rub@piwigo.org                 |
5// +-----------------------------------------------------------------------+
6// | This program is free software; you can redistribute it and/or modify  |
7// | it under the terms of the GNU General Public License as published by  |
8// | the Free Software Foundation                                          |
9// |                                                                       |
10// | This program is distributed in the hope that it will be useful, but   |
11// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
12// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
13// | General Public License for more details.                              |
14// |                                                                       |
15// | You should have received a copy of the GNU General Public License     |
16// | along with this program; if not, write to the Free Software           |
17// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
18// | USA.                                                                  |
19// +-----------------------------------------------------------------------+
20
21if (!defined('PHPWG_ROOT_PATH'))
22{
23  die('Hacking attempt!');
24}
25
26function fbp_get_fb_language()
27{
28  global $user;
29
30  // Array compute by plugins/FacebookPlug/tools/check_language.php script
31  $valid_fb_languages = array ( 0 => 'ca_ES', 1 => 'cs_CZ', 2 => 'da_DK', 3 => 'de_DE', 4 => 'es_ES', 5 => 'fa_IR', 6 => 'fr_CA', 7 => 'fr_FR', 8 => 'he_IL', 9 => 'hr_HR', 10 => 'hu_HU', 11 => 'it_IT', 12 => 'ja_JP', 13 => 'ka_GE', 14 => 'lv_LV', 15 => 'mk_MK', 16 => 'nl_NL', 17 => 'pl_PL', 18 => 'pt_BR', 19 => 'pt_PT', 20 => 'ro_RO', 21 => 'ru_RU', 22 => 'sk_SK', 23 => 'sr_RS', 24 => 'sv_SE', 25 => 'tr_TR', 26 => 'vi_VN', 27 => 'zh_CN', );
32
33  // User language
34  $language = $user['language'];
35  if (! in_array($language, $valid_fb_languages))
36  {
37    $code_lang = substr($language, 0, 2);
38    // Compose a language
39    $language = $code_lang.'_'.strtoupper($code_lang);
40    if (! in_array($language, $valid_fb_languages))
41    {
42      // Search a language
43      foreach ($valid_fb_languages as $valid_fb_language)
44      {
45        if ($code_lang == substr($valid_fb_language, 0, 2))
46        {
47          return $valid_fb_language;
48        }
49      }
50      // default language
51      $language = 'en_US';
52    }
53  }
54
55  return $language;
56}
57
58function fbp_header($content, &$smarty)
59{
60  // replace tag html
61  $search = '<html ';
62  $replacement = '<html xmlns:fb="http://www.facebook.com/2008/fbml" ';
63
64  //~ $content = preg_replace('#'.$search.'#', $replacement, $content);
65  return preg_replace('#'.$search.'#', $replacement, $content);
66  //~ $fbp_content = file_get_contents(FBP_DIR.'/tpl/init.fb.tpl');
67
68  //~ $search = '<div id="the_page">';
69  //~ return preg_replace('#'.$search.'#', $fbp_content.$search, $content);
70}
71
72function fbp_init()
73{
74  global $template, $conf, $user, $page;
75
76  // Lingua
77  load_language('common.lang', FBP_DIR.'/');
78
79  // Get init facebook
80  $page['fbp']['do_facebook_init'] = trigger_event('fbp_do_facebook_init', $conf['fbp']['force_facebook_init']);
81  if ($page['fbp']['do_facebook_init'])
82  {
83    // define ID
84    $template->assign('FACEBOOK_APP_ID', (is_numeric($conf['fbp']['facebook_app_id']) ? $conf['fbp']['facebook_app_id'] : FACEBOOK_APP_ID));
85    // define language
86    $template->assign('FACEBOOK_LANGUAGE', fbp_get_fb_language());
87    $template->assign('FBP_PATH', FBP_PATH);
88    $template->assign('fbp', $conf['fbp']);
89    //~ $template->smarty->register_modifier('boolean_to_string', 'boolean_to_string');
90  }
91}
92
93function fbp_loc_end_page_header()
94{
95  global $template, $conf, $user, $page;
96
97  if ($page['fbp']['do_facebook_init'])
98  {
99    // set prefilter
100    $template->set_prefilter('header', 'fbp_header');
101
102    if (empty($page['fbp']['url']))
103    {
104      $page['fbp']['url'] = get_absolute_root_url().script_basename();
105      if ($conf['php_extension_in_urls'])
106      {
107        $page['fbp']['url'] .= '.php';
108      }
109    }
110
111    $template->assign('fbp_page', $page['fbp']);
112
113    $template->set_filename('fbp_init.fb', FBP_DIR.'/tpl/init.fb.tpl');
114    $template->append('head_elements', $template->parse('fbp_init.fb', true));
115
116    if (
117        (script_basename() == 'index')
118        and
119        ($conf['fbp']['social_plugin_activity_feed']['enabled'] or $conf['fbp']['social_plugin_like_box']['enabled'])
120        )
121    {
122      $template->block_html_head('', '<link rel="stylesheet" type="text/css" href="'.FBP_PATH.'/css/fbp.css">', $smarty, $repeat);
123    }
124  }
125}
126
127function fbp_do_facebook_init($do_it)
128{
129  global $conf;
130
131  return 
132    $do_it
133  or
134    (
135      (
136        (script_basename() == 'picture')
137        and
138        ($conf['fbp']['social_plugin_like_button']['enabled'] or $conf['fbp']['social_plugin_facepile']['enabled'] or $conf['fbp']['social_plugin_comments']['enabled'] or $conf['fbp']['share_picture'])
139      )
140      or
141      (
142        (script_basename() == 'index')
143        and
144        ($conf['fbp']['social_plugin_activity_feed']['enabled'] or $conf['fbp']['social_plugin_like_box']['enabled'] or $conf['fbp']['share_album'])
145      )
146      or
147      (
148        (script_basename() == 'admin')
149        and
150        (isset($_GET['page']) and $_GET['page'] == 'plugin')
151        and
152        (isset($_GET['section']) and strtok($_GET['section'], '/') == 'FacebookPlug')
153      )
154    )
155  ;
156}
157
158function fbp_is_facebook_ip()
159{
160  foreach (array(
161    FBP_IP_FB, 
162    //~ '127.0',
163      ) as $ip_fb)
164  {
165    if (preg_match('/'.$ip_fb. '/', $_SERVER["REMOTE_ADDR"]))
166    {
167      return true;
168    }
169  }
170  return false;
171}
172
173function ftp_loc_end_section_init()
174{
175  global $conf, $page, $user;
176
177  // No restristion for facebook user
178  if (
179      $page['fbp']['do_facebook_init']
180      and 
181      is_a_guest()
182      and
183      $conf['fbp']['allow_fb_access_private_page']
184      and
185      fbp_is_facebook_ip()
186    )
187  {
188    global $user, $header_notes;
189
190    // Notes
191    $header_notes[] = 'Facebook robot detected, guest can access private page';
192    // Allow guest access
193    $conf['guest_access'] = true;
194    // No forbidden categorie
195    $user['forbidden_categories'] = '';
196    $user['level'] = max($conf['available_permission_levels']);
197    switch (script_basename())
198    {
199      case 'picture':
200        if (isset($page['image_id']))
201        {
202          $page['rank_of'][$page['image_id']] = 0;
203          $page['items'] = array_flip($page['rank_of']);
204        }
205        break;
206      case 'index':
207        if (isset($page['category']['representative_picture_id']))
208        {
209          fbp_loc_begin_index_category_thumbnails(array($page['category']));
210        }
211      break;
212    }
213    //~ else if $page['category']['id']
214  }
215}
216
217add_event_handler('init', 'fbp_init');
218add_event_handler('loc_end_page_header', 'fbp_loc_end_page_header');
219add_event_handler('fbp_do_facebook_init', 'fbp_do_facebook_init');
220add_event_handler('loc_end_section_init', 'ftp_loc_end_section_init');
221
222?>
Note: See TracBrowser for help on using the repository browser.