source: extensions/typetags/admin.php @ 11298

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

code cleanup

File size: 7.7 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.