diff options
Diffstat (limited to 'phpBB/develop')
| -rw-r--r-- | phpBB/develop/compile_template.php | 24 | ||||
| -rw-r--r-- | phpBB/develop/create_schema_files.php | 134 | ||||
| -rw-r--r-- | phpBB/develop/create_variable_overview.php | 12 | ||||
| -rw-r--r-- | phpBB/develop/imageset_to_css.php | 274 | ||||
| -rw-r--r-- | phpBB/develop/mysql_upgrader.php | 33 |
5 files changed, 373 insertions, 104 deletions
diff --git a/phpBB/develop/compile_template.php b/phpBB/develop/compile_template.php new file mode 100644 index 0000000000..e741e909d8 --- /dev/null +++ b/phpBB/develop/compile_template.php @@ -0,0 +1,24 @@ +<?php +// ------------------------------------------------------------- +// +// $Id$ +// +// FILENAME : compile_template.php +// STARTED : Sun Apr 24, 2011 +// COPYRIGHT : © 2011 phpBB Group +// WWW : http://www.phpbb.com/ +// LICENCE : GPL vs2.0 [ see /docs/COPYING ] +// +// ------------------------------------------------------------- + +define('IN_PHPBB', 1); +define('ANONYMOUS', 1); +$phpEx = substr(strrchr(__FILE__, '.'), 1); +$phpbb_root_path = './../'; + +include($phpbb_root_path . 'includes/template_compile.'.$phpEx); + +$file = $argv[1]; + +$compile = new phpbb_template_compile(); +echo $compile->compile_file($file); diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index 8a4c4a329a..1735bffef5 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -12,11 +12,7 @@ * If you overwrite the original schema files please make sure you save the file with UNIX linefeeds. */ -die("Please read the first lines of this script for instructions on how to enable it"); - -@set_time_limit(0); - -$schema_path = './../install/schemas/'; +$schema_path = dirname(__FILE__) . '/../install/schemas/'; if (!is_writable($schema_path)) { @@ -242,7 +238,7 @@ $supported_dbms = array('firebird', 'mssql', 'mysql_40', 'mysql_41', 'oracle', ' foreach ($supported_dbms as $dbms) { - $fp = fopen($schema_path . '_' . $dbms . '_schema.sql', 'wt'); + $fp = fopen($schema_path . $dbms . '_schema.sql', 'wt'); $line = ''; @@ -251,32 +247,43 @@ foreach ($supported_dbms as $dbms) { case 'mysql_40': case 'mysql_41': - $line = "#\n# \$I" . "d: $\n#\n\n"; + case 'firebird': + case 'sqlite': + fwrite($fp, "# DO NOT EDIT THIS FILE, IT IS GENERATED\n"); + fwrite($fp, "#\n"); + fwrite($fp, "# To change the contents of this file, edit\n"); + fwrite($fp, "# phpBB/develop/create_schema_files.php and\n"); + fwrite($fp, "# run it.\n"); break; + case 'mssql': + case 'oracle': + case 'postgres': + fwrite($fp, "/*\n"); + fwrite($fp, " * DO NOT EDIT THIS FILE, IT IS GENERATED\n"); + fwrite($fp, " *\n"); + fwrite($fp, " * To change the contents of this file, edit\n"); + fwrite($fp, " * phpBB/develop/create_schema_files.php and\n"); + fwrite($fp, " * run it.\n"); + fwrite($fp, " */\n\n"); + break; + } + + switch ($dbms) + { case 'firebird': - $line = "#\n# \$I" . "d: $\n#\n\n"; $line .= custom_data('firebird') . "\n"; break; case 'sqlite': - $line = "#\n# \$I" . "d: $\n#\n\n"; $line .= "BEGIN TRANSACTION;\n\n"; break; - case 'mssql': - $line = "/*\n\n \$I" . "d: $\n\n*/\n\n"; - // no need to do this, no transaction support for schema changes - //$line .= "BEGIN TRANSACTION\nGO\n\n"; - break; - case 'oracle': - $line = "/*\n\n \$I" . "d: $\n\n*/\n\n"; $line .= custom_data('oracle') . "\n"; break; case 'postgres': - $line = "/*\n\n \$I" . "d: $\n\n*/\n\n"; $line .= "BEGIN;\n\n"; $line .= custom_data('postgres') . "\n"; break; @@ -329,6 +336,15 @@ foreach ($supported_dbms as $dbms) // Write columns one by one... foreach ($table_data['COLUMNS'] as $column_name => $column_data) { + if (strlen($column_name) > 30) + { + trigger_error("Column name '$column_name' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR); + } + if (isset($column_data[2]) && $column_data[2] == 'auto_increment' && strlen($column_name) > 26) // "${column_name}_gen" + { + trigger_error("Index name '${column_name}_gen' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR); + } + // Get type if (strpos($column_data[0], ':') !== false) { @@ -632,6 +648,11 @@ foreach ($supported_dbms as $dbms) $key_data[1] = array($key_data[1]); } + if (strlen($table_name . $key_name) > 30) + { + trigger_error("Index name '${table_name}_$key_name' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR); + } + switch ($dbms) { case 'mysql_40': @@ -1017,6 +1038,17 @@ function get_schema_struct() ), ); + $schema_data['phpbb_ext'] = array( + 'COLUMNS' => array( + 'ext_name' => array('VCHAR', ''), + 'ext_active' => array('BOOL', 0), + 'ext_state' => array('TEXT', ''), + ), + 'KEYS' => array( + 'ext_name' => array('UNIQUE', 'ext_name'), + ), + ); + $schema_data['phpbb_extensions'] = array( 'COLUMNS' => array( 'extension_id' => array('UINT', NULL, 'auto_increment'), @@ -1209,6 +1241,24 @@ function get_schema_struct() ), ); + $schema_data['phpbb_login_attempts'] = array( + 'COLUMNS' => array( + 'attempt_ip' => array('VCHAR:40', ''), + 'attempt_browser' => array('VCHAR:150', ''), + 'attempt_forwarded_for' => array('VCHAR:255', ''), + 'attempt_time' => array('TIMESTAMP', 0), + 'user_id' => array('UINT', 0), + 'username' => array('VCHAR_UNI:255', 0), + 'username_clean' => array('VCHAR_CI', 0), + ), + 'KEYS' => array( + 'att_ip' => array('INDEX', array('attempt_ip', 'attempt_time')), + 'att_for' => array('INDEX', array('attempt_forwarded_for', 'attempt_time')), + 'att_time' => array('INDEX', array('attempt_time')), + 'user_id' => array('INDEX', 'user_id'), + ), + ); + $schema_data['phpbb_moderator_cache'] = array( 'COLUMNS' => array( 'forum_id' => array('UINT', 0), @@ -1413,6 +1463,7 @@ function get_schema_struct() 'field_validation' => array('VCHAR_UNI:20', ''), 'field_required' => array('BOOL', 0), 'field_show_on_reg' => array('BOOL', 0), + 'field_show_on_pm' => array('BOOL', 0), 'field_show_on_vt' => array('BOOL', 0), 'field_show_profile' => array('BOOL', 0), 'field_hide' => array('BOOL', 0), @@ -1606,14 +1657,12 @@ function get_schema_struct() 'style_active' => array('BOOL', 1), 'template_id' => array('UINT', 0), 'theme_id' => array('UINT', 0), - 'imageset_id' => array('UINT', 0), ), 'PRIMARY_KEY' => 'style_id', 'KEYS' => array( 'style_name' => array('UNIQUE', 'style_name'), 'template_id' => array('INDEX', 'template_id'), 'theme_id' => array('INDEX', 'theme_id'), - 'imageset_id' => array('INDEX', 'imageset_id'), ), ); @@ -1624,7 +1673,6 @@ function get_schema_struct() 'template_copyright' => array('VCHAR_UNI', ''), 'template_path' => array('VCHAR:100', ''), 'bbcode_bitfield' => array('VCHAR:255', 'kNg='), - 'template_storedb' => array('BOOL', 0), 'template_inherits_id' => array('UINT:4', 0), 'template_inherit_path' => array('VCHAR', ''), ), @@ -1634,29 +1682,12 @@ function get_schema_struct() ), ); - $schema_data['phpbb_styles_template_data'] = array( - 'COLUMNS' => array( - 'template_id' => array('UINT', 0), - 'template_filename' => array('VCHAR:100', ''), - 'template_included' => array('TEXT', ''), - 'template_mtime' => array('TIMESTAMP', 0), - 'template_data' => array('MTEXT_UNI', ''), - ), - 'KEYS' => array( - 'tid' => array('INDEX', 'template_id'), - 'tfn' => array('INDEX', 'template_filename'), - ), - ); - $schema_data['phpbb_styles_theme'] = array( 'COLUMNS' => array( 'theme_id' => array('UINT', NULL, 'auto_increment'), 'theme_name' => array('VCHAR_UNI:255', ''), 'theme_copyright' => array('VCHAR_UNI', ''), 'theme_path' => array('VCHAR:100', ''), - 'theme_storedb' => array('BOOL', 0), - 'theme_mtime' => array('TIMESTAMP', 0), - 'theme_data' => array('MTEXT_UNI', ''), ), 'PRIMARY_KEY' => 'theme_id', 'KEYS' => array( @@ -1664,35 +1695,6 @@ function get_schema_struct() ), ); - $schema_data['phpbb_styles_imageset'] = array( - 'COLUMNS' => array( - 'imageset_id' => array('UINT', NULL, 'auto_increment'), - 'imageset_name' => array('VCHAR_UNI:255', ''), - 'imageset_copyright' => array('VCHAR_UNI', ''), - 'imageset_path' => array('VCHAR:100', ''), - ), - 'PRIMARY_KEY' => 'imageset_id', - 'KEYS' => array( - 'imgset_nm' => array('UNIQUE', 'imageset_name'), - ), - ); - - $schema_data['phpbb_styles_imageset_data'] = array( - 'COLUMNS' => array( - 'image_id' => array('UINT', NULL, 'auto_increment'), - 'image_name' => array('VCHAR:200', ''), - 'image_filename' => array('VCHAR:200', ''), - 'image_lang' => array('VCHAR:30', ''), - 'image_height' => array('USINT', 0), - 'image_width' => array('USINT', 0), - 'imageset_id' => array('UINT', 0), - ), - 'PRIMARY_KEY' => 'image_id', - 'KEYS' => array( - 'i_d' => array('INDEX', 'imageset_id'), - ), - ); - $schema_data['phpbb_topics'] = array( 'COLUMNS' => array( 'topic_id' => array('UINT', NULL, 'auto_increment'), diff --git a/phpBB/develop/create_variable_overview.php b/phpBB/develop/create_variable_overview.php index 46314ca8d1..b42d1aebe2 100644 --- a/phpBB/develop/create_variable_overview.php +++ b/phpBB/develop/create_variable_overview.php @@ -44,7 +44,7 @@ fwrite($fp, $contents); fclose($fp); $html_skeleton = ' -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="subSilver.css" type="text/css"> @@ -83,7 +83,7 @@ $html_skeleton .= '<br><br><a name="ref"></a><b>References: </b>{SEE_FILES}'; $html_skeleton .= ' <br><br> -<div class="copyright" align="center">Powered by phpBB 2.2 © <a href="http://www.phpbb.com/" target="_phpbb" class="copyright">phpBB Group</a>, 2003</div> +<div class="copyright" align="center">Powered by <a href="http://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group</div> <br clear="all" /></td> </tr> @@ -362,7 +362,7 @@ echo '<br>Store Files'; $fp = fopen($store_dir . 'index.html', 'w'); $html_data = ' -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="subSilver.css" type="text/css"> @@ -405,7 +405,7 @@ $html_data .= '<br><li><a href="./lang_index.html" class="gen">Appendix A: Langu $html_data .= ' </ol><br><br> -<div class="copyright" align="center">Powered by phpBB 2.2 © <a href="http://www.phpbb.com/" target="_phpbb" class="copyright">phpBB Group</a>, 2003</div> +<div class="copyright" align="center">Powered by <a href="http://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group</div> <br clear="all" /></td> </tr> @@ -427,7 +427,7 @@ fwrite($common_fp, "<?php\n\n \$lang = array(\n"); $fp = fopen($store_dir . 'lang_index.html', 'w'); $html_data = ' -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="subSilver.css" type="text/css"> @@ -528,7 +528,7 @@ foreach ($lang_fp as $filepointer) $html_data .= ' <br><br> -<div class="copyright" align="center">Powered by <a href="http://www.phpbb.com/">phpBB</a> © phpBB Group</div> +<div class="copyright" align="center">Powered by <a href="http://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group</div> <br clear="all" /></td> </tr> diff --git a/phpBB/develop/imageset_to_css.php b/phpBB/develop/imageset_to_css.php new file mode 100644 index 0000000000..3d55808319 --- /dev/null +++ b/phpBB/develop/imageset_to_css.php @@ -0,0 +1,274 @@ +<?php + +/* + Converts imageset to CSS code + + Change style name and path below, open in browser. +*/ + +$phpbb_root_path = '../'; +$style = 'subsilver2'; + +$imageset_path = $phpbb_root_path . 'styles/' . $style . '/imageset'; +$theme_path = $phpbb_root_path . 'styles/' . $style . '/theme2'; + +// Start output buffering +ob_start(); + +// Get global and English images +$images_global = get_imageset($imageset_path); +if($images_global === false) +{ + echo 'imageset.cfg was not found.'; + echo ob_get_clean(); + return; +} +$images_en = get_imageset($imageset_path, 'en'); +if($images_en === false) +{ + echo 'English imageset.cfg was not found.'; + echo ob_get_clean(); + return; +} + +// Remove duplicate images +foreach($images_en as $key => $row) +{ + unset($images_global[$key]); +} + +// CSS replacements +$not_compatible = array( + '{T_TEMPLATE_PATH}', + '{T_IMAGESET_PATH}', + '{T_IMAGESET_LANG_PATH}', + '{T_STYLESHEET_NAME}', + '{S_USER_LANG}' +); +$replace = array( + '{T_THEME_PATH}' => '.', +); +// Enable/disable one of lines below to enable/disable replacement of English buttons +// $replace = array_merge($replace, get_replacements($images_global)); +$replace = array_merge($replace, get_replacements($images_global), get_replacements($images_en)); + +// Get all CSS files, parse them +$files = list_files($theme_path, 'css'); +if($files === false || !count($files)) +{ + echo 'No CSS files found in theme directory.<br />'; +} +else for($i=0; $i<count($files); $i++) +{ + $file = $theme_path . '/' . $files[$i]; + $data = file_get_contents($file); + $hash = md5($data); + $data = strtr($data, $replace); + $errors = false; + for($j=0; $j<count($not_compatible); $j++) + { + if(strpos($data, $not_compatible[$j]) !== false) + { + echo 'Error: ', $file, ' contains ', $not_compatible[$j], '. That variable cannot be converted.<br />'; + } + } + if(md5($data) == $hash) + { + echo 'Nothing to replace in ', $file, '<br />'; + } + else + { + echo 'Updated ', $file, ':', dump_code($data, $files[$i]); + } +} + +// Check if there are invalid images in imageset +$list = array_merge($images_global, $images_en); +foreach($list as $key => $row) +{ + if($row['skip']) + { + echo 'Unable to generate code to add to CSS files because some images are missing or invalid. See errors above.'; + echo ob_get_clean(); + return; + } +} + +// Code to add to CSS files +$code = ' +/* Former imageset */ +span.imageset { + display: inline-block; + background: transparent none 0 0 no-repeat; + margin: 0; + padding: 0; + width: 0; + height: 0; + overflow: hidden; +} + +/* Global imageset items */ +' . css($images_global, './images/') . ' + +/* English images for fallback */ +' . css($images_en, './en/'); +echo 'Code to add to CSS file:', dump_code($code, 'imageset.css'); + +$list = list_languages($imageset_path); +for($i=0; $i<count($list); $i++) +{ + $lang = $list[$i]; + $images = get_imageset($imageset_path . '/' . $lang); + if(!count($images)) continue; + $code = '/* ' . strtoupper($lang) . ' Language Pack */ +' . css($images, './'); + echo 'New CSS file: ', $theme_path, '/', $lang, '/stylesheet.css', dump_code($code, 'stylesheet_' . $lang . '.css'); +} + +echo ob_get_clean(); +return; + + +/* + Functions +*/ +function get_imageset($path, $lang = '') +{ + $cfg = $path . ($lang ? '/' . $lang : '') . '/imageset.cfg'; + if(!@file_exists($cfg)) return false; + $data = file($cfg); + $result = array(); + for($i=0; $i<count($data); $i++) + { + $str = trim($data[$i]); + if(substr($str, 0, 4) != 'img_') continue; + $list = explode('=', $data[$i]); + if(count($list) != 2) continue; + $key = trim($list[0]); + $row = explode('*', trim($list[1])); + $file = trim($row[0]); + $height = isset($row[1]) && intval($row[1]) ? intval($row[1]) : false; + $width = isset($row[2]) && intval($row[2]) ? intval($row[2]) : false; + $skip = false; + if(strlen($file) && (!$width || !$height)) + { + // Try to detect width/height + $filename = $path . ($lang ? '/' . $lang : '') . '/' . $file; + if(!@file_exists($filename)) + { + echo 'Error: file ', $filename, ' does not exist and its dimensions are not available in imageset.cfg<br />'; + $skip = true; + } + else + { + $size = @getimagesize($filename); + if($size === false) + { + echo 'Error: file ', $filename, ' is not a valid image<br />'; + $skip = true; + } + else + { + if(!$width) $width = intval($size[0]); + if(!$height) $height = intval($size[1]); + } + } + } + $result[$key] = array( + 'lang' => $lang, + 'file' => $file, + 'height' => $height, + 'width' => $width, + 'skip' => $skip + ); + } + return $result; +} + +function get_replacements($list) +{ + $result = array(); + foreach($list as $key => $row) + { + $key = '{' . strtoupper($key); + $result[$key . '_SRC}'] = strlen($row['file']) ? ($row['lang'] ? './' . $row['lang'] : './images') . '/' . $row['file'] : ''; + $result[$key . '_WIDTH}'] = intval($row['width']); + $result[$key . '_HEIGHT}'] = intval($row['height']); + } + return $result; +} + +function list_files($dir, $ext) +{ + $res = @opendir($dir); + if($res === false) return false; + $files = array(); + while(($file = readdir($res)) !== false) + { + $list = explode('.', $file); + if(count($list) > 1 && strtolower($list[count($list) - 1]) == $ext) + { + $files[] = $file; + } + } + closedir($res); + return $files; +} + +function list_languages($dir) +{ + $res = @opendir($dir); + if($res === false) return array(); + $files = array(); + while(($file = readdir($res)) !== false) + { + if(substr($file, 0, 1) == '.') continue; + $filename = $dir . '/' . $file; + if(is_dir($filename) && file_exists($filename . '/imageset.cfg')) + { + $files[] = $file; + } + } + closedir($res); + return $files; +} + +function dump_code($code, $filename = 'file.txt') +{ + $hash = md5($code); + if(isset($_GET['download']) && $_GET['download'] === $hash) + { + // Download file + ob_end_clean(); + header('Pragma: public'); + header('Expires: 0'); + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); + header('Content-Type: application/force-download'); + header('Content-Disposition: attachment; filename="' . $filename . '";'); + header('Content-Transfer-Encoding: binary'); + header('Content-Length: ' . strlen($code)); + echo $code; + exit; + } + $list = explode("\n", $code); + $height = 15 * count($list); + echo ' [ <a href="?download=', $hash, '">download</a> <a href="javascript:void(0);" onclick="document.getElementById(\'code-', $hash, '\').style.height = \'', $height, 'px\'; this.style.display = \'none\'; return false;">expand</a> ]<br />'; + echo '<textarea id="code-', $hash, '" onfocus="this.select();" style="width: 98%; height: 200px;">', htmlspecialchars($code), '</textarea><br />'; +} + +function css($list, $path = './') +{ + $code = ''; + foreach($list as $key => $row) + { + if(!strlen($row['file'])) continue; + $code .= '.imageset.' . substr($key, 4) . ' { + background-image: url("' . $path . $row['file'] . '"); + padding-left: ' . $row['width'] . 'px; + padding-top: ' . $row['height'] . 'px; +} +'; + } + return $code; +} + diff --git a/phpBB/develop/mysql_upgrader.php b/phpBB/develop/mysql_upgrader.php index 6c052b03eb..c54a7155c2 100644 --- a/phpBB/develop/mysql_upgrader.php +++ b/phpBB/develop/mysql_upgrader.php @@ -253,7 +253,7 @@ foreach ($schema_data as $table_name => $table_data) // Do we now need to re-add the fulltext index? ;) if ($table_name == ($prefix . 'posts') && $drop_index) { - echo "ALTER TABLE $table_name ADD FULLTEXT (post_subject), ADD FULLTEXT (post_text), ADD FULLTEXT post_content (post_subject, post_text){$newline}"; + echo "ALTER TABLE $table_name ADD FULLTEXT (post_subject), ADD FULLTEXT (post_text), ADD FULLTEXT post_content (post_subject, post_text);{$newline}"; } } @@ -1094,14 +1094,12 @@ function get_schema_struct() 'style_active' => array('BOOL', 1), 'template_id' => array('UINT', 0), 'theme_id' => array('UINT', 0), - 'imageset_id' => array('UINT', 0), ), 'PRIMARY_KEY' => 'style_id', 'KEYS' => array( 'style_name' => array('UNIQUE', 'style_name'), 'template_id' => array('INDEX', 'template_id'), 'theme_id' => array('INDEX', 'theme_id'), - 'imageset_id' => array('INDEX', 'imageset_id'), ), ); @@ -1152,35 +1150,6 @@ function get_schema_struct() ), ); - $schema_data['phpbb_styles_imageset'] = array( - 'COLUMNS' => array( - 'imageset_id' => array('UINT', NULL, 'auto_increment'), - 'imageset_name' => array('VCHAR_UNI:255', ''), - 'imageset_copyright' => array('VCHAR_UNI', ''), - 'imageset_path' => array('VCHAR:100', ''), - ), - 'PRIMARY_KEY' => 'imageset_id', - 'KEYS' => array( - 'imgset_nm' => array('UNIQUE', 'imageset_name'), - ), - ); - - $schema_data['phpbb_styles_imageset_data'] = array( - 'COLUMNS' => array( - 'image_id' => array('UINT', NULL, 'auto_increment'), - 'image_name' => array('VCHAR:200', ''), - 'image_filename' => array('VCHAR:200', ''), - 'image_lang' => array('VCHAR:30', ''), - 'image_height' => array('USINT', 0), - 'image_width' => array('USINT', 0), - 'imageset_id' => array('UINT', 0), - ), - 'PRIMARY_KEY' => 'image_id', - 'KEYS' => array( - 'i_d' => array('INDEX', 'imageset_id'), - ), - ); - $schema_data['phpbb_topics'] = array( 'COLUMNS' => array( 'topic_id' => array('UINT', NULL, 'auto_increment'), |
