source: extensions/SocialButtons/main.inc.php @ 21248

Last change on this file since 21248 was 21232, checked in by mistic100, 11 years ago

use Piwigo 2.5 template methods, share complete link, option to disable on albums

File size: 5.5 KB
Line 
1<?php 
2/*
3Plugin Name: Social Buttons
4Version: auto
5Description: Sharing functions for Facebook, Twitter, Google+ and Tumblr
6Plugin URI: auto
7Author: Mistic
8Author URI: http://www.strangeplanet.fr
9*/
10
11defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
12
13global $prefixeTable;
14
15// +-----------------------------------------------------------------------+
16// | Define plugin constants                                               |
17// +-----------------------------------------------------------------------+
18defined('SOCIALBUTT_ID') or define('SOCIALBUTT_ID', basename(dirname(__FILE__)));
19define('SOCIALBUTT_PATH' ,   PHPWG_PLUGINS_PATH . SOCIALBUTT_ID . '/');
20define('SOCIALBUTT_ADMIN',   get_root_url() . 'admin.php?page=plugin-' . SOCIALBUTT_ID);
21define('SOCIALBUTT_VERSION', 'auto');
22
23
24// +-----------------------------------------------------------------------+
25// | Add event handlers                                                    |
26// +-----------------------------------------------------------------------+
27// init the plugin
28add_event_handler('init', 'socialbutt_init');
29
30if (defined('IN_ADMIN'))
31{
32  add_event_handler('get_admin_plugin_menu_links', 'socialbutt_admin_plugin_menu_links');
33 
34  function socialbutt_admin_plugin_menu_links($menu) 
35  {
36    array_push($menu, array(
37      'NAME' => 'Social Buttons',
38      'URL' => SOCIALBUTT_ADMIN,
39    ));
40    return $menu;
41  }
42}
43else
44{
45  add_event_handler('loc_end_picture', 'socialbutt_add_button');
46  add_event_handler('loc_end_index', 'socialbutt_add_button');
47}
48
49
50/**
51 * plugin initialization
52 */
53function socialbutt_init()
54{
55  global $conf, $pwg_loaded_plugins;
56 
57  // apply upgrade if needed
58  if (
59    SOCIALBUTT_VERSION == 'auto' or
60    $pwg_loaded_plugins[SOCIALBUTT_ID]['version'] == 'auto' or
61    version_compare($pwg_loaded_plugins[SOCIALBUTT_ID]['version'], SOCIALBUTT_VERSION, '<')
62  )
63  {
64    // call install function
65    include_once(SOCIALBUTT_PATH . 'include/install.inc.php');
66    socialbutt_install();
67   
68    // update plugin version in database
69    if ( $pwg_loaded_plugins[SOCIALBUTT_ID]['version'] != 'auto' and SOCIALBUTT_VERSION != 'auto' )
70    {
71      $query = '
72UPDATE '. PLUGINS_TABLE .'
73SET version = "'. SOCIALBUTT_VERSION .'"
74WHERE id = "'. SOCIALBUTT_ID .'"';
75      pwg_query($query);
76     
77      $pwg_loaded_plugins[SOCIALBUTT_ID]['version'] = SOCIALBUTT_VERSION;
78     
79      if (defined('IN_ADMIN'))
80      {
81        $_SESSION['page_infos'][] = 'Social Buttons updated to version '. SOCIALBUTT_VERSION;
82      }
83    }
84  }
85 
86  // prepare plugin configuration
87  $conf['SocialButtons'] = unserialize($conf['SocialButtons']);
88}
89
90
91/**
92 * add buttons
93 */
94function socialbutt_add_button()
95{
96  global $conf, $template;
97 
98  $basename = script_basename();
99  $root_url = get_absolute_root_url();
100 
101  if ($basename == 'picture')
102  {
103    $share_url = $root_url.ltrim(duplicate_picture_url(), './');
104  }
105  else if ($basename == 'index' and $conf['SocialButtons']['on_index'])
106  {
107    $conf['SocialButtons']['position'] = 'index';
108    $share_url = $root_url.ltrim(duplicate_index_url(array(), array('start')), './');
109  }
110  else
111  {
112    return;
113  }
114 
115 
116  define('SOCIALBUTT_POSITION', $conf['SocialButtons']['position']);
117  $tpl_vars = array(
118    'share_url' => $share_url,
119    'position' => $conf['SocialButtons']['position'],
120    'copyright' => ' (from <a href="'.$share_url.'">'.$conf['gallery_title'].'</a>)',
121    );
122  $buttons = array();
123 
124 
125  if ($conf['SocialButtons']['google']['enabled'])
126  {
127    include_once(SOCIALBUTT_PATH . 'include/google.inc.php');
128    socialbutt_google($basename, $root_url, $tpl_vars, $buttons);
129  }
130  if ($conf['SocialButtons']['twitter']['enabled'])
131  {
132    include_once(SOCIALBUTT_PATH . 'include/twitter.inc.php');
133    socialbutt_twitter($basename, $root_url, $tpl_vars, $buttons);
134  }
135  if ($conf['SocialButtons']['facebook']['enabled'])
136  {
137    include_once(SOCIALBUTT_PATH . 'include/facebook.inc.php');
138    socialbutt_facebook($basename, $root_url, $tpl_vars, $buttons);
139  }
140  if ($conf['SocialButtons']['tumblr']['enabled'])
141  {
142    include_once(SOCIALBUTT_PATH . 'include/tumblr.inc.php');
143    socialbutt_tumblr($basename, $root_url, $tpl_vars, $buttons);
144  }
145  if ($conf['SocialButtons']['pinterest']['enabled'] and $basename=='picture')
146  {
147    include_once(SOCIALBUTT_PATH . 'include/pinterest.inc.php');
148    socialbutt_pinterest($basename, $root_url, $tpl_vars, $buttons);
149  }
150 
151  if (empty($buttons))
152  {
153    return;
154  }
155 
156 
157  $template->assign(array(
158    'SOCIALBUTT' => $tpl_vars,
159    'SOCIALBUTT_PATH' => SOCIALBUTT_PATH,
160    ));
161 
162  // parse buttons
163  foreach ($buttons as &$button)
164  {
165    $button = $template->parse($button, true);
166  }
167  unset($button);
168 
169  switch ($conf['SocialButtons']['position'])
170  {
171    case 'index':
172      foreach ($buttons as $button) {
173        $template->add_index_button('<li>'.$button.'</li>', 100);
174      }
175      break;
176    case 'toolbar':
177      foreach ($buttons as $button) {
178        $template->add_picture_button($button, 100);
179      }
180      break;
181    default;
182      $template->assign('SOCIALBUTT_BUTTONS', $buttons);
183      $template->set_prefilter('picture', 'socialbutt_add_button_prefilter');
184  }
185}
186
187function socialbutt_add_button_prefilter($content)
188{
189  switch (SOCIALBUTT_POSITION)
190  {
191    case 'top':
192      $search = '<div id="theImage">';
193      $add = '<div>{foreach from=$SOCIALBUTT_BUTTONS item=BUTTON}{$BUTTON} {/foreach}</div>';
194      break;
195     
196    case 'bottom':
197      $search = '{$ELEMENT_CONTENT}';
198      $add = '<div>{foreach from=$SOCIALBUTT_BUTTONS item=BUTTON}{$BUTTON} {/foreach}</div>';
199      break;
200  }
201
202  return str_replace($search, $search.$add, $content);
203}
204
205?>
Note: See TracBrowser for help on using the repository browser.