source: extensions/meta_og/main.inc.php @ 32563

Last change on this file since 32563 was 32408, checked in by ddtddt, 4 years ago

[meta_og] piwigo 11

File size: 11.1 KB
Line 
1<?php
2/*
3Plugin Name: Meta Open Graph
4Version: auto
5Description: Allows to add metadata Open Graph
6Plugin URI: http://piwigo.org/ext/extension_view.php?eid=889
7Author: ddtddt
8Author URI: http://temmii.com/piwigo/
9Has Settings: true
10*/
11
12// +-----------------------------------------------------------------------+
13// | Meta Open Graph plugin for Piwigo by TEMMII                           |
14// +-----------------------------------------------------------------------+
15// | Copyright(C) 2020-2021 ddtddt               http://temmii.com/piwigo/ |
16// +-----------------------------------------------------------------------+
17// | This program is free software; you can redistribute it and/or modify  |
18// | it under the terms of the GNU General Public License as published by  |
19// | the Free Software Foundation                                          |
20// |                                                                       |
21// | This program is distributed in the hope that it will be useful, but   |
22// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
23// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
24// | General Public License for more details.                              |
25// |                                                                       |
26// | You should have received a copy of the GNU General Public License     |
27// | along with this program; if not, write to the Free Software           |
28// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
29// | USA.                                                                  |
30// +-----------------------------------------------------------------------+
31
32/*
33$conf['fb:app_id'] -> for use Insights Facebook
34$conf['mogsize'] > for size image
35$conf['moglocal'] > for local:og
36$conf['mogsitename'] > for og:site_name
37$conf['mogtwcard'] > for twitter:card
38$conf['mogtwsite'] > for twitter:site
39$conf['mogtwcreator'] > for twitter:creator
40$conf['mogshowpa'] > for change meta og photo on photo or album page
41$conf['moglista'] > list album for meta og photo
42
43type
441 : standart page
452 : photo
463 : Album
474 : AP
48
49*/
50
51if (!defined('PHPWG_ROOT_PATH'))
52    die('Hacking attempt!');
53
54global $prefixeTable, $page, $conf;
55
56define('metaog_DIR', basename(dirname(__FILE__)));
57define('metaog_PATH', PHPWG_PLUGINS_PATH . metaog_DIR . '/');
58define('METAOG_ADMIN',get_root_url().'admin.php?page=plugin-'.metaog_DIR);
59if (!defined('METAOG_TABLE'))
60  define('METAOG_TABLE', $prefixeTable . 'metaog');
61
62
63add_event_handler('loading_lang', 'metaog_loading_lang');         
64function metaog_loading_lang(){
65  load_language('plugin.lang', metaog_PATH);
66}
67
68// Plugin for admin
69if (script_basename() == 'admin') {
70    include_once(dirname(__FILE__) . '/initadmin.php');
71}
72
73//Gestion des meta dans le header
74add_event_handler('loc_end_page_header', 'add_metaog', 66);
75
76
77function add_metaog(){
78 global $template, $page, $metaog, $conf, $protocol, $pwg_loaded_plugins;
79 if(isset($_SERVER['HTTPS'])){if($_SERVER['HTTPS'] == 'on'){$protocol="https://";}}
80   else{$protocol="http://";}
81
82  if (isset($pwg_loaded_plugins['ExtendedDescription'])){
83    add_event_handler('AP_render_content', 'get_user_language_desc');
84  } 
85   
86 $metaogurl=$protocol.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
87 if (!empty($page['category']['id']) and empty($page['image_id'])){
88
89  $metaog = pwg_db_fetch_assoc(pwg_query("SELECT * FROM " . METAOG_TABLE . " WHERE type = 3 AND idobj = '".$page['category']['id']."';"));
90  if(empty($metaog)){
91        $metaog['metaogtitle']='';
92        $metaog['metaogdescription']='';
93        $metaog['metaogimage']='';
94  }     
95   
96  $albums = pwg_db_fetch_assoc(pwg_query("SELECT * FROM " . CATEGORIES_TABLE . " WHERE id = '".$page['category']['id']."';"));
97  $metaog['type']="website";
98  if(empty($metaog['metaogtitle'])){$metaog['metaogtitle']=$albums['name'];}
99  if(empty($metaog['metaogdescription'])){
100         $metaog['metaogdescription']=$albums['comment'];}
101         if (isset($pwg_loaded_plugins['ExtendedDescription'])){
102                        $metaog['metaogdescription']=trigger_change('AP_render_content', $metaog['metaogdescription']);
103                if( strstr($metaog['metaogdescription'],'<!--complete-->')) {
104                        $desc=explode('<!--complete-->', $metaog['metaogdescription']);
105                        $metaog['metaogdescription']=$desc[0];
106                } 
107                if( strstr($metaog['metaogdescription'],'<!--more-->')) {
108                        $desc=explode('<!--more-->', $metaog['metaogdescription']);
109                        $metaog['metaogdescription']=$desc[0];
110                }
111                if( strstr($metaog['metaogdescription'],'<!--up-down-->')) {
112                        $desc=explode('<!--up-down-->', $metaog['metaogdescription']);
113                        $metaog['metaogdescription']=$desc[0];
114                } 
115        }
116  if(empty($metaog['metaogimage'])){
117        if(isset($albums['representative_picture_id'])){
118          $images = pwg_db_fetch_assoc(pwg_query("SELECT id,path FROM " . IMAGES_TABLE . " WHERE id = '".$albums['representative_picture_id']."';"));
119        }
120  }else{
121        $images = pwg_db_fetch_assoc(pwg_query("SELECT id,path FROM " . IMAGES_TABLE . " WHERE id = '".$metaog['metaogimage']."';"));
122  }
123  if(isset($images)){
124      $metaog['metaogimage']=PWG_DERIVATIVE_DIR.substr($images['path'], 2, -4)."-".$conf['mogsize'].substr($images['path'],-4);
125          if (file_exists($metaog['metaogimage']) AND $conf['mogsize']!='original'){
126                $metaog['metaogimage']=get_absolute_root_url().PWG_DERIVATIVE_DIR.substr($images['path'], 2, -4)."-".$conf['mogsize'].substr($images['path'],-4);
127          }else{
128        $metaog['metaogimage']=get_absolute_root_url().substr($images['path'],2);
129          }
130  } 
131 }else if (!empty($page['image_id'])) {
132  $metaog = pwg_db_fetch_assoc(pwg_query("SELECT * FROM " . METAOG_TABLE . " WHERE type = 2 AND idobj = '".$page['image_id']."';"));
133  if(empty($metaog)){
134        $metaog['metaogtitle']='';
135        $metaog['metaogdescription']='';
136        $metaog['metaogimage']='';
137  }             
138
139  $images = pwg_db_fetch_assoc(pwg_query("SELECT * FROM " . IMAGES_TABLE . " WHERE id = '".$page['image_id']."';"));
140  $metaog['type']="website";
141  if(empty($metaog['metaogtitle'])){$metaog['metaogtitle']=$images['name'];}
142  if(empty($metaog['metaogdescription'])){$metaog['metaogdescription']=$images['comment'];}
143  if(!empty($metaog['metaogimage'])){
144    $images2 = pwg_db_fetch_assoc(pwg_query("SELECT id,path FROM " . IMAGES_TABLE . " WHERE id = '".$metaog['metaogimage']."';"));
145        $images['path']=$images2['path'];
146  }
147  $metaog['metaogimage']=PWG_DERIVATIVE_DIR.substr($images['path'], 2, -4)."-".$conf['mogsize'].substr($images['path'],-4);
148  if (file_exists($metaog['metaogimage']) AND $conf['mogsize']!='original'){
149        $metaog['metaogimage']=get_absolute_root_url().PWG_DERIVATIVE_DIR.substr($images['path'], 2, -4)."-".$conf['mogsize'].substr($images['path'],-4);
150  }else{
151    $metaog['metaogimage']=get_absolute_root_url().substr($images['path'],2);
152  }
153 }else if(isset($page['section']) and empty($page['category']['id']))  {
154                if($page['section'] == 'additional_page'){
155                   $metaog = pwg_db_fetch_assoc(pwg_query("SELECT * FROM " . METAOG_TABLE . " WHERE type =4 AND page = '".$page['additional_page']['id']."';"));
156                }else{
157                   $metaog = pwg_db_fetch_assoc(pwg_query("SELECT * FROM " . METAOG_TABLE . " WHERE type =1 AND page = '".$page['section']."';"));
158                }
159  if(empty($metaog)){
160        $metaog['metaogtitle']='';
161        $metaog['metaogdescription']='';
162        $metaog['metaogimage']='';
163  }
164  if(!empty($metaog['metaogimage'])){
165        $images = pwg_db_fetch_assoc(pwg_query("SELECT id,path FROM " . IMAGES_TABLE . " WHERE id = '".$metaog['metaogimage']."';"));
166      $metaog['metaogimage']=PWG_DERIVATIVE_DIR.substr($images['path'], 2, -4)."-".$conf['mogsize'].substr($images['path'],-4);
167          if (file_exists($metaog['metaogimage']) AND $conf['mogsize']!='original'){
168                $metaog['metaogimage']=get_absolute_root_url().PWG_DERIVATIVE_DIR.substr($images['path'], 2, -4)."-".$conf['mogsize'].substr($images['path'],-4);
169          }else{
170        $metaog['metaogimage']=get_absolute_root_url().substr($images['path'],2);
171          }
172  }
173  $metaog['type']="website";
174}else if(script_basename() == 'tags' ||script_basename() == 'comments'||script_basename() == 'about'||script_basename() == 'search'||script_basename() == 'notification'){
175        $metaog = pwg_db_fetch_assoc(pwg_query("SELECT * FROM " . METAOG_TABLE . " WHERE type = 1 AND page = '".script_basename()."';"));
176  if(empty($metaog)){
177        $metaog['metaogtitle']='';
178        $metaog['metaogdescription']='';
179        $metaog['metaogimage']='';
180  }
181
182  if(!empty($metaog['metaogimage']) AND $conf['mogsize']!='original'){
183        $images = pwg_db_fetch_assoc(pwg_query("SELECT id,path FROM " . IMAGES_TABLE . " WHERE id = '".$metaog['metaogimage']."';"));
184      $metaog['metaogimage']=PWG_DERIVATIVE_DIR.substr($images['path'], 2, -4)."-".$conf['mogsize'].substr($images['path'],-4);
185          if (file_exists($metaog['metaogimage'])){
186                $metaog['metaogimage']=get_absolute_root_url().PWG_DERIVATIVE_DIR.substr($images['path'], 2, -4)."-".$conf['mogsize'].substr($images['path'],-4);
187          }else{
188        $metaog['metaogimage']=get_absolute_root_url().substr($images['path'],2);
189          }
190  } 
191  $metaog['type']="website";
192}else{
193  $metaog['type']="website";
194  $metaog['metaogtitle']=$template->get_template_vars('PAGE_TITLE');
195  $metaog['metaogdescription']=$template->get_template_vars('INFO_FILE');
196}
197
198
199
200  // og:url
201  if (!empty($metaogurl)) {
202    $template->append('head_elements', '<meta property="og:url" content="' . $metaogurl . '">');
203  }
204    // og:type
205  if (!empty($metaog['type'])) {
206    $template->append('head_elements', '<meta property="og:type" content="' . $metaog['type'] . '">');
207  }
208 
209    // og:title
210  if (!empty($metaog['metaogtitle'])) {
211    $template->append('head_elements', '<meta property="og:title" content="' . strip_tags(trigger_change('AP_render_content', $metaog['metaogtitle'])) . '">');
212  }
213 
214    // og:description
215  if (!empty($metaog['metaogdescription'])) {
216    $template->append('head_elements', '<meta property="og:description" content="' . strip_tags($metaog['metaogdescription']) . '">');
217  }
218 
219    // og:image
220  if (!empty($metaog['metaogimage'])) {
221        $metaog['metaogimagetype']=substr($metaog['metaogimage'],-3);
222        if($metaog['metaogimagetype']=='jpg'){$metaog['metaogimagetype']='jpeg';}
223    $template->append('head_elements', '<meta property="og:image" content="' . $metaog['metaogimage'] . '">');
224        $template->append('head_elements', '<meta property="og:image:type" content="image/' . $metaog['metaogimagetype'] . '">');
225  }
226 
227    // og:app_id
228  if (!empty($conf['fb:app_id'])) {
229    $template->append('head_elements', '<meta property="fb:app_id" content="' . $conf['fb:app_id'] . '">');
230  }
231    // og:local
232  if (!empty($conf['moglocal'])) {
233    $template->append('head_elements', '<meta property="og:locale" content="' . $conf['moglocal'] . '">');
234  }
235 
236    // og:site_name
237  if (!empty($conf['mogsitename'])) {
238    $template->append('head_elements', '<meta property="og:site_name" content="' . $conf['mogsitename'] . '">');
239  }
240 
241    // twitter:card
242  if (!empty($conf['mogtwcard'])) {
243    $template->append('head_elements', '<meta property="twitter:card" content="' . $conf['mogtwcard'] . '">');
244  }
245 
246    // twitter:site
247  if (!empty($conf['mogtwsite'])) {
248    $template->append('head_elements', '<meta property="twitter:site" content="' . $conf['mogtwsite'] . '">');
249  }
250 
251    // twitter:creator
252  if (!empty($conf['mogtwcreator'])) {
253    $template->append('head_elements', '<meta property="twitter:creator" content="' . $conf['mogtwcreator'] . '">');
254  }
255}
256?>
Note: See TracBrowser for help on using the repository browser.