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

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

[meta] update

  • 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/*
4  Plugin Name: meta
5  Version: auto
6  Description: Allows to add metadata
7  Plugin URI: http://piwigo.org/ext/extension_view.php?eid=220
8  Author: ddtddt
9  Author URI: http://piwigo.org/
10 */
11
12if (!defined('PHPWG_ROOT_PATH'))
13    die('Hacking attempt!');
14
15global $prefixeTable, $page;
16
17define('meta_DIR', basename(dirname(__FILE__)));
18define('meta_PATH', PHPWG_PLUGINS_PATH . meta_DIR . '/');
19define('meta_TABLE', $prefixeTable . 'meta');
20define('meta_img_TABLE', $prefixeTable . 'meta_img');
21define('meta_cat_TABLE', $prefixeTable . 'meta_cat');
22define('METAPERSO_TABLE', $prefixeTable . 'metaperso');
23define('META_AP_TABLE', $prefixeTable . 'meta_ap');
24
25// Plugin for admin
26if (script_basename() == 'admin') {
27    include_once(dirname(__FILE__) . '/initadmin.php');
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    //meta categories
166    if (!empty($page['category']['id'])) {
167        $query = '
168    select id,metaKeycat
169      FROM ' . meta_cat_TABLE . '
170      WHERE id = \'' . $page['category']['id'] . '\'
171      ;';
172        $result = pwg_query($query);
173        $row = pwg_db_fetch_assoc($result);
174        $albumKeyED = trigger_change('AP_render_content', $row['metaKeycat']);
175        if (!empty($row['metaKeycat'])) {
176            $template->append('related_tags', array('name' => $albumKeyED));
177        }
178
179        $query = '
180    select id,metadescat
181      FROM ' . meta_cat_TABLE . '
182      WHERE id = \'' . $page['category']['id'] . '\'
183      ;';
184        $result = pwg_query($query);
185        $row = pwg_db_fetch_assoc($result);
186        $albumDesED = trigger_change('AP_render_content', $row['metadescat']);
187        if (!empty($row['metadescat'])) {
188            $template->assign('PLUG_META', $albumDesED);
189        }
190    }
191}
192
193function add_metaimg() {
194    global $template, $page, $meta_infos;
195//meta images
196    if (!empty($page['image_id'])) {
197        $query = '
198    select id,metaKeyimg
199      FROM ' . meta_img_TABLE . '
200      WHERE id = \'' . $page['image_id'] . '\'
201      ;';
202        $result = pwg_query($query);
203        $row = pwg_db_fetch_assoc($result);
204        $photoKeyED = trigger_change('AP_render_content', $row['metaKeyimg']);
205        if (!empty($row['metaKeyimg'])) {
206            $template->append('related_tags', array('name' => $photoKeyED));
207        }
208
209        $query = '
210    select id,metadesimg
211      FROM ' . meta_img_TABLE . '
212      WHERE id = \'' . $page['image_id'] . '\'
213      ;';
214        $result = pwg_query($query);
215        $row = pwg_db_fetch_assoc($result);
216        $photoDesED = trigger_change('AP_render_content', $row['metadesimg']);
217        if (!empty($row['metadesimg'])) {
218            $template->assign('PLUG_META', $photoDesED);
219        } else {
220            $meta_infosph = array();
221            $meta_infosph['title'] = $template->get_template_vars('PAGE_TITLE');
222            $meta_infosph['gt'] = $template->get_template_vars('GALLERY_TITLE');
223            $meta_infosph['descimg'] = $template->get_template_vars('COMMENT_IMG');
224            if (!empty($meta_infosph['descimg'])) {
225                $template->assign('PLUG_META', strip_tags($meta_infosph['descimg']) . ' - ' . $meta_infosph['title']);
226            } else {
227                $template->assign('PLUG_META', $meta_infosph['title'] . ' - ' . $meta_infosph['gt']);
228            }
229        }
230    }
231}
232
233function set_meta_back() {
234    global $template, $meta_infos;
235    $template->assign
236            (array
237        (
238        'INFO_AUTHOR' => $meta_infos['author'],
239        'related_tags' => $meta_infos['related_tags'],
240        'INFO_FILE' => $meta_infos['info'],
241            )
242    );
243}
244
245?>
Note: See TracBrowser for help on using the repository browser.