source: extensions/typetags/admin/typetags_admin.php @ 9568

Last change on this file since 9568 was 3609, checked in by patdenice, 15 years ago

Convert all php and tpl files in Unix format for my plugins.

File size: 8.9 KB
Line 
1<?php
2
3if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
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  elseif (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['submit']) and !is_adviser())
29{
30  $typetag = mysql_escape_string($_POST['edited_typetag']);
31  $typetag_name = mysql_escape_string($_POST['typetag_name']);
32  $typetag_color = mysql_escape_string($_POST['typetag_color']);
33
34  $existing_names = array();
35 
36  $query = '
37SELECT id, name, color
38  FROM '.typetags_TABLE.'
39;';
40  $result = pwg_query($query);
41  while ($row = mysql_fetch_array($result))
42  {
43    array_push($existing_names, $row['name']);
44    if ($typetag == $row['id'])
45    {
46      $current_name = $row['name'];
47      $current_color = $row['color'];
48    }
49  }
50 
51  // we must not rename typetag with an already existing name
52  if ($typetag_name != $current_name and in_array($typetag_name, $existing_names))
53  {
54    array_push($page['errors'], l10n('typetags_already exists'));
55
56    $edited_typetag = array(
57      'id' => $typetag,
58      'name' => $typetag_name,
59      'color' => $typetag_color);
60  }
61  else
62  {
63    array_push($page['infos'], l10n('typetags_saved'));
64
65    mass_updates(typetags_TABLE,
66      array(
67        'primary' => array('id'),
68        'update' => array('name', 'color')),
69      array(
70        array(
71          'id' => $typetag,
72          'name' => $typetag_name,
73          'color' => $typetag_color)));
74  }
75}
76
77// +-----------------------------------------------------------------------+
78// |                               delete typetags                             |
79// +-----------------------------------------------------------------------+
80
81if (isset($_POST['deletetypetag']) and isset($_POST['typetags']) and !is_adviser())
82{
83  $query = '
84SELECT name
85  FROM '.typetags_TABLE.'
86  WHERE id IN ('.implode(',', $_POST['typetags']).')
87;';
88  $typetag_names = array_from_query($query, 'name');
89 
90  $query = ' UPDATE '. TAGS_TABLE .'
91      SET id_typetags =  NULL
92      WHERE id_typetags IN ('.implode(',', $_POST['typetags']).')
93         ;';
94 pwg_query($query);   
95
96  $query = '
97  DELETE
98  FROM '.typetags_TABLE.'
99  WHERE id IN ('.implode(',', $_POST['typetags']).')
100;';
101  pwg_query($query);
102 
103  array_push($page['infos'],
104    l10n_dec('typetag_suppr', 'typetags_suppr', count($typetag_names))
105    .' : '.implode(', ', $typetag_names)
106  );
107}
108
109// +-----------------------------------------------------------------------+
110// |                               add a typetag                           |
111// +-----------------------------------------------------------------------+
112
113if (isset($_POST['addtypetag']) and (empty($_POST['add_typetag']) or empty ($_POST['hexval'])))
114{
115  array_push($page['errors'], l10n('typetags_error'));
116 
117  $template->assign('typetag', array(
118    'NAME' => isset($_POST['add_typetag']) ? $_POST['add_typetag'] : '',
119    'COLOR' => isset($_POST['hexval']) ? $_POST['hexval'] : ''));
120}
121elseif (isset($_POST['addtypetag']) and !empty($_POST['add_typetag']) and !empty ($_POST['hexval']) and !is_adviser())
122{
123  $typetag_name = $_POST['add_typetag'];
124  $typetag_color = $_POST['hexval'];
125
126  // does the tag already exists?
127  $query = '
128SELECT id
129  FROM '.typetags_TABLE.'
130  WHERE name = \''.$typetag_name.'\'
131;';
132  $existing_tags = array_from_query($query, 'id');
133
134  if (count($existing_tags) == 0)
135  {
136    mass_inserts(
137      typetags_TABLE,
138      array('name', 'color'),
139      array(
140        array(
141          'name' => $typetag_name,
142          'color' => $typetag_color,
143          )
144        )
145      );
146   
147    array_push($page['infos'], l10n('typetags_saved'));
148  }
149  else
150  {
151    array_push($page['errors'],l10n('typetags_already exists'));
152
153    $template->assign('typetag', array(
154      'NAME' => $typetag_name,
155      'COLOR' => $typetag_color));
156  }
157}
158elseif (isset($_POST['add']) and !is_adviser())
159{ 
160  array_push($page['errors'], l10n('typetags_error'));
161}
162
163// +-----------------------------------------------------------------------+
164// |                           Associate Tag to Typetage                   |
165// +-----------------------------------------------------------------------+
166
167               
168if (isset($_POST['associate']) AND !empty($_POST['assoc_tags']) AND ($_POST['typetaglist'] != 0))
169{
170  $typetag_id = $_POST['typetaglist'];
171
172  $query = ' UPDATE '. TAGS_TABLE .'
173      SET id_typetags = '. $typetag_id .'
174       WHERE id IN ('.implode(',', $_POST['assoc_tags']).')
175         ;';
176 pwg_query($query);   
177   
178    array_push(
179      $page['infos'],
180      sprintf(
181        l10n('typetags_associated'),
182        stripslashes($typetag_id)
183        )
184      );
185}
186elseif (isset($_POST['associate']) and !is_adviser())
187{ 
188  array_push($page['errors'], l10n('error_associate'));
189}
190
191// +-----------------------------------------------------------------------+
192// |                           Dissociate Tag to Typetage                  |
193// +-----------------------------------------------------------------------+
194
195if (isset($_POST['dissociate']) AND !empty($_POST['dissoc_tags']) and !is_adviser())
196{
197  $associated_tag_id = implode(',', $_POST['dissoc_tags']);
198
199 $query = ' UPDATE '. TAGS_TABLE .'
200          SET id_typetags = NULL
201          WHERE id IN (' . $associated_tag_id . ')
202          ;';
203   pwg_query($query);
204
205 
206    array_push($page['infos'],
207      sprintf(l10n('typetags_dissociated'),
208        stripslashes($associated_tag_id )
209        )
210      );
211}
212elseif (isset($_POST['dissociate']) and !is_adviser())
213{ 
214  array_push($page['errors'], l10n('error_dissociate'));
215}
216
217// +-----------------------------------------------------------------------+
218// |                             template init                             |
219// +-----------------------------------------------------------------------+
220
221$template->set_filenames(array('plugin_admin_content' => dirname(__FILE__) . '/typetags_admin.tpl'));
222
223//Recupere les tags associés
224$query = '
225  SELECT t.id , t.name, tt.color
226          FROM ' . TAGS_TABLE . ' as t
227          INNER JOIN ' .typetags_TABLE. ' as tt
228          ON  t.id_typetags = tt.id
229          WHERE t.id_typetags is NOT NULL
230          ORDER by t.id';
231$result = pwg_query($query);
232
233$tags = array();
234
235while ($row = mysql_fetch_assoc($result))
236{
237  array_push($tags, $row);             
238}
239
240usort($tags, 'name_compare');
241$template->assign('typetags_dissociation', $tags);
242
243// Récupère tous les tags
244$query = '
245        SELECT t.id , t.name, tt.color
246          FROM ' . TAGS_TABLE . ' as t
247                LEFT JOIN ' .typetags_TABLE.' as tt
248                ON  t.id_typetags = tt.id';
249$result = pwg_query($query);
250
251$tags = array();
252
253while ($row = mysql_fetch_assoc($result))
254{
255  array_push($tags, $row);             
256}
257
258usort($tags, 'name_compare');
259$template->assign('typetags_association', $tags);
260
261// +-----------------------------------------------------------------------+
262// |                             form creation                             |
263// +-----------------------------------------------------------------------+
264
265$query = 'SELECT * FROM '.typetags_TABLE.';';
266$result = pwg_query($query);
267$typetags = array();
268while ($row = mysql_fetch_assoc($result))
269{
270  $row['color_text'] = get_color_text($row['color']);
271  array_push($typetags, $row);
272}
273
274usort($typetags, 'name_compare');
275
276$template->assign('typetags_selection', $typetags);
277
278if (isset($_POST['edittypetag']) and isset($_POST['typetags']))
279{
280  if (count($_POST['typetags']) > 1)
281  {
282    array_push($page['errors'], l10n('You should select only one Typetag to edit.'));
283  }
284  else
285  {
286    $edited_typetag['id'] = $_POST['typetags'][0];
287  }
288}
289if (isset($edited_typetag))
290{
291  $template->assign('edited_typetag', $edited_typetag['id']);
292
293  $query = '
294    SELECT id, name, color
295    FROM '.typetags_TABLE.'
296    WHERE id = '.$edited_typetag['id'].'
297    ;';
298  $result = pwg_query($query);
299  while ($row = mysql_fetch_array($result))
300  {
301    $template->assign('typetag',
302      array(
303        'ID' => $row['id'],
304        'OLD_NAME' => $row['name'],
305        'OLD_COLOR' => $row['color'],
306        'COLOR_TEXT' => get_color_text($row['color']),
307        'NAME' => isset($edited_typetag['name']) ? $edited_typetag['name'] : $row['name'],
308        'COLOR'=> isset($edited_typetag['color']) ? $edited_typetag['color'] : $row['color']));
309  }
310}
311
312// +-----------------------------------------------------------------------+
313// |                           sending html code                           |
314// +-----------------------------------------------------------------------+
315
316$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
317
318?>
Note: See TracBrowser for help on using the repository browser.