Verzeichnisstruktur phpBB-2.0.0


Veröffentlicht
03.04.2002

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

admin_styles.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 30.90 KiB


001  <?php
002  /***************************************************************************
003   *                              admin_styles.php
004   *                            -------------------
005   *   begin                : Thursday, Jul 12, 2001
006   *   copyright            : (C) 2001 The phpBB Group
007   *   email                : support@phpbb.com
008   *
009   *   $Id$
010   *
011   *
012   ***************************************************************************/
013   
014  /***************************************************************************
015   *
016   *   This program is free software; you can redistribute it and/or modify
017   *   it under the terms of the GNU General Public License as published by
018   *   the Free Software Foundation; either version 2 of the License, or
019   *   (at your option) any later version.
020   *
021   ***************************************************************************/
022   
023  define('IN_PHPBB', 1);
024   
025  if( !empty($setmodules) )
026  {
027      $file = basename(__FILE__);
028      $module['Styles']['Add_new'] = "$file?mode=addnew";
029      $module['Styles']['Create_new'] = "$file?mode=create";
030      $module['Styles']['Manage'] = $file;
031      $module['Styles']['Export'] = "$file?mode=export";
032      return;
033  }
034   
035  //
036  // Load default header
037  //
038  //
039  // Check if the user has cancled a confirmation message.
040  //
041  $phpbb_root_path = "./../";
042  require($phpbb_root_path . 'extension.inc');
043   
044  $confirm = (isset($HTTP_POST_VARS['confirm']) || isset($_POST['confirm'])) ? TRUE : FALSE;
045  $cancel = (isset($HTTP_POST_VARS['cancel']) || isset($_POST['cancel'])) ? TRUE : FALSE;
046   
047  $no_page_header = (!empty($HTTP_POST_VARS['send_file']) || !empty($_POST['send_file']) || $cancel) ? TRUE : FALSE;
048   
049  require('./pagestart.' . $phpEx);
050   
051  $confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE : FALSE;
052  $cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE : FALSE;
053   
054  if ($cancel)
055  {
056      redirect('admin/' . append_sid("admin_styles.$phpEx", true));
057  }
058   
059  if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
060  {
061      $mode = ( isset($HTTP_GET_VARS['mode']) ) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
062      $mode = htmlspecialchars($mode);
063  }
064  else 
065  {
066      $mode = "";
067  }
068   
069  switch( $mode )
070  {
071      case "addnew":
072          $install_to = ( isset($HTTP_GET_VARS['install_to']) ) ? urldecode($HTTP_GET_VARS['install_to']) : $HTTP_POST_VARS['install_to'];
073          $style_name = ( isset($HTTP_GET_VARS['style']) ) ? urldecode($HTTP_GET_VARS['style']) : $HTTP_POST_VARS['style'];
074      
075          if( isset($install_to) )
076          {
077   
078              include($phpbb_root_path. "templates/" . basename($install_to) . "/theme_info.cfg");
079   
080              $template_name = $$install_to;
081              $found = FALSE; 
082              
083              for($i = 0; $i < count($template_name) && !$found; $i++)
084              {
085                  if( $template_name[$i]['style_name'] == $style_name )
086                  {
087                      while(list($key, $val) = each($template_name[$i]))
088                      {
089                          $db_fields[] = $key;
090                          $db_values[] = str_replace("\'", "''" , $val);
091                      }
092                  }
093              }
094                      
095              $sql = "INSERT INTO " . THEMES_TABLE . " (";
096   
097              for($i = 0; $i < count($db_fields); $i++)
098              {
099                  $sql .= $db_fields[$i];
100                  if($i != (count($db_fields) - 1))
101                  {
102                      $sql .= ", ";
103                  }
104                  
105              }
106   
107              $sql .= ") VALUES (";
108   
109              for($i = 0; $i < count($db_values); $i++)
110              {
111                  $sql .= "'" . $db_values[$i] . "'";
112                  if($i != (count($db_values) - 1))
113                  {
114                      $sql .= ", ";
115                  }
116              }
117              $sql .= ")";
118              
119              if( !$result = $db->sql_query($sql) )
120              {
121                  message_die(GENERAL_ERROR, "Could not insert theme data!", "", __LINE__, __FILE__, $sql);
122              }
123              
124              $message = $lang['Theme_installed'] . "<br /><br />" . sprintf($lang['Click_return_styleadmin'], "<a href=\"" . append_sid("admin_styles.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
125   
126              message_die(GENERAL_MESSAGE, $message);
127          }
128          else
129          {
130              
131              $installable_themes = array();
132              
133              if( $dir = @opendir($phpbb_root_path. "templates/") )
134              {
135                  while( $sub_dir = @readdir($dir) )
136                  {
137                      if( !is_file(phpbb_realpath($phpbb_root_path . 'templates/' .$sub_dir)) && !is_link(phpbb_realpath($phpbb_root_path . 'templates/' .$sub_dir)) && $sub_dir != "." && $sub_dir != ".." && $sub_dir != "CVS" )
138                      {
139                          if( @file_exists(@phpbb_realpath($phpbb_root_path. "templates/" . $sub_dir . "/theme_info.cfg")) )
140                          {
141                              include($phpbb_root_path. "templates/" . $sub_dir . "/theme_info.cfg");
142                              
143                              for($i = 0; $i < count($$sub_dir); $i++)
144                              {
145                                  $working_data = $$sub_dir;
146                                  
147                                  $style_name = $working_data[$i]['style_name'];
148                                                          
149                                  $sql = "SELECT themes_id 
150                                      FROM " . THEMES_TABLE . 
151                                      WHERE style_name = '" . str_replace("\'", "''", $style_name) . "'";
152                                  if(!$result = $db->sql_query($sql))
153                                  {
154                                      message_die(GENERAL_ERROR, "Could not query themes table!", "", __LINE__, __FILE__, $sql);
155                                  }
156   
157                                  if(!$db->sql_numrows($result))
158                                  {
159                                      $installable_themes[] = $working_data[$i];
160                                  }
161                              }
162                          }
163                      }
164                  }
165                  
166                  $template->set_filenames(array(
167                      "body" => "admin/styles_addnew_body.tpl")
168                  );
169                  
170                  $template->assign_vars(array(
171                      "L_STYLES_TITLE" => $lang['Styles_admin'],
172                      "L_STYLES_ADD_TEXT" => $lang['Styles_addnew_explain'],
173                      "L_STYLE" => $lang['Style'],
174                      "L_TEMPLATE" => $lang['Template'],
175                      "L_INSTALL" => $lang['Install'],
176                      "L_ACTION" => $lang['Action'])
177                  );
178                      
179                  for($i = 0; $i < count($installable_themes); $i++)
180                  {
181                      $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
182                      $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
183          
184                      $template->assign_block_vars("styles", array(
185                          "ROW_CLASS" => $row_class,
186                          "ROW_COLOR" => "#" . $row_color,
187                          "STYLE_NAME" => $installable_themes[$i]['style_name'],
188                          "TEMPLATE_NAME" => $installable_themes[$i]['template_name'],
189   
190                          "U_STYLES_INSTALL" => append_sid("admin_styles.$phpEx?mode=addnew&amp;style=" . urlencode($installable_themes[$i]['style_name']) . "&amp;install_to=" . urlencode($installable_themes[$i]['template_name'])))
191                      );
192                  
193                  }
194                  $template->pparse("body");
195                      
196              }
197              closedir($dir);
198          }
199          break;
200      
201      case "create":
202      case "edit":
203          $submit = ( isset($HTTP_POST_VARS['submit']) ) ? TRUE : 0;
204          
205          if( $submit )
206          {
207              //    
208              // DAMN! Thats alot of data to validate...
209              //
210              $updated['style_name'] = $HTTP_POST_VARS['style_name'];
211              $updated['template_name'] = $HTTP_POST_VARS['template_name'];
212              $updated['head_stylesheet'] = $HTTP_POST_VARS['head_stylesheet'];
213              $updated['body_background'] = $HTTP_POST_VARS['body_background'];
214              $updated['body_bgcolor'] = $HTTP_POST_VARS['body_bgcolor'];
215              $updated['body_text'] = $HTTP_POST_VARS['body_text'];
216              $updated['body_link'] = $HTTP_POST_VARS['body_link'];
217              $updated['body_vlink'] = $HTTP_POST_VARS['body_vlink'];
218              $updated['body_alink'] = $HTTP_POST_VARS['body_alink'];
219              $updated['body_hlink'] = $HTTP_POST_VARS['body_hlink'];
220              $updated['tr_color1'] = $HTTP_POST_VARS['tr_color1'];
221              $updated_name['tr_color1_name'] =  $HTTP_POST_VARS['tr_color1_name'];
222              $updated['tr_color2'] = $HTTP_POST_VARS['tr_color2'];
223              $updated_name['tr_color2_name'] = $HTTP_POST_VARS['tr_color2_name'];
224              $updated['tr_color3'] = $HTTP_POST_VARS['tr_color3'];
225              $updated_name['tr_color3_name'] = $HTTP_POST_VARS['tr_color3_name'];
226              $updated['tr_class1'] = $HTTP_POST_VARS['tr_class1'];
227              $updated_name['tr_class1_name'] = $HTTP_POST_VARS['tr_class1_name'];
228              $updated['tr_class2'] = $HTTP_POST_VARS['tr_class2'];
229              $updated_name['tr_class2_name'] = $HTTP_POST_VARS['tr_class2_name'];
230              $updated['tr_class3'] = $HTTP_POST_VARS['tr_class3'];
231              $updated_name['tr_class3_name'] = $HTTP_POST_VARS['tr_class3_name'];
232              $updated['th_color1'] = $HTTP_POST_VARS['th_color1'];
233              $updated_name['th_color1_name'] = $HTTP_POST_VARS['th_color1_name'];
234              $updated['th_color2'] = $HTTP_POST_VARS['th_color2'];
235              $updated_name['th_color2_name'] = $HTTP_POST_VARS['th_color2_name'];
236              $updated['th_color3'] = $HTTP_POST_VARS['th_color3'];
237              $updated_name['th_color3_name'] = $HTTP_POST_VARS['th_color3_name'];
238              $updated['th_class1'] = $HTTP_POST_VARS['th_class1'];
239              $updated_name['th_class1_name'] = $HTTP_POST_VARS['th_class1_name'];
240              $updated['th_class2'] = $HTTP_POST_VARS['th_class2'];
241              $updated_name['th_class2_name'] = $HTTP_POST_VARS['th_class2_name'];
242              $updated['th_class3'] = $HTTP_POST_VARS['th_class3'];
243              $updated_name['th_class3_name'] = $HTTP_POST_VARS['th_class3_name'];
244              $updated['td_color1'] = $HTTP_POST_VARS['td_color1'];
245              $updated_name['td_color1_name'] = $HTTP_POST_VARS['td_color1_name'];
246              $updated['td_color2'] = $HTTP_POST_VARS['td_color2'];
247              $updated_name['td_color2_name'] = $HTTP_POST_VARS['td_color2_name'];
248              $updated['td_color3'] = $HTTP_POST_VARS['td_color3'];
249              $updated_name['td_color3_name'] = $HTTP_POST_VARS['td_color3_name'];
250              $updated['td_class1'] = $HTTP_POST_VARS['td_class1'];
251              $updated_name['td_class1_name'] = $HTTP_POST_VARS['td_class1_name'];
252              $updated['td_class2'] = $HTTP_POST_VARS['td_class2'];
253              $updated_name['td_class2_name'] = $HTTP_POST_VARS['td_class2_name'];
254              $updated['td_class3'] = $HTTP_POST_VARS['td_class3'];
255              $updated_name['td_class3_name'] = $HTTP_POST_VARS['td_class3_name'];
256              $updated['fontface1'] = $HTTP_POST_VARS['fontface1'];
257              $updated_name['fontface1_name'] = $HTTP_POST_VARS['fontface1_name'];
258              $updated['fontface2'] = $HTTP_POST_VARS['fontface2'];
259              $updated_name['fontface2_name'] = $HTTP_POST_VARS['fontface2_name'];
260              $updated['fontface3'] = $HTTP_POST_VARS['fontface3'];
261              $updated_name['fontface3_name'] = $HTTP_POST_VARS['fontface3_name'];
262              $updated['fontsize1'] = intval($HTTP_POST_VARS['fontsize1']);
263              $updated_name['fontsize1_name'] = $HTTP_POST_VARS['fontsize1_name'];
264              $updated['fontsize2'] = intval($HTTP_POST_VARS['fontsize2']);
265              $updated_name['fontsize2_name'] = $HTTP_POST_VARS['fontsize2_name'];
266              $updated['fontsize3'] = intval($HTTP_POST_VARS['fontsize3']);
267              $updated_name['fontsize3_name'] = $HTTP_POST_VARS['fontsize3_name'];
268              $updated['fontcolor1'] = $HTTP_POST_VARS['fontcolor1'];
269              $updated_name['fontcolor1_name'] = $HTTP_POST_VARS['fontcolor1_name'];
270              $updated['fontcolor2'] = $HTTP_POST_VARS['fontcolor2'];
271              $updated_name['fontcolor2_name'] = $HTTP_POST_VARS['fontcolor2_name'];
272              $updated['fontcolor3'] = $HTTP_POST_VARS['fontcolor3'];
273              $updated_name['fontcolor3_name'] = $HTTP_POST_VARS['fontcolor3_name'];
274              $updated['span_class1'] = $HTTP_POST_VARS['span_class1'];
275              $updated_name['span_class1_name'] = $HTTP_POST_VARS['span_class1_name'];
276              $updated['span_class2'] = $HTTP_POST_VARS['span_class2'];
277              $updated_name['span_class2_name'] = $HTTP_POST_VARS['span_class2_name'];
278              $updated['span_class3'] = $HTTP_POST_VARS['span_class3'];
279              $updated_name['span_class3_name'] = $HTTP_POST_VARS['span_class3_name'];
280              $style_id = intval($HTTP_POST_VARS['style_id']);
281              //
282              // Wheeeew! Thank heavens for copy and paste and search and replace :D
283              //
284              
285              if($mode == "edit")
286              {
287                  $sql = "UPDATE " . THEMES_TABLE . " SET ";
288                  $count = 0;
289   
290                  while(list($key, $val) = each($updated))
291                  {
292                      if($count != 0)
293                      {
294                          $sql .= ", ";
295                      }
296   
297                      //
298                      // I don't like this but it'll keep MSSQL from throwing
299                      // an error and save me alot of typing
300                      //
301                      $sql .= ( stristr($key, "fontsize") ) ? "$key = $val" : "$key = '" . str_replace("\'", "''", $val) . "'";
302   
303                      $count++;
304                  }
305                  
306                  $sql .= " WHERE themes_id = $style_id";
307                  
308                  if(!$result = $db->sql_query($sql))
309                  {
310                      message_die(GENERAL_ERROR, "Could not update themes table!", "", __LINE__, __FILE__, $sql);
311                  }
312                  
313                  //
314                  // Check if there's a names table entry for this style
315                  //
316                  $sql = "SELECT themes_id 
317                      FROM " . THEMES_NAME_TABLE . " 
318                      WHERE themes_id = $style_id";
319                  if(!$result = $db->sql_query($sql))
320                  {
321                      message_die(GENERAL_ERROR, "Could not get data from themes_name table", "", __LINE__, __FILE__, $sql);
322                  }
323                  
324                  if($db->sql_numrows($result) > 0)
325                  {
326                      $sql = "UPDATE " . THEMES_NAME_TABLE . 
327                          SET ";
328                      $count = 0;
329                      while(list($key, $val) = each($updated_name))
330                      {
331                          if($count != 0)
332                          {
333                              $sql .= ", ";
334                          }
335              
336                          $sql .= "$key = '$val'";
337              
338                          $count++;
339                      }
340                      
341                      $sql .= " WHERE themes_id = $style_id";
342                  }
343                  else
344                  {
345                      //
346                      // Nope, no names entry so we create a new one.
347                      //
348                      $sql = "INSERT INTO " . THEMES_NAME_TABLE . " (themes_id, ";
349                      while(list($key, $val) = each($updated_name))
350                      {
351                          $fields[] = $key;
352                          $vals[] = str_replace("\'", "''", $val);
353                      }
354   
355                      for($i = 0; $i < count($fields); $i++)
356                      {
357                          if($i > 0)
358                          {
359                              $sql .= ", ";
360                          }
361                          $sql .= $fields[$i];
362                      }
363                      
364                      $sql .= ") VALUES ($style_id";
365                      for($i = 0; $i < count($vals); $i++)
366                      {
367                          if($i > 0)
368                          {
369                              $sql .= ", ";
370                          }
371                          $sql .= "'" . $vals[$i] . "'";
372                      }
373                      
374                      $sql .= ")";
375                  }
376                                          
377                  if(!$result = $db->sql_query($sql))
378                  {
379                      message_die(GENERAL_ERROR, "Could not update themes name table!", "", __LINE__, __FILE__, $sql);
380                  }
381                              
382                  $message = $lang['Theme_updated'] . "<br /><br />" . sprintf($lang['Click_return_styleadmin'], "<a href=\"" . append_sid("admin_styles.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
383   
384                  message_die(GENERAL_MESSAGE, $message);
385              }
386              else
387              {
388                  //
389                  // First, check if we already have a style by this name
390                  //
391                  $sql = "SELECT themes_id 
392                      FROM " . THEMES_TABLE . 
393                      WHERE style_name = '" . str_replace("\'", "''", $updated['style_name']) . "'";
394                  if(!$result = $db->sql_query($sql))
395                  {
396                      message_die(GENERAL_ERROR, "Could not query themes table", "", __LINE__, __FILE__, $sql);
397                  }
398                  
399                  if($db->sql_numrows($result))
400                  {
401                      message_die(GENERAL_ERROR, $lang['Style_exists'], $lang['Error']);
402                  }                
403                  
404                  while(list($key, $val) = each($updated))
405                  {
406                      $field_names[] = $key;
407   
408                      if(stristr($key, "fontsize"))
409                      {
410                          $values[] = "$val";
411                      }
412                      else
413                      {
414                          $values[] = "'" . str_replace("\'", "''", $val) . "'";
415                      }
416                  }
417                  
418                  $sql = "INSERT 
419                      INTO " . THEMES_TABLE . " (";
420                  for($i = 0; $i < count($field_names); $i++)
421                  {
422                      if($i != 0)
423                      {
424                          $sql .= ", ";
425                      }
426                      $sql .= $field_names[$i];
427                  }
428                  
429                  $sql .= ") VALUES (";
430                  for($i = 0; $i < count($values); $i++)
431                  {
432                      if($i != 0)
433                      {
434                          $sql .= ", ";
435                      }
436                      $sql .= $values[$i];
437                  }
438                  $sql .= ")";
439                  
440                  if(!$result = $db->sql_query($sql))
441                  {
442                      message_die(GENERAL_ERROR, "Could not update themes table!", "", __LINE__, __FILE__, $sql);
443                  }
444                  
445                  $style_id = $db->sql_nextid();
446                  
447                  // 
448                  // Insert names data
449                  //
450                  $sql = "INSERT INTO " . THEMES_NAME_TABLE . " (themes_id, ";
451                  while(list($key, $val) = each($updated_name))
452                  {
453                      $fields[] = $key;
454                      $vals[] = $val;
455                  }
456   
457                  for($i = 0; $i < count($fields); $i++)
458                  {
459                      if($i > 0)
460                      {
461                          $sql .= ", ";
462                      }
463                      $sql .= $fields[$i];
464                  }
465                  
466                  $sql .= ") VALUES ($style_id";
467                  for($i = 0; $i < count($vals); $i++)
468                  {
469                      if($i > 0)
470                      {
471                      $sql .= ", ";
472                      }
473                  $sql .= "'" . $vals[$i] . "'";
474                  }
475                  
476                  $sql .= ")";
477                                          
478                  if(!$result = $db->sql_query($sql))
479                  {
480                      message_die(GENERAL_ERROR, "Could not insert themes name table!", "", __LINE__, __FILE__, $sql);
481                  }
482                  
483                  $message = $lang['Theme_created'] . "<br /><br />" . sprintf($lang['Click_return_styleadmin'], "<a href=\"" . append_sid("admin_styles.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
484   
485                  message_die(GENERAL_MESSAGE, $message);
486              }
487          }
488          else
489          {
490              if($mode == "edit")
491              {
492                  $themes_title = $lang['Edit_theme'];
493                  $themes_explain = $lang['Edit_theme_explain'];
494                  
495                  $style_id = intval($HTTP_GET_VARS['style_id']);
496                  
497                  $selected_names = array();
498                  $selected_values = array();
499                  // 
500                  // Fetch the Theme Info from the db
501                  //
502                  $sql = "SELECT * 
503                      FROM " . THEMES_TABLE . " 
504                      WHERE themes_id = $style_id";
505                  if(!$result = $db->sql_query($sql))
506                  {
507                      message_die(GENERAL_ERROR, "Could not get data from themes table", "", __LINE__, __FILE__, $sql);
508                  }
509                  
510                  if ( $selected_values = $db->sql_fetchrow($result) )
511                  {
512                      while(list($key, $val) = @each($selected_values))
513                      {
514                          $selected[$key] = $val;
515                      }
516                  }
517                  
518                  //
519                  // Fetch the Themes Name data
520                  //
521                  $sql = "SELECT * 
522                      FROM " . THEMES_NAME_TABLE . " 
523                      WHERE themes_id = $style_id";
524                  if(!$result = $db->sql_query($sql))
525                  {
526                      message_die(GENERAL_ERROR, "Could not get data from themes name table", "", __LINE__, __FILE__, $sql);
527                  }
528                  
529                  if ( $selected_names = $db->sql_fetchrow($result) )
530                  {
531                      while(list($key, $val) = @each($selected_names))
532                      {
533                          $selected[$key] = $val;
534                      }
535                  }
536   
537                  $s_hidden_fields = '<input type="hidden" name="style_id" value="' . $style_id . '" />';
538              }
539              else
540              {
541                  $themes_title = $lang['Create_theme'];
542                  $themes_explain = $lang['Create_theme_explain'];
543              }
544              
545              $template->set_filenames(array(
546                  "body" => "admin/styles_edit_body.tpl")
547              );
548              
549              if( $dir = @opendir($phpbb_root_path . 'templates/') )
550              {    
551                  $s_template_select = '<select name="template_name">';
552                  while( $file = @readdir($dir) )
553                  {    
554                      if( !is_file(phpbb_realpath($phpbb_root_path . 'templates/' . $file)) && !is_link(phpbb_realpath($phpbb_root_path . 'templates/' . $file)) && $file != "." && $file != ".." && $file != "CVS" )
555                      {
556                          if($file == $selected['template_name'])
557                          {
558                              $s_template_select .= '<option value="' . $file . '" selected="selected">' . $file . "</option>\n";
559                          }
560                          else
561                          {
562                              $s_template_select .= '<option value="' . $file . '">' . $file . "</option>\n";
563                          }
564                      }
565                  }
566                  $s_template_select .= '</select>';
567              }
568              else
569              {
570                  message_die(GENERAL_MESSAGE, $lang['No_template_dir']);
571              }
572   
573              $s_hidden_fields .= '<input type="hidden" name="mode" value="' . $mode . '" />';
574   
575              $template->assign_vars(array(
576                  "L_THEMES_TITLE" => $themes_title,
577                  "L_THEMES_EXPLAIN" => $themes_explain,
578                  "L_THEME_NAME" => $lang['Theme_name'],
579                  "L_TEMPLATE" => $lang['Template'],
580                  "L_THEME_SETTINGS" => $lang['Theme_settings'],
581                  "L_THEME_ELEMENT" => $lang['Theme_element'],
582                  "L_SIMPLE_NAME" => $lang['Simple_name'],
583                  "L_VALUE" => $lang['Value'],
584                  "L_STYLESHEET" => $lang['Stylesheet'],
585                  "L_STYLESHEET_EXPLAIN" => $lang['Stylesheet_explain'],
586                  "L_BACKGROUND_IMAGE" => $lang['Background_image'],
587                  "L_BACKGROUND_COLOR" => $lang['Background_color'],
588                  "L_BODY_TEXT_COLOR" => $lang['Text_color'],
589                  "L_BODY_LINK_COLOR" => $lang['Link_color'],
590                  "L_BODY_VLINK_COLOR" => $lang['VLink_color'],
591                  "L_BODY_ALINK_COLOR" => $lang['ALink_color'],
592                  "L_BODY_HLINK_COLOR" => $lang['HLink_color'],
593                  "L_TR_COLOR1" => $lang['Tr_color1'],
594                  "L_TR_COLOR2" => $lang['Tr_color2'],
595                  "L_TR_COLOR3" => $lang['Tr_color3'],
596                  "L_TR_CLASS1" => $lang['Tr_class1'],
597                  "L_TR_CLASS2" => $lang['Tr_class2'],
598                  "L_TR_CLASS3" => $lang['Tr_class3'],
599                  "L_TH_COLOR1" => $lang['Th_color1'],
600                  "L_TH_COLOR2" => $lang['Th_color2'],
601                  "L_TH_COLOR3" => $lang['Th_color3'],
602                  "L_TH_CLASS1" => $lang['Th_class1'],
603                  "L_TH_CLASS2" => $lang['Th_class2'],
604                  "L_TH_CLASS3" => $lang['Th_class3'],
605                  "L_TD_COLOR1" => $lang['Td_color1'],
606                  "L_TD_COLOR2" => $lang['Td_color2'],
607                  "L_TD_COLOR3" => $lang['Td_color3'],
608                  "L_TD_CLASS1" => $lang['Td_class1'],
609                  "L_TD_CLASS2" => $lang['Td_class2'],
610                  "L_TD_CLASS3" => $lang['Td_class3'],
611                  "L_FONTFACE_1" => $lang['fontface1'],
612                  "L_FONTFACE_2" => $lang['fontface2'],
613                  "L_FONTFACE_3" => $lang['fontface3'],
614                  "L_FONTSIZE_1" => $lang['fontsize1'],
615                  "L_FONTSIZE_2" => $lang['fontsize2'],
616                  "L_FONTSIZE_3" => $lang['fontsize3'],
617                  "L_FONTCOLOR_1" => $lang['fontcolor1'],
618                  "L_FONTCOLOR_2" => $lang['fontcolor2'],
619                  "L_FONTCOLOR_3" => $lang['fontcolor3'],
620                  "L_SPAN_CLASS_1" => $lang['span_class1'],
621                  "L_SPAN_CLASS_2" => $lang['span_class2'],
622                  "L_SPAN_CLASS_3" => $lang['span_class3'],
623                  "L_SAVE_SETTINGS" => $lang['Save_Settings'], 
624                  "THEME_NAME" => $selected['style_name'],
625                  "HEAD_STYLESHEET" => $selected['head_stylesheet'],
626                  "BODY_BACKGROUND" => $selected['body_background'],
627                  "BODY_BGCOLOR" => $selected['body_bgcolor'],
628                  "BODY_TEXT_COLOR" => $selected['body_text'],
629                  "BODY_LINK_COLOR" => $selected['body_link'],
630                  "BODY_VLINK_COLOR" => $selected['body_vlink'],
631                  "BODY_ALINK_COLOR" => $selected['body_alink'],
632                  "BODY_HLINK_COLOR" => $selected['body_hlink'],
633                  "TR_COLOR1" => $selected['tr_color1'],
634                  "TR_COLOR2" => $selected['tr_color2'],
635                  "TR_COLOR3" => $selected['tr_color3'],
636                  "TR_CLASS1" => $selected['tr_class1'],
637                  "TR_CLASS2" => $selected['tr_class2'],
638                  "TR_CLASS3" => $selected['tr_class3'],
639                  "TH_COLOR1" => $selected['th_color1'],
640                  "TH_COLOR2" => $selected['th_color2'],
641                  "TH_COLOR3" => $selected['th_color3'],
642                  "TH_CLASS1" => $selected['th_class1'],
643                  "TH_CLASS2" => $selected['th_class2'],
644                  "TH_CLASS3" => $selected['th_class3'],
645                  "TD_COLOR1" => $selected['td_color1'],
646                  "TD_COLOR2" => $selected['td_color2'],
647                  "TD_COLOR3" => $selected['td_color3'],
648                  "TD_CLASS1" => $selected['td_class1'],
649                  "TD_CLASS2" => $selected['td_class2'],
650                  "TD_CLASS3" => $selected['td_class3'],
651                  "FONTFACE1" => $selected['fontface1'],
652                  "FONTFACE2" => $selected['fontface2'],
653                  "FONTFACE3" => $selected['fontface3'],
654                  "FONTSIZE1" => $selected['fontsize1'],
655                  "FONTSIZE2" => $selected['fontsize2'],
656                  "FONTSIZE3" => $selected['fontsize3'],
657                  "FONTCOLOR1" => $selected['fontcolor1'],
658                  "FONTCOLOR2" => $selected['fontcolor2'],
659                  "FONTCOLOR3" => $selected['fontcolor3'],
660                  "SPAN_CLASS1" => $selected['span_class1'],
661                  "SPAN_CLASS2" => $selected['span_class2'],
662                  "SPAN_CLASS3" => $selected['span_class3'],
663   
664                  "TR_COLOR1_NAME" => $selected['tr_color1_name'],
665                  "TR_COLOR2_NAME" => $selected['tr_color2_name'],
666                  "TR_COLOR3_NAME" => $selected['tr_color3_name'],
667                  "TR_CLASS1_NAME" => $selected['tr_class1_name'],
668                  "TR_CLASS2_NAME" => $selected['tr_class2_name'],
669                  "TR_CLASS3_NAME" => $selected['tr_class3_name'],
670                  "TH_COLOR1_NAME" => $selected['th_color1_name'],
671                  "TH_COLOR2_NAME" => $selected['th_color2_name'],
672                  "TH_COLOR3_NAME" => $selected['th_color3_name'],
673                  "TH_CLASS1_NAME" => $selected['th_class1_name'],
674                  "TH_CLASS2_NAME" => $selected['th_class2_name'],
675                  "TH_CLASS3_NAME" => $selected['th_class3_name'],
676                  "TD_COLOR1_NAME" => $selected['td_color1_name'],
677                  "TD_COLOR2_NAME" => $selected['td_color2_name'],
678                  "TD_COLOR3_NAME" => $selected['td_color3_name'],
679                  "TD_CLASS1_NAME" => $selected['td_class1_name'],
680                  "TD_CLASS2_NAME" => $selected['td_class2_name'],
681                  "TD_CLASS3_NAME" => $selected['td_class3_name'],
682                  "FONTFACE1_NAME" => $selected['fontface1_name'],
683                  "FONTFACE2_NAME" => $selected['fontface2_name'],
684                  "FONTFACE3_NAME" => $selected['fontface3_name'],
685                  "FONTSIZE1_NAME" => $selected['fontsize1_name'],
686                  "FONTSIZE2_NAME" => $selected['fontsize2_name'],
687                  "FONTSIZE3_NAME" => $selected['fontsize3_name'],
688                  "FONTCOLOR1_NAME" => $selected['fontcolor1_name'],
689                  "FONTCOLOR2_NAME" => $selected['fontcolor2_name'],
690                  "FONTCOLOR3_NAME" => $selected['fontcolor3_name'],
691                  "SPAN_CLASS1_NAME" => $selected['span_class1_name'],
692                  "SPAN_CLASS2_NAME" => $selected['span_class2_name'],
693                  "SPAN_CLASS3_NAME" => $selected['span_class3_name'],
694                  
695                  "S_THEME_ACTION" => append_sid("admin_styles.$phpEx"),
696                  "S_TEMPLATE_SELECT" => $s_template_select,
697                  "S_HIDDEN_FIELDS" => $s_hidden_fields)
698              );
699              
700              $template->pparse("body");
701          }
702          break;
703   
704      case "export";
705          if($HTTP_POST_VARS['export_template'])
706          {
707              $template_name = $HTTP_POST_VARS['export_template'];
708   
709              $sql = "SELECT * 
710                  FROM " . THEMES_TABLE . 
711                  WHERE template_name = '" . str_replace("\'", "''", $template_name) . "'";
712              if(!$result = $db->sql_query($sql))
713              {
714                  message_die(GENERAL_ERROR, "Could not get theme data for selected template", "", __LINE__, __FILE__, $sql);
715              }
716              
717              $theme_rowset = $db->sql_fetchrowset($result);
718              
719              if( count($theme_rowset) == 0 )
720              {
721                  message_die(GENERAL_MESSAGE, $lang['No_themes']);
722              }
723              
724              $theme_data = '<?php'."\n\n";
725              $theme_data .= "//\n// phpBB 2.x auto-generated theme config file for $template_name\n// Do not change anything in this file!\n//\n\n";
726   
727              for($i = 0; $i < count($theme_rowset); $i++)
728              {
729                  while(list($key, $val) = each($theme_rowset[$i]))
730                  {
731                      if(!intval($key) && $key != "0" && $key != "themes_id")
732                      {
733                          $theme_data .= '$' . $template_name . "[$i]['$key'] = \"" . addslashes($val) . "\";\n";
734                      }
735                  }
736                  $theme_data .= "\n";
737              }
738              
739              $theme_data .= '?' . '>'; // Done this to prevent highlighting editors getting confused!
740              
741              @umask(0111);
742   
743              $fp = @fopen($phpbb_root_path . 'templates/' . basename($template_name) . '/theme_info.cfg', 'w');
744   
745              if( !$fp )
746              {
747                  //
748                  // Unable to open the file writeable do something here as an attempt
749                  // to get around that...
750                  //
751                  $s_hidden_fields = '<input type="hidden" name="theme_info" value="' . htmlspecialchars($theme_data) . '" />';
752                  $s_hidden_fields .= '<input type="hidden" name="send_file" value="1" /><input type="hidden" name="mode" value="export" />';
753                  
754                  $download_form = '<form action="' . append_sid("admin_styles.$phpEx") . '" method="post"><input class="mainoption" type="submit" name="submit" value="' . $lang['Download'] . '" />' . $s_hidden_fields;
755   
756                  $template->set_filenames(array(
757                      "body" => "message_body.tpl")
758                  );
759   
760                  $template->assign_vars(array(
761                      "MESSAGE_TITLE" => $lang['Export_themes'],
762                      "MESSAGE_TEXT" => $lang['Download_theme_cfg'] . "<br /><br />" . $download_form)
763                  );
764   
765                  $template->pparse('body');
766                  exit();
767              }
768   
769              $result = @fputs($fp, $theme_data, strlen($theme_data));
770              fclose($fp);
771              
772              $message = $lang['Theme_info_saved'] . "<br /><br />" . sprintf($lang['Click_return_styleadmin'], "<a href=\"" . append_sid("admin_styles.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
773   
774              message_die(GENERAL_MESSAGE, $message);
775   
776          }
777          else if($HTTP_POST_VARS['send_file'])
778          {
779              
780              header("Content-Type: text/x-delimtext; name=\"theme_info.cfg\"");
781              header("Content-disposition: attachment; filename=theme_info.cfg");
782   
783              echo stripslashes($HTTP_POST_VARS['theme_info']);
784          }
785          else
786          {
787              $template->set_filenames(array(
788                  "body" => "admin/styles_exporter.tpl")
789              );
790              
791              if( $dir = @opendir($phpbb_root_path . 'templates/') )
792              {    
793                  $s_template_select = '<select name="export_template">';
794                  while( $file = @readdir($dir) )
795                  {    
796                      if( !is_file(phpbb_realpath($phpbb_root_path . 'templates/' . $file)) && !is_link(phpbb_realpath($phpbb_root_path . 'templates/' .$file)) && $file != "." && $file != ".." && $file != "CVS" )
797                      {
798                          $s_template_select .= '<option value="' . $file . '">' . $file . "</option>\n";
799                      }
800                  }
801                  $s_template_select .= '</select>';
802              }
803              else
804              {
805                  message_die(GENERAL_MESSAGE, $lang['No_template_dir']);
806              }
807              
808              $template->assign_vars(array(
809                  "L_STYLE_EXPORTER" => $lang['Export_themes'],
810                  "L_EXPORTER_EXPLAIN" => $lang['Export_explain'],
811                  "L_TEMPLATE_SELECT" => $lang['Select_template'],
812                  "L_SUBMIT" => $lang['Submit'], 
813   
814                  "S_EXPORTER_ACTION" => append_sid("admin_styles.$phpEx?mode=export"),
815                  "S_TEMPLATE_SELECT" => $s_template_select)
816              );
817              
818              $template->pparse("body");
819              
820          }
821          break;
822   
823      case "delete":
824          $style_id = ( isset($HTTP_GET_VARS['style_id']) ) ? intval($HTTP_GET_VARS['style_id']) : intval($HTTP_POST_VARS['style_id']);
825          
826          if( !$confirm )
827          {
828              if($style_id == $board_config['default_style'])
829              {
830                  message_die(GENERAL_MESSAGE, $lang['Cannot_remove_style']);
831              }
832              
833              $hidden_fields = '<input type="hidden" name="mode" value="'.$mode.'" /><input type="hidden" name="style_id" value="'.$style_id.'" />';
834              
835              //
836              // Set template files
837              //
838              $template->set_filenames(array(
839                  "confirm" => "admin/confirm_body.tpl")
840              );
841   
842              $template->assign_vars(array(
843                  "MESSAGE_TITLE" => $lang['Confirm'],
844                  "MESSAGE_TEXT" => $lang['Confirm_delete_style'],
845   
846                  "L_YES" => $lang['Yes'],
847                  "L_NO" => $lang['No'],
848   
849                  "S_CONFIRM_ACTION" => append_sid("admin_styles.$phpEx"),
850                  "S_HIDDEN_FIELDS" => $hidden_fields)
851              );
852   
853              $template->pparse("confirm");
854   
855          }
856          else
857          {
858              //
859              // The user has confirmed the delete. Remove the style, the style element
860              // names and update any users who might be using this style
861              //
862              $sql = "DELETE FROM " . THEMES_TABLE . " 
863                  WHERE themes_id = $style_id";
864              if(!$result = $db->sql_query($sql, BEGIN_TRANSACTION))
865              {
866                  message_die(GENERAL_ERROR, "Could not remove style data!", "", __LINE__, __FILE__, $sql);
867              }
868              
869              //
870              // There may not be any theme name data so don't throw an error
871              // if the SQL dosan't work
872              //
873              $sql = "DELETE FROM " . THEMES_NAME_TABLE . " 
874                  WHERE themes_id = $style_id";
875              $db->sql_query($sql);
876   
877              $sql = "UPDATE " . USERS_TABLE . 
878                  SET user_style = " . $board_config['default_style'] . " 
879                  WHERE user_style = $style_id";
880              if(!$result = $db->sql_query($sql, END_TRANSACTION))
881              {
882                  message_die(GENERAL_ERROR, "Could not update user style information", "", __LINE__, __FILE__, $sql);
883              }
884              
885              $message = $lang['Style_removed'] . "<br /><br />" . sprintf($lang['Click_return_styleadmin'], "<a href=\"" . append_sid("admin_styles.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
886   
887              message_die(GENERAL_MESSAGE, $message);
888          }
889          break;
890   
891      default:
892          
893          $sql = "SELECT themes_id, template_name, style_name 
894              FROM " . THEMES_TABLE . 
895              ORDER BY template_name";
896          if(!$result = $db->sql_query($sql))
897          {
898              message_die(GENERAL_ERROR, "Could not get style information!", "", __LINE__, __FILE__, $sql);
899          }
900          
901          $style_rowset = $db->sql_fetchrowset($result);
902          
903          $template->set_filenames(array(
904              "body" => "admin/styles_list_body.tpl")
905          );
906   
907          $template->assign_vars(array(
908              "L_STYLES_TITLE" => $lang['Styles_admin'],
909              "L_STYLES_TEXT" => $lang['Styles_explain'],
910              "L_STYLE" => $lang['Style'],
911              "L_TEMPLATE" => $lang['Template'],
912              "L_EDIT" => $lang['Edit'],
913              "L_DELETE" => $lang['Delete'])
914          );
915                      
916          for($i = 0; $i < count($style_rowset); $i++)
917          {
918              $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
919              $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
920   
921              $template->assign_block_vars("styles", array(
922                  "ROW_CLASS" => $row_class,
923                  "ROW_COLOR" => $row_color,
924                  "STYLE_NAME" => $style_rowset[$i]['style_name'],
925                  "TEMPLATE_NAME" => $style_rowset[$i]['template_name'],
926   
927                  "U_STYLES_EDIT" => append_sid("admin_styles.$phpEx?mode=edit&amp;style_id=" . $style_rowset[$i]['themes_id']),
928                  "U_STYLES_DELETE" => append_sid("admin_styles.$phpEx?mode=delete&amp;style_id=" . $style_rowset[$i]['themes_id']))
929              );
930          }
931          
932          $template->pparse("body");    
933          break;
934  }
935   
936  if (empty($HTTP_POST_VARS['send_file']))
937  {
938      include('./page_footer_admin.'.$phpEx);
939  }
940   
941  ?>