source: extensions/FacebookPlug/Plugin/include/picture.inc.php @ 8250

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

Fix use render_element_content to add XFBML
Begin like box implementation

  • Property svn:eol-style set to LF
File size: 6.8 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | FacebookPlug - a Piwigo Plugin                                        |
4// | Copyright (C) 2010 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_header($content, &$smarty)
27{
28  global $conf;
29
30  // replace tag html
31  $search = '<html ';
32  $replacement = '<html xmlns:fb="http://www.facebook.com/2008/fbml" ';
33
34  $content = preg_replace('#'.$search.'#', $replacement, $content);
35
36  // Piwigo init
37  if ($conf['fbp']['async_script'])
38  {
39    // async method
40    $fbp_content = '
41<div id="fb-root"></div>
42<script>
43{literal}
44  window.fbAsyncInit = function() {
45    FB.init({
46      appId  : \''.FACEBOOK_APP_ID.'\',
47      status : true, // check login status
48      cookie : true, // enable cookies to allow the server to access the session
49      xfbml  : true  // parse XFBML
50    });
51  };
52  (function() {
53    var e = document.createElement(\'script\');
54  {/literal}
55    e.src = document.location.protocol + \'//connect.facebook.net/{$LANGUAGE}/all.js\';
56{literal}
57    e.async = true;
58    document.getElementById(\'fb-root\').appendChild(e);
59  }());
60{/literal}
61</script>
62';
63  }
64  else
65  {
66    // sync method
67    $fbp_content = '
68<div id="fb-root"></div>
69<script src="http://connect.facebook.net/en_US/all.js"></script>
70<script>
71  FB.init({ldelim}
72    appId  : \''.FACEBOOK_APP_ID.'\',
73    status : true, // check login status
74    cookie : true, // enable cookies to allow the server to access the session
75    xfbml  : true  // parse XFBML
76 {rdelim});
77</script>
78<script src="http://connect.facebook.net/{$LANGUAGE}/all.js#xfbml=1"></script>
79';
80  }
81
82  $search = '<div id="the_page">';
83  return preg_replace('#'.$search.'#', $fbp_content.$search, $content);
84}
85
86function fbp_loc_begin_picture()
87{
88  global $template, $user, $page, $conf, $picture;
89
90  // set prefilter
91  $template->set_prefilter('header', 'fbp_header');
92}
93
94function fbp_bool2str($value)
95{
96  return ($value ? 'true' : 'false');
97}
98
99function fbp_render_element_content($content, $current_picture)
100{
101  global $template, $user, $page, $conf, $picture;
102
103  if ($page['slideshow'])
104  {
105    // nothing to do on slideshow other media aren't usable
106    return $content;
107  }
108
109  if ($conf['fbp']['social_plugin_like_button']['enabled'] or $conf['fbp']['social_plugin_like_box']['enabled'])
110  {
111    // define language
112    $template->assign('LANGUAGE', $user['language']);
113    // define picture FB link
114    // Always use full url for FB social plugin
115    set_make_full_url();
116    if ($conf['fbp']['social_plugin_like_button']['url_type'] == 'image')
117    {
118      $fbp_url_picture = get_element_url($current_picture);
119    }
120    else
121    {
122      $fbp_url_picture = make_picture_url(array('image_id' => $page['image_id']));
123    }
124    unset_make_full_url();
125    //~ $template->assign('FBP_URL_PICTURE', $fbp_url_picture);
126    //~ $template->assign('FBP_SOCIAL_PLUGIN_LIKE_BUTTON', $conf['fbp']['social_plugin_like_button']);
127    //~ $template->assign('FBP_SOCIAL_PLUGIN_LIKE_BOX', $conf['fbp']['social_plugin_like_box']);
128
129     // iframe implementation
130    /*  $$content = '
131    <iframe src="http://www.facebook.com/plugins/like.php?href={$SRC_IMG}&amp;layout=standard&amp;show_faces=true&amp;width={$WIDTH_IMG}&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:{$WIDTH_IMG}px; height:80px;" allowTransparency="true"></iframe>
132    ';*/
133    // XFBML implementation
134    //~ $content .= '
135//~ <div id="fb-xfbml">';
136    if ($conf['fbp']['social_plugin_like_button']['enabled'])
137    {
138      $content .= '
139<div id="fb-xfbml">
140<fb:like href="'.$fbp_url_picture.'" layout="'.$conf['fbp']['social_plugin_like_button']['layout'].'" show_faces="'.fbp_bool2str($conf['fbp']['social_plugin_like_button']['show_faces']).'" width="'.@$current_picture['scaled_width'].'" action="'.$conf['fbp']['social_plugin_like_button']['action'].'" colorscheme="'.$conf['fbp']['social_plugin_like_button']['colorscheme'].'"></fb:like>
141</div>';
142    }
143    if ($conf['fbp']['social_plugin_like_box']['enabled'])
144    {
145      $content .= '
146<div id="fb-xfbml">
147<fb:like-box href="'.$fbp_url_picture.'" width="'.@$current_picture['scaled_width'].'" show_faces="'.fbp_bool2str($conf['fbp']['social_plugin_like_box']['show_faces']).'" stream="'.fbp_bool2str($conf['fbp']['social_plugin_like_box']['stream']).'" header="'.fbp_bool2str($conf['fbp']['social_plugin_like_box']['header']).'"></fb:like-box>
148</div>';
149    }
150
151    //~ $content .= '
152//~ </div>';
153}
154
155  return $content;
156}
157
158function ftp_loc_end_section_init()
159{
160  global $conf;
161
162  if ($conf['fbp']['social_plugin_like_button']['enabled'] or $conf['fbp']['social_plugin_like_box']['enabled'])
163  {
164    if ($conf['fbp']['allow_fb_access_private_page'])
165    {
166      global $user, $page;
167
168      // No restristion for facebook user
169      if (preg_match('/'.FBP_IP_FB. '/', $_SERVER["REMOTE_ADDR"]))
170      {
171        //Allow guest access
172        $conf['guest_access'] = true;
173        // No forbidden categorie
174        $user['forbidden_categories'] = '';
175        $user['level'] = max($conf['available_permission_levels']);
176        $page['rank_of'][$page['image_id']] = 0;
177        $page['items'] = array_flip($page['rank_of']);
178      }
179    }
180  }
181}
182
183if ($conf['fbp']['social_plugin_like_button']['enabled'] or $conf['fbp']['social_plugin_like_box']['enabled'])
184{
185  add_event_handler('loc_begin_picture', 'fbp_loc_begin_picture');
186  add_event_handler('render_element_content', 'fbp_render_element_content', EVENT_HANDLER_PRIORITY_NEUTRAL+1 /*in order to have picture content*/, 2);
187  //~ add_event_handler('loc_end_picture', 'fbp_loc_end_picture');
188  add_event_handler('loc_end_section_init', 'ftp_loc_end_section_init');
189}
190
191?>
Note: See TracBrowser for help on using the repository browser.