source: extensions/meta/main.inc.php @ 29125

Last change on this file since 29125 was 29125, checked in by ddtddt, 10 years ago

[meta] Add description if plugin meta description is empty

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 8.9 KB
Line 
1<?php
2/*
3  Plugin Name: meta
4  Version: auto
5  Description: Allows to add metadata
6  Plugin URI: http://piwigo.org/ext/extension_view.php?eid=220
7  Author: ddtddt
8  Author URI: http://piwigo.org/
9 */
10
11if (!defined('PHPWG_ROOT_PATH'))
12    die('Hacking attempt!');
13
14global $prefixeTable, $page;
15
16define('meta_DIR', basename(dirname(__FILE__)));
17define('meta_PATH', PHPWG_PLUGINS_PATH . meta_DIR . '/');
18define('meta_TABLE', $prefixeTable . 'meta');
19define('meta_img_TABLE', $prefixeTable . 'meta_img');
20define('meta_cat_TABLE', $prefixeTable . 'meta_cat');
21define('METAPERSO_TABLE', $prefixeTable . 'metaperso');
22define('META_AP_TABLE', $prefixeTable . 'meta_ap');
23
24// Plugin for admin
25if (script_basename() == 'admin') {
26    include_once(dirname(__FILE__) . '/initadmin.php');
27}
28
29
30//Gestion des meta dans le header
31add_event_handler('loc_begin_page_header', 'Change_Meta', 20);
32add_event_handler('loc_end_page_header', 'add_meta', 56);
33add_event_handler('loc_end_page_header', 'add_metacat', 61);
34add_event_handler('loc_end_page_header', 'add_metaimg', 71);
35add_event_handler('loc_after_page_header', 'set_meta_back');
36
37function Change_Meta() {
38    global $template;
39    $template->set_prefilter('header', 'upmata');
40
41    $PAED = pwg_db_fetch_assoc(pwg_query("SELECT state FROM " . PLUGINS_TABLE . " WHERE id = 'ExtendedDescription';"));
42    if ($PAED['state'] == 'active')
43        add_event_handler('AP_render_content', 'get_user_language_desc');
44}
45
46function upmata($content, &$smarty) {
47    $search = '#<meta name="description" content=".*?">#';
48
49    $replacement = '<meta name="description" content="{$PLUG_META}">';
50
51    return preg_replace($search, $replacement, $content);
52}
53
54function add_meta() {
55    global $template, $page, $meta_infos;
56    $meta_infos = array();
57    $meta_infos['author'] = $template->get_template_vars('INFO_AUTHOR');
58    $meta_infos['related_tags'] = $template->get_template_vars('related_tags');
59    $meta_infos['info'] = $template->get_template_vars('INFO_FILE');
60    $meta_infos['title'] = $template->get_template_vars('PAGE_TITLE');
61
62    $query = '
63  select id,metaname,metaval
64    FROM ' . meta_TABLE . '
65    WHERE metaname IN (\'author\', \'keywords\', \'Description\', \'robots\')
66    ;';
67    $result = pwg_query($query);
68    $meta = array();
69    while ($row = pwg_db_fetch_assoc($result)) {
70        $meta[$row['metaname']] = $row['metaval'];
71        $metaED[$row['metaname']] = trigger_change('AP_render_content', $meta[$row['metaname']]);
72    }
73
74    // Authors
75    if (!empty($meta_infos['author']) and ! empty($metaED['author'])) {
76        $template->assign('INFO_AUTHOR', $meta_infos['author'] . ' - ' . $metaED['author']);
77    } elseif (!empty($metaED['author'])) {
78        $template->assign('INFO_AUTHOR', $metaED['author']);
79    }
80
81    // Keywords
82    if (!empty($metaED['keywords'])) {
83        $template->append('related_tags', array('name' => $metaED['keywords']));
84    }
85
86    // Description
87    if (!empty($meta_infos['title']) and ! empty($meta_infos['info']) and ! empty($metaED['Description'])) {
88        $template->assign('PLUG_META', $meta_infos['title'] . ' - ' . $meta_infos['info'] . ', ' . $metaED['Description']);
89    } elseif (!empty($meta_infos['title']) and ! empty($metaED['Description'])) {
90        $template->assign('PLUG_META', $meta_infos['title'] . ' - ' . $metaED['Description']);
91    } elseif (!empty($metaED['Description'])) {
92        $template->assign('PLUG_META', $metaED['Description']);
93    }
94
95    // Robots
96    if (!empty($meta['robots'])) {
97        $template->append('head_elements', '<meta name="robots" content="' . $meta['robots'] . '">');
98    }
99
100    //Metaperso
101    if (script_basename() !== 'admin') {
102        $metapersos = pwg_query("SELECT * FROM `" . METAPERSO_TABLE . ";");
103
104        if (pwg_db_num_rows($metapersos)) {
105            while ($metaperso = pwg_db_fetch_assoc($metapersos)) {
106                $items = array(
107                    'METANAME' => $metaperso['metaname'],
108                    'METAVAL' => $metaperso['metaval'],
109                    'METATYPE' => $metaperso['metatype']
110                );
111
112                $template->append('metapersos', $items);
113            }
114        }
115
116        $template->set_filename('PERSO_META', realpath(meta_PATH . 'persometa.tpl'));
117        $template->append('head_elements', $template->parse('PERSO_META', true));
118    }
119
120    $MPC = pwg_db_fetch_assoc(pwg_query("SELECT state FROM " . PLUGINS_TABLE . " WHERE id = 'ContactForm';"));
121    if ($MPC['state'] == 'active') {
122        global $conf;
123        if (isset($page['section']) and $page['section'] == 'contact' and isset($conf['contactmeta']) and strpos($conf['contactmeta'], ',') !== false) {
124            $metacontact = explode(',', $conf['contactmeta']);
125            $metakeyED = trigger_change('AP_render_content', $metacontact[0]);
126            $metadesED = trigger_change('AP_render_content', $metacontact[1]);
127            if (!empty($metakeyED)) {
128                $template->append('related_tags', array('name' => $metakeyED));
129            }
130            if (!empty($metadesED)) {
131                $template->assign('PLUG_META', $metadesED);
132            }
133        }
134    }
135
136    $MAP = pwg_db_fetch_assoc(pwg_query("SELECT state FROM " . PLUGINS_TABLE . " WHERE id = 'AdditionalPages';"));
137    if ($MAP['state'] == 'active') {
138        if (!empty($page['additional_page']['id'])) {
139            $lire = $page['additional_page']['id'];
140            $query = '
141  select id, metaKeyap, metadesap
142  FROM ' . META_AP_TABLE . '
143  WHERE id = \'' . $lire . '\'
144  ;';
145            $result = pwg_query($query);
146            $row = pwg_db_fetch_assoc($result);
147            $metaKeyapap = $row['metaKeyap'];
148            $metadesapap = $row['metadesap'];
149            $metaKeyapapED = trigger_change('AP_render_content', $metaKeyapap);
150            $metadesapED = trigger_change('AP_render_content', $metadesapap);
151        }
152        if (isset($page['section']) and $page['section'] == 'additional_page') {
153            if (!empty($metaKeyapapED)) {
154                $template->append('related_tags', array('name' => $metaKeyapapED));
155            }
156            if (!empty($metadesapED)) {
157                $template->assign('PLUG_META', $metadesapED);
158            }
159        }
160    }
161}
162
163function add_metacat() {
164    global $template, $page, $meta_infos;
165
166    //meta categories
167    if (!empty($page['category']['id'])) {
168        $query = '
169    select id,metaKeycat
170      FROM ' . meta_cat_TABLE . '
171      WHERE id = \'' . $page['category']['id'] . '\'
172      ;';
173        $result = pwg_query($query);
174        $row = pwg_db_fetch_assoc($result);
175        $albumKeyED = trigger_change('AP_render_content', $row['metaKeycat']);
176        if (!empty($row['metaKeycat'])) {
177            $template->append('related_tags', array('name' => $albumKeyED));
178        }
179
180        $query = '
181    select id,metadescat
182      FROM ' . meta_cat_TABLE . '
183      WHERE id = \'' . $page['category']['id'] . '\'
184      ;';
185        $result = pwg_query($query);
186        $row = pwg_db_fetch_assoc($result);
187        $albumDesED = trigger_change('AP_render_content', $row['metadescat']);
188        if (!empty($row['metadescat'])) {
189            $template->assign('PLUG_META', $albumDesED);
190        }
191    }
192}
193
194function add_metaimg() {
195    global $template, $page, $meta_infos;
196
197    //meta images
198    if (!empty($page['image_id'])) {
199        $query = '
200    select id,metaKeyimg
201      FROM ' . meta_img_TABLE . '
202      WHERE id = \'' . $page['image_id'] . '\'
203      ;';
204        $result = pwg_query($query);
205        $row = pwg_db_fetch_assoc($result);
206        $photoKeyED = trigger_change('AP_render_content', $row['metaKeyimg']);
207        if (!empty($row['metaKeyimg'])) {
208            $template->append('related_tags', array('name' => $photoKeyED));
209        }
210
211        $query = '
212    select id,metadesimg
213      FROM ' . meta_img_TABLE . '
214      WHERE id = \'' . $page['image_id'] . '\'
215      ;';
216        $result = pwg_query($query);
217        $row = pwg_db_fetch_assoc($result);
218        $photoDesED = trigger_change('AP_render_content', $row['metadesimg']);
219        if (!empty($row['metadesimg'])) {
220            $template->assign('PLUG_META', $photoDesED);
221        }else {
222            $meta_infosph = array();
223            $meta_infosph['title'] = $template->get_template_vars('PAGE_TITLE');
224            $meta_infosph['gt'] = $template->get_template_vars('GALLERY_TITLE');
225            $meta_infosph['descimg'] = $template->get_template_vars('COMMENT_IMG');
226            if (!empty($meta_infosph['descimg'])) {
227                $template->assign('PLUG_META', strip_tags($meta_infosph['descimg']).' - '.$meta_infosph['title']);
228            }else{
229                $template->assign('PLUG_META', $meta_infosph['title'].' - '.$meta_infosph['gt']);
230            }
231        }
232    }
233}
234
235function set_meta_back() {
236    global $template, $meta_infos;
237
238    $template->assign
239            (array
240        (
241        'INFO_AUTHOR' => $meta_infos['author'],
242        'related_tags' => $meta_infos['related_tags'],
243        'INFO_FILE' => $meta_infos['info'],
244            )
245    );
246}
247
248?>
Note: See TracBrowser for help on using the repository browser.