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

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

remove "no caption" option for facebook (buggy)
fix urls
fix pinterest javascript

File size: 5.6 KB
RevLine 
[20358]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();
[23201]99  set_make_full_url();
[20358]100  $root_url = get_absolute_root_url();
101 
102  if ($basename == 'picture')
103  {
[23201]104    // global $picture;
105   
106    // if ($picture['current']['level'] > 0) return;
107   
108    $share_url = duplicate_picture_url();
[20358]109  }
[21232]110  else if ($basename == 'index' and $conf['SocialButtons']['on_index'])
[20358]111  {
112    $conf['SocialButtons']['position'] = 'index';
[23201]113    $share_url = duplicate_index_url(array(), array('start'));
[20358]114  }
115  else
116  {
117    return;
118  }
119 
120 
121  define('SOCIALBUTT_POSITION', $conf['SocialButtons']['position']);
122  $tpl_vars = array(
123    'share_url' => $share_url,
124    'position' => $conf['SocialButtons']['position'],
[23201]125    'copyright' => '(from <a href="'.$share_url.'">'.$conf['gallery_title'].'</a>)',
[20358]126    );
127  $buttons = array();
128 
129 
130  if ($conf['SocialButtons']['google']['enabled'])
131  {
132    include_once(SOCIALBUTT_PATH . 'include/google.inc.php');
[20374]133    socialbutt_google($basename, $root_url, $tpl_vars, $buttons);
[20358]134  }
135  if ($conf['SocialButtons']['twitter']['enabled'])
136  {
137    include_once(SOCIALBUTT_PATH . 'include/twitter.inc.php');
[20374]138    socialbutt_twitter($basename, $root_url, $tpl_vars, $buttons);
[20358]139  }
140  if ($conf['SocialButtons']['facebook']['enabled'])
141  {
142    include_once(SOCIALBUTT_PATH . 'include/facebook.inc.php');
[20374]143    socialbutt_facebook($basename, $root_url, $tpl_vars, $buttons);
[20358]144  }
145  if ($conf['SocialButtons']['tumblr']['enabled'])
146  {
147    include_once(SOCIALBUTT_PATH . 'include/tumblr.inc.php');
[20374]148    socialbutt_tumblr($basename, $root_url, $tpl_vars, $buttons);
[20358]149  }
[20374]150  if ($conf['SocialButtons']['pinterest']['enabled'] and $basename=='picture')
151  {
152    include_once(SOCIALBUTT_PATH . 'include/pinterest.inc.php');
153    socialbutt_pinterest($basename, $root_url, $tpl_vars, $buttons);
154  }
[20358]155 
[23201]156  unset_make_full_url();
157 
[20358]158  if (empty($buttons))
159  {
160    return;
161  }
162 
163 
[20406]164  $template->assign(array(
165    'SOCIALBUTT' => $tpl_vars,
166    'SOCIALBUTT_PATH' => SOCIALBUTT_PATH,
167    ));
[20358]168 
169  // parse buttons
170  foreach ($buttons as &$button)
171  {
172    $button = $template->parse($button, true);
173  }
174  unset($button);
175 
176  switch ($conf['SocialButtons']['position'])
177  {
178    case 'index':
179      foreach ($buttons as $button) {
[21232]180        $template->add_index_button('<li>'.$button.'</li>', 100);
[20358]181      }
182      break;
183    case 'toolbar':
184      foreach ($buttons as $button) {
[21232]185        $template->add_picture_button($button, 100);
[20358]186      }
187      break;
188    default;
189      $template->assign('SOCIALBUTT_BUTTONS', $buttons);
190      $template->set_prefilter('picture', 'socialbutt_add_button_prefilter');
191  }
192}
193
194function socialbutt_add_button_prefilter($content)
195{
196  switch (SOCIALBUTT_POSITION)
197  {
198    case 'top':
199      $search = '<div id="theImage">';
[21232]200      $add = '<div>{foreach from=$SOCIALBUTT_BUTTONS item=BUTTON}{$BUTTON} {/foreach}</div>';
[20358]201      break;
202     
203    case 'bottom':
204      $search = '{$ELEMENT_CONTENT}';
[21232]205      $add = '<div>{foreach from=$SOCIALBUTT_BUTTONS item=BUTTON}{$BUTTON} {/foreach}</div>';
[20358]206      break;
207  }
208
209  return str_replace($search, $search.$add, $content);
210}
211
212?>
Note: See TracBrowser for help on using the repository browser.