source: extensions/typetags/admin.php @ 9863

Last change on this file since 9863 was 9863, checked in by mistic100, 13 years ago

[extensions] TypeTags

  • new administration
File size: 7.4 KB
Line 
1<?php
2if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
3
4load_language('plugin.lang', typetags_PATH);
5
6function get_color_text($color)
7{
8        if (strlen($color) == 7)
9        {
10                $rgb[] = hexdec(substr($color, 1, 2))/255;
11                $rgb[] = hexdec(substr($color, 3, 2))/255;
12                $rgb[] = hexdec(substr($color, 5, 2))/255;
13        }
14        else if (strlen($color) == 4)
15        {
16                $rgb[] = hexdec(substr($color, 1, 1))/15;
17                $rgb[] = hexdec(substr($color, 2, 1))/15;
18                $rgb[] = hexdec(substr($color, 3, 1))/15;
19        }
20        $l = (min($rgb) + max($rgb)) / 2;
21        return $l > 0.45 ? '#000' : '#fff';
22}
23
24// +-----------------------------------------------------------------------+
25// |                                edit typetags                          |
26// +-----------------------------------------------------------------------+
27
28if (isset($_POST['edittypetag']) and (empty($_POST['typetag_name']) or empty($_POST['typetag_color'])))
29{
30        $edited_typetag = array(
31                'id' => $_POST['edited_typetag'],
32                'name' => $_POST['typetag_name'],
33                'color' => $_POST['typetag_color'],
34        );
35        $page['errors'][] = l10n('typetag_error');
36}
37else if (isset($_POST['edittypetag']))
38{
39        $typetag = mysql_escape_string($_POST['edited_typetag']);
40        $typetag_name = mysql_escape_string($_POST['typetag_name']);
41        $typetag_color = mysql_escape_string($_POST['typetag_color']);
42
43        $all_typetags = pwg_query("
44                SELECT
45                        id,
46                        name,
47                        color
48                FROM  `". typetags_TABLE ."`;
49        ");
50       
51        while ($row = mysql_fetch_array($all_typetags))
52        {
53                $existing_names[] = $row['name'];
54                if ($typetag == $row['id'])
55                {
56                        $current_name = $row['name'];
57                        $current_color = $row['color'];
58                }
59        }
60
61        // we must not rename typetag with an already existing name
62        if ($typetag_name != $current_name AND in_array($typetag_name, $existing_names))
63        {
64                $edited_typetag = array(
65                        'id' => $typetag,
66                        'name' => $typetag_name,
67                        'color' => $typetag_color,
68                );
69               
70                $page['errors'][] = l10n('typetag_already_exists');
71        }
72        else
73        {
74                pwg_query("
75                        UPDATE `". typetags_TABLE ."` SET
76                                `name` = '". $typetag_name ."',
77                                `color` = '". $typetag_color ."'
78                        WHERE `id` = ". $typetag .";
79                ");
80               
81                $page['infos'][] = l10n('typetag_saved');
82        }
83}
84
85// +-----------------------------------------------------------------------+
86// |                           delete typetags                             |
87// +-----------------------------------------------------------------------+
88
89if (isset($_GET['deletetypetag']))
90{
91        $query = "
92                SELECT name
93                FROM `". typetags_TABLE ."`
94                WHERE id = ". $_GET['deletetypetag'] .";
95        ";
96        $typetag_name = array_from_query($query, 'name');
97       
98        if (count($typetag_name) != 0)
99        {
100                pwg_query("
101                        UPDATE `". TAGS_TABLE ."`
102                        SET id_typetags = NULL
103                        WHERE id_typetags = ". $_GET['deletetypetag'] .";
104                ");
105
106                pwg_query("
107                        DELETE FROM `". typetags_TABLE ."`
108                        WHERE id = ". $_GET['deletetypetag'] .";
109                ");
110
111                $page['infos'][] = l10n('typetag_suppr').' : '.$typetag_name[0];
112        }
113        else
114        {
115                $page['errors'][] = l10n('typetag_unknown').' : '.$_GET['deletetypetag'];
116        }
117}
118
119// +-----------------------------------------------------------------------+
120// |                               add a typetag                           |
121// +-----------------------------------------------------------------------+
122
123if (isset($_POST['addtypetag']) and (empty($_POST['typetag_name']) or empty($_POST['typetag_color'])))
124{
125        $template->assign('typetag', array(
126                'NAME' => isset($_POST['typetag_name']) ? $_POST['typetag_name'] : '',
127                'COLOR' => isset($_POST['typetag_color']) ? $_POST['typetag_color'] : '',
128        ));
129       
130        $page['errors'][] = l10n('typetag_error');
131}
132else if (isset($_POST['addtypetag']))
133{
134        $typetag_name = $_POST['typetag_name'];
135        $typetag_color = $_POST['typetag_color'];
136
137        // does the tag already exists?
138        $query = "
139                SELECT id
140                FROM `". typetags_TABLE ."`
141                WHERE name = '". $typetag_name ."';
142        ";
143        $existing_tags = array_from_query($query, 'id');
144
145        if (count($existing_tags) == 0)
146        {
147                pwg_query("
148                        INSERT INTO `". typetags_TABLE ."`(
149                                `name`,
150                                `color`
151                        )
152                        VALUES(
153                                '". $typetag_name ."',
154                                '". $typetag_color ."'
155                        );
156                ");
157
158                $page['infos'][] = l10n('typetag_saved');
159        }
160        else
161        {
162                $template->assign('typetag', array(
163                        'NAME' => $typetag_name,
164                        'COLOR' => $typetag_color,
165                ));
166               
167                $page['errors'][] = l10n('typetag_already_exists');
168        }
169}
170
171// +-----------------------------------------------------------------------+
172// |                           Associate Tag to Typetage                   |
173// +-----------------------------------------------------------------------+
174
175if (isset($_POST['delete_all_assoc'])) 
176{
177        pwg_query("UPDATE `". TAGS_TABLE ."` SET id_typetags = NULL;");
178        $page['infos'][] = l10n('All associations have been removed');
179
180} 
181else if (isset($_POST['associations'])) 
182{
183                // beautify the parameters array
184                $string = preg_replace('#[;]$#', '', $_POST['associations']);
185                $associations = array();
186                $a = explode(';', $string);
187               
188                foreach ($a as $s) 
189                {
190                   $v = explode(':', $s);
191                   $associations[ltrim($v[0],'t-')] = ltrim($v[1],'tt-');
192                }
193
194                // save associations
195                foreach ($associations AS $tag => $typetag) 
196                {
197                        pwg_query("
198                                UPDATE `". TAGS_TABLE ."`
199                                SET id_typetags = ". $typetag ."
200                                WHERE id = ". $tag .";
201                        ");
202                }
203               
204                $page['infos'][] = l10n('typetags_associated');
205}
206
207
208// +-----------------------------------------------------------------------+
209// |                             template init                             |
210// +-----------------------------------------------------------------------+
211
212$template->set_filenames(array('plugin_admin_content' => dirname(__FILE__) . '/admin/typetags_admin.tpl'));
213
214// Récupère tous les tags
215$all_tags = pwg_query("
216        SELECT
217                t.id as tagid,
218                t.name as tagname,
219                tt.id as typetagid,
220                tt.name as typetagname
221        FROM `". TAGS_TABLE ."` as t
222        LEFT JOIN `". typetags_TABLE ."` as tt
223        ON  t.id_typetags = tt.id
224        ORDER BY t.name ASC;
225");
226
227while ($row = pwg_db_fetch_assoc($all_tags)) {
228        if ($row['typetagname'] == null) $row['typetagid'] = 'NULL';
229        $template->append('typetags_association', $row);
230}
231
232// Récupère tous les typetags
233$all_typetags = pwg_query("SELECT * FROM `". typetags_TABLE ."` ORDER BY `name`;");
234
235while ($row = mysql_fetch_assoc($all_typetags))
236{
237        $row['color_text'] = get_color_text($row['color']);
238        $row['u_edit'] = typetags_ADMIN . '&edittypetag=' . $row['id'];
239        $row['u_delete'] = typetags_ADMIN . '&deletetypetag=' . $row['id'];
240       
241        $template->append('typetags_selection', $row);
242}
243
244// formualire d'édition
245if (isset($_GET['edittypetag'])) {
246        $edited_typetag['id'] = $_GET['edittypetag'];
247}
248
249if (isset($edited_typetag['id']))
250{
251        $template->assign('edited_typetag', $edited_typetag['id']);
252
253        $tag = pwg_query("
254                SELECT
255                        id,
256                        name,
257                        color
258                FROM `". typetags_TABLE ."`
259                WHERE id = ".$edited_typetag['id'].";
260        ");
261        $row = pwg_db_fetch_assoc($tag);
262
263        $template->assign('typetag', array(
264                'ID' => $row['id'],
265                'OLD_NAME' => $row['name'],
266                'OLD_COLOR' => $row['color'],
267                'COLOR_TEXT' => get_color_text($row['color']),
268                'NAME' => isset($edited_typetag['name']) ? $edited_typetag['name'] : $row['name'],
269                'COLOR'=> isset($edited_typetag['color']) ? $edited_typetag['color'] : $row['color'],
270        ));
271}
272
273// +-----------------------------------------------------------------------+
274// |                           sending html code                           |
275// +-----------------------------------------------------------------------+
276
277$template->assign('typetags_ADMIN', typetags_ADMIN);
278$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
279
280?>
Note: See TracBrowser for help on using the repository browser.