[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 /*************************************************************************** 3 * admin_styles.php 4 * ------------------- 5 * begin : Thursday, Jul 12, 2001 6 * copyright : (C) 2001 The phpBB Group 7 * email : support@phpbb.com 8 * 9 * $Id: admin_styles.php 8377 2008-02-10 12:52:05Z acydburn $ 10 * 11 * 12 ***************************************************************************/ 13 14 /*************************************************************************** 15 * 16 * This program is free software; you can redistribute it and/or modify 17 * it under the terms of the GNU General Public License as published by 18 * the Free Software Foundation; either version 2 of the License, or 19 * (at your option) any later version. 20 * 21 ***************************************************************************/ 22 23 define('IN_PHPBB', 1); 24 25 if( !empty($setmodules) ) 26 { 27 $file = basename(__FILE__); 28 $module['Styles']['Add_new'] = "$file?mode=addnew"; 29 $module['Styles']['Create_new'] = "$file?mode=create"; 30 $module['Styles']['Manage'] = $file; 31 $module['Styles']['Export'] = "$file?mode=export"; 32 return; 33 } 34 35 // 36 // Load default header 37 // 38 // 39 // Check if the user has cancled a confirmation message. 40 // 41 $phpbb_root_path = "./../"; 42 require ($phpbb_root_path . 'extension.inc'); 43 44 $confirm = (isset($HTTP_POST_VARS['confirm']) || isset($_POST['confirm'])) ? TRUE : FALSE; 45 $cancel = (isset($HTTP_POST_VARS['cancel']) || isset($_POST['cancel'])) ? TRUE : FALSE; 46 47 $no_page_header = (!empty($HTTP_POST_VARS['send_file']) || !empty($_POST['send_file']) || $cancel) ? TRUE : FALSE; 48 49 require('./pagestart.' . $phpEx); 50 51 $confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE : FALSE; 52 $cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE : FALSE; 53 54 if ($cancel) 55 { 56 redirect('admin/' . append_sid("admin_styles.$phpEx", true)); 57 } 58 59 if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) 60 { 61 $mode = ( isset($HTTP_GET_VARS['mode']) ) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode']; 62 $mode = htmlspecialchars($mode); 63 } 64 else 65 { 66 $mode = ""; 67 } 68 69 switch( $mode ) 70 { 71 case "addnew": 72 $install_to = ( isset($HTTP_GET_VARS['install_to']) ) ? urldecode($HTTP_GET_VARS['install_to']) : $HTTP_POST_VARS['install_to']; 73 $style_name = ( isset($HTTP_GET_VARS['style']) ) ? urldecode($HTTP_GET_VARS['style']) : $HTTP_POST_VARS['style']; 74 75 if( isset($install_to) ) 76 { 77 78 include($phpbb_root_path. "templates/" . basename($install_to) . "/theme_info.cfg"); 79 80 $template_name = $$install_to; 81 $found = FALSE; 82 83 for($i = 0; $i < count($template_name) && !$found; $i++) 84 { 85 if( $template_name[$i]['style_name'] == $style_name ) 86 { 87 while(list($key, $val) = each($template_name[$i])) 88 { 89 $db_fields[] = $key; 90 $db_values[] = str_replace("\'", "''" , $val); 91 } 92 } 93 } 94 95 $sql = "INSERT INTO " . THEMES_TABLE . " ("; 96 97 for($i = 0; $i < count($db_fields); $i++) 98 { 99 $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&style=" . urlencode($installable_themes[$i]['style_name']) . "&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&style_id=" . $style_rowset[$i]['themes_id']), 928 "U_STYLES_DELETE" => append_sid("admin_styles.$phpEx?mode=delete&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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Jan 14 19:21:40 2013 | Cross-referenced by PHPXref 0.7.1 |