diff options
Diffstat (limited to 'phpBB/install')
| -rw-r--r-- | phpBB/install/convertors/convert_phpbb20.php | 9 | ||||
| -rw-r--r-- | phpBB/install/convertors/functions_phpbb20.php | 9 | ||||
| -rw-r--r-- | phpBB/install/data/confusables.php | 5 | ||||
| -rw-r--r-- | phpBB/install/data/new_normalizer.php | 5 | ||||
| -rw-r--r-- | phpBB/install/database_update.php | 2247 | ||||
| -rw-r--r-- | phpBB/install/index.php | 101 | ||||
| -rw-r--r-- | phpBB/install/install_convert.php | 108 | ||||
| -rw-r--r-- | phpBB/install/install_install.php | 316 | ||||
| -rw-r--r-- | phpBB/install/install_main.php | 5 | ||||
| -rw-r--r-- | phpBB/install/install_update.php | 134 | ||||
| -rw-r--r-- | phpBB/install/phpinfo.php | 2 | ||||
| -rw-r--r-- | phpBB/install/schemas/firebird_schema.sql | 223 | ||||
| -rw-r--r-- | phpBB/install/schemas/mssql_schema.sql | 267 | ||||
| -rw-r--r-- | phpBB/install/schemas/mysql_40_schema.sql | 164 | ||||
| -rw-r--r-- | phpBB/install/schemas/mysql_41_schema.sql | 164 | ||||
| -rw-r--r-- | phpBB/install/schemas/oracle_schema.sql | 277 | ||||
| -rw-r--r-- | phpBB/install/schemas/postgres_schema.sql | 192 | ||||
| -rw-r--r-- | phpBB/install/schemas/schema_data.sql | 123 | ||||
| -rw-r--r-- | phpBB/install/schemas/sqlite_schema.sql | 158 | 
19 files changed, 1235 insertions, 3274 deletions
diff --git a/phpBB/install/convertors/convert_phpbb20.php b/phpBB/install/convertors/convert_phpbb20.php index 960cc5b335..5f30625980 100644 --- a/phpBB/install/convertors/convert_phpbb20.php +++ b/phpBB/install/convertors/convert_phpbb20.php @@ -2,9 +2,8 @@  /**  *  * @package install -* @version $Id$  * @copyright (c) 2006 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -25,6 +24,8 @@ if (!defined('IN_PHPBB'))  include($phpbb_root_path . 'config.' . $phpEx);  unset($dbpasswd); +$dbms = phpbb_convert_30_dbms_to_31($dbms); +  /**  * $convertor_data provides some basic information about this convertor which is  * used on the initial list of convertors and to populate the default settings @@ -32,7 +33,7 @@ unset($dbpasswd);  $convertor_data = array(  	'forum_name'	=> 'phpBB 2.0.x',  	'version'		=> '1.0.3', -	'phpbb_version'	=> '3.0.11', +	'phpbb_version'	=> '3.1.0-dev',  	'author'		=> '<a href="https://www.phpbb.com/">phpBB Group</a>',  	'dbms'			=> $dbms,  	'dbhost'		=> $dbhost, @@ -940,5 +941,3 @@ if (!$get_info)  		),  	);  } - -?>
\ No newline at end of file diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php index 466f57a572..0b6daeef47 100644 --- a/phpBB/install/convertors/functions_phpbb20.php +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -2,9 +2,8 @@  /**  *  * @package install -* @version $Id$  * @copyright (c) 2006 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -14,7 +13,7 @@ if (!defined('IN_PHPBB'))  }  /** -* Helper functions for phpBB 2.0.x to phpBB 3.0.x conversion +* Helper functions for phpBB 2.0.x to phpBB 3.1.x conversion  */  /** @@ -458,7 +457,7 @@ function phpbb_get_birthday($birthday = '')  	{  		$birthday = (int) $birthday; -		if (!$birthday || $birthday == 999999 || ((version_compare(PHP_VERSION, '5.1.0') < 0) && $birthday < 0)) +		if (!$birthday || $birthday == 999999)  		{  			return ' 0- 0-   0';  		} @@ -1866,5 +1865,3 @@ function phpbb_check_username_collisions()  	$drop_sql = 'DROP TABLE ' . USERCONV_TABLE;  	$db->sql_query($drop_sql);  } - -?>
\ No newline at end of file diff --git a/phpBB/install/data/confusables.php b/phpBB/install/data/confusables.php index c543ddfc81..f5d3b11731 100644 --- a/phpBB/install/data/confusables.php +++ b/phpBB/install/data/confusables.php @@ -2,9 +2,8 @@  /**  *  * @package install -* @version $Id$  * @copyright (c) 2007 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -646,5 +645,3 @@ function utf8_new_case_fold_nfkc($text, $option = 'full')  }  return array('¡'=>'i','ǃ'=>'!','α'=>'a',' '=>' ',''=>'',''=>'',''=>'','᠆'=>'',''=>'',''=>'',''=>'',''=>'','
'=>'','
'=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'',''=>'','۬'=>'۟','̓'=>'̓','ُ'=>'̓','֜'=>'́','́'=>'́','݇'=>'́','॔'=>'́','̀'=>'̀','॓'=>'̀','̌'=>'̆','̑'=>'̂','֯'=>'̊','ஂ'=>'̊','ํ'=>'̊','ໍ'=>'̊','ံ'=>'̊','ំ'=>'̊','៓'=>'̊','゚'=>'̊','゚'=>'̊','ͦ'=>'̊','͂'=>'̃','ׄ'=>'̇','ֹ'=>'̇','ׂ'=>'̇','ׁ'=>'̇','݁'=>'̇','ं'=>'̇','ਂ'=>'̇','ં'=>'̇','்'=>'̇','̅'=>'̄','〬'=>'̉','̱'=>'̠','॒'=>'̠','̧'=>'̡','̦'=>'̡','̨'=>'̢','़'=>'̣','়'=>'̣','਼'=>'̣','઼'=>'̣','଼'=>'̣','͇'=>'̳','̶'=>'̵','ﱞ'=>'ﹲّ','ﱟ'=>'ﹴّ','ﳲ'=>'ﹷّ','ﱠ'=>'ﹶّ','ﳳ'=>'ﹹّ','ﱡ'=>'ﹸّ','ﳴ'=>'ﹻّ','ﱢ'=>'ﹺّ','ﱣ'=>'ﹼٰ','ٴ'=>'ٔ','݂'=>'ܼ','౦'=>'o','೦'=>'o','゙'=>'゙',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ','`'=>'`','`'=>'`','῀'=>'˜','^'=>'^','︿'=>'^','_'=>'_','﹍'=>'_','﹎'=>'_','﹏'=>'_','⌇'=>'︴','-'=>'-','‐'=>'-','‑'=>'-','‒'=>'-','–'=>'-','﹘'=>'-','∼'=>'⁓','・'=>'・','•'=>'・',','=>',','‚'=>',','٬'=>'،','、'=>'、',';'=>';',';'=>';',':'=>':','։'=>':','︰'=>':','׃'=>':','⩴'=>'::=','.'=>'.','․'=>'.','܂'=>'.','‥'=>'..','…'=>'...','。'=>'。','·'=>'·','‧'=>'·','∙'=>'·','⋅'=>'·','ᐧ'=>'·','ᔯ'=>'·4','ᐌ'=>'·ᐁ','ᐎ'=>'·ᐃ','ᐐ'=>'·ᐄ','ᐒ'=>'·ᐅ','ᐔ'=>'·ᐆ','ᐗ'=>'·ᐊ','ᐙ'=>'·ᐋ','ᐷ'=>'·ᐳ','ᑀ'=>'·ᐳ','ᑂ'=>'·ᐴ','ᑄ'=>'·ᐸ','ᑆ'=>'·ᐹ','ᑗ'=>'·ᑌ','ᑙ'=>'·ᑎ','ᑛ'=>'·ᑏ','ᑔ'=>'·ᑐ','ᑝ'=>'·ᑐ','ᑟ'=>'·ᑑ','ᑡ'=>'·ᑕ','ᑣ'=>'·ᑖ','ᑴ'=>'·ᑫ','ᑸ'=>'·ᑮ','ᑼ'=>'·ᑰ','ᑾ'=>'·ᑲ','ᒀ'=>'·ᑳ','ᒒ'=>'·ᒉ','ᒔ'=>'·ᒋ','ᒖ'=>'·ᒌ','ᒚ'=>'·ᒎ','ᒜ'=>'·ᒐ','ᒞ'=>'·ᒑ','ᒬ'=>'·ᒣ','ᒮ'=>'·ᒥ','ᒰ'=>'·ᒦ','ᒲ'=>'·ᒧ','ᒴ'=>'·ᒨ','ᒶ'=>'·L','ᒸ'=>'·ᒫ','ᓉ'=>'·ᓀ','ᓋ'=>'·ᓇ','ᓍ'=>'·ᓈ','ᓜ'=>'·ᓓ','ᓞ'=>'·ᓕ','ᓠ'=>'·ᓖ','ᓢ'=>'·ᓗ','ᓤ'=>'·ᓘ','ᓦ'=>'·ᓚ','ᓨ'=>'·ᓛ','ᓶ'=>'·ᓭ','ᓸ'=>'·ᓯ','ᓺ'=>'·ᓰ','ᓼ'=>'·ᓱ','ᓾ'=>'·ᓲ','ᔀ'=>'·ᓴ','ᔂ'=>'·ᓵ','ᔗ'=>'·ᔐ','ᔙ'=>'·ᔑ','ᔛ'=>'·ᔒ','ᔝ'=>'·ᔓ','ᔟ'=>'·ᔔ','ᔡ'=>'·ᔕ','ᔣ'=>'·ᔖ','ᔱ'=>'·ᔨ','ᔳ'=>'·ᔩ','ᔵ'=>'·ᔪ','ᔷ'=>'·ᔫ','ᔹ'=>'·ᔭ','ᔻ'=>'·ᔮ','ᕎ'=>'·ᕌ','ᕛ'=>'·ᕚ','ᕨ'=>'·ᕧ','('=>'(','⑴'=>'(1)','⒧'=>'(l)','⑽'=>'(10)','⑾'=>'(11)','⑿'=>'(12)','⒀'=>'(13)','⒁'=>'(14)','⒂'=>'(15)','⒃'=>'(16)','⒄'=>'(17)','⒅'=>'(18)','⒆'=>'(19)','⑵'=>'(2)','⒇'=>'(20)','⑶'=>'(3)','⑷'=>'(4)','⑸'=>'(5)','⑹'=>'(6)','⑺'=>'(7)','⑻'=>'(8)','⑼'=>'(9)','⒜'=>'(a)','⒝'=>'(b)','⒞'=>'(c)','⒟'=>'(d)','⒠'=>'(e)','⒡'=>'(f)','⒢'=>'(g)','⒣'=>'(h)','⒤'=>'(i)','⒥'=>'(j)','⒦'=>'(k)','⒨'=>'(m)','⒩'=>'(n)','⒪'=>'(o)','⒫'=>'(p)','⒬'=>'(q)','⒭'=>'(r)','⒮'=>'(s)','⒯'=>'(t)','⒰'=>'(u)','⒱'=>'(v)','⒲'=>'(w)','⒳'=>'(x)','⒴'=>'(y)','⒵'=>'(z)','㈀'=>'(ᄀ)','㈎'=>'(가)','㈁'=>'(ᄂ)','㈏'=>'(나)','㈂'=>'(ᄃ)','㈐'=>'(다)','㈃'=>'(ᄅ)','㈑'=>'(라)','㈄'=>'(ᄆ)','㈒'=>'(마)','㈅'=>'(ᄇ)','㈓'=>'(바)','㈆'=>'(ᄉ)','㈔'=>'(사)','㈇'=>'(ᄋ)','㈕'=>'(아)','㈝'=>'(오전)','㈞'=>'(오후)','㈈'=>'(ᄌ)','㈖'=>'(자)','㈜'=>'(주)','㈉'=>'(ᄎ)','㈗'=>'(차)','㈊'=>'(ᄏ)','㈘'=>'(카)','㈋'=>'(ᄐ)','㈙'=>'(타)','㈌'=>'(ᄑ)','㈚'=>'(파)','㈍'=>'(ᄒ)','㈛'=>'(하)','㈠'=>'(一)','㈦'=>'(七)','㈢'=>'(三)','㈨'=>'(九)','㈡'=>'(二)','㈤'=>'(五)','㈹'=>'(代)','㈽'=>'(企)','㉁'=>'(休)','㈧'=>'(八)','㈥'=>'(六)','㈸'=>'(労)','㈩'=>'(十)','㈿'=>'(協)','㈴'=>'(名)','㈺'=>'(呼)','㈣'=>'(四)','㈯'=>'(土)','㈻'=>'(学)','㈰'=>'(日)','㈪'=>'(月)','㈲'=>'(有)','㈭'=>'(木)','㈱'=>'(株)','㈬'=>'(水)','㈫'=>'(火)','㈵'=>'(特)','㈼'=>'(監)','㈳'=>'(社)','㈷'=>'(祝)','㉀'=>'(祭)','㉂'=>'(自)','㉃'=>'(至)','㈶'=>'(財)','㈾'=>'(資)','㈮'=>'(金)',')'=>')','['=>'[','〔'=>'[',']'=>']','〕'=>']','{'=>'{','}'=>'}','⦅'=>'⦅','⦆'=>'⦆','「'=>'「','」'=>'」','@'=>'@','*'=>'*','/'=>'/','⁄'=>'/','∕'=>'/','\'=>'\\','&'=>'&','#'=>'#','%'=>'%','‶'=>'‵‵','‷'=>'‵‵‵','༌'=>'་','´'=>'ʹ','΄'=>'ʹ','´'=>'ʹ','\''=>'ʹ','''=>'ʹ','′'=>'ʹ','׳'=>'ʹ','ʹ'=>'ʹ','ˊ'=>'ʹ','"'=>'ʹʹ','"'=>'ʹʹ','″'=>'ʹʹ','〃'=>'ʹʹ','״'=>'ʹʹ','ʺ'=>'ʹʹ','‴'=>'ʹʹʹ','⁗'=>'ʹʹʹʹ','¯'=>'ˉ',' ̄'=>'ˉ','‾'=>'ˉ','﹉'=>'ˉ','﹊'=>'ˉ','﹋'=>'ˉ','﹌'=>'ˉ','˚'=>'°','௵'=>'௳','←'=>'←','→'=>'→','↑'=>'↑','↓'=>'↓','↵'=>'↲','⨡'=>'↾','𝛛'=>'∂','𝜕'=>'∂','𝝏'=>'∂','𝞉'=>'∂','𝟃'=>'∂','𝛁'=>'∇','𝛻'=>'∇','𝜵'=>'∇','𝝯'=>'∇','𝞩'=>'∇','+'=>'+','﬩'=>'+','‹'=>'<','<'=>'<','='=>'=','⩵'=>'==','⩶'=>'===','›'=>'>','>'=>'>','¬'=>'¬','¦'=>'¦','〜'=>'~','~'=>'~','﹨'=>'∖','⋀'=>'∧','⋁'=>'∨','⋂'=>'∩','⋃'=>'∪','∯'=>'∮∮','∰'=>'∮∮∮','≣'=>'≡','♁'=>'⊕','☉'=>'⊙','⟂'=>'⊥','▷'=>'⊲','⨝'=>'⋈','⨽'=>'⌙','☸'=>'⎈','⎮'=>'⎥','│'=>'│','▐'=>'▌','■'=>'■','☐'=>'□','○'=>'○','⦾'=>'◎','〛'=>'⟧','〈'=>'⟨','〈'=>'⟨','〉'=>'⟩','〉'=>'⟩','⧙'=>'⦚','〶'=>'〒','ー'=>'ー','¢'=>'¢','$'=>'$','£'=>'£','¥'=>'Y̵','₩'=>'W̵','0'=>'0','𝟎'=>'0','𝟘'=>'0','𝟢'=>'0','𝟬'=>'0','𝟶'=>'0','০'=>'0','୦'=>'0','௦'=>'0','᠐'=>'0','〇'=>'0','𝐎'=>'0','𝑂'=>'0','𝑶'=>'0','𝒪'=>'0','𝓞'=>'0','𝔒'=>'0','𝕆'=>'0','𝕺'=>'0','𝖮'=>'0','𝗢'=>'0','𝘖'=>'0','𝙊'=>'0','𝙾'=>'0','𝚶'=>'0','𝛰'=>'0','𝜪'=>'0','𝝤'=>'0','𝞞'=>'0','ⵔ'=>'0','ഠ'=>'0','⊖'=>'0̵','𝚯'=>'0̵','𝚹'=>'0̵','𝛩'=>'0̵','𝛳'=>'0̵','𝜣'=>'0̵','𝜭'=>'0̵','𝝝'=>'0̵','𝝧'=>'0̵','𝞗'=>'0̵','𝞡'=>'0̵','ⴱ'=>'0̵','Ꮎ'=>'0̵','۰'=>'٠','᭜'=>'᭐','㍘'=>'0点','1'=>'1','𝟏'=>'1','𝟙'=>'1','𝟣'=>'1','𝟭'=>'1','𝟷'=>'1','ℐ'=>'1','ℑ'=>'1','𝐈'=>'1','𝐼'=>'1','𝑰'=>'1','𝓘'=>'1','𝕀'=>'1','𝕴'=>'1','𝖨'=>'1','𝗜'=>'1','𝘐'=>'1','𝙄'=>'1','𝙸'=>'1','l'=>'l','l'=>'l','ⅼ'=>'1','ℓ'=>'l','𝐥'=>'l','𝑙'=>'l','𝒍'=>'l','𝓁'=>'l','𝓵'=>'l','𝔩'=>'l','𝕝'=>'l','𝖑'=>'l','𝗅'=>'l','𝗹'=>'l','𝘭'=>'l','𝙡'=>'l','𝚕'=>'l','𝚰'=>'l','𝛪'=>'l','𝜤'=>'l','𝝞'=>'l','𝞘'=>'l','①'=>'➀','ɭ'=>'l̢','ɫ'=>'l̴','ƚ'=>'l̵','ł'=>'l̷','۱'=>'١','⒈'=>'1.','ŀ'=>'l·','ᒷ'=>'1·','⑩'=>'➉','⒑'=>'10.','㏩'=>'10日','㋉'=>'10月','㍢'=>'10点','⒒'=>'11.','㏪'=>'11日','㋊'=>'11月','㍣'=>'11点','⒓'=>'12.','㏫'=>'12日','㋋'=>'12月','㍤'=>'12点','⒔'=>'13.','㏬'=>'13日','㍥'=>'13点','⒕'=>'14.','㏭'=>'14日','㍦'=>'14点','⒖'=>'15.','㏮'=>'15日','㍧'=>'15点','⒗'=>'16.','㏯'=>'16日','㍨'=>'16点','⒘'=>'17.','㏰'=>'17日','㍩'=>'17点','⒙'=>'18.','㏱'=>'18日','㍪'=>'18点','⒚'=>'19.','㏲'=>'19日','㍫'=>'19点','lj'=>'lj','㏠'=>'1日','㋀'=>'1月','㍙'=>'1点','2'=>'2','𝟐'=>'2','𝟚'=>'2','𝟤'=>'2','𝟮'=>'2','𝟸'=>'2','ᒿ'=>'2','②'=>'➁','۲'=>'٢','⒉'=>'2.','⒛'=>'20.','㏳'=>'20日','㍬'=>'20点','㏴'=>'21日','㍭'=>'21点','㏵'=>'22日','㍮'=>'22点','㏶'=>'23日','㍯'=>'23点','㏷'=>'24日','㍰'=>'24点','㏸'=>'25日','㏹'=>'26日','㏺'=>'27日','㏻'=>'28日','㏼'=>'29日','㏡'=>'2日','㋁'=>'2月','㍚'=>'2点','3'=>'3','𝟑'=>'3','𝟛'=>'3','𝟥'=>'3','𝟯'=>'3','𝟹'=>'3','③'=>'➂','۳'=>'٣','⒊'=>'3.','㏽'=>'30日','㏾'=>'31日','㏢'=>'3日','㋂'=>'3月','㍛'=>'3点','4'=>'4','𝟒'=>'4','𝟜'=>'4','𝟦'=>'4','𝟰'=>'4','𝟺'=>'4','Ꮞ'=>'4','④'=>'➃','⒋'=>'4.','ᔰ'=>'4·','㏣'=>'4日','㋃'=>'4月','㍜'=>'4点','5'=>'5','𝟓'=>'5','𝟝'=>'5','𝟧'=>'5','𝟱'=>'5','𝟻'=>'5','⑤'=>'➄','⒌'=>'5.','㏤'=>'5日','㋄'=>'5月','㍝'=>'5点','6'=>'6','𝟔'=>'6','𝟞'=>'6','𝟨'=>'6','𝟲'=>'6','𝟼'=>'6','б'=>'6','⑥'=>'➅','⒍'=>'6.','㏥'=>'6日','㋅'=>'6月','㍞'=>'6点','7'=>'7','𝟕'=>'7','𝟟'=>'7','𝟩'=>'7','𝟳'=>'7','𝟽'=>'7','⑦'=>'➆','۷'=>'٧','⒎'=>'7.','㏦'=>'7日','㋆'=>'7月','㍟'=>'7点','ଃ'=>'8','৪'=>'8','੪'=>'8','8'=>'8','𝟖'=>'8','𝟠'=>'8','𝟪'=>'8','𝟴'=>'8','𝟾'=>'8','ȣ'=>'8','⑧'=>'➇','۸'=>'٨','⒏'=>'8.','㏧'=>'8日','㋇'=>'8月','㍠'=>'8点','੧'=>'9','୨'=>'9','৭'=>'9','9'=>'9','𝟗'=>'9','𝟡'=>'9','𝟫'=>'9','𝟵'=>'9','𝟿'=>'9','⑨'=>'➈','۹'=>'٩','⒐'=>'9.','㏨'=>'9日','㋈'=>'9月','㍡'=>'9点','a'=>'a','𝐚'=>'a','𝑎'=>'a','𝒂'=>'a','𝒶'=>'a','𝓪'=>'a','𝔞'=>'a','𝕒'=>'a','𝖆'=>'a','𝖺'=>'a','𝗮'=>'a','𝘢'=>'a','𝙖'=>'a','𝚊'=>'a','℀'=>'a/c','℁'=>'a/s','æ'=>'ae','b'=>'b','𝐛'=>'b','𝑏'=>'b','𝒃'=>'b','𝒷'=>'b','𝓫'=>'b','𝔟'=>'b','𝕓'=>'b','𝖇'=>'b','𝖻'=>'b','𝗯'=>'b','𝘣'=>'b','𝙗'=>'b','𝚋'=>'b','ɓ'=>'b̔','ƃ'=>'b̄','ƀ'=>'b̵','c'=>'c','ⅽ'=>'c','𝐜'=>'c','𝑐'=>'c','𝒄'=>'c','𝒸'=>'c','𝓬'=>'c','𝔠'=>'c','𝕔'=>'c','𝖈'=>'c','𝖼'=>'c','𝗰'=>'c','𝘤'=>'c','𝙘'=>'c','𝚌'=>'c','𝛓'=>'c','𝜍'=>'c','𝝇'=>'c','𝞁'=>'c','𝞻'=>'c','℅'=>'c/o','℆'=>'c/u','d'=>'d','ⅾ'=>'d','ⅆ'=>'d','𝐝'=>'d','𝑑'=>'d','𝒅'=>'d','𝒹'=>'d','𝓭'=>'d','𝔡'=>'d','𝕕'=>'d','𝖉'=>'d','𝖽'=>'d','𝗱'=>'d','𝘥'=>'d','𝙙'=>'d','𝚍'=>'d','ɗ'=>'d̔','ƌ'=>'d̄','ɖ'=>'d̢','đ'=>'d̵','dz'=>'dz','dž'=>'dž','e'=>'e','ℯ'=>'e','ⅇ'=>'e','𝐞'=>'e','𝑒'=>'e','𝒆'=>'e','𝓮'=>'e','𝔢'=>'e','𝕖'=>'e','𝖊'=>'e','𝖾'=>'e','𝗲'=>'e','𝘦'=>'e','𝙚'=>'e','𝚎'=>'e','ⴹ'=>'E','ə'=>'ǝ','ɚ'=>'ǝ˞','⋴'=>'ɛ','𝛆'=>'ɛ','𝛜'=>'ɛ','𝜀'=>'ɛ','𝜖'=>'ɛ','𝜺'=>'ɛ','𝝐'=>'ɛ','𝝴'=>'ɛ','𝞊'=>'ɛ','𝞮'=>'ɛ','𝟄'=>'ɛ','f'=>'f','𝐟'=>'f','𝑓'=>'f','𝒇'=>'f','𝒻'=>'f','𝓯'=>'f','𝔣'=>'f','𝕗'=>'f','𝖋'=>'f','𝖿'=>'f','𝗳'=>'f','𝘧'=>'f','𝙛'=>'f','𝚏'=>'f','ƒ'=>'f̡','g'=>'g','ℊ'=>'g','𝐠'=>'g','𝑔'=>'g','𝒈'=>'g','𝓰'=>'g','𝔤'=>'g','𝕘'=>'g','𝖌'=>'g','𝗀'=>'g','𝗴'=>'g','𝘨'=>'g','𝙜'=>'g','𝚐'=>'g','ɡ'=>'g','ɠ'=>'g̔','ǥ'=>'g̵','h'=>'h','ℎ'=>'h','𝐡'=>'h','𝒉'=>'h','𝒽'=>'h','𝓱'=>'h','𝔥'=>'h','𝕙'=>'h','𝖍'=>'h','𝗁'=>'h','𝗵'=>'h','𝘩'=>'h','𝙝'=>'h','𝚑'=>'h','ɦ'=>'h̔','ħ'=>'h̵','ℏ'=>'h̵','῾'=>'ʻ','‘'=>'ʻ','‛'=>'ʻ','ʽ'=>'ʻ','⍳'=>'i','i'=>'i','ⅰ'=>'i','ℹ'=>'i','ⅈ'=>'i','𝐢'=>'i','𝑖'=>'i','𝒊'=>'i','𝒾'=>'i','𝓲'=>'i','𝔦'=>'i','𝕚'=>'i','𝖎'=>'i','𝗂'=>'i','𝗶'=>'i','𝘪'=>'i','𝙞'=>'i','𝚒'=>'i','ı'=>'i','𝚤'=>'i','ɪ'=>'i','ɩ'=>'i','𝛊'=>'i','𝜄'=>'i','𝜾'=>'i','𝝸'=>'i','𝞲'=>'i','ɨ'=>'i̵','ⅱ'=>'ii','ⅲ'=>'iii','ij'=>'ij','ⅳ'=>'iv','ⅸ'=>'ix','j'=>'j','ⅉ'=>'j','𝐣'=>'j','𝑗'=>'j','𝒋'=>'j','𝒿'=>'j','𝓳'=>'j','𝔧'=>'j','𝕛'=>'j','𝖏'=>'j','𝗃'=>'j','𝗷'=>'j','𝘫'=>'j','𝙟'=>'j','𝚓'=>'j','ϳ'=>'j','𝚥'=>'ȷ','k'=>'k','𝐤'=>'k','𝑘'=>'k','𝒌'=>'k','𝓀'=>'k','𝓴'=>'k','𝔨'=>'k','𝕜'=>'k','𝖐'=>'k','𝗄'=>'k','𝗸'=>'k','𝘬'=>'k','𝙠'=>'k','𝚔'=>'k','ƙ'=>'k̔','m'=>'m','ⅿ'=>'m','𝐦'=>'m','𝑚'=>'m','𝒎'=>'m','𝓂'=>'m','𝓶'=>'m','𝔪'=>'m','𝕞'=>'m','𝖒'=>'m','𝗆'=>'m','𝗺'=>'m','𝘮'=>'m','𝙢'=>'m','𝚖'=>'m','ɱ'=>'m̡','n'=>'n','𝐧'=>'n','𝑛'=>'n','𝒏'=>'n','𝓃'=>'n','𝓷'=>'n','𝔫'=>'n','𝕟'=>'n','𝖓'=>'n','𝗇'=>'n','𝗻'=>'n','𝘯'=>'n','𝙣'=>'n','𝚗'=>'n','𝐍'=>'N','𝑁'=>'N','𝑵'=>'N','𝒩'=>'N','𝓝'=>'N','𝔑'=>'N','𝕹'=>'N','𝖭'=>'N','𝗡'=>'N','𝘕'=>'N','𝙉'=>'N','𝙽'=>'N','𝚴'=>'N','𝛮'=>'N','𝜨'=>'N','𝝢'=>'N','𝞜'=>'N','ɲ'=>'ņ','ɳ'=>'n̢','ƞ'=>'n̩','𝛈'=>'n̩','𝜂'=>'n̩','𝜼'=>'n̩','𝝶'=>'n̩','𝞰'=>'n̩','nj'=>'nj','o'=>'o','ℴ'=>'o','𝐨'=>'o','𝑜'=>'o','𝒐'=>'o','𝓸'=>'o','𝔬'=>'o','𝕠'=>'o','𝖔'=>'o','𝗈'=>'o','𝗼'=>'o','𝘰'=>'o','𝙤'=>'o','𝚘'=>'o','ᴏ'=>'o','𝛐'=>'o','𝜊'=>'o','𝝄'=>'o','𝝾'=>'o','𝞸'=>'o','ɵ'=>'o̵','ǿ'=>'ó̵','ø'=>'o̷','œ'=>'oe','ơ'=>'oʼ','⍴'=>'p','p'=>'p','𝐩'=>'p','𝑝'=>'p','𝒑'=>'p','𝓅'=>'p','𝓹'=>'p','𝔭'=>'p','𝕡'=>'p','𝖕'=>'p','𝗉'=>'p','𝗽'=>'p','𝘱'=>'p','𝙥'=>'p','𝚙'=>'p','𝛒'=>'p','𝛠'=>'p','𝜌'=>'p','𝜚'=>'p','𝝆'=>'p','𝝔'=>'p','𝞀'=>'p','𝞎'=>'p','𝞺'=>'p','𝟈'=>'p','ƥ'=>'p̔','q'=>'q','𝐪'=>'q','𝑞'=>'q','𝒒'=>'q','𝓆'=>'q','𝓺'=>'q','𝔮'=>'q','𝕢'=>'q','𝖖'=>'q','𝗊'=>'q','𝗾'=>'q','𝘲'=>'q','𝙦'=>'q','𝚚'=>'q','𝐐'=>'Q','𝑄'=>'Q','𝑸'=>'Q','𝒬'=>'Q','𝓠'=>'Q','𝔔'=>'Q','𝕼'=>'Q','𝖰'=>'Q','𝗤'=>'Q','𝘘'=>'Q','𝙌'=>'Q','𝚀'=>'Q','ʠ'=>'q̔','𝛋'=>'ĸ','𝛞'=>'ĸ','𝜅'=>'ĸ','𝜘'=>'ĸ','𝜿'=>'ĸ','𝝒'=>'ĸ','𝝹'=>'ĸ','𝞌'=>'ĸ','𝞳'=>'ĸ','𝟆'=>'ĸ','r'=>'r','𝐫'=>'r','𝑟'=>'r','𝒓'=>'r','𝓇'=>'r','𝓻'=>'r','𝔯'=>'r','𝕣'=>'r','𝖗'=>'r','𝗋'=>'r','𝗿'=>'r','𝘳'=>'r','𝙧'=>'r','𝚛'=>'r','ɽ'=>'r̢','ɼ'=>'r̩','s'=>'s','𝐬'=>'s','𝑠'=>'s','𝒔'=>'s','𝓈'=>'s','𝓼'=>'s','𝔰'=>'s','𝕤'=>'s','𝖘'=>'s','𝗌'=>'s','𝘀'=>'s','𝘴'=>'s','𝙨'=>'s','𝚜'=>'s','ƽ'=>'s','ʂ'=>'s̢','∫'=>'ʃ','∬'=>'ʃʃ','∭'=>'ʃʃʃ','⨌'=>'ʃʃʃʃ','t'=>'t','𝐭'=>'t','𝑡'=>'t','𝒕'=>'t','𝓉'=>'t','𝓽'=>'t','𝔱'=>'t','𝕥'=>'t','𝖙'=>'t','𝗍'=>'t','𝘁'=>'t','𝘵'=>'t','𝙩'=>'t','𝚝'=>'t','𝑇'=>'T','𝑻'=>'T','𝒯'=>'T','𝓣'=>'T','𝔗'=>'T','𝕋'=>'T','𝕿'=>'T','𝖳'=>'T','𝗧'=>'T','𝘛'=>'T','𝙏'=>'T','𝚃'=>'T','𝚻'=>'T','𝛵'=>'T','𝜯'=>'T','𝝩'=>'T','𝞣'=>'T','ƭ'=>'t̔','ț'=>'ţ','ƫ'=>'ţ','ŧ'=>'t̵','u'=>'u','𝐮'=>'u','𝑢'=>'u','𝒖'=>'u','𝓊'=>'u','𝓾'=>'u','𝔲'=>'u','𝕦'=>'u','𝖚'=>'u','𝗎'=>'u','𝘂'=>'u','𝘶'=>'u','𝙪'=>'u','𝚞'=>'u','ʊ'=>'u','ʋ'=>'u','𝛖'=>'u','𝜐'=>'u','𝝊'=>'u','𝞄'=>'u','𝞾'=>'u','𝑈'=>'U','𝑼'=>'U','𝒰'=>'U','𝓤'=>'U','𝔘'=>'U','𝕌'=>'U','𝖀'=>'U','𝖴'=>'U','𝗨'=>'U','𝘜'=>'U','𝙐'=>'U','𝚄'=>'U','v'=>'v','ⅴ'=>'v','𝐯'=>'v','𝑣'=>'v','𝒗'=>'v','𝓋'=>'v','𝓿'=>'v','𝔳'=>'v','𝕧'=>'v','𝖛'=>'v','𝗏'=>'v','𝘃'=>'v','𝘷'=>'v','𝙫'=>'v','𝚟'=>'v','𝛎'=>'v','𝜈'=>'v','𝝂'=>'v','𝝼'=>'v','𝞶'=>'v','ⅵ'=>'vi','ⅶ'=>'vii','ⅷ'=>'viii','ɯ'=>'w','w'=>'w','𝐰'=>'w','𝑤'=>'w','𝒘'=>'w','𝓌'=>'w','𝔀'=>'w','𝔴'=>'w','𝕨'=>'w','𝖜'=>'w','𝗐'=>'w','𝘄'=>'w','𝘸'=>'w','𝙬'=>'w','𝚠'=>'w','𝑊'=>'W','𝑾'=>'W','𝒲'=>'W','𝓦'=>'W','𝔚'=>'W','𝕎'=>'W','𝖂'=>'W','𝖶'=>'W','𝗪'=>'W','𝘞'=>'W','𝙒'=>'W','𝚆'=>'W','×'=>'x','x'=>'x','ⅹ'=>'x','𝐱'=>'x','𝑥'=>'x','𝒙'=>'x','𝓍'=>'x','𝔁'=>'x','𝔵'=>'x','𝕩'=>'x','𝖝'=>'x','𝗑'=>'x','𝘅'=>'x','𝘹'=>'x','𝙭'=>'x','𝚡'=>'x','᙭'=>'X','𝑋'=>'X','𝑿'=>'X','𝒳'=>'X','𝓧'=>'X','𝔛'=>'X','𝕏'=>'X','𝖃'=>'X','𝖷'=>'X','𝗫'=>'X','𝘟'=>'X','𝙓'=>'X','𝚇'=>'X','𝚾'=>'X','𝛸'=>'X','𝜲'=>'X','𝝬'=>'X','𝞦'=>'X','ⅺ'=>'xi','ⅻ'=>'xii','y'=>'y','𝐲'=>'y','𝑦'=>'y','𝒚'=>'y','𝓎'=>'y','𝔂'=>'y','𝔶'=>'y','𝕪'=>'y','𝖞'=>'y','𝗒'=>'y','𝘆'=>'y','𝘺'=>'y','𝙮'=>'y','𝚢'=>'y','ƴ'=>'y̔','z'=>'z','𝐳'=>'z','𝑧'=>'z','𝒛'=>'z','𝓏'=>'z','𝔃'=>'z','𝔷'=>'z','𝕫'=>'z','𝖟'=>'z','𝗓'=>'z','𝘇'=>'z','𝘻'=>'z','𝙯'=>'z','𝚣'=>'z','ȥ'=>'z̡','ʐ'=>'z̢','ƶ'=>'z̵','ȝ'=>'ʒ','?'=>'ʔ','?'=>'ʔ','⁇'=>'ʔʔ','⁈'=>'ʔǃ','᾽'=>'ʼ','᾿'=>'ʼ','’'=>'ʼ','ʾ'=>'ʼ','!'=>'ǃ','!'=>'ǃ','⁉'=>'ǃʔ','‼'=>'ǃǃ','⍺'=>'α','𝛂'=>'α','𝛼'=>'α','𝜶'=>'α','𝝰'=>'α','𝞪'=>'α','𝛃'=>'β','𝛽'=>'β','𝜷'=>'β','𝝱'=>'β','𝞫'=>'β','ℽ'=>'γ','𝛄'=>'γ','𝛾'=>'γ','𝜸'=>'γ','𝝲'=>'γ','𝞬'=>'γ','𝛅'=>'δ','𝛿'=>'δ','𝜹'=>'δ','𝝳'=>'δ','𝞭'=>'δ','𝟋'=>'ϝ','𝛇'=>'ζ','𝜁'=>'ζ','𝜻'=>'ζ','𝝵'=>'ζ','𝞯'=>'ζ','⍬'=>'θ','𝛉'=>'θ','𝛝'=>'θ','𝜃'=>'θ','𝜗'=>'θ','𝜽'=>'θ','𝝑'=>'θ','𝝷'=>'θ','𝞋'=>'θ','𝞱'=>'θ','𝟅'=>'θ','𝛌'=>'λ','𝜆'=>'λ','𝝀'=>'λ','𝝺'=>'λ','𝞴'=>'λ','𝛬'=>'Λ','𝜦'=>'Λ','𝝠'=>'Λ','𝞚'=>'Λ','𝛍'=>'μ','𝜇'=>'μ','𝝁'=>'μ','𝝻'=>'μ','𝞵'=>'μ','𝛏'=>'ξ','𝜉'=>'ξ','𝝃'=>'ξ','𝝽'=>'ξ','𝞷'=>'ξ','𝛯'=>'Ξ','𝜩'=>'Ξ','𝝣'=>'Ξ','𝞝'=>'Ξ','ℼ'=>'π','𝛑'=>'π','𝛡'=>'π','𝜋'=>'π','𝜛'=>'π','𝝅'=>'π','𝝕'=>'π','𝝿'=>'π','𝞏'=>'π','𝞹'=>'π','𝟉'=>'π','ᴨ'=>'π','∏'=>'Π','𝚷'=>'Π','𝛱'=>'Π','𝜫'=>'Π','𝝥'=>'Π','𝞟'=>'Π','𝛔'=>'σ','𝜎'=>'σ','𝝈'=>'σ','𝞂'=>'σ','𝞼'=>'σ','𝛕'=>'τ','𝜏'=>'τ','𝝉'=>'τ','𝞃'=>'τ','𝞽'=>'τ','𝐘'=>'Y','𝑌'=>'Y','𝒀'=>'Y','𝒴'=>'Y','𝓨'=>'Y','𝔜'=>'Y','𝕐'=>'Y','𝖄'=>'Y','𝖸'=>'Y','𝗬'=>'Y','𝘠'=>'Y','𝙔'=>'Y','𝚈'=>'Y','𝚼'=>'Y','𝛶'=>'Y','𝜰'=>'Y','𝝪'=>'Y','𝞤'=>'Y','𝛗'=>'φ','𝛟'=>'φ','𝜑'=>'φ','𝜙'=>'φ','𝝋'=>'φ','𝝓'=>'φ','𝞅'=>'φ','𝞍'=>'φ','𝞿'=>'φ','𝟇'=>'φ','𝛷'=>'Φ','𝜱'=>'Φ','𝝫'=>'Φ','𝞥'=>'Φ','𝛘'=>'χ','𝜒'=>'χ','𝝌'=>'χ','𝞆'=>'χ','𝟀'=>'χ','𝛙'=>'ψ','𝜓'=>'ψ','𝝍'=>'ψ','𝞇'=>'ψ','𝟁'=>'ψ','𝛹'=>'Ψ','𝜳'=>'Ψ','𝝭'=>'Ψ','𝞧'=>'Ψ','⍵'=>'ω','𝛚'=>'ω','𝜔'=>'ω','𝝎'=>'ω','𝞈'=>'ω','𝟂'=>'ω','ӕ'=>'ae','ғ'=>'r̵','ґ'=>'rᑊ','җ'=>'ж̩','ҙ'=>'з̡','ӏ'=>'i','ҋ'=>'й̡','қ'=>'ĸ̩','ҟ'=>'ĸ̵','ᴫ'=>'л','ӆ'=>'л̡','ӎ'=>'м̡','ӊ'=>'н̡','ӈ'=>'н̡','ң'=>'н̩','ө'=>'o̵','ѳ'=>'o̵','ҫ'=>'c̡','ҭ'=>'т̩','ү'=>'y','ұ'=>'y̵','ћ'=>'h̵','ѽ'=>'ѡ҃','ӌ'=>'ҷ','ҿ'=>'ҽ̢','ҍ'=>'Ь̵','զ'=>'q','ռ'=>'n','ℵ'=>'א','ﬡ'=>'א','אָ'=>'אַ','אּ'=>'אַ','ﭏ'=>'אל','ℶ'=>'ב','ℷ'=>'ג','ℸ'=>'ד','ﬢ'=>'ד','ﬣ'=>'ה','ﬤ'=>'כ','ﬥ'=>'ל','ﬦ'=>'ם','ﬠ'=>'ע','ﬧ'=>'ר','ﬨ'=>'ת','ﺀ'=>'ء','ﺂ'=>'آ','ﺁ'=>'آ','ﺄ'=>'أ','ﺃ'=>'أ','ٵ'=>'أ','ﭑ'=>'ٱ','ﭐ'=>'ٱ','ﺆ'=>'ؤ','ﺅ'=>'ؤ','ٶ'=>'ؤ','ﺈ'=>'إ','ﺇ'=>'إ','ﺋ'=>'ئ','ﺌ'=>'ئ','ﺊ'=>'ئ','ﺉ'=>'ئ','ﯫ'=>'ئا','ﯪ'=>'ئا','ﯸ'=>'ئٻ','ﯷ'=>'ئٻ','ﯶ'=>'ئٻ','ﲗ'=>'ئج','ﰀ'=>'ئج','ﲘ'=>'ئح','ﰁ'=>'ئح','ﲙ'=>'ئخ','ﱤ'=>'ئر','ﱥ'=>'ئز','ﲚ'=>'ئم','ﳟ'=>'ئم','ﱦ'=>'ئم','ﰂ'=>'ئم','ﱧ'=>'ئن','ﲛ'=>'ئه','ﳠ'=>'ئه','ﯭ'=>'ئه','ﯬ'=>'ئه','ﯯ'=>'ئو','ﯮ'=>'ئو','ﯳ'=>'ئۆ','ﯲ'=>'ئۆ','ﯱ'=>'ئۇ','ﯰ'=>'ئۇ','ﯵ'=>'ئۈ','ﯴ'=>'ئۈ','ﯻ'=>'ئى','ﯺ'=>'ئى','ﱨ'=>'ئى','ﯹ'=>'ئى','ﰃ'=>'ئى','ﱩ'=>'ئى','ﰄ'=>'ئى','ﺎ'=>'ا','ﺍ'=>'ا','ﴼ'=>'اً','ﴽ'=>'اً','ﷳ'=>'اكبر','ﷲ'=>'الله','ﺑ'=>'ب','ﺒ'=>'ب','ﺐ'=>'ب','ﺏ'=>'ب','ﲜ'=>'بج','ﰅ'=>'بج','ﲝ'=>'بح','ﰆ'=>'بح','ﷂ'=>'بحى','ﲞ'=>'بخ','ﰇ'=>'بخ','ﶞ'=>'بخى','ﱪ'=>'بر','ﱫ'=>'بز','ﲟ'=>'بم','ﳡ'=>'بم','ﱬ'=>'بم','ﰈ'=>'بم','ﱭ'=>'بن','ﲠ'=>'به','ﳢ'=>'به','ﱮ'=>'بى','ﰉ'=>'بى','ﱯ'=>'بى','ﰊ'=>'بى','ﭔ'=>'ٻ','ﭕ'=>'ٻ','ﭓ'=>'ٻ','ﭒ'=>'ٻ','ې'=>'ٻ','ﯦ'=>'ٻ','ﯧ'=>'ٻ','ﯥ'=>'ٻ','ﯤ'=>'ٻ','ﭘ'=>'پ','ﭙ'=>'پ','ﭗ'=>'پ','ﭖ'=>'پ','ﭜ'=>'ڀ','ﭝ'=>'ڀ','ﭛ'=>'ڀ','ﭚ'=>'ڀ','ﺔ'=>'ة','ﺓ'=>'ة','ﺗ'=>'ت','ﺘ'=>'ت','ﺖ'=>'ت','ﺕ'=>'ت','ﲡ'=>'تج','ﰋ'=>'تج','ﵐ'=>'تجم','ﶠ'=>'تجى','ﶟ'=>'تجى','ﲢ'=>'تح','ﰌ'=>'تح','ﵒ'=>'تحج','ﵑ'=>'تحج','ﵓ'=>'تحم','ﲣ'=>'تخ','ﰍ'=>'تخ','ﵔ'=>'تخم','ﶢ'=>'تخى','ﶡ'=>'تخى','ﱰ'=>'تر','ﱱ'=>'تز','ﲤ'=>'تم','ﳣ'=>'تم','ﱲ'=>'تم','ﰎ'=>'تم','ﵕ'=>'تمج','ﵖ'=>'تمح','ﵗ'=>'تمخ','ﶤ'=>'تمى','ﶣ'=>'تمى','ﱳ'=>'تن','ﲥ'=>'ته','ﳤ'=>'ته','ﱴ'=>'تى','ﰏ'=>'تى','ﱵ'=>'تى','ﰐ'=>'تى','ﺛ'=>'ث','ﺜ'=>'ث','ﺚ'=>'ث','ﺙ'=>'ث','ﰑ'=>'ثج','ﱶ'=>'ثر','ﱷ'=>'ثز','ﲦ'=>'ثم','ﳥ'=>'ثم','ﱸ'=>'ثم','ﰒ'=>'ثم','ﱹ'=>'ثن','ﳦ'=>'ثه','ﱺ'=>'ثى','ﰓ'=>'ثى','ﱻ'=>'ثى','ﰔ'=>'ثى','ﭨ'=>'ٹ','ﭩ'=>'ٹ','ﭧ'=>'ٹ','ﭦ'=>'ٹ','ڻ'=>'ٹ','ﮢ'=>'ٹ','ﮣ'=>'ٹ','ﮡ'=>'ٹ','ﮠ'=>'ٹ','ﭠ'=>'ٺ','ﭡ'=>'ٺ','ﭟ'=>'ٺ','ﭞ'=>'ٺ','ﭤ'=>'ٿ','ﭥ'=>'ٿ','ﭣ'=>'ٿ','ﭢ'=>'ٿ','ﺟ'=>'ج','ﺠ'=>'ج','ﺞ'=>'ج','ﺝ'=>'ج','ﲧ'=>'جح','ﰕ'=>'جح','ﶦ'=>'جحى','ﶾ'=>'جحى','ﷻ'=>'جل جلاله','ﲨ'=>'جم','ﰖ'=>'جم','ﵙ'=>'جمح','ﵘ'=>'جمح','ﶧ'=>'جمى','ﶥ'=>'جمى','ﴝ'=>'جى','ﴁ'=>'جى','ﴞ'=>'جى','ﴂ'=>'جى','ﭸ'=>'ڃ','ﭹ'=>'ڃ','ﭷ'=>'ڃ','ﭶ'=>'ڃ','ﭴ'=>'ڄ','ﭵ'=>'ڄ','ﭳ'=>'ڄ','ﭲ'=>'ڄ','ﭼ'=>'چ','ﭽ'=>'چ','ﭻ'=>'چ','ﭺ'=>'چ','ﮀ'=>'ڇ','ﮁ'=>'ڇ','ﭿ'=>'ڇ','ﭾ'=>'ڇ','ﺣ'=>'ح','ﺤ'=>'ح','ﺢ'=>'ح','ﺡ'=>'ح','ﲩ'=>'حج','ﰗ'=>'حج','ﶿ'=>'حجى','ﲪ'=>'حم','ﰘ'=>'حم','ﵛ'=>'حمى','ﵚ'=>'حمى','ﴛ'=>'حى','ﳿ'=>'حى','ﴜ'=>'حى','ﴀ'=>'حى','ﺧ'=>'خ','ﺨ'=>'خ','ﺦ'=>'خ','ﺥ'=>'خ','ﲫ'=>'خج','ﰙ'=>'خج','ﰚ'=>'خح','ﲬ'=>'خم','ﰛ'=>'خم','ﴟ'=>'خى','ﴃ'=>'خى','ﴠ'=>'خى','ﴄ'=>'خى','ﺪ'=>'د','ﺩ'=>'د','ﺬ'=>'ذ','ﺫ'=>'ذ','ﱛ'=>'ذٰ','ﮉ'=>'ڈ','ﮈ'=>'ڈ','ﮅ'=>'ڌ','ﮄ'=>'ڌ','ﮃ'=>'ڍ','ﮂ'=>'ڍ','ﮇ'=>'ڎ','ﮆ'=>'ڎ','ﺮ'=>'ر','ﺭ'=>'ر','ﱜ'=>'رٰ','ﷶ'=>'رسول','﷼'=>'رىال','ﺰ'=>'ز','ﺯ'=>'ز','ﮍ'=>'ڑ','ﮌ'=>'ڑ','ﮋ'=>'ژ','ﮊ'=>'ژ','ﺳ'=>'س','ﺴ'=>'س','ﺲ'=>'س','ﺱ'=>'س','ﲭ'=>'سج','ﴴ'=>'سج','ﰜ'=>'سج','ﵝ'=>'سجح','ﵞ'=>'سجى','ﲮ'=>'سح','ﴵ'=>'سح','ﰝ'=>'سح','ﵜ'=>'سحج','ﲯ'=>'سخ','ﴶ'=>'سخ','ﰞ'=>'سخ','ﶨ'=>'سخى','ﷆ'=>'سخى','ﴪ'=>'سر','ﴎ'=>'سر','ﲰ'=>'سم','ﳧ'=>'سم','ﰟ'=>'سم','ﵡ'=>'سمج','ﵠ'=>'سمح','ﵟ'=>'سمح','ﵣ'=>'سمم','ﵢ'=>'سمم','ﴱ'=>'سه','ﳨ'=>'سه','ﴗ'=>'سى','ﳻ'=>'سى','ﴘ'=>'سى','ﳼ'=>'سى','ﺷ'=>'ش','ﺸ'=>'ش','ﺶ'=>'ش','ﺵ'=>'ش','ﴭ'=>'شج','ﴷ'=>'شج','ﴥ'=>'شج','ﴉ'=>'شج','ﵩ'=>'شجى','ﴮ'=>'شح','ﴸ'=>'شح','ﴦ'=>'شح','ﴊ'=>'شح','ﵨ'=>'شحم','ﵧ'=>'شحم','ﶪ'=>'شحى','ﴯ'=>'شخ','ﴹ'=>'شخ','ﴧ'=>'شخ','ﴋ'=>'شخ','ﴩ'=>'شر','ﴍ'=>'شر','ﴰ'=>'شم','ﳩ'=>'شم','ﴨ'=>'شم','ﴌ'=>'شم','ﵫ'=>'شمخ','ﵪ'=>'شمخ','ﵭ'=>'شمم','ﵬ'=>'شمم','ﴲ'=>'شه','ﳪ'=>'شه','ﴙ'=>'شى','ﳽ'=>'شى','ﴚ'=>'شى','ﳾ'=>'شى','ﺻ'=>'ص','ﺼ'=>'ص','ﺺ'=>'ص','ﺹ'=>'ص','ﲱ'=>'صح','ﰠ'=>'صح','ﵥ'=>'صحح','ﵤ'=>'صحح','ﶩ'=>'صحى','ﲲ'=>'صخ','ﴫ'=>'صر','ﴏ'=>'صر','ﷵ'=>'صلعم','ﷹ'=>'صلى','ﷺ'=>'صلى الله علىه وسلم','ﷰ'=>'صلے','ﲳ'=>'صم','ﰡ'=>'صم','ﷅ'=>'صمم','ﵦ'=>'صمم','ﴡ'=>'صى','ﴅ'=>'صى','ﴢ'=>'صى','ﴆ'=>'صى','ﺿ'=>'ض','ﻀ'=>'ض','ﺾ'=>'ض','ﺽ'=>'ض','ﲴ'=>'ضج','ﰢ'=>'ضج','ﲵ'=>'ضح','ﰣ'=>'ضح','ﵮ'=>'ضحى','ﶫ'=>'ضحى','ﲶ'=>'ضخ','ﰤ'=>'ضخ','ﵰ'=>'ضخم','ﵯ'=>'ضخم','ﴬ'=>'ضر','ﴐ'=>'ضر','ﲷ'=>'ضم','ﰥ'=>'ضم','ﴣ'=>'ضى','ﴇ'=>'ضى','ﴤ'=>'ضى','ﴈ'=>'ضى','ﻃ'=>'ط','ﻄ'=>'ط','ﻂ'=>'ط','ﻁ'=>'ط','ﲸ'=>'طح','ﰦ'=>'طح','ﴳ'=>'طم','ﴺ'=>'طم','ﰧ'=>'طم','ﵲ'=>'طمح','ﵱ'=>'طمح','ﵳ'=>'طمم','ﵴ'=>'طمى','ﴑ'=>'طى','ﳵ'=>'طى','ﴒ'=>'طى','ﳶ'=>'طى','ﻇ'=>'ظ','ﻈ'=>'ظ','ﻆ'=>'ظ','ﻅ'=>'ظ','ﲹ'=>'ظم','ﴻ'=>'ظم','ﰨ'=>'ظم','ﻋ'=>'ع','ﻌ'=>'ع','ﻊ'=>'ع','ﻉ'=>'ع','ﲺ'=>'عج','ﰩ'=>'عج','ﷄ'=>'عجم','ﵵ'=>'عجم','ﷷ'=>'علىه','ﲻ'=>'عم','ﰪ'=>'عم','ﵷ'=>'عمم','ﵶ'=>'عمم','ﵸ'=>'عمى','ﶶ'=>'عمى','ﴓ'=>'عى','ﳷ'=>'عى','ﴔ'=>'عى','ﳸ'=>'عى','ﻏ'=>'غ','ﻐ'=>'غ','ﻎ'=>'غ','ﻍ'=>'غ','ﲼ'=>'غج','ﰫ'=>'غج','ﲽ'=>'غم','ﰬ'=>'غم','ﵹ'=>'غمم','ﵻ'=>'غمى','ﵺ'=>'غمى','ﴕ'=>'غى','ﳹ'=>'غى','ﴖ'=>'غى','ﳺ'=>'غى','ﻓ'=>'ف','ﻔ'=>'ف','ﻒ'=>'ف','ﻑ'=>'ف','ﲾ'=>'فج','ﰭ'=>'فج','ﲿ'=>'فح','ﰮ'=>'فح','ﳀ'=>'فخ','ﰯ'=>'فخ','ﵽ'=>'فخم','ﵼ'=>'فخم','ﳁ'=>'فم','ﰰ'=>'فم','ﷁ'=>'فمى','ﱼ'=>'فى','ﰱ'=>'فى','ﱽ'=>'فى','ﰲ'=>'فى','ﭬ'=>'ڤ','ﭭ'=>'ڤ','ﭫ'=>'ڤ','ﭪ'=>'ڤ','ﭰ'=>'ڦ','ﭱ'=>'ڦ','ﭯ'=>'ڦ','ﭮ'=>'ڦ','ﻗ'=>'ق','ﻘ'=>'ق','ﻖ'=>'ق','ﻕ'=>'ق','ﳂ'=>'قح','ﰳ'=>'قح','ﷱ'=>'قلے','ﳃ'=>'قم','ﰴ'=>'قم','ﶴ'=>'قمح','ﵾ'=>'قمح','ﵿ'=>'قمم','ﶲ'=>'قمى','ﱾ'=>'قى','ﰵ'=>'قى','ﱿ'=>'قى','ﰶ'=>'قى','ﻛ'=>'ك','ﻜ'=>'ك','ﻚ'=>'ك','ﻙ'=>'ك','ک'=>'ك','ﮐ'=>'ك','ﮑ'=>'ك','ﮏ'=>'ك','ﮎ'=>'ك','ﲀ'=>'كا','ﰷ'=>'كا','ﳄ'=>'كج','ﰸ'=>'كج','ﳅ'=>'كح','ﰹ'=>'كح','ﳆ'=>'كخ','ﰺ'=>'كخ','ﳇ'=>'كل','ﳫ'=>'كل','ﲁ'=>'كل','ﰻ'=>'كل','ﳈ'=>'كم','ﳬ'=>'كم','ﲂ'=>'كم','ﰼ'=>'كم','ﷃ'=>'كمم','ﶻ'=>'كمم','ﶷ'=>'كمى','ﲃ'=>'كى','ﰽ'=>'كى','ﲄ'=>'كى','ﰾ'=>'كى','ﯕ'=>'ڭ','ﯖ'=>'ڭ','ﯔ'=>'ڭ','ﯓ'=>'ڭ','ﮔ'=>'گ','ﮕ'=>'گ','ﮓ'=>'گ','ﮒ'=>'گ','ﮜ'=>'ڱ','ﮝ'=>'ڱ','ﮛ'=>'ڱ','ﮚ'=>'ڱ','ﮘ'=>'ڳ','ﮙ'=>'ڳ','ﮗ'=>'ڳ','ﮖ'=>'ڳ','ﻟ'=>'ل','ﻠ'=>'ل','ﻞ'=>'ل','ﻝ'=>'ل','ﻶ'=>'لآ','ﻵ'=>'لآ','ﻸ'=>'لأ','ﻷ'=>'لأ','ﻺ'=>'لإ','ﻹ'=>'لإ','ﻼ'=>'لا','ﻻ'=>'لا','ﳉ'=>'لج','ﰿ'=>'لج','ﶃ'=>'لجج','ﶄ'=>'لجج','ﶺ'=>'لجم','ﶼ'=>'لجم','ﶬ'=>'لجى','ﳊ'=>'لح','ﱀ'=>'لح','ﶵ'=>'لحم','ﶀ'=>'لحم','ﶂ'=>'لحى','ﶁ'=>'لحى','ﳋ'=>'لخ','ﱁ'=>'لخ','ﶆ'=>'لخم','ﶅ'=>'لخم','ﳌ'=>'لم','ﳭ'=>'لم','ﲅ'=>'لم','ﱂ'=>'لم','ﶈ'=>'لمح','ﶇ'=>'لمح','ﶭ'=>'لمى','ﳍ'=>'له','ﲆ'=>'لى','ﱃ'=>'لى','ﲇ'=>'لى','ﱄ'=>'لى','ﻣ'=>'م','ﻤ'=>'م','ﻢ'=>'م','ﻡ'=>'م','ﲈ'=>'ما','ﳎ'=>'مج','ﱅ'=>'مج','ﶌ'=>'مجح','ﶒ'=>'مجخ','ﶍ'=>'مجم','ﷀ'=>'مجى','ﳏ'=>'مح','ﱆ'=>'مح','ﶉ'=>'محج','ﶊ'=>'محم','ﷴ'=>'محمد','ﶋ'=>'محى','ﳐ'=>'مخ','ﱇ'=>'مخ','ﶎ'=>'مخج','ﶏ'=>'مخم','ﶹ'=>'مخى','ﳑ'=>'مم','ﲉ'=>'مم','ﱈ'=>'مم','ﶱ'=>'ممى','ﱉ'=>'مى','ﱊ'=>'مى','ﻧ'=>'ن','ﻨ'=>'ن','ﻦ'=>'ن','ﻥ'=>'ن','ﳒ'=>'نج','ﱋ'=>'نج','ﶸ'=>'نجح','ﶽ'=>'نجح','ﶘ'=>'نجم','ﶗ'=>'نجم','ﶙ'=>'نجى','ﷇ'=>'نجى','ﳓ'=>'نح','ﱌ'=>'نح','ﶕ'=>'نحم','ﶖ'=>'نحى','ﶳ'=>'نحى','ﳔ'=>'نخ','ﱍ'=>'نخ','ﲊ'=>'نر','ﲋ'=>'نز','ﳕ'=>'نم','ﳮ'=>'نم','ﲌ'=>'نم','ﱎ'=>'نم','ﶛ'=>'نمى','ﶚ'=>'نمى','ﲍ'=>'نن','ﳖ'=>'نه','ﳯ'=>'نه','ﲎ'=>'نى','ﱏ'=>'نى','ﲏ'=>'نى','ﱐ'=>'نى','ﮟ'=>'ں','ﮞ'=>'ں','ﻫ'=>'ه','ﻬ'=>'ه','ﻪ'=>'ه','ﻩ'=>'ه','ھ'=>'ه','ﮬ'=>'ه','ﮭ'=>'ه','ﮫ'=>'ه','ﮪ'=>'ه','ہ'=>'ه','ﮨ'=>'ه','ﮩ'=>'ه','ﮧ'=>'ه','ﮦ'=>'ه','ە'=>'ه','ﳙ'=>'هٰ','ﳗ'=>'هج','ﱑ'=>'هج','ﳘ'=>'هم','ﱒ'=>'هم','ﶓ'=>'همج','ﶔ'=>'همم','ﱓ'=>'هى','ﱔ'=>'هى','ﮥ'=>'ۀ','ﮤ'=>'ۀ','ﻮ'=>'و','ﻭ'=>'و','ﷸ'=>'وسلم','ﯡ'=>'ۅ','ﯠ'=>'ۅ','ﯚ'=>'ۆ','ﯙ'=>'ۆ','ﯘ'=>'ۇ','ﯗ'=>'ۇ','ٷ'=>'ۇٔ','ﯝ'=>'ۇٔ','ﯜ'=>'ۈ','ﯛ'=>'ۈ','ﯣ'=>'ۉ','ﯢ'=>'ۉ','ﯟ'=>'ۋ','ﯞ'=>'ۋ','ﯨ'=>'ى','ﯩ'=>'ى','ﻰ'=>'ى','ﻯ'=>'ى','ي'=>'ى','ﻳ'=>'ى','ﻴ'=>'ى','ﻲ'=>'ى','ﻱ'=>'ى','ی'=>'ى','ﯾ'=>'ى','ﯿ'=>'ى','ﯽ'=>'ى','ﯼ'=>'ى','ٸ'=>'ىٔ','ﲐ'=>'ىٰ','ﱝ'=>'ىٰ','ﳚ'=>'ىج','ﱕ'=>'ىج','ﶯ'=>'ىجى','ﳛ'=>'ىح','ﱖ'=>'ىح','ﶮ'=>'ىحى','ﳜ'=>'ىخ','ﱗ'=>'ىخ','ﲑ'=>'ىر','ﲒ'=>'ىز','ﳝ'=>'ىم','ﳰ'=>'ىم','ﲓ'=>'ىم','ﱘ'=>'ىم','ﶝ'=>'ىمم','ﶜ'=>'ىمم','ﶰ'=>'ىمى','ﲔ'=>'ىن','ﳞ'=>'ىه','ﳱ'=>'ىه','ﲕ'=>'ىى','ﱙ'=>'ىى','ﲖ'=>'ىى','ﱚ'=>'ىى','ۧ'=>'ۦ','ﮯ'=>'ے','ﮮ'=>'ے','ﮱ'=>'ۓ','ﮰ'=>'ۓ','∃'=>'ⴺ','आ'=>'अा','ऒ'=>'अाॆ','ओ'=>'अाे','औ'=>'अाै','ऄ'=>'अॆ','ऑ'=>'अॉ','ऍ'=>'एॅ','ऎ'=>'एॆ','ऐ'=>'एे','ई'=>'र्इ','আ'=>'অা','ৠ'=>'ঋৃ','ৡ'=>'ঌৢ','ਉ'=>'ੳੁ','ਊ'=>'ੳੂ','ਆ'=>'ਅਾ','ਐ'=>'ਅੈ','ਔ'=>'ਅੌ','ਇ'=>'ੲਿ','ਈ'=>'ੲੀ','ਏ'=>'ੲੇ','આ'=>'અા','ઑ'=>'અાૅ','ઓ'=>'અાે','ઔ'=>'અાૈ','ઍ'=>'અૅ','એ'=>'અે','ઐ'=>'અૈ','ଆ'=>'ଅା','௮'=>'அ','ர'=>'ஈ','ா'=>'ஈ','௫'=>'ஈு','௨'=>'உ','ஊ'=>'உள','௭'=>'எ','௷'=>'எவ','ஜ'=>'ஐ','௧'=>'க','௪'=>'ச','௬'=>'சு','௲'=>'சூ','௺'=>'நீ','ை'=>'ன','௴'=>'மீ','௰'=>'ய','ௗ'=>'ள','௸'=>'ஷ','ொ'=>'ெஈ','ௌ'=>'ெள','ோ'=>'ேஈ','ౠ'=>'ఋా','ౡ'=>'ఌా','ఔ'=>'ఒౌ','ఓ'=>'ఒౕ','ఢ'=>'డ̣','భ'=>'బ̣','ష'=>'వ̣','హ'=>'వా','మ'=>'వు','ూ'=>'ుా','ౄ'=>'ృా','ೡ'=>'ಌಾ','ಔ'=>'ఒౌ','ഈ'=>'ഇൗ','ഊ'=>'உൗ','ഐ'=>'എെ','ഓ'=>'ഒാ','ഔ'=>'ഒൗ','ൡ'=>'ഞ','൫'=>'ദ്ര','ഌ'=>'നூ','ങ'=>'നூ','൯'=>'ന്','റ'=>'ര','൪'=>'ര്','൮'=>'വ്','ീ'=>'ி','ൂ'=>'ூ','ൃ'=>'ூ','ൈ'=>'െെ','ฃ'=>'ข','ด'=>'ค','ต'=>'ค','ม'=>'ฆ','ซ'=>'ช','ฏ'=>'ฎ','ท'=>'ฑ','ๅ'=>'า','ำ'=>'̊า','แ'=>'เเ','ໜ'=>'ຫນ','ໝ'=>'ຫມ','ຳ'=>'̊າ','ཷ'=>'ྲཱྀ','ཹ'=>'ླཱྀ','၀'=>'o','ឣ'=>'អ','᧐'=>'ᦞ','᭒'=>'ᬍ','᭓'=>'ᬑ','᭘'=>'ᬨ','ᢖ'=>'ᡜ','ᡕ'=>'ᠵ','Ꮢ'=>'Ꭱ','Ꮍ'=>'y','𝐀'=>'A','𝐴'=>'A','𝑨'=>'A','𝒜'=>'A','𝓐'=>'A','𝔄'=>'A','𝔸'=>'A','𝕬'=>'A','𝖠'=>'A','𝗔'=>'A','𝘈'=>'A','𝘼'=>'A','𝙰'=>'A','𝚨'=>'A','𝛢'=>'A','𝜜'=>'A','𝝖'=>'A','𝞐'=>'A','𝐉'=>'J','𝐽'=>'J','𝑱'=>'J','𝒥'=>'J','𝓙'=>'J','𝔍'=>'J','𝕁'=>'J','𝕵'=>'J','𝖩'=>'J','𝗝'=>'J','𝘑'=>'J','𝙅'=>'J','𝙹'=>'J','Ꮷ'=>'J','⋿'=>'E','ℰ'=>'E','𝐄'=>'E','𝐸'=>'E','𝑬'=>'E','𝓔'=>'E','𝔈'=>'E','𝔼'=>'E','𝕰'=>'E','𝖤'=>'E','𝗘'=>'E','𝘌'=>'E','𝙀'=>'E','𝙴'=>'E','𝚬'=>'E','𝛦'=>'E','𝜠'=>'E','𝝚'=>'E','𝞔'=>'E','ℾ'=>'Ꮁ','𝚪'=>'Ꮁ','𝛤'=>'Ꮁ','𝜞'=>'Ꮁ','𝝘'=>'Ꮁ','𝞒'=>'Ꮁ','Ꮤ'=>'w','ℳ'=>'M','𝐌'=>'M','𝑀'=>'M','𝑴'=>'M','𝓜'=>'M','𝔐'=>'M','𝕄'=>'M','𝕸'=>'M','𝖬'=>'M','𝗠'=>'M','𝘔'=>'M','𝙈'=>'M','𝙼'=>'M','𝚳'=>'M','𝛭'=>'M','𝜧'=>'M','𝝡'=>'M','𝞛'=>'M','ℋ'=>'H','ℌ'=>'H','ℍ'=>'H','𝐇'=>'H','𝐻'=>'H','𝑯'=>'H','𝓗'=>'H','𝕳'=>'H','𝖧'=>'H','𝗛'=>'H','𝘏'=>'H','𝙃'=>'H','𝙷'=>'H','𝚮'=>'H','𝛨'=>'H','𝜢'=>'H','𝝜'=>'H','𝞖'=>'H','𝐆'=>'G','𝐺'=>'G','𝑮'=>'G','𝒢'=>'G','𝓖'=>'G','𝔊'=>'G','𝔾'=>'G','𝕲'=>'G','𝖦'=>'G','𝗚'=>'G','𝘎'=>'G','𝙂'=>'G','𝙶'=>'G','Ᏻ'=>'G','ℤ'=>'Z','ℨ'=>'Z','𝐙'=>'Z','𝑍'=>'Z','𝒁'=>'Z','𝒵'=>'Z','𝓩'=>'Z','𝖅'=>'Z','𝖹'=>'Z','𝗭'=>'Z','𝘡'=>'Z','𝙕'=>'Z','𝚉'=>'Z','𝚭'=>'Z','𝛧'=>'Z','𝜡'=>'Z','𝝛'=>'Z','𝞕'=>'Z','𝐒'=>'S','𝑆'=>'S','𝑺'=>'S','𝒮'=>'S','𝓢'=>'S','𝔖'=>'S','𝕊'=>'S','𝕾'=>'S','𝖲'=>'S','𝗦'=>'S','𝘚'=>'S','𝙎'=>'S','𝚂'=>'S','Ꮪ'=>'S','𝐕'=>'V','𝑉'=>'V','𝑽'=>'V','𝒱'=>'V','𝓥'=>'V','𝔙'=>'V','𝕍'=>'V','𝖁'=>'V','𝖵'=>'V','𝗩'=>'V','𝘝'=>'V','𝙑'=>'V','𝚅'=>'V','ℒ'=>'L','𝐋'=>'L','𝐿'=>'L','𝑳'=>'L','𝓛'=>'L','𝔏'=>'L','𝕃'=>'L','𝕷'=>'L','𝖫'=>'L','𝗟'=>'L','𝘓'=>'L','𝙇'=>'L','𝙻'=>'L','∑'=>'C','⅀'=>'C','ℂ'=>'C','ℭ'=>'C','𝐂'=>'C','𝐶'=>'C','𝑪'=>'C','𝒞'=>'C','𝓒'=>'C','𝕮'=>'C','𝖢'=>'C','𝗖'=>'C','𝘊'=>'C','𝘾'=>'C','𝙲'=>'C','𝚺'=>'C','𝛴'=>'C','𝜮'=>'C','𝝨'=>'C','𝞢'=>'C','ℙ'=>'P','𝐏'=>'P','𝑃'=>'P','𝑷'=>'P','𝒫'=>'P','𝓟'=>'P','𝔓'=>'P','𝕻'=>'P','𝖯'=>'P','𝗣'=>'P','𝘗'=>'P','𝙋'=>'P','𝙿'=>'P','𝚸'=>'P','𝛲'=>'P','𝜬'=>'P','𝝦'=>'P','𝞠'=>'P','𝐊'=>'K','𝐾'=>'K','𝑲'=>'K','𝒦'=>'K','𝓚'=>'K','𝔎'=>'K','𝕂'=>'K','𝕶'=>'K','𝖪'=>'K','𝗞'=>'K','𝘒'=>'K','𝙆'=>'K','𝙺'=>'K','𝚱'=>'K','𝛫'=>'K','𝜥'=>'K','𝝟'=>'K','𝞙'=>'K','ℬ'=>'B','𝐁'=>'B','𝐵'=>'B','𝑩'=>'B','𝓑'=>'B','𝔅'=>'B','𝔹'=>'B','𝕭'=>'B','𝖡'=>'B','𝗕'=>'B','𝘉'=>'B','𝘽'=>'B','𝙱'=>'B','𝚩'=>'B','𝛣'=>'B','𝜝'=>'B','𝝗'=>'B','𝞑'=>'B','ᐍ'=>'ᐁ·','∆'=>'ᐃ','𝚫'=>'ᐃ','𝛥'=>'ᐃ','𝜟'=>'ᐃ','𝝙'=>'ᐃ','𝞓'=>'ᐃ','ᐏ'=>'ᐃ·','ᐑ'=>'ᐄ·','ᐓ'=>'ᐅ·','ᐕ'=>'ᐆ·','ᐘ'=>'ᐊ·','ᐚ'=>'ᐋ·','ᓑ'=>'ᐡ','ᑶ'=>'·P','ᑺ'=>'·d','ᒘ'=>'·J','ᑁ'=>'ᐳ·','ᑃ'=>'ᐴ·','ᑅ'=>'ᐸ·','ᑇ'=>'ᐹ·','ˈ'=>'ᑊ','ᑘ'=>'ᑌ·','ᑧ'=>'ᑌᑊ','ᑚ'=>'ᑎ·','ᑨ'=>'ᑎᑊ','ᑜ'=>'ᑏ·','ᑞ'=>'ᑐ·','ᑩ'=>'ᑐᑊ','ᑠ'=>'ᑑ·','ᑢ'=>'ᑕ·','ᑪ'=>'ᑕᑊ','ᑤ'=>'ᑖ·','ᑵ'=>'ᑫ·','ᒅ'=>'ᑫᑊ','ᑷ'=>'P·','ᒆ'=>'Pᑊ','ᑹ'=>'ᑮ·','ᑻ'=>'d·','ᒇ'=>'dᑊ','ᑽ'=>'ᑰ·','ᑿ'=>'ᑲ·','ᒈ'=>'ᑲᑊ','ᒁ'=>'ᑳ·','ᘃ'=>'ᒉ','ᒓ'=>'ᒉ·','ᒕ'=>'ᒋ·','ᒗ'=>'ᒌ·','ᒙ'=>'J·','ᒛ'=>'ᒎ·','ᘂ'=>'ᒐ','ᒝ'=>'ᒐ·','ᒟ'=>'ᒑ·','ᒭ'=>'ᒣ·','ᒯ'=>'ᒥ·','ᒱ'=>'ᒦ·','ᒳ'=>'ᒧ·','ᒵ'=>'ᒨ·','ᒹ'=>'ᒫ·','ᓊ'=>'ᓀ·','ᓌ'=>'ᓇ·','ᓎ'=>'ᓈᒫ','ᘄ'=>'ᓓ','ᓝ'=>'ᓓ·','ᓟ'=>'ᓕ·','ᓡ'=>'ᓖ·','ᓣ'=>'ᓗ·','ᓥ'=>'ᓘ·','ᘇ'=>'ᓚ','ᓧ'=>'ᓚ·','ᓩ'=>'ᓛ·','ᓷ'=>'ᓭ·','ᓹ'=>'ᓯ·','ᓻ'=>'ᓰ·','ᓽ'=>'ᓱ·','ᓿ'=>'ᓲ·','ᔁ'=>'ᓴ·','ᔃ'=>'ᓵ·','ᔌ'=>'ᔋᐸ','ᔍ'=>'ᔋᑕ','ᔎ'=>'ᔋᑲ','ᔏ'=>'ᔋᒐ','ᔘ'=>'ᔐ·','ᔚ'=>'ᔑ·','ᔜ'=>'ᔒ·','ᔞ'=>'ᔓ·','ᔠ'=>'ᔔ·','ᔢ'=>'ᔕ·','ᔤ'=>'ᔖ·','ᔲ'=>'ᔨ·','ᔴ'=>'ᔩ·','ᔶ'=>'ᔪ·','ᔸ'=>'ᔫ·','ᔺ'=>'ᔭ·','ᔼ'=>'ᔮ·','᙮'=>'x','ᕽ'=>'x','ᘢ'=>'ᕃ','ᘣ'=>'ᕆ','ᘤ'=>'ᕊ','ᕏ'=>'ᕌ·','ᙯ'=>'ᕐᑫ','ᕾ'=>'ᕐᑬ','ᕿ'=>'ᕐP','ᖀ'=>'ᕐᑮ','ᖁ'=>'ᕐd','ᖂ'=>'ᕐᑰ','ᖃ'=>'ᕐᑲ','ᖄ'=>'ᕐᑳ','ᖅ'=>'ᕐᒃ','ᕜ'=>'ᕚ·','ᕩ'=>'ᕧ·','ℛ'=>'R','ℜ'=>'R','ℝ'=>'R','𝐑'=>'R','𝑅'=>'R','𝑹'=>'R','𝓡'=>'R','𝕽'=>'R','𝖱'=>'R','𝗥'=>'R','𝘙'=>'R','𝙍'=>'R','𝚁'=>'R','ᙰ'=>'ᖕᒉ','ᖎ'=>'ᖕᒊ','ᖏ'=>'ᖕᒋ','ᖐ'=>'ᖕᒌ','ᖑ'=>'ᖕJ','ᖒ'=>'ᖕᒎ','ᖓ'=>'ᖕᒐ','ᖔ'=>'ᖕᒑ','ᙱ'=>'ᖖᒋ','ᙲ'=>'ᖖᒌ','ᙳ'=>'ᖖJ','ᙴ'=>'ᖖᒎ','ᙵ'=>'ᖖᒐ','ᙶ'=>'ᖖᒑ','ℱ'=>'F','𝐅'=>'F','𝐹'=>'F','𝑭'=>'F','𝓕'=>'F','𝔉'=>'F','𝔽'=>'F','𝕱'=>'F','𝖥'=>'F','𝗙'=>'F','𝘍'=>'F','𝙁'=>'F','𝙵'=>'F','𝟊'=>'F','ⅅ'=>'D','𝐃'=>'D','𝐷'=>'D','𝑫'=>'D','𝒟'=>'D','𝓓'=>'D','𝔇'=>'D','𝔻'=>'D','𝕯'=>'D','𝖣'=>'D','𝗗'=>'D','𝘋'=>'D','𝘿'=>'D','𝙳'=>'D','ᗪ'=>'D','℧'=>'ᘮ','ᘴ'=>'ᘮ','𝛀'=>'ᘯ','𝛺'=>'ᘯ','𝜴'=>'ᘯ','𝝮'=>'ᘯ','𝞨'=>'ᘯ','ᘵ'=>'ᘯ','ㄱ'=>'ᄀ','ᄀ'=>'ᄀ','ᆨ'=>'ᄀ','ㄲ'=>'ᄁ','ᄁ'=>'ᄁ','ᆩ'=>'ᄁ','ㄴ'=>'ᄂ','ᄂ'=>'ᄂ','ᆫ'=>'ᄂ','ㄷ'=>'ᄃ','ᄃ'=>'ᄃ','ᆮ'=>'ᄃ','ㄸ'=>'ᄄ','ᄄ'=>'ᄄ','ㄹ'=>'ᄅ','ᄅ'=>'ᄅ','ᆯ'=>'ᄅ','ㅁ'=>'ᄆ','ᄆ'=>'ᄆ','ᆷ'=>'ᄆ','ㅂ'=>'ᄇ','ᄇ'=>'ᄇ','ᆸ'=>'ᄇ','ㅃ'=>'ᄈ','ᄈ'=>'ᄈ','ㅅ'=>'ᄉ','ᄉ'=>'ᄉ','ᆺ'=>'ᄉ','ㅆ'=>'ᄊ','ᄊ'=>'ᄊ','ᆻ'=>'ᄊ','ㅇ'=>'ᄋ','ᄋ'=>'ᄋ','ᆼ'=>'ᄋ','ㅈ'=>'ᄌ','ᄌ'=>'ᄌ','ᆽ'=>'ᄌ','ㅉ'=>'ᄍ','ᄍ'=>'ᄍ','ㅊ'=>'ᄎ','ᄎ'=>'ᄎ','ᆾ'=>'ᄎ','ㅋ'=>'ᄏ','ᄏ'=>'ᄏ','ᆿ'=>'ᄏ','ㅌ'=>'ᄐ','ᄐ'=>'ᄐ','ᇀ'=>'ᄐ','ㅍ'=>'ᄑ','ᄑ'=>'ᄑ','ᇁ'=>'ᄑ','ㅎ'=>'ᄒ','ᄒ'=>'ᄒ','ᇂ'=>'ᄒ','ᇅ'=>'ᄓ','ㅥ'=>'ᄔ','ㅦ'=>'ᄕ','ᇆ'=>'ᄕ','ᇊ'=>'ᄗ','ᇍ'=>'ᄘ','ᇐ'=>'ᄙ','ㅀ'=>'ᄚ','ᄚ'=>'ᄚ','ᄻ'=>'ᄚ','ᆶ'=>'ᄚ','ㅮ'=>'ᄜ','ᇜ'=>'ᄜ','ㅱ'=>'ᄝ','ᇢ'=>'ᄝ','ㅲ'=>'ᄞ','ㅳ'=>'ᄠ','ㅄ'=>'ᄡ','ᄡ'=>'ᄡ','ᆹ'=>'ᄡ','ㅴ'=>'ᄢ','ㅵ'=>'ᄣ','ㅶ'=>'ᄧ','ㅷ'=>'ᄩ','ㅸ'=>'ᄫ','ᇦ'=>'ᄫ','ㅹ'=>'ᄬ','ㅺ'=>'ᄭ','ᇧ'=>'ᄭ','ㅻ'=>'ᄮ','ㅼ'=>'ᄯ','ᇨ'=>'ᄯ','ᇩ'=>'ᄰ','ㅽ'=>'ᄲ','ᇪ'=>'ᄲ','ㅾ'=>'ᄶ','ㅿ'=>'ᅀ','ᇫ'=>'ᅀ','ᇬ'=>'ᅁ','ᇱ'=>'ᅅ','ㆂ'=>'ᅅ','ᇲ'=>'ᅆ','ㆃ'=>'ᅆ','ㆀ'=>'ᅇ','ᇮ'=>'ᅇ','ㆁ'=>'ᅌ','ᇰ'=>'ᅌ','ᇳ'=>'ᅖ','ㆄ'=>'ᅗ','ᇴ'=>'ᅗ','ㆅ'=>'ᅘ','ㆆ'=>'ᅙ','ᇹ'=>'ᅙ','ㅤ'=>'ᅠ','ᅠ'=>'ᅠ','ㅏ'=>'ᅡ','ᅡ'=>'ᅡ','ㅐ'=>'ᅢ','ᅢ'=>'ᅢ','ㅑ'=>'ᅣ','ᅣ'=>'ᅣ','ㅒ'=>'ᅤ','ᅤ'=>'ᅤ','ㅓ'=>'ᅥ','ᅥ'=>'ᅥ','ㅔ'=>'ᅦ','ᅦ'=>'ᅦ','ㅕ'=>'ᅧ','ᅧ'=>'ᅧ','ㅖ'=>'ᅨ','ᅨ'=>'ᅨ','ㅗ'=>'ᅩ','ᅩ'=>'ᅩ','ㅘ'=>'ᅪ','ᅪ'=>'ᅪ','ㅙ'=>'ᅫ','ᅫ'=>'ᅫ','ㅚ'=>'ᅬ','ᅬ'=>'ᅬ','ㅛ'=>'ᅭ','ᅭ'=>'ᅭ','ㅜ'=>'ᅮ','ᅮ'=>'ᅮ','ㅝ'=>'ᅯ','ᅯ'=>'ᅯ','ㅞ'=>'ᅰ','ᅰ'=>'ᅰ','ㅟ'=>'ᅱ','ᅱ'=>'ᅱ','ㅠ'=>'ᅲ','ᅲ'=>'ᅲ','ㅡ'=>'一','ᅳ'=>'一','ㅢ'=>'ᅴ','ᅴ'=>'ᅴ','ㅣ'=>'丨','ᅵ'=>'丨','ㆇ'=>'ᆄ','ᆆ'=>'ᆄ','ㆈ'=>'ᆅ','ㆉ'=>'ᆈ','ㆊ'=>'ᆑ','ㆋ'=>'ᆒ','ㆌ'=>'ᆔ','ㆍ'=>'ᆞ','ㆎ'=>'ᆡ','ㄳ'=>'ᆪ','ᆪ'=>'ᆪ','ㄵ'=>'ᆬ','ᆬ'=>'ᆬ','ㄶ'=>'ᆭ','ᆭ'=>'ᆭ','ㄺ'=>'ᆰ','ᆰ'=>'ᆰ','ㄻ'=>'ᆱ','ᆱ'=>'ᆱ','ㄼ'=>'ᆲ','ᆲ'=>'ᆲ','ㄽ'=>'ᆳ','ᆳ'=>'ᆳ','ㄾ'=>'ᆴ','ᆴ'=>'ᆴ','ㄿ'=>'ᆵ','ᆵ'=>'ᆵ','ㅧ'=>'ᇇ','ㅨ'=>'ᇈ','ㅩ'=>'ᇌ','ㅪ'=>'ᇎ','ㅫ'=>'ᇓ','ㅬ'=>'ᇗ','ㅭ'=>'ᇙ','ㅯ'=>'ᇝ','ㅰ'=>'ᇟ','ァ'=>'ァ','ア'=>'ア','ィ'=>'ィ','イ'=>'イ','ゥ'=>'ゥ','ウ'=>'ウ','ェ'=>'ェ','エ'=>'エ','ォ'=>'ォ','オ'=>'オ','カ'=>'カ','キ'=>'キ','ク'=>'ク','ケ'=>'ケ','コ'=>'コ','サ'=>'サ','シ'=>'シ','ス'=>'ス','セ'=>'セ','ソ'=>'ソ','タ'=>'タ','チ'=>'チ','ッ'=>'ッ','ツ'=>'ツ','テ'=>'テ','ト'=>'ト','ナ'=>'ナ','ニ'=>'ニ','ヌ'=>'ヌ','ネ'=>'ネ','ノ'=>'ノ','ハ'=>'ハ','ヒ'=>'ヒ','フ'=>'フ','ヘ'=>'へ','ホ'=>'ホ','マ'=>'マ','⧄'=>'〼','ミ'=>'ミ','ム'=>'ム','メ'=>'メ','モ'=>'モ','ャ'=>'ャ','ヤ'=>'ヤ','ュ'=>'ュ','ユ'=>'ユ','ョ'=>'ョ','ヨ'=>'ヨ','ラ'=>'ラ','リ'=>'リ','ル'=>'ル','レ'=>'レ','ロ'=>'ロ','ワ'=>'ワ','ヲ'=>'ヲ','ン'=>'ン','꒞'=>'ꁊ','꒬'=>'ꁐ','꒜'=>'ꃀ','꒿'=>'ꉙ','꒾'=>'ꊱ','꓀'=>'ꎫ','꓂'=>'ꎵ','꒺'=>'ꎿ','꒰'=>'ꏂ','𐒠'=>'𐒆','—'=>'一','―'=>'一','−'=>'一','─'=>'一','⼀'=>'一','不'=>'不','並'=>'並','|'=>'丨','|'=>'丨','∣'=>'丨','⼁'=>'丨','‖'=>'丨丨','∥'=>'丨丨','串'=>'串','⼂'=>'丶','丸'=>'丸','丹'=>'丹','丽'=>'丽','⼃'=>'丿','乁'=>'乁','⼄'=>'乙','亂'=>'亂','⼅'=>'亅','了'=>'了','⼆'=>'二','⼇'=>'亠','亮'=>'亮','⼈'=>'人','什'=>'什','仌'=>'仌','令'=>'令','你'=>'你','倂'=>'併','倂'=>'併','侀'=>'侀','來'=>'來','例'=>'例','侮'=>'侮','侮'=>'侮','侻'=>'侻','便'=>'便','值'=>'値','倫'=>'倫','偺'=>'偺','備'=>'備','像'=>'像','僚'=>'僚','僧'=>'僧','僧'=>'僧','⼉'=>'儿','兀'=>'兀','充'=>'充','免'=>'免','免'=>'免','兔'=>'兔','兤'=>'兤','⼊'=>'入','內'=>'內','全'=>'全','兩'=>'兩','⼋'=>'八','六'=>'六','具'=>'具','冀'=>'冀','⼌'=>'冂','再'=>'再','冒'=>'冒','冕'=>'冕','⼍'=>'冖','冗'=>'冗','冤'=>'冤','⼎'=>'冫','冬'=>'冬','况'=>'况','况'=>'况','冷'=>'冷','凉'=>'凉','凌'=>'凌','凜'=>'凜','凞'=>'凞','⼏'=>'几','凵'=>'凵','⼐'=>'凵','⼑'=>'刀','刃'=>'刃','切'=>'切','切'=>'切','列'=>'列','利'=>'利','刺'=>'刺','刻'=>'刻','剆'=>'剆','割'=>'割','剷'=>'剷','劉'=>'劉','力'=>'力','⼒'=>'力','劣'=>'劣','劳'=>'劳','勇'=>'勇','勇'=>'勇','勉'=>'勉','勉'=>'勉','勒'=>'勒','勞'=>'勞','勤'=>'勤','勤'=>'勤','勵'=>'勵','⼓'=>'勹','勺'=>'勺','勺'=>'勺','包'=>'包','匆'=>'匆','⼔'=>'匕','北'=>'北','北'=>'北','⼕'=>'匚','⼖'=>'匸','匿'=>'匿','⼗'=>'十','〸'=>'十','〹'=>'卄','〺'=>'卅','卉'=>'卉','卑'=>'卑','卑'=>'卑','博'=>'博','⼘'=>'卜','⼙'=>'卩','即'=>'即','卵'=>'卵','卽'=>'卽','卿'=>'卿','卿'=>'卿','卿'=>'卿','⼚'=>'厂','⼛'=>'厶','參'=>'參','⼜'=>'又','及'=>'及','叟'=>'叟','⼝'=>'口','句'=>'句','叫'=>'叫','叱'=>'叱','吆'=>'吆','吏'=>'吏','吝'=>'吝','吸'=>'吸','呂'=>'呂','呈'=>'呈','周'=>'周','咞'=>'咞','咢'=>'咢','咽'=>'咽','哶'=>'哶','唐'=>'唐','啓'=>'啓','啟'=>'啓','啕'=>'啕','啣'=>'啣','善'=>'善','善'=>'善','喇'=>'喇','喙'=>'喙','喙'=>'喙','喝'=>'喝','喝'=>'喝','喫'=>'喫','喳'=>'喳','嗀'=>'嗀','嗂'=>'嗂','嗢'=>'嗢','嘆'=>'嘆','嘆'=>'嘆','噑'=>'噑','器'=>'器','噴'=>'噴','⼞'=>'囗','囹'=>'囹','圖'=>'圖','圗'=>'圗','⼟'=>'土','型'=>'型','城'=>'城','埴'=>'埴','堍'=>'堍','報'=>'報','堲'=>'堲','塀'=>'塀','塚'=>'塚','塚'=>'塚','塞'=>'塞','填'=>'塡','墨'=>'墨','壿'=>'墫','墬'=>'墬','墳'=>'墳','壘'=>'壘','壟'=>'壟','⼠'=>'士','壮'=>'壮','売'=>'売','壷'=>'壷','⼡'=>'夂','夆'=>'夆','⼢'=>'夊','⼣'=>'夕','多'=>'多','夢'=>'夢','⼤'=>'大','奄'=>'奄','奈'=>'奈','契'=>'契','奔'=>'奔','奢'=>'奢','女'=>'女','⼥'=>'女','姘'=>'姘','姬'=>'姬','娛'=>'娛','娧'=>'娧','婢'=>'婢','婦'=>'婦','嬀'=>'媯','媵'=>'媵','嬈'=>'嬈','嬨'=>'嬨','嬾'=>'嬾','嬾'=>'嬾','⼦'=>'子','⼧'=>'宀','宅'=>'宅','寃'=>'寃','寘'=>'寘','寧'=>'寧','寧'=>'寧','寧'=>'寧','寮'=>'寮','寳'=>'寳','⼨'=>'寸','寿'=>'寿','将'=>'将','⼩'=>'小','尢'=>'尢','⼪'=>'尢','⼫'=>'尸','尿'=>'尿','屠'=>'屠','屢'=>'屢','層'=>'層','履'=>'履','屮'=>'屮','屮'=>'屮','⼬'=>'屮','⼭'=>'山','岍'=>'岍','峀'=>'峀','崙'=>'崙','嵃'=>'嵃','嵐'=>'嵐','嵫'=>'嵫','嵮'=>'嵮','嵼'=>'嵼','嶲'=>'嶲','嶺'=>'嶺','⼮'=>'巛','巡'=>'巡','巢'=>'巢','⼯'=>'工','⼰'=>'己','巽'=>'巽','⼱'=>'巾','帲'=>'帡','帨'=>'帨','帽'=>'帽','幩'=>'幩','⼲'=>'干','年'=>'年','⼳'=>'幺','⼴'=>'广','度'=>'度','庰'=>'庰','庳'=>'庳','庶'=>'庶','廉'=>'廉','廊'=>'廊','廊'=>'廊','廒'=>'廒','廓'=>'廓','廙'=>'廙','廬'=>'廬','⼵'=>'廴','廾'=>'廾','⼶'=>'廾','弄'=>'弄','⼷'=>'弋','⼸'=>'弓','弢'=>'弢','弢'=>'弢','⼹'=>'彐','当'=>'当','⼺'=>'彡','形'=>'形','彩'=>'彩','彫'=>'彫','⼻'=>'彳','律'=>'律','徚'=>'徚','復'=>'復','徭'=>'徭','⼼'=>'心','忍'=>'忍','志'=>'志','念'=>'念','忹'=>'忹','怒'=>'怒','怜'=>'怜','悁'=>'悁','悔'=>'悔','悔'=>'悔','惇'=>'惇','惘'=>'惘','惡'=>'惡','愈'=>'愈','慄'=>'慄','慈'=>'慈','慌'=>'慌','慌'=>'慌','慎'=>'慎','慎'=>'慎','慠'=>'慠','慨'=>'慨','慺'=>'慺','憎'=>'憎','憎'=>'憎','憎'=>'憎','憐'=>'憐','憤'=>'憤','憯'=>'憯','憲'=>'憲','懞'=>'懞','懲'=>'懲','懲'=>'懲','懲'=>'懲','懶'=>'懶','懶'=>'懶','戀'=>'戀','⼽'=>'戈','成'=>'成','戛'=>'戛','戮'=>'戮','戴'=>'戴','⼾'=>'戶','⼿'=>'手','扝'=>'扝','抱'=>'抱','拉'=>'拉','拏'=>'拏','拓'=>'拓','拔'=>'拔','拼'=>'拼','拾'=>'拾','挽'=>'挽','捐'=>'捐','捨'=>'捨','捻'=>'捻','掃'=>'掃','掠'=>'掠','掩'=>'掩','揄'=>'揄','揅'=>'揅','揤'=>'揤','㩁'=>'搉','搜'=>'搜','搢'=>'搢','摒'=>'摒','摩'=>'摩','摷'=>'摷','摾'=>'摾','撚'=>'撚','撝'=>'撝','擄'=>'擄','⽀'=>'支','⽁'=>'攴','敏'=>'敏','敏'=>'敏','敖'=>'敖','敬'=>'敬','數'=>'數','⽂'=>'文','⽃'=>'斗','料'=>'料','⽄'=>'斤','⽅'=>'方','旅'=>'旅','⽆'=>'无','既'=>'既','旣'=>'旣','⽇'=>'日','易'=>'易','晉'=>'晉','晩'=>'晚','䀿'=>'晣','晴'=>'晴','晴'=>'晴','暈'=>'暈','暑'=>'暑','暑'=>'暑','暜'=>'暜','暴'=>'暴','曆'=>'曆','⽈'=>'曰','更'=>'更','㫚'=>'曶','書'=>'書','最'=>'最','⽉'=>'月','肦'=>'朌','胐'=>'朏','胊'=>'朐','脁'=>'朓','朗'=>'朗','朗'=>'朗','朗'=>'朗','脧'=>'朘','望'=>'望','望'=>'望','朡'=>'朡','膧'=>'朣','⽊'=>'木','李'=>'李','杓'=>'杓','杖'=>'杖','杞'=>'杞','柿'=>'杮','杻'=>'杻','枅'=>'枅','林'=>'林','柳'=>'柳','柺'=>'柺','栗'=>'栗','栟'=>'栟','桒'=>'桒','梁'=>'梁','梅'=>'梅','梅'=>'梅','梎'=>'梎','梨'=>'梨','椔'=>'椔','楂'=>'楂','樧'=>'榝','榣'=>'榣','槪'=>'槪','樂'=>'樂','樂'=>'樂','樂'=>'樂','樓'=>'樓','檨'=>'檨','櫓'=>'櫓','櫛'=>'櫛','欄'=>'欄','⽋'=>'欠','次'=>'次','歔'=>'歔','⽌'=>'止','歲'=>'歲','歷'=>'歷','歹'=>'歹','⽍'=>'歹','殟'=>'殟','殮'=>'殮','⽎'=>'殳','殺'=>'殺','殺'=>'殺','殺'=>'殺','殻'=>'殻','⽏'=>'毋','⺟'=>'母','⽐'=>'比','⽑'=>'毛','⽒'=>'氏','⽓'=>'气','⽔'=>'水','汎'=>'汎','汧'=>'汧','沈'=>'沈','沿'=>'沿','泌'=>'泌','泍'=>'泍','泥'=>'泥','洖'=>'洖','洛'=>'洛','洞'=>'洞','洴'=>'洴','派'=>'派','流'=>'流','流'=>'流','流'=>'流','浩'=>'浩','浪'=>'浪','海'=>'海','海'=>'海','浸'=>'浸','涅'=>'涅','淋'=>'淋','淚'=>'淚','淪'=>'淪','淹'=>'淹','渚'=>'渚','港'=>'港','湮'=>'湮','潙'=>'溈','溜'=>'溜','溺'=>'溺','滇'=>'滇','滋'=>'滋','滋'=>'滋','滑'=>'滑','滛'=>'滛','漏'=>'漏','漢'=>'漢','漢'=>'漢','漣'=>'漣','潮'=>'潮','濆'=>'濆','濫'=>'濫','濾'=>'濾','瀛'=>'瀛','瀞'=>'瀞','瀞'=>'瀞','瀹'=>'瀹','灊'=>'灊','⽕'=>'火','灰'=>'灰','灷'=>'灷','災'=>'災','炙'=>'炙','炭'=>'炭','烈'=>'烈','烙'=>'烙','煅'=>'煅','煉'=>'煉','煮'=>'煮','煮'=>'煮','熜'=>'熜','燎'=>'燎','燐'=>'燐','爐'=>'爐','爛'=>'爛','爨'=>'爨','⽖'=>'爪','爫'=>'爫','⺤'=>'爫','爵'=>'爵','爵'=>'爵','⽗'=>'父','⽘'=>'爻','⽙'=>'爿','⽚'=>'片','牐'=>'牐','⽛'=>'牙','⽜'=>'牛','牢'=>'牢','犀'=>'犀','犕'=>'犕','⽝'=>'犬','犯'=>'犯','狀'=>'狀','狼'=>'狼','猪'=>'猪','猪'=>'猪','獵'=>'獵','獺'=>'獺','⽞'=>'玄','率'=>'率','率'=>'率','⽟'=>'玉','王'=>'王','玥'=>'玥','玲'=>'玲','珞'=>'珞','理'=>'理','琉'=>'琉','琢'=>'琢','瑇'=>'瑇','瑜'=>'瑜','瑩'=>'瑩','瑱'=>'瑱','瑱'=>'瑱','璅'=>'璅','璉'=>'璉','璘'=>'璘','瓊'=>'瓊','⽠'=>'瓜','⽡'=>'瓦','甆'=>'甆','⽢'=>'甘','⽣'=>'生','甤'=>'甤','⽤'=>'用','⽥'=>'田','画'=>'画','甾'=>'甾','留'=>'留','略'=>'略','異'=>'異','異'=>'異','⽦'=>'疋','⽧'=>'疒','痢'=>'痢','瘐'=>'瘐','瘝'=>'瘝','瘟'=>'瘟','療'=>'療','癩'=>'癩','⽨'=>'癶','⽩'=>'白','⽪'=>'皮','⽫'=>'皿','益'=>'益','益'=>'益','盛'=>'盛','盧'=>'盧','⽬'=>'目','直'=>'直','直'=>'直','省'=>'省','眞'=>'眞','真'=>'真','真'=>'真','着'=>'着','睊'=>'睊','睊'=>'睊','瞋'=>'瞋','瞧'=>'瞧','⽭'=>'矛','⽮'=>'矢','⽯'=>'石','硏'=>'研','硎'=>'硎','硫'=>'硫','碌'=>'碌','碌'=>'碌','碑'=>'碑','磊'=>'磊','磌'=>'磌','磌'=>'磌','磻'=>'磻','礪'=>'礪','⽰'=>'示','礼'=>'礼','社'=>'社','祈'=>'祈','祉'=>'祉','祐'=>'祐','祖'=>'祖','祖'=>'祖','祝'=>'祝','神'=>'神','祥'=>'祥','祿'=>'祿','禍'=>'禍','禎'=>'禎','福'=>'福','福'=>'福','禮'=>'禮','⽱'=>'禸','⽲'=>'禾','秊'=>'秊','秫'=>'秫','稜'=>'稜','穀'=>'穀','穀'=>'穀','穊'=>'穊','穏'=>'穏','⽳'=>'穴','突'=>'突','窱'=>'窱','立'=>'立','⽴'=>'立','竮'=>'竮','⽵'=>'竹','笠'=>'笠','節'=>'節','節'=>'節','篆'=>'篆','築'=>'築','簾'=>'簾','籠'=>'籠','⽶'=>'米','类'=>'类','粒'=>'粒','精'=>'精','糒'=>'糒','糖'=>'糖','糣'=>'糣','糧'=>'糧','糨'=>'糨','⽷'=>'糸','紀'=>'紀','紐'=>'紐','索'=>'索','累'=>'累','絶'=>'絕','絛'=>'絛','絣'=>'絣','綠'=>'綠','綾'=>'綾','緇'=>'緇','練'=>'練','練'=>'練','練'=>'練','縂'=>'縂','縉'=>'縉','縷'=>'縷','繁'=>'繁','繅'=>'繅','⽸'=>'缶','缾'=>'缾','⽹'=>'网','⺫'=>'罒','署'=>'署','罹'=>'罹','罺'=>'罺','羅'=>'羅','⽺'=>'羊','羕'=>'羕','羚'=>'羚','羽'=>'羽','⽻'=>'羽','翺'=>'翺','老'=>'老','⽼'=>'老','者'=>'者','者'=>'者','者'=>'者','⽽'=>'而','⽾'=>'耒','⽿'=>'耳','聆'=>'聆','聠'=>'聠','聯'=>'聯','聰'=>'聰','聾'=>'聾','⾀'=>'聿','⾁'=>'肉','肋'=>'肋','肭'=>'肭','育'=>'育','㬵'=>'胶','腁'=>'胼','脃'=>'脃','脾'=>'脾','臘'=>'臘','⾂'=>'臣','臨'=>'臨','⾃'=>'自','臭'=>'臭','⾄'=>'至','⾅'=>'臼','舁'=>'舁','舁'=>'舁','舄'=>'舄','⾆'=>'舌','⾇'=>'舛','⾈'=>'舟','⾉'=>'艮','良'=>'良','⾊'=>'色','⾋'=>'艸','艹'=>'艹','艹'=>'艹','芋'=>'芋','芑'=>'芑','芝'=>'芝','花'=>'花','芳'=>'芳','芽'=>'芽','若'=>'若','若'=>'若','苦'=>'苦','茝'=>'茝','茣'=>'茣','茶'=>'茶','荒'=>'荒','荓'=>'荓','荣'=>'荣','莭'=>'莭','莽'=>'莽','菉'=>'菉','菊'=>'菊','菌'=>'菌','菜'=>'菜','菧'=>'菧','華'=>'華','菱'=>'菱','落'=>'落','葉'=>'葉','著'=>'著','著'=>'著','蔿'=>'蒍','蓮'=>'蓮','蓱'=>'蓱','蓳'=>'蓳','蓼'=>'蓼','蔖'=>'蔖','蕤'=>'蕤','藍'=>'藍','藺'=>'藺','蘆'=>'蘆','蘒'=>'蘒','蘭'=>'蘭','虁'=>'蘷','蘿'=>'蘿','⾌'=>'虍','虐'=>'虐','虜'=>'虜','虜'=>'虜','虧'=>'虧','虩'=>'虩','⾍'=>'虫','蚈'=>'蚈','蚩'=>'蚩','蛢'=>'蛢','蜎'=>'蜎','蜨'=>'蜨','蝫'=>'蝫','蝹'=>'蝹','蝹'=>'蝹','螆'=>'螆','螺'=>'螺','蟡'=>'蟡','蠁'=>'蠁','蠟'=>'蠟','⾎'=>'血','行'=>'行','⾏'=>'行','衠'=>'衠','衣'=>'衣','⾐'=>'衣','裂'=>'裂','裏'=>'裏','裗'=>'裗','裞'=>'裞','裡'=>'裡','裸'=>'裸','裺'=>'裺','褐'=>'褐','襁'=>'襁','襤'=>'襤','⾑'=>'襾','覆'=>'覆','見'=>'見','⾒'=>'見','視'=>'視','視'=>'視','⾓'=>'角','⾔'=>'言','䚶'=>'訞','詽'=>'訮','誠'=>'誠','說'=>'說','說'=>'說','調'=>'調','請'=>'請','諒'=>'諒','論'=>'論','諭'=>'諭','諭'=>'諭','諸'=>'諸','諸'=>'諸','諾'=>'諾','諾'=>'諾','謁'=>'謁','謁'=>'謁','謹'=>'謹','謹'=>'謹','識'=>'識','讀'=>'讀','讏'=>'讆','變'=>'變','變'=>'變','⾕'=>'谷','⾖'=>'豆','豈'=>'豈','豕'=>'豕','⾗'=>'豕','⾘'=>'豸','⾙'=>'貝','貫'=>'貫','賁'=>'賁','賂'=>'賂','賈'=>'賈','賓'=>'賓','贈'=>'贈','贈'=>'贈','贛'=>'贛','⾚'=>'赤','⾛'=>'走','起'=>'起','趆'=>'赿','⾜'=>'足','趼'=>'趼','跋'=>'跋','跺'=>'跥','路'=>'路','跰'=>'跰','躛'=>'躗','⾝'=>'身','車'=>'車','⾞'=>'車','軔'=>'軔','輧'=>'軿','輦'=>'輦','輪'=>'輪','輸'=>'輸','輸'=>'輸','輻'=>'輻','轢'=>'轢','⾟'=>'辛','辞'=>'辞','辰'=>'辰','⾠'=>'辰','⾡'=>'辵','辶'=>'辶','⻌'=>'辶','連'=>'連','逸'=>'逸','逸'=>'逸','遲'=>'遲','遼'=>'遼','邏'=>'邏','⾢'=>'邑','邔'=>'邔','郎'=>'郎','郱'=>'郱','都'=>'都','鄑'=>'鄑','鄛'=>'鄛','⾣'=>'酉','酪'=>'酪','醙'=>'醙','醴'=>'醴','⾤'=>'釆','里'=>'里','⾥'=>'里','量'=>'量','金'=>'金','⾦'=>'金','鈴'=>'鈴','鈸'=>'鈸','鉶'=>'鉶','鉼'=>'鉼','鋗'=>'鋗','鋘'=>'鋘','錄'=>'錄','鍊'=>'鍊','鎮'=>'鎭','鏹'=>'鏹','鐕'=>'鐕','⾧'=>'長','⾨'=>'門','開'=>'開','閭'=>'閭','閷'=>'閷','⾩'=>'阜','阮'=>'阮','陋'=>'陋','降'=>'降','陵'=>'陵','陸'=>'陸','陼'=>'陼','隆'=>'隆','隣'=>'隣','⾪'=>'隶','隸'=>'隸','⾫'=>'隹','雃'=>'雃','離'=>'離','難'=>'難','難'=>'難','⾬'=>'雨','零'=>'零','雷'=>'雷','霣'=>'霣','露'=>'露','靈'=>'靈','⾭'=>'靑','靖'=>'靖','靖'=>'靖','⾮'=>'非','⾯'=>'面','⾰'=>'革','⾱'=>'韋','韛'=>'韛','韠'=>'韠','⾲'=>'韭','⾳'=>'音','響'=>'響','響'=>'響','⾴'=>'頁','頋'=>'頋','頋'=>'頋','頋'=>'頋','領'=>'領','頩'=>'頩','頻'=>'頻','頻'=>'頻','類'=>'類','⾵'=>'風','⾶'=>'飛','⻝'=>'食','⾷'=>'食','飢'=>'飢','飯'=>'飯','飼'=>'飼','館'=>'館','餩'=>'餩','⾸'=>'首','⾹'=>'香','馧'=>'馧','⾺'=>'馬','駂'=>'駂','駱'=>'駱','駾'=>'駾','驪'=>'驪','⾻'=>'骨','⾼'=>'高','⾽'=>'髟','鬒'=>'鬒','鬒'=>'鬒','⾾'=>'鬥','⾿'=>'鬯','⿀'=>'鬲','⿁'=>'鬼','⿂'=>'魚','魯'=>'魯','鱀'=>'鱀','鱗'=>'鱗','⿃'=>'鳥','鳽'=>'鳽','鵧'=>'鵧','鶴'=>'鶴','鷺'=>'鷺','鸞'=>'鸞','鹃'=>'鹂','⿄'=>'鹵','鹿'=>'鹿','⿅'=>'鹿','麗'=>'麗','麟'=>'麟','⿆'=>'麥','麻'=>'麻','⿇'=>'麻','⿈'=>'黃','⿉'=>'黍','黎'=>'黎','⿊'=>'黑','黹'=>'黹','⿋'=>'黹','⿌'=>'黽','黾'=>'黾','鼅'=>'鼅','⿍'=>'鼎','鼏'=>'鼏','⿎'=>'鼓','鼖'=>'鼖','⿏'=>'鼠','鼻'=>'鼻','⿐'=>'鼻','齃'=>'齃','⿑'=>'齊','⿒'=>'齒','龍'=>'龍','⿓'=>'龍','龎'=>'龎','龜'=>'龜','龜'=>'龜','龜'=>'龜','⿔'=>'龜','⻳'=>'龟','⿕'=>'龠','㒞'=>'㒞','㒹'=>'㒹','㒻'=>'㒻','㓟'=>'㓟','㔕'=>'㔕','䎛'=>'㖈','㛮'=>'㛮','㛼'=>'㛼','㞁'=>'㞁','㠯'=>'㠯','㡢'=>'㡢','㡼'=>'㡼','㣇'=>'㣇','㣣'=>'㣣','㤜'=>'㤜','㤺'=>'㤺','㨮'=>'㨮','㩬'=>'㩬','㫤'=>'㫤','㬈'=>'㬈','㬙'=>'㬙','䐠'=>'㬻','㭉'=>'㭉','㮝'=>'㮝','㮝'=>'㮝','㰘'=>'㰘','㱎'=>'㱎','㴳'=>'㴳','㶖'=>'㶖','㺬'=>'㺬','㺸'=>'㺸','㺸'=>'㺸','㼛'=>'㼛','㿼'=>'㿼','䀈'=>'䀈','䀘'=>'䀘','䀹'=>'䀹','䀹'=>'䀹','䁆'=>'䁆','䂖'=>'䂖','䃣'=>'䃣','䄯'=>'䄯','䈂'=>'䈂','䈧'=>'䈧','䊠'=>'䊠','䌁'=>'䌁','䌴'=>'䌴','䍙'=>'䍙','䏕'=>'䏕','䏙'=>'䏙','䐋'=>'䐋','䑫'=>'䑫','䔫'=>'䔫','䕝'=>'䕝','䕡'=>'䕡','䕫'=>'䕫','䗗'=>'䗗','䗹'=>'䗹','䘵'=>'䘵','䚾'=>'䚾','䛇'=>'䛇','䦕'=>'䦕','䧦'=>'䧦','䩮'=>'䩮','䩶'=>'䩶','䪲'=>'䪲','䬳'=>'䬳','䯎'=>'䯎','䳎'=>'䳎','䳭'=>'䳭','䳸'=>'䳸','䵖'=>'䵖','𠄢'=>'𠄢','𠔜'=>'𠔜','𠔥'=>'𠔥','𠕋'=>'𠕋','𠘺'=>'𠘺','𠠄'=>'𠠄','𠣞'=>'𠣞','𠨬'=>'𠨬','𠭣'=>'𠭣','𡓤'=>'𡓤','𡚨'=>'𡚨','𡛪'=>'𡛪','𡧈'=>'𡧈','𡬘'=>'𡬘','𡴋'=>'𡴋','𡷤'=>'𡷤','𡷦'=>'𡷦','𢆃'=>'𢆃','𢆟'=>'𢆟','𢌱'=>'𢌱','𢌱'=>'𢌱','𢛔'=>'𢛔','𢡄'=>'𢡄','𢡊'=>'𢡊','𢬌'=>'𢬌','𢯱'=>'𢯱','𣀊'=>'𣀊','𣊸'=>'𣊸','𣍟'=>'𣍟','𣎓'=>'𣎓','𣎜'=>'𣎜','𣏃'=>'𣏃','𣏕'=>'𣏕','𣑭'=>'𣑭','𣚣'=>'𣚣','𣢧'=>'𣢧','𣪍'=>'𣪍','𣫺'=>'𣫺','𣲼'=>'𣲼','𣴞'=>'𣴞','𣻑'=>'𣻑','𣽞'=>'𣽞','𣾎'=>'𣾎','𤉣'=>'𤉣','𤎫'=>'𤎫','𤘈'=>'𤘈','𤜵'=>'𤜵','𤠔'=>'𤠔','𤰶'=>'𤰶','𤲒'=>'𤲒','𤾡'=>'𤾡','𤾸'=>'𤾸','𥁄'=>'𥁄','𥃲'=>'𥃲','𥃳'=>'𥃳','𥄙'=>'𥄙','𥄳'=>'𥄳','𥉉'=>'𥉉','𥐝'=>'𥐝','𥘦'=>'𥘦','𥚚'=>'𥚚','𥛅'=>'𥛅','𥥼'=>'𥥼','𥪧'=>'𥪧','𥪧'=>'𥪧','𥮫'=>'𥮫','𥲀'=>'𥲀','𥳐'=>'𥳐','𥾆'=>'𥾆','𦇚'=>'𦇚','𦈨'=>'𦈨','𦉇'=>'𦉇','𦋙'=>'𦋙','𦌾'=>'𦌾','𦓚'=>'𦓚','𦔣'=>'𦔣','𦖨'=>'𦖨','𦞧'=>'𦞧','𦞵'=>'𦞵','𦬼'=>'𦬼','𦰶'=>'𦰶','𦳕'=>'𦳕','𦵫'=>'𦵫','𦼬'=>'𦼬','𦾱'=>'𦾱','𧃒'=>'𧃒','𧏊'=>'𧏊','𧙧'=>'𧙧','𧢮'=>'𧢮','𧥦'=>'𧥦','𧲨'=>'𧲨','𧻓'=>'𧻓','𧼯'=>'𧼯','𨗒'=>'𨗒','𨗭'=>'𨗭','𨜮'=>'𨜮','𨯺'=>'𨯺','𨵷'=>'𨵷','𩅅'=>'𩅅','𩇟'=>'𩇟','𩈚'=>'𩈚','𩐊'=>'𩐊','𩒖'=>'𩒖','𩖶'=>'𩖶','𩬰'=>'𩬰','𪃎'=>'𪃎','𪄅'=>'𪄅','𪈎'=>'𪈎','𪊑'=>'𪊑','𪎒'=>'𪎒','𪘀'=>'𪘀','℃'=>'°C','℉'=>'°F','ℇ'=>'Ɛ','℻'=>'FAX','ℕ'=>'N','№'=>'No','ℚ'=>'Q','₨'=>'Rs','𝐓'=>'T','℡'=>'TEL','𝐔'=>'U','𝐖'=>'W','₩'=>'W̵','𝐗'=>'X','¥'=>'Y̵','𝚲'=>'Λ','𝚵'=>'Ξ','ℿ'=>'Π','ϲ'=>'c','ϒ'=>'Y','𝚽'=>'Φ','𝚿'=>'Ψ','ѣ'=>'Ь̵','ਃ'=>'ঃ','ಃ'=>'ః','່'=>'่','់'=>'่','້'=>'้','໊'=>'๊','໋'=>'๋','៕'=>'๚','៚'=>'๛','ъ'=>'ˉb','៙'=>'๏','೧'=>'౧','૨'=>'२','೨'=>'౨','૩'=>'३','૪'=>'४','૮'=>'८','೯'=>'౯','а'=>'a','Ꮟ'=>'b','ᖯ'=>'b','с'=>'c','ԁ'=>'d','ᑯ'=>'d','е'=>'e','ә'=>'ǝ','ε'=>'ɛ','є'=>'ɛ','ք'=>'f','ց'=>'g','һ'=>'h','հ'=>'h','Ꮒ'=>'h','Ᏺ'=>'h̔','ι'=>'i','і'=>'i','Ꭵ'=>'i','ј'=>'j','յ'=>'j','ᗰ'=>'m','ո'=>'n','η'=>'n̩','ం'=>'o','ಂ'=>'o','ം'=>'o','०'=>'o','੦'=>'o','૦'=>'o','๐'=>'o','໐'=>'o','ο'=>'o','о'=>'o','օ'=>'o','ဝ'=>'o','ρ'=>'p','р'=>'p','ᴩ'=>'ᴘ','գ'=>'q','κ'=>'ĸ','к'=>'ĸ','ᴦ'=>'r','г'=>'r','ѕ'=>'s','υ'=>'u','ս'=>'u','ν'=>'v','ѵ'=>'v','Ꮃ'=>'w','ᗯ'=>'w','х'=>'x','ᕁ'=>'x','у'=>'y','Ꭹ'=>'y','ӡ'=>'ʒ','ჳ'=>'ʒ','ϩ'=>'ƨ','ь'=>'ƅ','ы'=>'ƅi','ɑ'=>'α','ծ'=>'δ','ᕷ'=>'δ','п'=>'π','ɸ'=>'φ','ф'=>'φ','ʙ'=>'в','ɜ'=>'з','ᴍ'=>'м','ʜ'=>'н','ɢ'=>'ԍ','ᴛ'=>'т','ᴙ'=>'я','ઽ'=>'ऽ','ુ'=>'ु','ૂ'=>'ू','ੋ'=>'ॆ','੍'=>'्','્'=>'्','ഉ'=>'உ','ജ'=>'ஐ','ണ'=>'ண','ഴ'=>'ழ','ി'=>'ி','ു'=>'ூ','ಅ'=>'అ','ಆ'=>'ఆ','ಇ'=>'ఇ','ಒ'=>'ఒ','ಓ'=>'ఒౕ','ಜ'=>'జ','ಞ'=>'ఞ','ಣ'=>'ణ','థ'=>'ధּ','ಯ'=>'య','ఠ'=>'రּ','ಱ'=>'ఱ','ಲ'=>'ల','ඌ'=>'ന്ന','ஶ'=>'ശ','ຈ'=>'จ','ບ'=>'บ','ປ'=>'ป','ຝ'=>'ฝ','ພ'=>'พ','ຟ'=>'ฟ','ຍ'=>'ย','។'=>'ฯ','ិ'=>'ิ','ី'=>'ี','ឹ'=>'ึ','ឺ'=>'ื','ຸ'=>'ุ','ູ'=>'ู','ᗅ'=>'A','ᒍ'=>'J','ᕼ'=>'H','ᐯ'=>'V','ᑭ'=>'P','ᗷ'=>'B','ヘ'=>'へ','𐏑'=>'𐎂','𐏓'=>'𐎓','𒀸'=>'𐎚','ᅳ'=>'一','ǀ'=>'丨','ᅵ'=>'丨','Ꭺ'=>'A','Ᏼ'=>'B','Ꮯ'=>'C','ᗞ'=>'D','Ꭼ'=>'E','ᖴ'=>'F','Ꮐ'=>'G','Ꮋ'=>'H','Ꭻ'=>'J','Ꮶ'=>'K','Ꮮ'=>'L','Ꮇ'=>'M','Ꮲ'=>'P','ᖇ'=>'R','Ꮥ'=>'S','Ꮩ'=>'V','Ꮓ'=>'Z'); - -?>
\ No newline at end of file diff --git a/phpBB/install/data/new_normalizer.php b/phpBB/install/data/new_normalizer.php index e266f73408..380998f530 100644 --- a/phpBB/install/data/new_normalizer.php +++ b/phpBB/install/data/new_normalizer.php @@ -2,9 +2,8 @@  /**  *  * @package install -* @version $Id$  * @copyright (c) 2007 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -192,5 +191,3 @@ class utf_new_normalizer  		return utf_normalizer::recompose($str, $pos, $len, $qc, $decomp_map);  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 8aa62af7e1..5ea950bfad 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -1,36 +1,23 @@  <?php  /**  * -* @package install -* @version $Id$ -* @copyright (c) 2006 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @package phpBB3 +* @copyright (c) 2012 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ -define('UPDATES_TO_VERSION', '3.0.12-dev'); +$update_start_time = time(); -// Enter any version to update from to test updates. The version within the db will not be updated. -define('DEBUG_FROM_VERSION', false); - -// Which oldest version does this updater support? -define('OLDEST_FROM_VERSION', '3.0.0'); - -// Return if we "just include it" to find out for which version the database update is responsible for -if (defined('IN_PHPBB') && defined('IN_INSTALL')) -{ -	$updates_to_version = UPDATES_TO_VERSION; -	$debug_from_version = DEBUG_FROM_VERSION; -	$oldest_from_version = OLDEST_FROM_VERSION; - -	return; -} +use Symfony\Component\Config\FileLocator; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;  /** +* @ignore  */  define('IN_PHPBB', true);  define('IN_INSTALL', true); -  $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../';  $phpEx = substr(strrchr(__FILE__, '.'), 1); @@ -54,61 +41,102 @@ if (!function_exists('phpbb_require_updated'))  	}  } -phpbb_require_updated('includes/startup.' . $phpEx); +function phpbb_end_update($cache, $config) +{ +	$cache->purge(); -$updates_to_version = UPDATES_TO_VERSION; -$debug_from_version = DEBUG_FROM_VERSION; -$oldest_from_version = OLDEST_FROM_VERSION; +	$config->increment('assets_version', 1); -@set_time_limit(0); +?> +								</p> +							</div> +						</div> +					<span class="corners-bottom"><span></span></span> +				</div> +			</div> +		</div> -// Include essential scripts -include($phpbb_root_path . 'config.' . $phpEx); +		<div id="page-footer"> +			Powered by <a href="https://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group +		</div> +	</div> +</body> +</html> + +<?php + +	garbage_collection(); +	exit_handler(); +} + +phpbb_require_updated('includes/startup.' . $phpEx); +include($phpbb_root_path . 'config.' . $phpEx);  if (!defined('PHPBB_INSTALLED') || empty($dbms) || empty($acm_type))  {  	die("Please read: <a href='../docs/INSTALL.html'>INSTALL.html</a> before attempting to update.");  } -// Load Extensions -if (!empty($load_extensions) && function_exists('dl')) -{ -	$load_extensions = explode(',', $load_extensions); - -	foreach ($load_extensions as $extension) -	{ -		@dl(trim($extension)); -	} -} +// In case $phpbb_adm_relative_path is not set (in case of an update), use the default. +$phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relative_path : 'adm/'; +$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : $phpbb_root_path . $phpbb_adm_relative_path;  // Include files -require($phpbb_root_path . 'includes/acm/acm_' . $acm_type . '.' . $phpEx); -require($phpbb_root_path . 'includes/cache.' . $phpEx); -require($phpbb_root_path . 'includes/template.' . $phpEx); -require($phpbb_root_path . 'includes/session.' . $phpEx); -require($phpbb_root_path . 'includes/auth.' . $phpEx); +require($phpbb_root_path . 'includes/class_loader.' . $phpEx);  require($phpbb_root_path . 'includes/functions.' . $phpEx); +require($phpbb_root_path . 'includes/functions_content.' . $phpEx); +require($phpbb_root_path . 'includes/functions_container.' . $phpEx); -phpbb_require_updated('includes/functions_content.' . $phpEx, true); - -require($phpbb_root_path . 'includes/functions_admin.' . $phpEx);  require($phpbb_root_path . 'includes/constants.' . $phpEx); -require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);  require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx); -phpbb_require_updated('includes/db/db_tools.' . $phpEx); - -// new table constants are separately defined here in case the updater is run -// before the files are updated -if (!defined('LOGIN_ATTEMPT_TABLE')) +// Set PHP error handler to ours +set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'); + +// Setup class loader first +$phpbb_class_loader = new phpbb_class_loader('phpbb_', "{$phpbb_root_path}includes/", $phpEx); +$phpbb_class_loader->register(); + +// Set up container (must be done here because extensions table may not exist) +$container_extensions = array( +	new phpbb_di_extension_config($phpbb_root_path . 'config.' . $phpEx), +	new phpbb_di_extension_core($phpbb_root_path), +); +$container_passes = array( +	new phpbb_di_pass_collection_pass(), +	//new phpbb_di_pass_kernel_pass(), +); +$phpbb_container = phpbb_create_container($container_extensions, $phpbb_root_path, $phpEx); + +// Compile the container +foreach ($container_passes as $pass)  { -	define('LOGIN_ATTEMPT_TABLE', $table_prefix . 'login_attempts'); +	$phpbb_container->addCompilerPass($pass);  } +$phpbb_container->compile(); + +// set up caching +$cache = $phpbb_container->get('cache'); + +// Instantiate some basic classes +$phpbb_dispatcher = $phpbb_container->get('dispatcher'); +$request	= $phpbb_container->get('request'); +$user		= $phpbb_container->get('user'); +$auth		= $phpbb_container->get('auth'); +$db			= $phpbb_container->get('dbal.conn'); +$phpbb_log	= $phpbb_container->get('log'); + +// make sure request_var uses this request instance +request_var('', 0, false, false, $request); // "dependency injection" for a function + +// Grab global variables, re-cache if necessary +$config = $phpbb_container->get('config'); +set_config(null, null, null, $config); +set_config_count(null, null, null, $config); +$orig_version = $config['version']; -$user = new user(); -$cache = new cache(); -$db = new $sql_db(); +$user->add_lang(array('common', 'acp/common', 'install', 'migrator'));  // Add own hook handler, if present. :o  if (file_exists($phpbb_root_path . 'includes/hooks/index.' . $phpEx)) @@ -116,7 +144,8 @@ if (file_exists($phpbb_root_path . 'includes/hooks/index.' . $phpEx))  	require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);  	$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display'))); -	foreach ($cache->obtain_hooks() as $hook) +	$phpbb_hook_finder = $phpbb_container->get('hook_finder'); +	foreach ($phpbb_hook_finder->find() as $hook)  	{  		@include($phpbb_root_path . 'includes/hooks/' . $hook . '.' . $phpEx);  	} @@ -126,2087 +155,127 @@ else  	$phpbb_hook = false;  } -// Connect to DB -$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, false); - -// We do not need this any longer, unset for safety purposes -unset($dbpasswd); - -$user->ip = (!empty($_SERVER['REMOTE_ADDR'])) ? htmlspecialchars($_SERVER['REMOTE_ADDR']) : ''; -$user->ip = (stripos($user->ip, '::ffff:') === 0) ? substr($user->ip, 7) : $user->ip; - -$sql = "SELECT config_value -	FROM " . CONFIG_TABLE . " -	WHERE config_name = 'default_lang'"; -$result = $db->sql_query($sql); -$row = $db->sql_fetchrow($result); -$db->sql_freeresult($result); - -$language = basename(request_var('language', '')); - -if (!$language) -{ -	$language = $row['config_value']; -} - -if (!file_exists($phpbb_root_path . 'language/' . $language)) -{ -	die('No language found!'); -} - -// And finally, load the relevant language files -include($phpbb_root_path . 'language/' . $language . '/common.' . $phpEx); -include($phpbb_root_path . 'language/' . $language . '/acp/common.' . $phpEx); -include($phpbb_root_path . 'language/' . $language . '/install.' . $phpEx); - -// Set PHP error handler to ours -//set_error_handler('msg_handler'); - -// Define some variables for the database update -$inline_update = (request_var('type', 0)) ? true : false; - -// To let set_config() calls succeed, we need to make the config array available globally -$config = array(); - -$sql = 'SELECT * -	FROM ' . CONFIG_TABLE; -$result = $db->sql_query($sql); - -while ($row = $db->sql_fetchrow($result)) -{ -	$config[$row['config_name']] = $row['config_value']; -} -$db->sql_freeresult($result); - -// phpbb_db_tools will be taken from new files (under install/update/new) -// if possible, falling back to the board's copy. -$db_tools = new phpbb_db_tools($db, true); - -$database_update_info = database_update_info(); - -$error_ary = array(); -$errored = false; -  header('Content-type: text/html; charset=UTF-8'); -  ?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" dir="<?php echo $lang['DIRECTION']; ?>" lang="<?php echo $lang['USER_LANG']; ?>" xml:lang="<?php echo $lang['USER_LANG']; ?>"> +<!DOCTYPE html> +<html dir="<?php echo $user->lang['DIRECTION']; ?>" lang="<?php echo $user->lang['USER_LANG']; ?>">  <head> +<meta charset="utf-8"> -<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> -<meta http-equiv="content-language" content="<?php echo $lang['USER_LANG']; ?>" /> -<meta http-equiv="content-style-type" content="text/css" /> -<meta http-equiv="imagetoolbar" content="no" /> - -<title><?php echo $lang['UPDATING_TO_LATEST_STABLE']; ?></title> +<title><?php echo $user->lang['UPDATING_TO_LATEST_STABLE']; ?></title> -<link href="../adm/style/admin.css" rel="stylesheet" type="text/css" media="screen" /> +<link href="<?php echo htmlspecialchars($phpbb_admin_path); ?>style/admin.css" rel="stylesheet" type="text/css" media="screen" />  </head>  <body> -<div id="wrap"> -	<div id="page-header"> </div> - -	<div id="page-body"> -		<div id="acp"> -		<div class="panel"> -			<span class="corners-top"><span></span></span> -				<div id="content"> -					<div id="main" class="install-body"> +	<div id="wrap"> +		<div id="page-header"> </div> -	<h1><?php echo $lang['UPDATING_TO_LATEST_STABLE']; ?></h1> +		<div id="page-body"> +			<div id="acp"> +				<div class="panel"> +					<span class="corners-top"><span></span></span> +						<div id="content"> +							<div id="main" class="install-body"> -	<br /> +								<h1><?php echo $user->lang['UPDATING_TO_LATEST_STABLE']; ?></h1> -	<p><?php echo $lang['DATABASE_TYPE']; ?> :: <strong><?php echo $db->sql_layer; ?></strong><br /> -<?php - -if ($debug_from_version !== false) -{ -	$config['version'] = $debug_from_version; -} - -echo $lang['PREVIOUS_VERSION'] . ' :: <strong>' . $config['version'] . '</strong><br />'; -echo $lang['UPDATED_VERSION'] . ' :: <strong>' . $updates_to_version . '</strong></p>'; - -$current_version = str_replace('rc', 'RC', strtolower($config['version'])); -$latest_version = str_replace('rc', 'RC', strtolower($updates_to_version)); -$orig_version = $config['version']; - -// Fill DB version -if (empty($config['dbms_version'])) -{ -	set_config('dbms_version', $db->sql_server_info(true)); -} - -// Firebird update from Firebird 2.0 to 2.1+ required? -if ($db->sql_layer == 'firebird') -{ -	// We do not trust any PHP5 function enabled, we will simply test for a function new in 2.1 -	$db->sql_return_on_error(true); - -	$sql = 'SELECT 1 FROM RDB$DATABASE -		WHERE BIN_AND(10, 1) = 0'; -	$result = $db->sql_query($sql); - -	if (!$result || $db->sql_error_triggered) -	{ -		echo '<br /><br />'; -		echo '<h1>' . $lang['ERROR'] . '</h1><br />'; +								<br /> -		echo '<p>' . $lang['FIREBIRD_DBMS_UPDATE_REQUIRED'] . '</p>'; - -		_print_footer(); - -		exit_handler(); -		exit; -	} - -	$db->sql_freeresult($result); -	$db->sql_return_on_error(false); -} - -// MySQL update from MySQL 3.x/4.x to > 4.1.x required? -if ($db->sql_layer == 'mysql' || $db->sql_layer == 'mysql4' || $db->sql_layer == 'mysqli') -{ -	// Verify by fetching column... if the column type matches the new type we update dbms_version... -	$sql = "SHOW COLUMNS FROM " . CONFIG_TABLE; -	$result = $db->sql_query($sql); - -	$column_type = ''; -	while ($row = $db->sql_fetchrow($result)) -	{ -		$field = strtolower($row['Field']); - -		if ($field == 'config_value') -		{ -			$column_type = strtolower($row['Type']); -			break; -		} -	} -	$db->sql_freeresult($result); - -	// If column type is blob, but mysql version says we are on > 4.1.3, then the schema needs an update -	if (strpos($column_type, 'blob') !== false && version_compare($db->sql_server_info(true), '4.1.3', '>=')) -	{ -		echo '<br /><br />'; -		echo '<h1>' . $lang['ERROR'] . '</h1><br />'; - -		echo '<p>' . sprintf($lang['MYSQL_SCHEMA_UPDATE_REQUIRED'], $config['dbms_version'], $db->sql_server_info(true)) . '</p>'; - -		_print_footer(); - -		exit_handler(); -		exit; -	} -} - -// Now check if the user wants to update from a version we no longer support updates from -if (version_compare($current_version, $oldest_from_version, '<')) -{ -	echo '<br /><br /><h1>' . $lang['ERROR'] . '</h1><br />'; -	echo '<p>' . sprintf($lang['DB_UPDATE_NOT_SUPPORTED'], $oldest_from_version, $current_version) . '</p>'; - -	_print_footer(); -	exit_handler(); -	exit; -} - -// If the latest version and the current version are 'unequal', we will update the version_update_from, else we do not update anything. -if ($inline_update) -{ -	if ($current_version !== $latest_version) -	{ -		set_config('version_update_from', $orig_version); -	} -} -else -{ -	// If not called from the update script, we will actually remove the traces -	$db->sql_query('DELETE FROM ' . CONFIG_TABLE . " WHERE config_name = 'version_update_from'"); -} - -// Schema updates -?> -	<br /><br /> - -	<h1><?php echo $lang['UPDATE_DATABASE_SCHEMA']; ?></h1> - -	<br /> -	<p><?php echo $lang['PROGRESS']; ?> :: <strong> +								<p><?php echo $user->lang['DATABASE_TYPE']; ?> :: <strong><?php echo $db->sql_layer; ?></strong><br /> +								<?php echo $user->lang['PREVIOUS_VERSION']; ?> :: <strong><?php echo $config['version']; ?></strong><br />  <?php -flush(); - -// We go through the schema changes from the lowest to the highest version -// We try to also include versions 'in-between'... -$no_updates = true; -$versions = array_keys($database_update_info); -for ($i = 0; $i < sizeof($versions); $i++) -{ -	$version = $versions[$i]; -	$schema_changes = $database_update_info[$version]; - -	$next_version = (isset($versions[$i + 1])) ? $versions[$i + 1] : $updates_to_version; - -	// If the installed version to be updated to is < than the current version, and if the current version is >= as the version to be updated to next, we will skip the process -	if (version_compare($version, $current_version, '<') && version_compare($current_version, $next_version, '>=')) -	{ -		continue; -	} - -	if (!sizeof($schema_changes)) -	{ -		continue; -	} - -	$no_updates = false; - -	// We run one index after the other... to be consistent with schema changes... -	foreach ($schema_changes as $key => $changes) -	{ -		$statements = $db_tools->perform_schema_changes(array($key => $changes)); - -		foreach ($statements as $sql) -		{ -			_sql($sql, $errored, $error_ary); -		} -	} -} - -_write_result($no_updates, $errored, $error_ary); - -// Data updates -$error_ary = array(); -$errored = $no_updates = false; - -?> - -<br /><br /> -<h1><?php echo $lang['UPDATING_DATA']; ?></h1> -<br /> -<p><?php echo $lang['PROGRESS']; ?> :: <strong> - -<?php - -flush(); - -$no_updates = true; -$versions = array_keys($database_update_info); - -// some code magic -for ($i = 0; $i < sizeof($versions); $i++) -{ -	$version = $versions[$i]; -	$next_version = (isset($versions[$i + 1])) ? $versions[$i + 1] : $updates_to_version; - -	// If the installed version to be updated to is < than the current version, and if the current version is >= as the version to be updated to next, we will skip the process -	if (version_compare($version, $current_version, '<') && version_compare($current_version, $next_version, '>=')) -	{ -		continue; -	} - -	change_database_data($no_updates, $version); -} - -_write_result($no_updates, $errored, $error_ary); - -$error_ary = array(); -$errored = $no_updates = false; - -?> - -<br /><br /> -<h1><?php echo $lang['UPDATE_VERSION_OPTIMIZE']; ?></h1> -<br /> -<p><?php echo $lang['PROGRESS']; ?> :: <strong> - -<?php - -flush(); - -if ($debug_from_version === false) -{ -	// update the version -	$sql = "UPDATE " . CONFIG_TABLE . " -		SET config_value = '$updates_to_version' -		WHERE config_name = 'version'"; -	_sql($sql, $errored, $error_ary); -} - -// Reset permissions -$sql = 'UPDATE ' . USERS_TABLE . " -	SET user_permissions = '', -		user_perm_from = 0"; -_sql($sql, $errored, $error_ary); - -// Update the dbms version if everything is ok... -set_config('dbms_version', $db->sql_server_info(true)); - -/* Optimize/vacuum analyze the tables where appropriate -// this should be done for each version in future along with -// the version number update -switch ($db->sql_layer) -{ -	case 'mysql': -	case 'mysqli': -	case 'mysql4': -		$sql = 'OPTIMIZE TABLE ' . $table_prefix . 'auth_access, ' . $table_prefix . 'banlist, ' . $table_prefix . 'categories, ' . $table_prefix . 'config, ' . $table_prefix . 'disallow, ' . $table_prefix . 'forum_prune, ' . $table_prefix . 'forums, ' . $table_prefix . 'groups, ' . $table_prefix . 'posts, ' . $table_prefix . 'posts_text, ' . $table_prefix . 'privmsgs, ' . $table_prefix . 'privmsgs_text, ' . $table_prefix . 'ranks, ' . $table_prefix . 'search_results, ' . $table_prefix . 'search_wordlist, ' . $table_prefix . 'search_wordmatch, ' . $table_prefix . 'sessions_keys' . $table_prefix . 'smilies, ' . $table_prefix . 'themes, ' . $table_prefix . 'themes_name, ' . $table_prefix . 'topics, ' . $table_prefix . 'topics_watch, ' . $table_prefix . 'user_group, ' . $table_prefix . 'users, ' . $table_prefix . 'vote_desc, ' . $table_prefix . 'vote_results, ' . $table_prefix . 'vote_voters, ' . $table_prefix . 'words'; -		_sql($sql, $errored, $error_ary); -	break; - -	case 'postgresql': -		_sql("VACUUM ANALYZE", $errored, $error_ary); -	break; -} +/** +* @todo firebird/mysql update?  */ -_write_result($no_updates, $errored, $error_ary); +// End startup code -?> - -<br /> -<h1><?php echo $lang['UPDATE_COMPLETED']; ?></h1> - -<br /> - -<?php - -if (!$inline_update) -{ -?> - -	<p style="color:red"><?php echo $lang['UPDATE_FILES_NOTICE']; ?></p> - -	<p><?php echo $lang['COMPLETE_LOGIN_TO_BOARD']; ?></p> - -<?php -} -else +// Make sure migrations have been installed. +$db_tools = $phpbb_container->get('dbal.tools'); +if (!$db_tools->sql_table_exists($table_prefix . 'migrations'))  { -?> - -	<p><?php echo ((isset($lang['INLINE_UPDATE_SUCCESSFUL'])) ? $lang['INLINE_UPDATE_SUCCESSFUL'] : 'The database update was successful. Now you need to continue the update process.'); ?></p> - -	<p><a href="<?php echo append_sid("{$phpbb_root_path}install/index.{$phpEx}", "mode=update&sub=file_check&language=$language"); ?>" class="button1"><?php echo (isset($lang['CONTINUE_UPDATE_NOW'])) ? $lang['CONTINUE_UPDATE_NOW'] : 'Continue the update process now'; ?></a></p> - -<?php +	$db_tools->sql_create_table($table_prefix . 'migrations', array( +		'COLUMNS'		=> array( +			'migration_name'			=> array('VCHAR', ''), +			'migration_depends_on'		=> array('TEXT', ''), +			'migration_schema_done'		=> array('BOOL', 0), +			'migration_data_done'		=> array('BOOL', 0), +			'migration_data_state'		=> array('TEXT', ''), +			'migration_start_time'		=> array('TIMESTAMP', 0), +			'migration_end_time'		=> array('TIMESTAMP', 0), +		), +		'PRIMARY_KEY'	=> 'migration_name', +	));  } -// Add database update to log -add_log('admin', 'LOG_UPDATE_DATABASE', $orig_version, $updates_to_version); - -// Now we purge the session table as well as all cache files -$cache->purge(); +$migrator = $phpbb_container->get('migrator'); +$extension_manager = $phpbb_container->get('ext.manager'); +$finder = $extension_manager->get_finder(); -_print_footer(); +$migrations = $finder +	->core_path('includes/db/migration/data/') +	->get_classes(); +$migrator->set_migrations($migrations); -garbage_collection(); +// What is a safe limit of execution time? Half the max execution time should be safe. +$safe_time_limit = (ini_get('max_execution_time') / 2); -if (function_exists('exit_handler')) +while (!$migrator->finished())  { -	exit_handler(); -} - -/** -* Print out footer -*/ -function _print_footer() -{ -	echo <<<EOF -					</div> -				</div> -			<span class="corners-bottom"><span></span></span> -		</div> -		</div> -	</div> - -	<div id="page-footer"> -		Powered by <a href="https://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group -	</div> -</div> - -</body> -</html> -EOF; -} - -/** -* Function for triggering an sql statement -*/ -function _sql($sql, &$errored, &$error_ary, $echo_dot = true) -{ -	global $db; - -	if (defined('DEBUG_EXTRA')) -	{ -		echo "<br />\n{$sql}\n<br />"; -	} - -	$db->sql_return_on_error(true); - -	if ($sql === 'begin') -	{ -		$result = $db->sql_transaction('begin'); -	} -	else if ($sql === 'commit') +	try  	{ -		$result = $db->sql_transaction('commit'); +		$migrator->update();  	} -	else +	catch (phpbb_db_migration_exception $e)  	{ -		$result = $db->sql_query($sql); -		if ($db->sql_error_triggered) -		{ -			$errored = true; -			$error_ary['sql'][] = $db->sql_error_sql; -			$error_ary['error_code'][] = $db->sql_error_returned; -		} -	} +		echo $e->getLocalisedMessage($user); -	$db->sql_return_on_error(false); - -	if ($echo_dot) -	{ -		echo ". \n"; -		flush(); +		phpbb_end_update($cache, $config);  	} -	return $result; -} - -function _write_result($no_updates, $errored, $error_ary) -{ -	global $lang; +	$state = array_merge(array( +			'migration_schema_done' => false, +			'migration_data_done'	=> false, +		), +		$migrator->last_run_migration['state'] +	); -	if ($no_updates) +	if (isset($migrator->last_run_migration['effectively_installed']) && $migrator->last_run_migration['effectively_installed'])  	{ -		echo ' ' . $lang['NO_UPDATES_REQUIRED'] . '</strong></p>'; +		echo $user->lang('MIGRATION_EFFECTIVELY_INSTALLED', $migrator->last_run_migration['name']) . '<br />';  	}  	else  	{ -		echo ' <span class="success">' . $lang['DONE'] . '</span></strong><br />' . $lang['RESULT'] . ' :: '; - -		if ($errored) +		if ($state['migration_data_done'])  		{ -			echo ' <strong>' . $lang['SOME_QUERIES_FAILED'] . '</strong> <ul>'; - -			for ($i = 0; $i < sizeof($error_ary['sql']); $i++) -			{ -				echo '<li>' . $lang['ERROR'] . ' :: <strong>' . htmlspecialchars($error_ary['error_code'][$i]['message']) . '</strong><br />'; -				echo $lang['SQL'] . ' :: <strong>' . htmlspecialchars($error_ary['sql'][$i]) . '</strong><br /><br /></li>'; -			} - -			echo '</ul> <br /><br />' . $lang['SQL_FAILURE_EXPLAIN'] . '</p>'; +			echo $user->lang('MIGRATION_DATA_DONE', $migrator->last_run_migration['name']) . '<br />';  		} -		else +		else if ($state['migration_schema_done'])  		{ -			echo '<strong>' . $lang['NO_ERRORS'] . '</strong></p>'; +			echo $user->lang('MIGRATION_SCHEMA_DONE', $migrator->last_run_migration['name']) . '<br />';  		}  	} -} - -function _add_modules($modules_to_install) -{ -	global $phpbb_root_path, $phpEx, $db; - -	include_once($phpbb_root_path . 'includes/acp/acp_modules.' . $phpEx); -	$_module = new acp_modules(); - -	foreach ($modules_to_install as $module_mode => $module_data) +	// Are we approaching the time limit? If so we want to pause the update and continue after refreshing +	if ((time() - $update_start_time) >= $safe_time_limit)  	{ -		$_module->module_class = $module_data['class']; - -		// Determine parent id first -		$sql = 'SELECT module_id -			FROM ' . MODULES_TABLE . " -			WHERE module_class = '" . $db->sql_escape($module_data['class']) . "' -				AND module_langname = '" . $db->sql_escape($module_data['cat']) . "' -				AND module_mode = '' -				AND module_basename = ''"; -		$result = $db->sql_query($sql); - -		// There may be more than one categories with the same name -		$categories = array(); -		while ($row = $db->sql_fetchrow($result)) -		{ -			$categories[] = (int) $row['module_id']; -		} -		$db->sql_freeresult($result); - -		if (!sizeof($categories)) -		{ -			continue; -		} - -		// Add the module to all categories found -		foreach ($categories as $parent_id) -		{ -			// Check if the module already exists -			$sql = 'SELECT * -				FROM ' . MODULES_TABLE . " -				WHERE module_basename = '" . $db->sql_escape($module_data['base']) . "' -					AND module_class = '" . $db->sql_escape($module_data['class']) . "' -					AND module_langname = '" . $db->sql_escape($module_data['title']) . "' -					AND module_mode = '" . $db->sql_escape($module_mode) . "' -					AND module_auth = '" . $db->sql_escape($module_data['auth']) . "' -					AND parent_id = {$parent_id}"; -			$result = $db->sql_query($sql); -			$row = $db->sql_fetchrow($result); -			$db->sql_freeresult($result); - -			// If it exists, we simply continue with the next category -			if ($row) -			{ -				continue; -			} - -			// Build the module sql row -			$module_row = array( -				'module_basename'	=> $module_data['base'], -				'module_enabled'	=> (isset($module_data['enabled'])) ? (int) $module_data['enabled'] : 1, -				'module_display'	=> (isset($module_data['display'])) ? (int) $module_data['display'] : 1, -				'parent_id'			=> $parent_id, -				'module_class'		=> $module_data['class'], -				'module_langname'	=> $module_data['title'], -				'module_mode'		=> $module_mode, -				'module_auth'		=> $module_data['auth'], -			); - -			$_module->update_module_data($module_row, true); - -			// Ok, do we need to re-order the module, move it up or down? -			if (!isset($module_data['after'])) -			{ -				continue; -			} - -			$after_mode = $module_data['after'][0]; -			$after_langname = $module_data['after'][1]; +		//echo '<meta http-equiv="refresh" content="0;url=' . str_replace('&', '&', append_sid($phpbb_root_path . 'test.' . $phpEx)) . '" />'; +		echo $user->lang['DATABASE_UPDATE_NOT_COMPLETED'] . '<br />'; +		echo '<a href="' . append_sid($phpbb_root_path . 'test.' . $phpEx) . '">' . $user->lang['DATABASE_UPDATE_CONTINUE'] . '</a>'; -			// First of all, get the module id for the module this one has to be placed after -			$sql = 'SELECT left_id -				FROM ' . MODULES_TABLE . " -				WHERE module_class = '" . $db->sql_escape($module_data['class']) . "' -					AND module_basename = '" . $db->sql_escape($module_data['base']) . "' -					AND module_langname = '" . $db->sql_escape($after_langname) . "' -					AND module_mode = '" . $db->sql_escape($after_mode) . "' -					AND parent_id = '{$parent_id}'"; -			$result = $db->sql_query($sql); -			$first_left_id = (int) $db->sql_fetchfield('left_id'); -			$db->sql_freeresult($result); - -			if (!$first_left_id) -			{ -				continue; -			} - -			// Ok, count the number of modules between $after_mode and the added module -			$sql = 'SELECT COUNT(module_id) as num_modules -				FROM ' . MODULES_TABLE . " -				WHERE module_class = '" . $db->sql_escape($module_data['class']) . "' -					AND parent_id = {$parent_id} -					AND left_id BETWEEN {$first_left_id} AND {$module_row['left_id']}"; -			$result = $db->sql_query($sql); -			$steps = (int) $db->sql_fetchfield('num_modules'); -			$db->sql_freeresult($result); - -			// We need to substract 2 -			$steps -= 2; - -			if ($steps <= 0) -			{ -				continue; -			} - -			// Ok, move module up $num_modules times. ;) -			$_module->move_module_by($module_row, 'move_up', $steps); -		} +		phpbb_end_update($cache, $config);  	} - -	$_module->remove_cache_file();  } -/**************************************************************************** -* ADD YOUR DATABASE SCHEMA CHANGES HERE										* -*****************************************************************************/ -function database_update_info() +if ($orig_version != $config['version'])  { -	return array( -		// Changes from 3.0.0 to the next version -		'3.0.0'			=> array( -			// Add the following columns -			'add_columns'		=> array( -				FORUMS_TABLE			=> array( -					'display_subforum_list'		=> array('BOOL', 1), -				), -				SESSIONS_TABLE			=> array( -					'session_forum_id'		=> array('UINT', 0), -				), -			), -			'drop_keys'		=> array( -				GROUPS_TABLE			=> array('group_legend'), -			), -			'add_index'		=> array( -				SESSIONS_TABLE			=> array( -					'session_forum_id'		=> array('session_forum_id'), -				), -				GROUPS_TABLE			=> array( -					'group_legend_name'		=> array('group_legend', 'group_name'), -				), -			), -		), -		// No changes from 3.0.1-RC1 to 3.0.1 -		'3.0.1-RC1'		=> array(), -		// No changes from 3.0.1 to 3.0.2-RC1 -		'3.0.1'			=> array(), -		// Changes from 3.0.2-RC1 to 3.0.2-RC2 -		'3.0.2-RC1'		=> array( -			'change_columns'	=> array( -				DRAFTS_TABLE			=> array( -					'draft_subject'		=> array('STEXT_UNI', ''), -				), -				FORUMS_TABLE	=> array( -					'forum_last_post_subject' => array('STEXT_UNI', ''), -				), -				POSTS_TABLE		=> array( -					'post_subject'			=> array('STEXT_UNI', '', 'true_sort'), -				), -				PRIVMSGS_TABLE	=> array( -					'message_subject'		=> array('STEXT_UNI', ''), -				), -				TOPICS_TABLE	=> array( -					'topic_title'				=> array('STEXT_UNI', '', 'true_sort'), -					'topic_last_post_subject'	=> array('STEXT_UNI', ''), -				), -			), -			'drop_keys'		=> array( -				SESSIONS_TABLE			=> array('session_forum_id'), -			), -			'add_index'		=> array( -				SESSIONS_TABLE			=> array( -					'session_fid'		=> array('session_forum_id'), -				), -			), -		), -		// No changes from 3.0.2-RC2 to 3.0.2 -		'3.0.2-RC2'		=> array(), - -		// Changes from 3.0.2 to 3.0.3-RC1 -		'3.0.2'			=> array( -			// Add the following columns -			'add_columns'		=> array( -				STYLES_TEMPLATE_TABLE			=> array( -					'template_inherits_id'		=> array('UINT:4', 0), -					'template_inherit_path'		=> array('VCHAR', ''), -				), -				GROUPS_TABLE					=> array( -					'group_max_recipients'		=> array('UINT', 0), -				), -			), -		), - -		// No changes from 3.0.3-RC1 to 3.0.3 -		'3.0.3-RC1'		=> array(), - -		// Changes from 3.0.3 to 3.0.4-RC1 -		'3.0.3'			=> array( -			'add_columns'		=> array( -				PROFILE_FIELDS_TABLE			=> array( -					'field_show_profile'		=> array('BOOL', 0), -				), -			), -			'change_columns'	=> array( -				STYLES_TABLE				=> array( -					'style_id'				=> array('UINT', NULL, 'auto_increment'), -					'template_id'			=> array('UINT', 0), -					'theme_id'				=> array('UINT', 0), -					'imageset_id'			=> array('UINT', 0), -				), -				STYLES_IMAGESET_TABLE		=> array( -					'imageset_id'				=> array('UINT', NULL, 'auto_increment'), -				), -				STYLES_IMAGESET_DATA_TABLE	=> array( -					'image_id'				=> array('UINT', NULL, 'auto_increment'), -					'imageset_id'			=> array('UINT', 0), -				), -				STYLES_THEME_TABLE			=> array( -					'theme_id'				=> array('UINT', NULL, 'auto_increment'), -				), -				STYLES_TEMPLATE_TABLE		=> array( -					'template_id'			=> array('UINT', NULL, 'auto_increment'), -				), -				STYLES_TEMPLATE_DATA_TABLE	=> array( -					'template_id'			=> array('UINT', 0), -				), -				FORUMS_TABLE				=> array( -					'forum_style'			=> array('UINT', 0), -				), -				USERS_TABLE					=> array( -					'user_style'			=> array('UINT', 0), -				), -			), -		), - -		// Changes from 3.0.4-RC1 to 3.0.4 -		'3.0.4-RC1'		=> array(), - -		// Changes from 3.0.4 to 3.0.5-RC1 -		'3.0.4'			=> array( -			'change_columns'	=> array( -				FORUMS_TABLE				=> array( -					'forum_style'			=> array('UINT', 0), -				), -			), -		), - -		// No changes from 3.0.5-RC1 to 3.0.5 -		'3.0.5-RC1'		=> array(), - -		// Changes from 3.0.5 to 3.0.6-RC1 -		'3.0.5'		=> array( -			'add_columns'		=> array( -				CONFIRM_TABLE			=> array( -					'attempts'		=> array('UINT', 0), -				), -				USERS_TABLE			=> array( -					'user_new'			=> array('BOOL', 1), -					'user_reminded'		=> array('TINT:4', 0), -					'user_reminded_time'=> array('TIMESTAMP', 0), -				), -				GROUPS_TABLE			=> array( -					'group_skip_auth'		=> array('BOOL', 0, 'after' => 'group_founder_manage'), -				), -				PRIVMSGS_TABLE		=> array( -					'message_reported'	=> array('BOOL', 0), -				), -				REPORTS_TABLE		=> array( -					'pm_id'				=> array('UINT', 0), -				), -				PROFILE_FIELDS_TABLE			=> array( -					'field_show_on_vt'		=> array('BOOL', 0), -				), -				FORUMS_TABLE		=> array( -					'forum_options'			=> array('UINT:20', 0), -				), -			), -			'change_columns'		=> array( -				USERS_TABLE				=> array( -					'user_options'		=> array('UINT:11', 230271), -				), -			), -			'add_index'		=> array( -				REPORTS_TABLE		=> array( -					'post_id'		=> array('post_id'), -					'pm_id'			=> array('pm_id'), -				), -				POSTS_TABLE			=> array( -					'post_username'		=> array('post_username:255'), -				), -			), -		), - -		// No changes from 3.0.6-RC1 to 3.0.6-RC2 -		'3.0.6-RC1'		=> array(), -		// No changes from 3.0.6-RC2 to 3.0.6-RC3 -		'3.0.6-RC2'		=> array(), -		// No changes from 3.0.6-RC3 to 3.0.6-RC4 -		'3.0.6-RC3'		=> array(), -		// No changes from 3.0.6-RC4 to 3.0.6 -		'3.0.6-RC4'		=> array(), - -		// Changes from 3.0.6 to 3.0.7-RC1 -		'3.0.6'		=> array( -			'drop_keys'		=> array( -				LOG_TABLE			=> array('log_time'), -			), -			'add_index'		=> array( -				TOPICS_TRACK_TABLE	=> array( -					'topic_id'		=> array('topic_id'), -				), -			), -		), - -		// No changes from 3.0.7-RC1 to 3.0.7-RC2 -		'3.0.7-RC1'		=> array(), -		// No changes from 3.0.7-RC2 to 3.0.7 -		'3.0.7-RC2'		=> array(), -		// No changes from 3.0.7 to 3.0.7-PL1 -		'3.0.7'		=> array(), -		// No changes from 3.0.7-PL1 to 3.0.8-RC1 -		'3.0.7-PL1'		=> array(), -		// No changes from 3.0.8-RC1 to 3.0.8 -		'3.0.8-RC1'		=> array(), -		// Changes from 3.0.8 to 3.0.9-RC1 -		'3.0.8'			=> array( -			'add_tables'		=> array( -				LOGIN_ATTEMPT_TABLE	=> array( -					'COLUMNS'			=> array( -						// this column was removed from the database updater -						// after 3.0.9-RC3 was released. It might still exist -						// in 3.0.9-RCX installations and has to be dropped in -						// 3.0.12 after the db_tools class is capable of properly -						// removing a primary key. -						// 'attempt_id'			=> array('UINT', NULL, 'auto_increment'), -						'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), -					), -					//'PRIMARY_KEY'		=> 'attempt_id', -					'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'), -					), -				), -			), -			'change_columns'	=> array( -				BBCODES_TABLE	=> array( -					'bbcode_id'	=> array('USINT', 0), -				), -			), -		), -		// No changes from 3.0.9-RC1 to 3.0.9-RC2 -		'3.0.9-RC1'		=> array(), -		// No changes from 3.0.9-RC2 to 3.0.9-RC3 -		'3.0.9-RC2'		=> array(), -		// No changes from 3.0.9-RC3 to 3.0.9-RC4 -		'3.0.9-RC3'     => array(), -		// No changes from 3.0.9-RC4 to 3.0.9 -		'3.0.9-RC4'     => array(), -		// No changes from 3.0.9 to 3.0.10-RC1 -		'3.0.9'			=> array(), -		// No changes from 3.0.10-RC1 to 3.0.10-RC2 -		'3.0.10-RC1'	=> array(), -		// No changes from 3.0.10-RC2 to 3.0.10-RC3 -		'3.0.10-RC2'	=> array(), -		// No changes from 3.0.10-RC3 to 3.0.10 -		'3.0.10-RC3'	=> array(), -		// No changes from 3.0.10 to 3.0.11-RC1 -		'3.0.10'		=> array(), -		// Changes from 3.0.11-RC1 to 3.0.11-RC2 -		'3.0.11-RC1'	=> array( -			'add_columns'		=> array( -				PROFILE_FIELDS_TABLE			=> array( -					'field_show_novalue'		=> array('BOOL', 0), -				), -			), -		), -		// No changes from 3.0.11-RC2 to 3.0.11 -		'3.0.11-RC2'	=> array(), -		// No changes from 3.0.11 to 3.0.12-RC1 -		'3.0.11'		=> array(), - -		/** @todo DROP LOGIN_ATTEMPT_TABLE.attempt_id in 3.0.12-RC1 */ -	); +	add_log('admin', 'LOG_UPDATE_DATABASE', $orig_version, $config['version']);  } -/**************************************************************************** -* ADD YOUR DATABASE DATA CHANGES HERE										* -* REMEMBER: You NEED to enter a schema array above and a data array here,	* -* even if both or one of them are empty.									* -*****************************************************************************/ -function change_database_data(&$no_updates, $version) -{ -	global $db, $db_tools, $errored, $error_ary, $config, $table_prefix, $phpbb_root_path, $phpEx; - -	switch ($version) -	{ -		case '3.0.0': - -			$sql = 'UPDATE ' . TOPICS_TABLE . " -				SET topic_last_view_time = topic_last_post_time -				WHERE topic_last_view_time = 0"; -			_sql($sql, $errored, $error_ary); - -			// Update smiley sizes -			$smileys = array('icon_e_surprised.gif', 'icon_eek.gif', 'icon_cool.gif', 'icon_lol.gif', 'icon_mad.gif', 'icon_razz.gif', 'icon_redface.gif', 'icon_cry.gif', 'icon_evil.gif', 'icon_twisted.gif', 'icon_rolleyes.gif', 'icon_exclaim.gif', 'icon_question.gif', 'icon_idea.gif', 'icon_arrow.gif', 'icon_neutral.gif', 'icon_mrgreen.gif', 'icon_e_ugeek.gif'); - -			foreach ($smileys as $smiley) -			{ -				if (file_exists($phpbb_root_path . 'images/smilies/' . $smiley)) -				{ -					list($width, $height) = getimagesize($phpbb_root_path . 'images/smilies/' . $smiley); - -					$sql = 'UPDATE ' . SMILIES_TABLE . ' -						SET smiley_width = ' . $width . ', smiley_height = ' . $height . " -						WHERE smiley_url = '" . $db->sql_escape($smiley) . "'"; - -					_sql($sql, $errored, $error_ary); -				} -			} - -			$no_updates = false; -		break; - -		// No changes from 3.0.1-RC1 to 3.0.1 -		case '3.0.1-RC1': -		break; - -		// changes from 3.0.1 to 3.0.2-RC1 -		case '3.0.1': - -			set_config('referer_validation', '1'); -			set_config('check_attachment_content', '1'); -			set_config('mime_triggers', 'body|head|html|img|plaintext|a href|pre|script|table|title'); - -			$no_updates = false; -		break; - -		// No changes from 3.0.2-RC1 to 3.0.2-RC2 -		case '3.0.2-RC1': -		break; - -		// No changes from 3.0.2-RC2 to 3.0.2 -		case '3.0.2-RC2': -		break; - -		// Changes from 3.0.2 to 3.0.3-RC1 -		case '3.0.2': -			set_config('enable_queue_trigger', '0'); -			set_config('queue_trigger_posts', '3'); - -			set_config('pm_max_recipients', '0'); - -			// Set maximum number of recipients for the registered users, bots, guests group -			$sql = 'UPDATE ' . GROUPS_TABLE . ' SET group_max_recipients = 5 -				WHERE ' . $db->sql_in_set('group_name', array('GUESTS', 'REGISTERED', 'REGISTERED_COPPA', 'BOTS')); -			_sql($sql, $errored, $error_ary); - -			// Not prefilling yet -			set_config('dbms_version', ''); - -			// Add new permission u_masspm_group and duplicate settings from u_masspm -			include_once($phpbb_root_path . 'includes/acp/auth.' . $phpEx); -			$auth_admin = new auth_admin(); - -			// Only add the new permission if it does not already exist -			if (empty($auth_admin->acl_options['id']['u_masspm_group'])) -			{ -				$auth_admin->acl_add_option(array('global' => array('u_masspm_group'))); - -				// Now the tricky part, filling the permission -				$old_id = $auth_admin->acl_options['id']['u_masspm']; -				$new_id = $auth_admin->acl_options['id']['u_masspm_group']; - -				$tables = array(ACL_GROUPS_TABLE, ACL_ROLES_DATA_TABLE, ACL_USERS_TABLE); - -				foreach ($tables as $table) -				{ -					$sql = 'SELECT * -						FROM ' . $table . ' -						WHERE auth_option_id = ' . $old_id; -					$result = _sql($sql, $errored, $error_ary); - -					$sql_ary = array(); -					while ($row = $db->sql_fetchrow($result)) -					{ -						$row['auth_option_id'] = $new_id; -						$sql_ary[] = $row; -					} -					$db->sql_freeresult($result); - -					if (sizeof($sql_ary)) -					{ -						$db->sql_multi_insert($table, $sql_ary); -					} -				} - -				// Remove any old permission entries -				$auth_admin->acl_clear_prefetch(); -			} - -			/** -			* Do not resync post counts here. An admin may do this later from the ACP -			$start = 0; -			$step = ($config['num_posts']) ? (max((int) ($config['num_posts'] / 5), 20000)) : 20000; - -			$sql = 'UPDATE ' . USERS_TABLE . ' SET user_posts = 0'; -			_sql($sql, $errored, $error_ary); - -			do -			{ -				$sql = 'SELECT COUNT(post_id) AS num_posts, poster_id -					FROM ' . POSTS_TABLE . ' -					WHERE post_id BETWEEN ' . ($start + 1) . ' AND ' . ($start + $step) . ' -						AND post_postcount = 1 AND post_approved = 1 -					GROUP BY poster_id'; -				$result = _sql($sql, $errored, $error_ary); - -				if ($row = $db->sql_fetchrow($result)) -				{ -					do -					{ -						$sql = 'UPDATE ' . USERS_TABLE . " SET user_posts = user_posts + {$row['num_posts']} WHERE user_id = {$row['poster_id']}"; -						_sql($sql, $errored, $error_ary); -					} -					while ($row = $db->sql_fetchrow($result)); - -					$start += $step; -				} -				else -				{ -					$start = 0; -				} -				$db->sql_freeresult($result); -			} -			while ($start); -			*/ - -			$sql = 'UPDATE ' . MODULES_TABLE . ' -				SET module_auth = \'acl_a_email && cfg_email_enable\' -				WHERE module_class = \'acp\' -					AND module_basename = \'email\''; -			_sql($sql, $errored, $error_ary); - -			$no_updates = false; -		break; - -		// Changes from 3.0.3-RC1 to 3.0.3 -		case '3.0.3-RC1': -			if ($db->sql_layer == 'oracle') -			{ -				// log_operation is CLOB - but we can change this later -				$sql = 'UPDATE ' . LOG_TABLE . " -					SET log_operation = 'LOG_DELETE_TOPIC' -					WHERE log_operation LIKE 'LOG_TOPIC_DELETED'"; -				_sql($sql, $errored, $error_ary); -			} -			else -			{ -				$sql = 'UPDATE ' . LOG_TABLE . " -					SET log_operation = 'LOG_DELETE_TOPIC' -					WHERE log_operation = 'LOG_TOPIC_DELETED'"; -				_sql($sql, $errored, $error_ary); -			} - -			$no_updates = false; -		break; - -		// Changes from 3.0.3 to 3.0.4-RC1 -		case '3.0.3': -			// Update the Custom Profile Fields based on previous settings to the new format -			$sql = 'SELECT field_id, field_required, field_show_on_reg, field_hide -					FROM ' . PROFILE_FIELDS_TABLE; -			$result = _sql($sql, $errored, $error_ary); - -			while ($row = $db->sql_fetchrow($result)) -			{ -				$sql_ary = array( -					'field_required'	=> 0, -					'field_show_on_reg'	=> 0, -					'field_hide'		=> 0, -					'field_show_profile'=> 0, -				); - -				if ($row['field_required']) -				{ -					$sql_ary['field_required'] = $sql_ary['field_show_on_reg'] = $sql_ary['field_show_profile'] = 1; -				} -				else if ($row['field_show_on_reg']) -				{ -					$sql_ary['field_show_on_reg'] = $sql_ary['field_show_profile'] = 1; -				} -				else if ($row['field_hide']) -				{ -					// Only administrators and moderators can see this CPF, if the view is enabled, they can see it, otherwise just admins in the acp_users module -					$sql_ary['field_hide'] = 1; -				} -				else -				{ -					// equivelant to "none", which is the "Display in user control panel" option -					$sql_ary['field_show_profile'] = 1; -				} - -				_sql('UPDATE ' . PROFILE_FIELDS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE field_id = ' . $row['field_id'], $errored, $error_ary); -			} -			$no_updates = false; - -		break; - -		// Changes from 3.0.4-RC1 to 3.0.4 -		case '3.0.4-RC1': -		break; - -		// Changes from 3.0.4 to 3.0.5-RC1 -		case '3.0.4': - -			// Captcha config variables -			set_config('captcha_gd_wave', 0); -			set_config('captcha_gd_3d_noise', 1); -			set_config('captcha_gd_fonts', 1); -			set_config('confirm_refresh', 1); - -			// Maximum number of keywords -			set_config('max_num_search_keywords', 10); - -			// Remove static config var and put it back as dynamic variable -			$sql = 'UPDATE ' . CONFIG_TABLE . " -				SET is_dynamic = 1 -				WHERE config_name = 'search_indexing_state'"; -			_sql($sql, $errored, $error_ary); - -			// Hash old MD5 passwords -			$sql = 'SELECT user_id, user_password -					FROM ' . USERS_TABLE . ' -					WHERE user_pass_convert = 1'; -			$result = _sql($sql, $errored, $error_ary); - -			while ($row = $db->sql_fetchrow($result)) -			{ -				if (strlen($row['user_password']) == 32) -				{ -					$sql_ary = array( -						'user_password'	=> phpbb_hash($row['user_password']), -					); - -					_sql('UPDATE ' . USERS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE user_id = ' . $row['user_id'], $errored, $error_ary); -				} -			} -			$db->sql_freeresult($result); - -			// Adjust bot entry -			$sql = 'UPDATE ' . BOTS_TABLE . " -				SET bot_agent = 'ichiro/' -				WHERE bot_agent = 'ichiro/2'"; -			_sql($sql, $errored, $error_ary); - - -			// Before we are able to add a unique key to auth_option, we need to remove duplicate entries - -			// We get duplicate entries first -			$sql = 'SELECT auth_option -				FROM ' . ACL_OPTIONS_TABLE . ' -				GROUP BY auth_option -				HAVING COUNT(*) >= 2'; -			$result = $db->sql_query($sql); - -			$auth_options = array(); -			while ($row = $db->sql_fetchrow($result)) -			{ -				$auth_options[] = $row['auth_option']; -			} -			$db->sql_freeresult($result); - -			// Remove specific auth options -			if (!empty($auth_options)) -			{ -				foreach ($auth_options as $option) -				{ -					// Select auth_option_ids... the largest id will be preserved -					$sql = 'SELECT auth_option_id -						FROM ' . ACL_OPTIONS_TABLE . " -						WHERE auth_option = '" . $db->sql_escape($option) . "' -						ORDER BY auth_option_id DESC"; -					// sql_query_limit not possible here, due to bug in postgresql layer -					$result = $db->sql_query($sql); - -					// Skip first row, this is our original auth option we want to preserve -					$row = $db->sql_fetchrow($result); - -					while ($row = $db->sql_fetchrow($result)) -					{ -						// Ok, remove this auth option... -						_sql('DELETE FROM ' . ACL_OPTIONS_TABLE . ' WHERE auth_option_id = ' . $row['auth_option_id'], $errored, $error_ary); -						_sql('DELETE FROM ' . ACL_ROLES_DATA_TABLE . ' WHERE auth_option_id = ' . $row['auth_option_id'], $errored, $error_ary); -						_sql('DELETE FROM ' . ACL_GROUPS_TABLE . ' WHERE auth_option_id = ' . $row['auth_option_id'], $errored, $error_ary); -						_sql('DELETE FROM ' . ACL_USERS_TABLE . ' WHERE auth_option_id = ' . $row['auth_option_id'], $errored, $error_ary); -					} -					$db->sql_freeresult($result); -				} -			} - -			// Now make auth_option UNIQUE, by dropping the old index and adding a UNIQUE one. -			$changes = array( -				'drop_keys'			=> array( -					ACL_OPTIONS_TABLE		=> array('auth_option'), -				), -			); - -			$statements = $db_tools->perform_schema_changes($changes); - -			foreach ($statements as $sql) -			{ -				_sql($sql, $errored, $error_ary); -			} - -			$changes = array( -				'add_unique_index'	=> array( -					ACL_OPTIONS_TABLE		=> array( -						'auth_option'		=> array('auth_option'), -					), -				), -			); - -			$statements = $db_tools->perform_schema_changes($changes); - -			foreach ($statements as $sql) -			{ -				_sql($sql, $errored, $error_ary); -			} - -			$no_updates = false; - -		break; - -		// No changes from 3.0.5-RC1 to 3.0.5 -		case '3.0.5-RC1': -		break; - -		// Changes from 3.0.5 to 3.0.6-RC1 -		case '3.0.5': -			// Let's see if the GD Captcha can be enabled... we simply look for what *is* enabled... -			if (!empty($config['captcha_gd']) && !isset($config['captcha_plugin'])) -			{ -				set_config('captcha_plugin', 'phpbb_captcha_gd'); -			} -			else if (!isset($config['captcha_plugin'])) -			{ -				set_config('captcha_plugin', 'phpbb_captcha_nogd'); -			} - -			// Entries for the Feed Feature -			set_config('feed_enable', '0'); -			set_config('feed_limit', '10'); - -			set_config('feed_overall_forums', '1'); -			set_config('feed_overall_forums_limit', '15'); - -			set_config('feed_overall_topics', '0'); -			set_config('feed_overall_topics_limit', '15'); - -			set_config('feed_forum', '1'); -			set_config('feed_topic', '1'); -			set_config('feed_item_statistics', '1'); - -			// Entries for smiley pagination -			set_config('smilies_per_page', '50'); - -			// Entry for reporting PMs -			set_config('allow_pm_report', '1'); - -			// Install modules -			$modules_to_install = array( -				'feed'					=> array( -					'base'		=> 'board', -					'class'		=> 'acp', -					'title'		=> 'ACP_FEED_SETTINGS', -					'auth'		=> 'acl_a_board', -					'cat'		=> 'ACP_BOARD_CONFIGURATION', -					'after'		=> array('signature', 'ACP_SIGNATURE_SETTINGS') -				), -				'warnings'				=> array( -					'base'		=> 'users', -					'class'		=> 'acp', -					'title'		=> 'ACP_USER_WARNINGS', -					'auth'		=> 'acl_a_user', -					'display'	=> 0, -					'cat'		=> 'ACP_CAT_USERS', -					'after'		=> array('feedback', 'ACP_USER_FEEDBACK') -				), -				'send_statistics'		=> array( -					'base'		=> 'send_statistics', -					'class'		=> 'acp', -					'title'		=> 'ACP_SEND_STATISTICS', -					'auth'		=> 'acl_a_server', -					'cat'		=> 'ACP_SERVER_CONFIGURATION' -				), -				'setting_forum_copy'	=> array( -					'base'		=> 'permissions', -					'class'		=> 'acp', -					'title'		=> 'ACP_FORUM_PERMISSIONS_COPY', -					'auth'		=> 'acl_a_fauth && acl_a_authusers && acl_a_authgroups && acl_a_mauth', -					'cat'		=> 'ACP_FORUM_BASED_PERMISSIONS', -					'after'		=> array('setting_forum_local', 'ACP_FORUM_PERMISSIONS') -				), -				'pm_reports'			=> array( -					'base'		=> 'pm_reports', -					'class'		=> 'mcp', -					'title'		=> 'MCP_PM_REPORTS_OPEN', -					'auth'		=> 'aclf_m_report', -					'cat'		=> 'MCP_REPORTS' -				), -				'pm_reports_closed'		=> array( -					'base'		=> 'pm_reports', -					'class'		=> 'mcp', -					'title'		=> 'MCP_PM_REPORTS_CLOSED', -					'auth'		=> 'aclf_m_report', -					'cat'		=> 'MCP_REPORTS' -				), -				'pm_report_details'		=> array( -					'base'		=> 'pm_reports', -					'class'		=> 'mcp', -					'title'		=> 'MCP_PM_REPORT_DETAILS', -					'auth'		=> 'aclf_m_report', -					'cat'		=> 'MCP_REPORTS' -				), -			); - -			_add_modules($modules_to_install); - -			// Add newly_registered group... but check if it already exists (we always supported running the updater on any schema) -			$sql = 'SELECT group_id -				FROM ' . GROUPS_TABLE . " -				WHERE group_name = 'NEWLY_REGISTERED'"; -			$result = $db->sql_query($sql); -			$group_id = (int) $db->sql_fetchfield('group_id'); -			$db->sql_freeresult($result); - -			if (!$group_id) -			{ -				$sql = 'INSERT INTO ' .  GROUPS_TABLE . " (group_name, group_type, group_founder_manage, group_colour, group_legend, group_avatar, group_desc, group_desc_uid, group_max_recipients) VALUES ('NEWLY_REGISTERED', 3, 0, '', 0, '', '', '', 5)"; -				_sql($sql, $errored, $error_ary); - -				$group_id = $db->sql_nextid(); -			} - -			// Insert new user role... at the end of the chain -			$sql = 'SELECT role_id -				FROM ' . ACL_ROLES_TABLE . " -				WHERE role_name = 'ROLE_USER_NEW_MEMBER' -					AND role_type = 'u_'"; -			$result = $db->sql_query($sql); -			$u_role = (int) $db->sql_fetchfield('role_id'); -			$db->sql_freeresult($result); - -			if (!$u_role) -			{ -				$sql = 'SELECT MAX(role_order) as max_order_id -					FROM ' . ACL_ROLES_TABLE . " -					WHERE role_type = 'u_'"; -				$result = $db->sql_query($sql); -				$next_order_id = (int) $db->sql_fetchfield('max_order_id'); -				$db->sql_freeresult($result); - -				$next_order_id++; - -				$sql = 'INSERT INTO ' . ACL_ROLES_TABLE . " (role_name, role_description, role_type, role_order) VALUES ('ROLE_USER_NEW_MEMBER', 'ROLE_DESCRIPTION_USER_NEW_MEMBER', 'u_', $next_order_id)"; -				_sql($sql, $errored, $error_ary); -				$u_role = $db->sql_nextid(); +echo $user->lang['DATABASE_UPDATE_COMPLETE']; -				if (!$errored) -				{ -					// Now add the correct data to the roles... -					// The standard role says that new users are not able to send a PM, Mass PM, are not able to PM groups -					$sql = 'INSERT INTO ' . ACL_ROLES_DATA_TABLE . " (role_id, auth_option_id, auth_setting) SELECT $u_role, auth_option_id, 0 FROM " . ACL_OPTIONS_TABLE . " WHERE auth_option LIKE 'u_%' AND auth_option IN ('u_sendpm', 'u_masspm', 'u_masspm_group')"; -					_sql($sql, $errored, $error_ary); - -					// Add user role to group -					$sql = 'INSERT INTO ' . ACL_GROUPS_TABLE . " (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES ($group_id, 0, 0, $u_role, 0)"; -					_sql($sql, $errored, $error_ary); -				} -			} - -			// Insert new forum role -			$sql = 'SELECT role_id -				FROM ' . ACL_ROLES_TABLE . " -				WHERE role_name = 'ROLE_FORUM_NEW_MEMBER' -					AND role_type = 'f_'"; -			$result = $db->sql_query($sql); -			$f_role = (int) $db->sql_fetchfield('role_id'); -			$db->sql_freeresult($result); - -			if (!$f_role) -			{ -				$sql = 'SELECT MAX(role_order) as max_order_id -					FROM ' . ACL_ROLES_TABLE . " -					WHERE role_type = 'f_'"; -				$result = $db->sql_query($sql); -				$next_order_id = (int) $db->sql_fetchfield('max_order_id'); -				$db->sql_freeresult($result); - -				$next_order_id++; - -				$sql = 'INSERT INTO ' . ACL_ROLES_TABLE . " (role_name, role_description, role_type, role_order) VALUES  ('ROLE_FORUM_NEW_MEMBER', 'ROLE_DESCRIPTION_FORUM_NEW_MEMBER', 'f_', $next_order_id)"; -				_sql($sql, $errored, $error_ary); -				$f_role = $db->sql_nextid(); - -				if (!$errored) -				{ -					$sql = 'INSERT INTO ' . ACL_ROLES_DATA_TABLE . " (role_id, auth_option_id, auth_setting) SELECT $f_role, auth_option_id, 0 FROM " . ACL_OPTIONS_TABLE . " WHERE auth_option LIKE 'f_%' AND auth_option IN ('f_noapprove')"; -					_sql($sql, $errored, $error_ary); -				} -			} - -			// Set every members user_new column to 0 (old users) only if there is no one yet (this makes sure we do not execute this more than once) -			$sql = 'SELECT 1 -				FROM ' . USERS_TABLE . ' -				WHERE user_new = 0'; -			$result = $db->sql_query_limit($sql, 1); -			$row = $db->sql_fetchrow($result); -			$db->sql_freeresult($result); - -			if (!$row) -			{ -				$sql = 'UPDATE ' . USERS_TABLE . ' SET user_new = 0'; -				_sql($sql, $errored, $error_ary); -			} - -			// Newly registered users limit -			if (!isset($config['new_member_post_limit'])) -			{ -				set_config('new_member_post_limit', (!empty($config['enable_queue_trigger'])) ? $config['queue_trigger_posts'] : 0); -			} - -			if (!isset($config['new_member_group_default'])) -			{ -				set_config('new_member_group_default', 0); -			} - -			// To mimick the old "feature" we will assign the forum role to every forum, regardless of the setting (this makes sure there are no "this does not work!!!! YUO!!!" posts... -			// Check if the role is already assigned... -			$sql = 'SELECT forum_id -				FROM ' . ACL_GROUPS_TABLE . ' -				WHERE group_id = ' . $group_id . ' -					AND auth_role_id = ' . $f_role; -			$result = $db->sql_query($sql); -			$is_options = (int) $db->sql_fetchfield('forum_id'); -			$db->sql_freeresult($result); - -			// Not assigned at all... :/ -			if (!$is_options) -			{ -				// Get postable forums -				$sql = 'SELECT forum_id -					FROM ' . FORUMS_TABLE . ' -					WHERE forum_type != ' . FORUM_LINK; -				$result = $db->sql_query($sql); - -				while ($row = $db->sql_fetchrow($result)) -				{ -					_sql('INSERT INTO ' . ACL_GROUPS_TABLE . ' (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (' . $group_id . ', ' . (int) $row['forum_id'] . ', 0, ' . $f_role . ', 0)', $errored, $error_ary); -				} -				$db->sql_freeresult($result); -			} - -			// Clear permissions... -			include_once($phpbb_root_path . 'includes/acp/auth.' . $phpEx); -			$auth_admin = new auth_admin(); -			$auth_admin->acl_clear_prefetch(); - -			if (!isset($config['allow_avatar'])) -			{ -				if ($config['allow_avatar_upload'] || $config['allow_avatar_local'] || $config['allow_avatar_remote']) -				{ -					set_config('allow_avatar', '1'); -				} -				else -				{ -					set_config('allow_avatar', '0'); -				} -			} - -			if (!isset($config['allow_avatar_remote_upload'])) -			{ -				if ($config['allow_avatar_remote'] && $config['allow_avatar_upload']) -				{ -					set_config('allow_avatar_remote_upload', '1'); -				} -				else -				{ -					set_config('allow_avatar_remote_upload', '0'); -				} -			} - -			// Minimum number of characters -			if (!isset($config['min_post_chars'])) -			{ -				set_config('min_post_chars', '1'); -			} - -			if (!isset($config['allow_quick_reply'])) -			{ -				set_config('allow_quick_reply', '1'); -			} - -			// Set every members user_options column to enable -			// bbcode, smilies and URLs for signatures by default -			$sql = 'SELECT user_options -				FROM ' . USERS_TABLE . ' -				WHERE user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')'; -			$result = $db->sql_query_limit($sql, 1); -			$user_option = (int) $db->sql_fetchfield('user_options'); -			$db->sql_freeresult($result); - -			// Check if we already updated the database by checking bit 15 which we used to store the sig_bbcode option -			if (!($user_option & 1 << 15)) -			{ -				// 229376 is the added value to enable all three signature options -				$sql = 'UPDATE ' . USERS_TABLE . ' SET user_options = user_options + 229376'; -				_sql($sql, $errored, $error_ary); -			} - -			if (!isset($config['delete_time'])) -			{ -				set_config('delete_time', $config['edit_time']); -			} - -			$no_updates = false; -		break; - -		// No changes from 3.0.6-RC1 to 3.0.6-RC2 -		case '3.0.6-RC1': -		break; - -		// Changes from 3.0.6-RC2 to 3.0.6-RC3 -		case '3.0.6-RC2': - -			// Update the Custom Profile Fields based on previous settings to the new format -			$sql = 'UPDATE ' . PROFILE_FIELDS_TABLE . ' -				SET field_show_on_vt = 1 -				WHERE field_hide = 0 -					AND (field_required = 1 OR field_show_on_reg = 1 OR field_show_profile = 1)'; -			_sql($sql, $errored, $error_ary); -			$no_updates = false; - -		break; - -		// No changes from 3.0.6-RC3 to 3.0.6-RC4 -		case '3.0.6-RC3': -		break; - -		// No changes from 3.0.6-RC4 to 3.0.6 -		case '3.0.6-RC4': -		break; - -		// Changes from 3.0.6 to 3.0.7-RC1 -		case '3.0.6': - -			// ATOM Feeds -			set_config('feed_overall', '1'); -			set_config('feed_http_auth', '0'); -			set_config('feed_limit_post', (string) (isset($config['feed_limit']) ? (int) $config['feed_limit'] : 15)); -			set_config('feed_limit_topic', (string) (isset($config['feed_overall_topics_limit']) ? (int) $config['feed_overall_topics_limit'] : 10)); -			set_config('feed_topics_new', (!empty($config['feed_overall_topics']) ? '1' : '0')); -			set_config('feed_topics_active', (!empty($config['feed_overall_topics']) ? '1' : '0')); - -			// Delete all text-templates from the template_data -			$sql = 'DELETE FROM ' . STYLES_TEMPLATE_DATA_TABLE . ' -				WHERE template_filename ' . $db->sql_like_expression($db->any_char . '.txt'); -			_sql($sql, $errored, $error_ary); - -			$no_updates = false; -		break; - -		// Changes from 3.0.7-RC1 to 3.0.7-RC2 -		case '3.0.7-RC1': - -			$sql = 'SELECT user_id, user_email, user_email_hash -				FROM ' . USERS_TABLE . ' -				WHERE user_type <> ' . USER_IGNORE . " -					AND user_email <> ''"; -			$result = $db->sql_query($sql); - -			$i = 0; -			while ($row = $db->sql_fetchrow($result)) -			{ -				// Snapshot of the phpbb_email_hash() function -				// We cannot call it directly because the auto updater updates the DB first. :/ -				$user_email_hash = sprintf('%u', crc32(strtolower($row['user_email']))) . strlen($row['user_email']); - -				if ($user_email_hash != $row['user_email_hash']) -				{ -					$sql_ary = array( -						'user_email_hash'	=> $user_email_hash, -					); - -					$sql = 'UPDATE ' . USERS_TABLE . ' -						SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' -						WHERE user_id = ' . (int) $row['user_id']; -					_sql($sql, $errored, $error_ary, ($i % 100 == 0)); - -					++$i; -				} -			} -			$db->sql_freeresult($result); - -			$no_updates = false; - -		break; - -		// No changes from 3.0.7-RC2 to 3.0.7 -		case '3.0.7-RC2': -		break; - -		// No changes from 3.0.7 to 3.0.7-PL1 -		case '3.0.7': -		break; - -		// Changes from 3.0.7-PL1 to 3.0.8-RC1 -		case '3.0.7-PL1': -			// Update file extension group names to use language strings. -			$sql = 'SELECT lang_dir -				FROM ' . LANG_TABLE; -			$result = $db->sql_query($sql); - -			$extension_groups_updated = array(); -			while ($lang_dir = $db->sql_fetchfield('lang_dir')) -			{ -				$lang_dir = basename($lang_dir); - -				// The language strings we need are either in language/.../acp/attachments.php -				// in the update package if we're updating to 3.0.8-RC1 or later, -				// or they are in language/.../install.php when we're updating from 3.0.7-PL1 or earlier. -				// On an already updated board, they can also already be in language/.../acp/attachments.php -				// in the board root. -				$lang_files = array( -					"{$phpbb_root_path}install/update/new/language/$lang_dir/acp/attachments.$phpEx", -					"{$phpbb_root_path}language/$lang_dir/install.$phpEx", -					"{$phpbb_root_path}language/$lang_dir/acp/attachments.$phpEx", -				); - -				foreach ($lang_files as $lang_file) -				{ -					if (!file_exists($lang_file)) -					{ -						continue; -					} - -					$lang = array(); -					include($lang_file); - -					foreach($lang as $lang_key => $lang_val) -					{ -						if (isset($extension_groups_updated[$lang_key]) || strpos($lang_key, 'EXT_GROUP_') !== 0) -						{ -							continue; -						} - -						$sql_ary = array( -							'group_name'	=> substr($lang_key, 10), // Strip off 'EXT_GROUP_' -						); - -						$sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . ' -							SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " -							WHERE group_name = '" . $db->sql_escape($lang_val) . "'"; -						_sql($sql, $errored, $error_ary); - -						$extension_groups_updated[$lang_key] = true; -					} -				} -			} -			$db->sql_freeresult($result); - -			// Install modules -			$modules_to_install = array( -				'post'					=> array( -					'base'		=> 'board', -					'class'		=> 'acp', -					'title'		=> 'ACP_POST_SETTINGS', -					'auth'		=> 'acl_a_board', -					'cat'		=> 'ACP_MESSAGES', -					'after'		=> array('message', 'ACP_MESSAGE_SETTINGS') -				), -			); - -			_add_modules($modules_to_install); - -			// update -			$sql = 'UPDATE ' . MODULES_TABLE . ' -				SET module_auth = \'cfg_allow_avatar && (cfg_allow_avatar_local || cfg_allow_avatar_remote || cfg_allow_avatar_upload || cfg_allow_avatar_remote_upload)\' -				WHERE module_class = \'ucp\' -					AND module_basename = \'profile\' -					AND module_mode = \'avatar\''; -			_sql($sql, $errored, $error_ary); - -			// add Bing Bot -			$bot_name = 'Bing [Bot]'; -			$bot_name_clean = utf8_clean_string($bot_name); - -			$sql = 'SELECT user_id -				FROM ' . USERS_TABLE . " -				WHERE username_clean = '" . $db->sql_escape($bot_name_clean) . "'"; -			$result = $db->sql_query($sql); -			$bing_already_added = (bool) $db->sql_fetchfield('user_id'); -			$db->sql_freeresult($result); - -			if (!$bing_already_added) -			{ -				$bot_agent = 'bingbot/'; -				$bot_ip = ''; -				$sql = 'SELECT group_id, group_colour -					FROM ' . GROUPS_TABLE . " -					WHERE group_name = 'BOTS'"; -				$result = $db->sql_query($sql); -				$group_row = $db->sql_fetchrow($result); -				$db->sql_freeresult($result); - -				if (!$group_row) -				{ -					// default fallback, should never get here -					$group_row['group_id'] = 6; -					$group_row['group_colour'] = '9E8DA7'; -				} - -				if (!function_exists('user_add')) -				{ -					include($phpbb_root_path . 'includes/functions_user.' . $phpEx); -				} - -				$user_row = array( -					'user_type'				=> USER_IGNORE, -					'group_id'				=> $group_row['group_id'], -					'username'				=> $bot_name, -					'user_regdate'			=> time(), -					'user_password'			=> '', -					'user_colour'			=> $group_row['group_colour'], -					'user_email'			=> '', -					'user_lang'				=> $config['default_lang'], -					'user_style'			=> $config['default_style'], -					'user_timezone'			=> 0, -					'user_dateformat'		=> $config['default_dateformat'], -					'user_allow_massemail'	=> 0, -				); - -				$user_id = user_add($user_row); - -				$sql = 'INSERT INTO ' . BOTS_TABLE . ' ' . $db->sql_build_array('INSERT', array( -					'bot_active'	=> 1, -					'bot_name'		=> (string) $bot_name, -					'user_id'		=> (int) $user_id, -					'bot_agent'		=> (string) $bot_agent, -					'bot_ip'		=> (string) $bot_ip, -				)); - -				_sql($sql, $errored, $error_ary); -			} -			// end Bing Bot addition - -			// Delete shadow topics pointing to not existing topics -			$batch_size = 500; - -			// Set of affected forums we have to resync -			$sync_forum_ids = array(); - -			do -			{ -				$sql_array = array( -					'SELECT'	=> 't1.topic_id, t1.forum_id', -					'FROM'		=> array( -						TOPICS_TABLE	=> 't1', -					), -					'LEFT_JOIN'	=> array( -						array( -							'FROM'	=> array(TOPICS_TABLE	=> 't2'), -							'ON'	=> 't1.topic_moved_id = t2.topic_id', -						), -					), -					'WHERE'		=> 't1.topic_moved_id <> 0 -								AND t2.topic_id IS NULL', -				); -				$sql = $db->sql_build_query('SELECT', $sql_array); -				$result = $db->sql_query_limit($sql, $batch_size); - -				$topic_ids = array(); -				while ($row = $db->sql_fetchrow($result)) -				{ -					$topic_ids[] = (int) $row['topic_id']; - -					$sync_forum_ids[(int) $row['forum_id']] = (int) $row['forum_id']; -				} -				$db->sql_freeresult($result); - -				if (!empty($topic_ids)) -				{ -					$sql = 'DELETE FROM ' . TOPICS_TABLE . ' -						WHERE ' . $db->sql_in_set('topic_id', $topic_ids); -					$db->sql_query($sql); -				} -			} -			while (sizeof($topic_ids) == $batch_size); - -			// Sync the forums we have deleted shadow topics from. -			sync('forum', 'forum_id', $sync_forum_ids, true, true); - -			// Unread posts search load switch -			set_config('load_unreads_search', '1'); - -			// Reduce queue interval to 60 seconds, email package size to 20 -			if ($config['queue_interval'] == 600) -			{ -				set_config('queue_interval', '60'); -			} - -			if ($config['email_package_size'] == 50) -			{ -				set_config('email_package_size', '20'); -			} - -			$no_updates = false; -		break; - -		// No changes from 3.0.8-RC1 to 3.0.8 -		case '3.0.8-RC1': -		break; - -		// Changes from 3.0.8 to 3.0.9-RC1 -		case '3.0.8': -			set_config('ip_login_limit_max', '50'); -			set_config('ip_login_limit_time', '21600'); -			set_config('ip_login_limit_use_forwarded', '0'); - -			// Update file extension group names to use language strings, again. -			$sql = 'SELECT group_id, group_name -				FROM ' . EXTENSION_GROUPS_TABLE . ' -				WHERE group_name ' . $db->sql_like_expression('EXT_GROUP_' . $db->any_char); -			$result = $db->sql_query($sql); - -			while ($row = $db->sql_fetchrow($result)) -			{ -				$sql_ary = array( -					'group_name'	=> substr($row['group_name'], 10), // Strip off 'EXT_GROUP_' -				); - -				$sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . ' -					SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' -					WHERE group_id = ' . $row['group_id']; -				_sql($sql, $errored, $error_ary); -			} -			$db->sql_freeresult($result); - -			/* -			* Due to a bug, vanilla phpbb could not create captcha tables -			* in 3.0.8 on firebird. It was possible for board administrators -			* to adjust the code to work. If code was manually adjusted by -			* board administrators, index names would not be the same as -			* what 3.0.9 and newer expect. This code fragment drops captcha -			* tables, destroying all entered Q&A captcha configuration, such -			* that when Q&A is configured next the respective tables will be -			* created with correct index names. -			* -			* If you wish to preserve your Q&A captcha configuration, you can -			* manually rename indexes to the currently expected name: -			* 	phpbb_captcha_questions_lang_iso	=> phpbb_captcha_questions_lang -			* 	phpbb_captcha_answers_question_id	=> phpbb_captcha_answers_qid -			* -			* Again, this needs to be done only if a board was manually modified -			* to fix broken captcha code. -			* -			if ($db_tools->sql_layer == 'firebird') -			{ -				$changes = array( -					'drop_tables'	=> array( -						$table_prefix . 'captcha_questions', -						$table_prefix . 'captcha_answers', -						$table_prefix . 'qa_confirm', -					), -				); -				$statements = $db_tools->perform_schema_changes($changes); - -				foreach ($statements as $sql) -				{ -					_sql($sql, $errored, $error_ary); -				} -			} -			*/ - -			$no_updates = false; -		break; - -		// No changes from 3.0.9-RC1 to 3.0.9-RC2 -		case '3.0.9-RC1': -		break; - -		// No changes from 3.0.9-RC2 to 3.0.9-RC3 -		case '3.0.9-RC2': -		break; - -		// No changes from 3.0.9-RC3 to 3.0.9-RC4 -		case '3.0.9-RC3': -		break; - -		// No changes from 3.0.9-RC4 to 3.0.9 -		case '3.0.9-RC4': -		break; - -		// Changes from 3.0.9 to 3.0.10-RC1 -		case '3.0.9': -			if (!isset($config['email_max_chunk_size'])) -			{ -				set_config('email_max_chunk_size', '50'); -			} - -			$no_updates = false; -		break; - -		// No changes from 3.0.10-RC1 to 3.0.10-RC2 -		case '3.0.10-RC1': -		break; - -		// No changes from 3.0.10-RC2 to 3.0.10-RC3 -		case '3.0.10-RC2': -		break; - -		// No changes from 3.0.10-RC3 to 3.0.10 -		case '3.0.10-RC3': -		break; - -		// Changes from 3.0.10 to 3.0.11-RC1 -		case '3.0.10': -			// Updates users having current style a deactivated one -			$sql = 'SELECT style_id -				FROM ' . STYLES_TABLE . ' -				WHERE style_active = 0'; -			$result = $db->sql_query($sql); - -			$deactivated_style_ids = array(); -			while ($style_id = $db->sql_fetchfield('style_id', false, $result)) -			{ -				$deactivated_style_ids[] = (int) $style_id; -			} -			$db->sql_freeresult($result); - -			if (!empty($deactivated_style_ids)) -			{ -				$sql = 'UPDATE ' . USERS_TABLE . ' -					SET user_style = ' . (int) $config['default_style'] .' -					WHERE ' . $db->sql_in_set('user_style', $deactivated_style_ids); -				_sql($sql, $errored, $error_ary); -			} - -			// Delete orphan private messages -			$batch_size = 500; - -			$sql_array = array( -				'SELECT'	=> 'p.msg_id', -				'FROM'		=> array( -					PRIVMSGS_TABLE	=> 'p', -				), -				'LEFT_JOIN'	=> array( -					array( -						'FROM'	=> array(PRIVMSGS_TO_TABLE => 't'), -						'ON'	=> 'p.msg_id = t.msg_id', -					), -				), -				'WHERE'		=> 't.user_id IS NULL', -			); -			$sql = $db->sql_build_query('SELECT', $sql_array); - -			do -			{ -				$result = $db->sql_query_limit($sql, $batch_size); - -				$delete_pms = array(); -				while ($row = $db->sql_fetchrow($result)) -				{ -					$delete_pms[] = (int) $row['msg_id']; -				} -				$db->sql_freeresult($result); - -				if (!empty($delete_pms)) -				{ -					$sql = 'DELETE FROM ' . PRIVMSGS_TABLE . ' -						WHERE ' . $db->sql_in_set('msg_id', $delete_pms); -					_sql($sql, $errored, $error_ary); -				} -			} -			while (sizeof($delete_pms) == $batch_size); - -			$no_updates = false; -		break; - -		// No changes from 3.0.11-RC1 to 3.0.11-RC2 -		case '3.0.11-RC1': -		break; - -		// No changes from 3.0.11-RC2 to 3.0.11 -		case '3.0.11-RC2': -		break; - -		// Changes from 3.0.11 to 3.0.12-RC1 -		case '3.0.11': -			$sql = 'UPDATE ' . MODULES_TABLE . ' -				SET module_auth = \'acl_u_sig\' -				WHERE module_class = \'ucp\' -					AND module_basename = \'profile\' -					AND module_mode = \'signature\''; -			_sql($sql, $errored, $error_ary); - -			// Update bots -			if (!function_exists('user_delete')) -			{ -				include($phpbb_root_path . 'includes/functions_user.' . $phpEx); -			} - -			$bots_updates = array( -				// Bot Deletions -				'NG-Search [Bot]'		=> false, -				'Nutch/CVS [Bot]'		=> false, -				'OmniExplorer [Bot]'	=> false, -				'Seekport [Bot]'		=> false, -				'Synoo [Bot]'			=> false, -				'WiseNut [Bot]'			=> false, - -				// Bot Updates -				// Bot name to bot user agent map -				'Baidu [Spider]'	=> 'Baiduspider', -				'Exabot [Bot]'		=> 'Exabot', -				'Voyager [Bot]'		=> 'voyager/', -				'W3C [Validator]'	=> 'W3C_Validator', -			); - -			foreach ($bots_updates as $bot_name => $bot_agent) -			{ -				$sql = 'SELECT user_id -					FROM ' . USERS_TABLE . ' -					WHERE user_type = ' . USER_IGNORE . " -						AND username_clean = '" . $db->sql_escape(utf8_clean_string($bot_name)) . "'"; -				$result = $db->sql_query($sql); -				$bot_user_id = (int) $db->sql_fetchfield('user_id'); -				$db->sql_freeresult($result); - -				if ($bot_user_id) -				{ -					if ($bot_agent === false) -					{ -						$sql = 'DELETE FROM ' . BOTS_TABLE . " -							WHERE user_id = $bot_user_id"; -						_sql($sql, $errored, $error_ary); - -						user_delete('remove', $bot_user_id); -					} -					else -					{ -						$sql = 'UPDATE ' . BOTS_TABLE . " -							SET bot_agent = '" .  $db->sql_escape($bot_agent) . "' -							WHERE user_id = $bot_user_id"; -						_sql($sql, $errored, $error_ary); -					} -				} -			} - -			// Disable receiving pms for bots -			$sql = 'SELECT user_id -				FROM ' . BOTS_TABLE; -			$result = $db->sql_query($sql); - -			$bot_user_ids = array(); -			while ($row = $db->sql_fetchrow($result)) -			{ -				$bot_user_ids[] = (int) $row['user_id']; -			} -			$db->sql_freeresult($result); - -			if (!empty($bot_user_ids)) -			{ -				$sql = 'UPDATE ' . USERS_TABLE . ' -					SET user_allow_pm = 0 -					WHERE ' . $db->sql_in_set('user_id', $bot_user_ids); -				_sql($sql, $errored, $error_ary); -			} - -			$no_updates = false; -		break; -	} -} - -?> +phpbb_end_update($cache, $config); diff --git a/phpBB/install/index.php b/phpBB/install/index.php index ad46e273c2..57bcdaffc1 100644 --- a/phpBB/install/index.php +++ b/phpBB/install/index.php @@ -2,12 +2,15 @@  /**  *  * @package install -* @version $Id$  * @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ +use Symfony\Component\Config\FileLocator; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; +  /**#@+  * @ignore  */ @@ -18,10 +21,9 @@ define('IN_INSTALL', true);  $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../';  $phpEx = substr(strrchr(__FILE__, '.'), 1); -// @todo Review this test and see if we can find out what it is which prevents PHP 4.2.x from even displaying the page with requirements on it -if (version_compare(PHP_VERSION, '4.3.3') < 0) +if (version_compare(PHP_VERSION, '5.3.3') < 0)  { -	die('You are running an unsupported PHP version. Please upgrade to PHP 4.3.3 or higher before trying to install phpBB 3.0'); +	die('You are running an unsupported PHP version. Please upgrade to PHP 5.3.3 or higher before trying to install phpBB 3.1');  }  function phpbb_require_updated($path, $optional = false) @@ -71,26 +73,46 @@ else  }  @ini_set('memory_limit', $mem_limit); +// In case $phpbb_adm_relative_path is not set (in case of an update), use the default. +$phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relative_path : 'adm/'; +$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : $phpbb_root_path . $phpbb_adm_relative_path; +  // Include essential scripts +require($phpbb_root_path . 'includes/class_loader.' . $phpEx); +  require($phpbb_root_path . 'includes/functions.' . $phpEx); +require($phpbb_root_path . 'includes/functions_container.' . $phpEx);  phpbb_require_updated('includes/functions_content.' . $phpEx, true); -include($phpbb_root_path . 'includes/auth.' . $phpEx); -include($phpbb_root_path . 'includes/session.' . $phpEx); -include($phpbb_root_path . 'includes/template.' . $phpEx); -include($phpbb_root_path . 'includes/acm/acm_file.' . $phpEx); -include($phpbb_root_path . 'includes/cache.' . $phpEx);  include($phpbb_root_path . 'includes/functions_admin.' . $phpEx);  include($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);  require($phpbb_root_path . 'includes/functions_install.' . $phpEx); +// Setup class loader first +$phpbb_class_loader = new phpbb_class_loader('phpbb_', "{$phpbb_root_path}includes/", $phpEx); +$phpbb_class_loader->register(); +$phpbb_class_loader_ext = new phpbb_class_loader('phpbb_ext_', "{$phpbb_root_path}ext/", $phpEx); +$phpbb_class_loader_ext->register(); + +// Set up container +$phpbb_container = phpbb_create_install_container($phpbb_root_path, $phpEx); + +$phpbb_class_loader->set_cache($phpbb_container->get('cache.driver')); +$phpbb_class_loader_ext->set_cache($phpbb_container->get('cache.driver')); + +$phpbb_dispatcher = $phpbb_container->get('dispatcher'); +$request	= $phpbb_container->get('request'); + +// make sure request_var uses this request instance +request_var('', 0, false, false, $request); // "dependency injection" for a function +  // Try and load an appropriate language if required  $language = basename(request_var('language', '')); -if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !$language) +if ($request->header('Accept-Language') && !$language)  { -	$accept_lang_ary = explode(',', strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE'])); +	$accept_lang_ary = explode(',', strtolower($request->header('Accept-Language')));  	foreach ($accept_lang_ary as $accept_lang)  	{  		// Set correct format ... guess full xx_yy form @@ -165,10 +187,8 @@ $sub = request_var('sub', '');  // Set PHP error handler to ours  set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'); -$user = new user(); -$auth = new auth(); -$cache = new cache(); -$template = new template(); +$user = new phpbb_user(); +$auth = new phpbb_auth();  // Add own hook handler, if present. :o  if (file_exists($phpbb_root_path . 'includes/hooks/index.' . $phpEx)) @@ -176,7 +196,8 @@ if (file_exists($phpbb_root_path . 'includes/hooks/index.' . $phpEx))  	require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);  	$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display'))); -	foreach ($cache->obtain_hooks() as $hook) +	$phpbb_hook_finder = $phpbb_container->get('hook_finder'); +	foreach ($phpbb_hook_finder->find() as $hook)  	{  		@include($phpbb_root_path . 'includes/hooks/' . $hook . '.' . $phpEx);  	} @@ -187,15 +208,18 @@ else  }  // Set some standard variables we want to force -$config = array( +$config = new phpbb_config(array(  	'load_tplcompile'	=> '1' -); - -$template->set_custom_template('../adm/style', 'admin'); -$template->assign_var('T_TEMPLATE_PATH', '../adm/style'); +)); -// the acp template is never stored in the database -$user->theme['template_storedb'] = false; +$phpbb_style_resource_locator = new phpbb_style_resource_locator(); +$phpbb_style_path_provider = new phpbb_style_path_provider(); +$template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $phpbb_style_resource_locator, new phpbb_template_context()); +$phpbb_style = new phpbb_style($phpbb_root_path, $phpEx, $config, $user, $phpbb_style_resource_locator, $phpbb_style_path_provider, $template); +$phpbb_style->set_ext_dir_prefix('adm/'); +$phpbb_style->set_custom_style('admin', $phpbb_admin_path . 'style', array(), ''); +$template->assign_var('T_ASSETS_PATH', '../assets'); +$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style');  $install = new module(); @@ -339,15 +363,16 @@ class module  		}  		define('HEADER_INC', true); -		global $template, $lang, $stage, $phpbb_root_path; +		global $template, $lang, $stage, $phpbb_root_path, $phpbb_admin_path;  		$template->assign_vars(array(  			'L_CHANGE'				=> $lang['CHANGE'], +			'L_COLON'				=> $lang['COLON'],  			'L_INSTALL_PANEL'		=> $lang['INSTALL_PANEL'],  			'L_SELECT_LANG'			=> $lang['SELECT_LANG'],  			'L_SKIP'				=> $lang['SKIP'],  			'PAGE_TITLE'			=> $this->get_page_title(), -			'T_IMAGE_PATH'			=> $phpbb_root_path . 'adm/images/', +			'T_IMAGE_PATH'			=> htmlspecialchars($phpbb_admin_path) . 'images/',  			'S_CONTENT_DIRECTION' 	=> $lang['DIRECTION'],  			'S_CONTENT_FLOW_BEGIN'	=> ($lang['DIRECTION'] == 'ltr') ? 'left' : 'right', @@ -417,15 +442,17 @@ class module  	*/  	function redirect($page)  	{ +		global $request; +  		// HTTP_HOST is having the correct browser url in most cases... -		$server_name = (!empty($_SERVER['HTTP_HOST'])) ? strtolower($_SERVER['HTTP_HOST']) : ((!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : getenv('SERVER_NAME')); -		$server_port = (!empty($_SERVER['SERVER_PORT'])) ? (int) $_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT'); -		$secure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 1 : 0; +		$server_name = strtolower(htmlspecialchars_decode($request->header('Host', $request->server('SERVER_NAME')))); +		$server_port = $request->server('SERVER_PORT', 0); +		$secure = $request->is_secure() ? 1 : 0; -		$script_name = (!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : getenv('PHP_SELF'); +		$script_name = htmlspecialchars_decode($request->server('PHP_SELF'));  		if (!$script_name)  		{ -			$script_name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI'); +			$script_name = htmlspecialchars_decode($request->server('REQUEST_URI'));  		}  		// Replace backslashes and doubled slashes (could happen on some proxy setups) @@ -526,7 +553,7 @@ class module  	*/  	function error($error, $line, $file, $skip = false)  	{ -		global $lang, $db, $template; +		global $lang, $db, $template, $phpbb_admin_path;  		if ($skip)  		{ @@ -543,12 +570,12 @@ class module  			return;  		} -		echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'; -		echo '<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">'; +		echo '<!DOCTYPE html>'; +		echo '<html dir="ltr">';  		echo '<head>'; -		echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />'; +		echo '<meta charset="utf-8">';  		echo '<title>' . $lang['INST_ERR_FATAL'] . '</title>'; -		echo '<link href="../adm/style/admin.css" rel="stylesheet" type="text/css" media="screen" />'; +		echo '<link href="' . htmlspecialchars($phpbb_admin_path) . 'style/admin.css" rel="stylesheet" type="text/css" media="screen" />';  		echo '</head>';  		echo '<body id="errorpage">';  		echo '<div id="wrap">'; @@ -725,5 +752,3 @@ class module  		return $user_select;  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php index fb97255981..6198efe4c7 100644 --- a/phpBB/install/install_convert.php +++ b/phpBB/install/install_convert.php @@ -2,9 +2,8 @@  /**  *  * @package install -* @version $Id$  * @copyright (c) 2006 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -122,24 +121,18 @@ class install_convert extends module  				require($phpbb_root_path . 'config.' . $phpEx);  				require($phpbb_root_path . 'includes/constants.' . $phpEx); -				require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);  				require($phpbb_root_path . 'includes/functions_convert.' . $phpEx); -				$db = new $sql_db(); +				$dbms = phpbb_convert_30_dbms_to_31($dbms); + +				$db = new $dbms();  				$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, true);  				unset($dbpasswd);  				// We need to fill the config to let internal functions correctly work -				$sql = 'SELECT * -					FROM ' . CONFIG_TABLE; -				$result = $db->sql_query($sql); - -				$config = array(); -				while ($row = $db->sql_fetchrow($result)) -				{ -					$config[$row['config_name']] = $row['config_value']; -				} -				$db->sql_freeresult($result); +				$config = new phpbb_config_db($db, new phpbb_cache_driver_null, CONFIG_TABLE); +				set_config(null, null, null, $config); +				set_config_count(null, null, null, $config);  				// Detect if there is already a conversion in progress at this point and offer to resume  				// It's quite possible that the user will get disconnected during a large conversion so they need to be able to resume it @@ -217,10 +210,11 @@ class install_convert extends module  				require($phpbb_root_path . 'config.' . $phpEx);  				require($phpbb_root_path . 'includes/constants.' . $phpEx); -				require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);  				require($phpbb_root_path . 'includes/functions_convert.' . $phpEx); -				$db = new $sql_db(); +				$dbms = phpbb_convert_30_dbms_to_31($dbms); + +				$db = new $dbms();  				$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, true);  				unset($dbpasswd); @@ -340,26 +334,20 @@ class install_convert extends module  		require($phpbb_root_path . 'config.' . $phpEx);  		require($phpbb_root_path . 'includes/constants.' . $phpEx); -		require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);  		require($phpbb_root_path . 'includes/functions_convert.' . $phpEx); -		$db = new $sql_db(); +		$dbms = phpbb_convert_30_dbms_to_31($dbms); + +		$db = new $dbms();  		$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, true);  		unset($dbpasswd);  		$this->page_title = $lang['STAGE_SETTINGS'];  		// We need to fill the config to let internal functions correctly work -		$sql = 'SELECT * -			FROM ' . CONFIG_TABLE; -		$result = $db->sql_query($sql); - -		$config = array(); -		while ($row = $db->sql_fetchrow($result)) -		{ -			$config[$row['config_name']] = $row['config_value']; -		} -		$db->sql_freeresult($result); +		$config = new phpbb_config_db($db, new phpbb_cache_driver_null, CONFIG_TABLE); +		set_config(null, null, null, $config); +		set_config_count(null, null, null, $config);  		$convertor_tag = request_var('tag', ''); @@ -440,8 +428,7 @@ class install_convert extends module  				if ($src_dbms != $dbms || $src_dbhost != $dbhost || $src_dbport != $dbport || $src_dbname != $dbname || $src_dbuser != $dbuser)  				{ -					$sql_db = 'dbal_' . $src_dbms; -					$src_db = new $sql_db(); +					$src_db = new $src_dbms();  					$src_db->sql_connect($src_dbhost, $src_dbuser, htmlspecialchars_decode($src_dbpasswd), $src_dbname, $src_dbport, false, true);  					$same_db = false;  				} @@ -584,28 +571,24 @@ class install_convert extends module  	*/  	function convert_data($sub)  	{ -		global $template, $user, $phpbb_root_path, $phpEx, $db, $lang, $config, $cache; +		global $template, $user, $phpbb_root_path, $phpEx, $db, $lang, $config, $cache, $auth;  		global $convert, $convert_row, $message_parser, $skip_rows, $language; +		global $request;  		require($phpbb_root_path . 'config.' . $phpEx);  		require($phpbb_root_path . 'includes/constants.' . $phpEx); -		require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);  		require($phpbb_root_path . 'includes/functions_convert.' . $phpEx); -		$db = new $sql_db(); +		$dbms = phpbb_convert_30_dbms_to_31($dbms); + +		$db = new $dbms();  		$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, true);  		unset($dbpasswd); -		$sql = 'SELECT * -			FROM ' . CONFIG_TABLE; -		$result = $db->sql_query($sql); - -		$config = array(); -		while ($row = $db->sql_fetchrow($result)) -		{ -			$config[$row['config_name']] = $row['config_value']; -		} -		$db->sql_freeresult($result); +		// We need to fill the config to let internal functions correctly work +		$config = new phpbb_config_db($db, new phpbb_cache_driver_null, CONFIG_TABLE); +		set_config(null, null, null, $config); +		set_config_count(null, null, null, $config);  		// Override a couple of config variables for the duration  		$config['max_quote_depth'] = 0; @@ -659,12 +642,8 @@ class install_convert extends module  		$src_db = $same_db = null;  		if ($convert->src_dbms != $dbms || $convert->src_dbhost != $dbhost || $convert->src_dbport != $dbport || $convert->src_dbname != $dbname || $convert->src_dbuser != $dbuser)  		{ -			if ($convert->src_dbms != $dbms) -			{ -				require($phpbb_root_path . 'includes/db/' . $convert->src_dbms . '.' . $phpEx); -			} -			$sql_db = 'dbal_' . $convert->src_dbms; -			$src_db = new $sql_db(); +			$dbms = $convert->src_dbms; +			$src_db = new $dbms();  			$src_db->sql_connect($convert->src_dbhost, $convert->src_dbuser, htmlspecialchars_decode($convert->src_dbpasswd), $convert->src_dbname, $convert->src_dbport, false, true);  			$same_db = false;  		} @@ -755,24 +734,22 @@ class install_convert extends module  			$this->p_master->error(sprintf($user->lang['COULD_NOT_FIND_PATH'], $convert->options['forum_path']), __LINE__, __FILE__);  		} -		$search_type = basename(trim($config['search_type'])); +		$search_type = $config['search_type'];  		// For conversions we are a bit less strict and set to a search backend we know exist... -		if (!file_exists($phpbb_root_path . 'includes/search/' . $search_type . '.' . $phpEx)) +		if (!class_exists($search_type))  		{ -			$search_type = 'fulltext_native'; +			$search_type = 'phpbb_search_fulltext_native';  			set_config('search_type', $search_type);  		} -		if (!file_exists($phpbb_root_path . 'includes/search/' . $search_type . '.' . $phpEx)) +		if (!class_exists($search_type))  		{  			trigger_error('NO_SUCH_SEARCH_MODULE');  		} -		require($phpbb_root_path . 'includes/search/' . $search_type . '.' . $phpEx); -  		$error = false; -		$convert->fulltext_search = new $search_type($error); +		$convert->fulltext_search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user);  		if ($error)  		{ @@ -812,7 +789,7 @@ class install_convert extends module  		if (!$current_table && !$skip_rows)  		{ -			if (empty($_REQUEST['confirm'])) +			if (!$request->variable('confirm', false))  			{  				// If avatars / ranks / smilies folders are specified make sure they are writable  				$bad_folders = array(); @@ -955,7 +932,7 @@ class install_convert extends module  				}  				else if (sizeof($missing_tables))  				{ -					$this->p_master->error(sprintf($user->lang['TABLES_MISSING'], implode(', ', $missing_tables)) . '<br /><br />' . $user->lang['CHECK_TABLE_PREFIX'], __LINE__, __FILE__); +					$this->p_master->error(sprintf($user->lang['TABLES_MISSING'], implode($user->lang['COMMA_SEPARATOR'], $missing_tables)) . '<br /><br />' . $user->lang['CHECK_TABLE_PREFIX'], __LINE__, __FILE__);  				}  				$url = $this->save_convert_progress('&confirm=1'); @@ -973,7 +950,7 @@ class install_convert extends module  				));  				return; -			} // if (empty($_REQUEST['confirm'])) +			} // if (!$request->variable('confirm', false)))  			$template->assign_block_vars('checks', array(  				'S_LEGEND'		=> true, @@ -1218,7 +1195,7 @@ class install_convert extends module  				$template->assign_block_vars('checks', array(  					'TITLE'		=> "skip_rows = $skip_rows", -					'RESULT'	=> $rows . ((defined('DEBUG_EXTRA') && function_exists('memory_get_usage')) ? ceil(memory_get_usage()/1024) . ' ' . $user->lang['KIB'] : ''), +					'RESULT'	=> $rows . ((defined('DEBUG') && function_exists('memory_get_usage')) ? ceil(memory_get_usage()/1024) . ' ' . $user->lang['KIB'] : ''),  				));  				$mtime = explode(' ', microtime()); @@ -1402,7 +1379,7 @@ class install_convert extends module  			}  			// When we reach this point, either the current table has been processed or we're running out of time. -			if (still_on_time() && $counting < $convert->batch_size/* && !defined('DEBUG_EXTRA')*/) +			if (still_on_time() && $counting < $convert->batch_size/* && !defined('DEBUG')*/)  			{  				$skip_rows = 0;  				$current_table++; @@ -1491,7 +1468,7 @@ class install_convert extends module  			sync('topic', 'range', 'topic_id BETWEEN ' . $sync_batch . ' AND ' . $end, true, true);  			$template->assign_block_vars('checks', array( -				'TITLE'		=> sprintf($user->lang['SYNC_TOPIC_ID'], $sync_batch, ($sync_batch + $batch_size)) . ((defined('DEBUG_EXTRA') && function_exists('memory_get_usage')) ? ' [' . ceil(memory_get_usage()/1024) . ' ' . $user->lang['KIB'] . ']' : ''), +				'TITLE'		=> sprintf($user->lang['SYNC_TOPIC_ID'], $sync_batch, ($sync_batch + $batch_size)) . ((defined('DEBUG') && function_exists('memory_get_usage')) ? ' [' . ceil(memory_get_usage()/1024) . ' ' . $user->lang['KIB'] . ']' : ''),  				'RESULT'	=> $user->lang['DONE'],  			)); @@ -1561,6 +1538,7 @@ class install_convert extends module  	function finish_conversion()  	{  		global $db, $phpbb_root_path, $phpEx, $convert, $config, $language, $user, $template; +		global $cache, $auth;  		$db->sql_query('DELETE FROM ' . CONFIG_TABLE . "  			WHERE config_name = 'convert_progress' @@ -1570,7 +1548,7 @@ class install_convert extends module  		$db->sql_query('DELETE FROM ' . SESSIONS_TABLE);  		@unlink($phpbb_root_path . 'cache/data_global.' . $phpEx); -		cache_moderators(); +		phpbb_cache_moderators($db, $cache, $auth);  		// And finally, add a note to the log  		add_log('admin', 'LOG_INSTALL_CONVERTED', $convert->convertor_data['forum_name'], $config['version']); @@ -1779,7 +1757,7 @@ class install_convert extends module  		global $convert;  		// Can we use IGNORE with this DBMS? -		$sql_ignore = (strpos($db->sql_layer, 'mysql') === 0 && !defined('DEBUG_EXTRA')) ? 'IGNORE ' : ''; +		$sql_ignore = (strpos($db->sql_layer, 'mysql') === 0 && !defined('DEBUG')) ? 'IGNORE ' : '';  		$insert_query = 'INSERT ' . $sql_ignore . 'INTO ' . $schema['target'] . ' (';  		$aliases = array(); @@ -2109,5 +2087,3 @@ class install_convert extends module  		'refresh'			=> array('lang' => 'REFRESH_PAGE',	'type' => 'radio:yes_no', 'explain' => true),  	);  } - -?>
\ No newline at end of file diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php index 4618cff855..f4fd64bc2e 100644 --- a/phpBB/install/install_install.php +++ b/phpBB/install/install_install.php @@ -2,9 +2,8 @@  /**  *  * @package install -* @version $Id$  * @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -53,12 +52,13 @@ class install_install extends module  	function main($mode, $sub)  	{ -		global $lang, $template, $language, $phpbb_root_path, $cache; +		global $lang, $template, $language, $phpbb_root_path, $phpEx; +		global $phpbb_container, $cache, $phpbb_log;  		switch ($sub)  		{  			case 'intro': -				$cache->purge(); +				$phpbb_container->get('cache.driver')->purge();  				$this->page_title = $lang['SUB_INTRO']; @@ -102,12 +102,20 @@ class install_install extends module  			break;  			case 'final': +				// Create a normal container now +				$phpbb_container = phpbb_create_default_container($phpbb_root_path, $phpEx); + +				// Sets the global variables +				$cache = $phpbb_container->get('cache'); +				$phpbb_log = $phpbb_container->get('log'); +  				$this->build_search_index($mode, $sub);  				$this->add_modules($mode, $sub);  				$this->add_language($mode, $sub);  				$this->add_bots($mode, $sub);  				$this->email_admin($mode, $sub);  				$this->disable_avatars_if_unwritable(); +				$this->populate_migrations($phpbb_container->get('ext.manager'), $phpbb_container->get('migrator'));  				// Remove the lock file  				@unlink($phpbb_root_path . 'cache/install_lock'); @@ -132,7 +140,7 @@ class install_install extends module  			'BODY'		=> $lang['REQUIREMENTS_EXPLAIN'],  		)); -		$passed = array('php' => false, 'db' => false, 'files' => false, 'pcre' => false, 'imagesize' => false,); +		$passed = array('php' => false, 'db' => false, 'files' => false, 'pcre' => false, 'imagesize' => false, 'json' => false,);  		// Test for basic PHP settings  		$template->assign_block_vars('checks', array( @@ -144,7 +152,7 @@ class install_install extends module  		// Test the minimum PHP version  		$php_version = PHP_VERSION; -		if (version_compare($php_version, '4.3.3') < 0) +		if (version_compare($php_version, '5.3.3') < 0)  		{  			$result = '<strong style="color:red">' . $lang['NO'] . '</strong>';  		} @@ -252,13 +260,25 @@ class install_install extends module  			'S_LEGEND'		=> false,  		)); -/** -*		Better not enabling and adding to the loaded extensions due to the specific requirements needed -		if (!@extension_loaded('mbstring')) +		// Check for php json support +		if (@extension_loaded('json'))  		{ -			can_load_dll('mbstring'); +			$passed['json'] = true; +			$result = '<strong style="color:green">' . $lang['YES'] . '</strong>';  		} -*/ +		else +		{ +			$result = '<strong style="color:red">' . $lang['NO'] . '</strong>'; +		} + +		$template->assign_block_vars('checks', array( +			'TITLE'			=> $lang['PHP_JSON_SUPPORT'], +			'TITLE_EXPLAIN'	=> $lang['PHP_JSON_SUPPORT_EXPLAIN'], +			'RESULT'		=> $result, + +			'S_EXPLAIN'		=> true, +			'S_LEGEND'		=> false, +		));  		$passed['mbstring'] = true;  		if (@extension_loaded('mbstring')) @@ -363,17 +383,14 @@ class install_install extends module  		{  			if (!@extension_loaded($dll))  			{ -				if (!can_load_dll($dll)) -				{ -					$template->assign_block_vars('checks', array( -						'TITLE'		=> $lang['DLL_' . strtoupper($dll)], -						'RESULT'	=> '<strong style="color:red">' . $lang['UNAVAILABLE'] . '</strong>', +				$template->assign_block_vars('checks', array( +					'TITLE'		=> $lang['DLL_' . strtoupper($dll)], +					'RESULT'	=> '<strong style="color:red">' . $lang['UNAVAILABLE'] . '</strong>', -						'S_EXPLAIN'	=> false, -						'S_LEGEND'	=> false, -					)); -					continue; -				} +					'S_EXPLAIN'	=> false, +					'S_LEGEND'	=> false, +				)); +				continue;  			}  			$template->assign_block_vars('checks', array( @@ -696,7 +713,7 @@ class install_install extends module  			$error = array();  			// Check the entered email address and password -			if ($data['admin_name'] == '' || $data['admin_pass1'] == '' || $data['admin_pass2'] == '' || $data['board_email1'] == '' || $data['board_email2'] == '') +			if ($data['admin_name'] == '' || $data['admin_pass1'] == '' || $data['admin_pass2'] == '' || $data['board_email'] == '')  			{  				$error[] = $lang['INST_ERR_MISSING_DATA'];  			} @@ -728,12 +745,7 @@ class install_install extends module  				$error[] = $lang['INST_ERR_PASSWORD_TOO_LONG'];  			} -			if ($data['board_email1'] != $data['board_email2'] && $data['board_email1'] != '') -			{ -				$error[] = $lang['INST_ERR_EMAIL_MISMATCH']; -			} - -			if ($data['board_email1'] != '' && !preg_match('/^' . get_preg_expression('email') . '$/i', $data['board_email1'])) +			if ($data['board_email'] != '' && !preg_match('/^' . get_preg_expression('email') . '$/i', $data['board_email']))  			{  				$error[] = $lang['INST_ERR_EMAIL_INVALID'];  			} @@ -859,22 +871,7 @@ class install_install extends module  		$written = false;  		// Create a list of any PHP modules we wish to have loaded -		$load_extensions = array();  		$available_dbms = get_available_dbms($data['dbms']); -		$check_exts = array_merge(array($available_dbms[$data['dbms']]['MODULE']), $this->php_dlls_other); - -		foreach ($check_exts as $dll) -		{ -			if (!@extension_loaded($dll)) -			{ -				if (!can_load_dll($dll)) -				{ -					continue; -				} - -				$load_extensions[] = $dll . '.' . PHP_SHLIB_SUFFIX; -			} -		}  		// Create a lock file to indicate that there is an install in progress  		$fp = @fopen($phpbb_root_path . 'cache/install_lock', 'wb'); @@ -888,7 +885,7 @@ class install_install extends module  		@chmod($phpbb_root_path . 'cache/install_lock', 0777);  		// Time to convert the data provided into a config file -		$config_data = phpbb_create_config_file_data($data, $available_dbms[$data['dbms']]['DRIVER'], $load_extensions); +		$config_data = phpbb_create_config_file_data($data, $available_dbms[$data['dbms']]['DRIVER']);  		// Attempt to write out the config file directly. If it works, this is the easiest way to do it ...  		if ((file_exists($phpbb_root_path . 'config.' . $phpEx) && phpbb_is_writable($phpbb_root_path . 'config.' . $phpEx)) || phpbb_is_writable($phpbb_root_path)) @@ -984,7 +981,7 @@ class install_install extends module  	*/  	function obtain_advanced_settings($mode, $sub)  	{ -		global $lang, $template, $phpEx; +		global $lang, $template, $phpEx, $request;  		$this->page_title = $lang['STAGE_ADVANCED']; @@ -1002,7 +999,7 @@ class install_install extends module  		$s_hidden_fields .= '<input type="hidden" name="language" value="' . $data['language'] . '" />';  		// HTTP_HOST is having the correct browser url in most cases... -		$server_name = (!empty($_SERVER['HTTP_HOST'])) ? strtolower($_SERVER['HTTP_HOST']) : ((!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : getenv('SERVER_NAME')); +		$server_name = strtolower(htmlspecialchars_decode($request->header('Host', $request->server('SERVER_NAME'))));  		// HTTP HOST can carry a port number...  		if (strpos($server_name, ':') !== false) @@ -1012,16 +1009,16 @@ class install_install extends module  		$data['email_enable'] = ($data['email_enable'] !== '') ? $data['email_enable'] : true;  		$data['server_name'] = ($data['server_name'] !== '') ? $data['server_name'] : $server_name; -		$data['server_port'] = ($data['server_port'] !== '') ? $data['server_port'] : ((!empty($_SERVER['SERVER_PORT'])) ? (int) $_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT')); -		$data['server_protocol'] = ($data['server_protocol'] !== '') ? $data['server_protocol'] : ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://'); -		$data['cookie_secure'] = ($data['cookie_secure'] !== '') ? $data['cookie_secure'] : ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? true : false); +		$data['server_port'] = ($data['server_port'] !== '') ? $data['server_port'] : $request->server('SERVER_PORT', 0); +		$data['server_protocol'] = ($data['server_protocol'] !== '') ? $data['server_protocol'] : ($request->is_secure() ? 'https://' : 'http://'); +		$data['cookie_secure'] = ($data['cookie_secure'] !== '') ? $data['cookie_secure'] : $request->is_secure();  		if ($data['script_path'] === '')  		{ -			$name = (!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : getenv('PHP_SELF'); +			$name = htmlspecialchars_decode($request->server('PHP_SELF'));  			if (!$name)  			{ -				$name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI'); +				$name = htmlspecialchars_decode($request->server('REQUEST_URI'));  			}  			// Replace backslashes and doubled slashes (could happen on some proxy setups) @@ -1086,7 +1083,7 @@ class install_install extends module  	*/  	function load_schema($mode, $sub)  	{ -		global $db, $lang, $template, $phpbb_root_path, $phpEx; +		global $db, $lang, $template, $phpbb_root_path, $phpEx, $request;  		$this->page_title = $lang['STAGE_CREATE_TABLE'];  		$s_hidden_fields = ''; @@ -1102,8 +1099,8 @@ class install_install extends module  		}  		// HTTP_HOST is having the correct browser url in most cases... -		$server_name = (!empty($_SERVER['HTTP_HOST'])) ? strtolower($_SERVER['HTTP_HOST']) : ((!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : getenv('SERVER_NAME')); -		$referer = (!empty($_SERVER['HTTP_REFERER'])) ? strtolower($_SERVER['HTTP_REFERER']) : getenv('HTTP_REFERER'); +		$server_name = strtolower(htmlspecialchars_decode($request->header('Host', $request->server('SERVER_NAME')))); +		$referer = strtolower($request->header('Referer'));  		// HTTP HOST can carry a port number...  		if (strpos($server_name, ':') !== false) @@ -1130,11 +1127,8 @@ class install_install extends module  		$dbms = $available_dbms[$data['dbms']]['DRIVER']; -		// Load the appropriate database class if not already loaded -		include($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx); -  		// Instantiate the database -		$db = new $sql_db(); +		$db = new $dbms();  		$db->sql_connect($data['dbhost'], $data['dbuser'], htmlspecialchars_decode($data['dbpasswd']), $data['dbname'], $data['dbport'], false, false);  		// NOTE: trigger_error does not work here. @@ -1218,8 +1212,7 @@ class install_install extends module  		$current_time = time(); -		$user_ip = (!empty($_SERVER['REMOTE_ADDR'])) ? htmlspecialchars($_SERVER['REMOTE_ADDR']) : ''; -		$user_ip = (stripos($user_ip, '::ffff:') === 0) ? substr($user_ip, 7) : $user_ip; +		$user_ip = $request->server('REMOTE_ADDR') ? phpbb_ip_normalise($request->server('REMOTE_ADDR')) : '';  		if ($data['script_path'] !== '/')  		{ @@ -1258,11 +1251,11 @@ class install_install extends module  				WHERE config_name = 'server_port'",  			'UPDATE ' . $data['table_prefix'] . "config -				SET config_value = '" . $db->sql_escape($data['board_email1']) . "' +				SET config_value = '" . $db->sql_escape($data['board_email']) . "'  				WHERE config_name = 'board_email'",  			'UPDATE ' . $data['table_prefix'] . "config -				SET config_value = '" . $db->sql_escape($data['board_email1']) . "' +				SET config_value = '" . $db->sql_escape($data['board_email']) . "'  				WHERE config_name = 'board_contact'",  			'UPDATE ' . $data['table_prefix'] . "config @@ -1322,7 +1315,7 @@ class install_install extends module  				WHERE config_name = 'avatar_salt'",  			'UPDATE ' . $data['table_prefix'] . "users -				SET username = '" . $db->sql_escape($data['admin_name']) . "', user_password='" . $db->sql_escape(md5($data['admin_pass1'])) . "', user_ip = '" . $db->sql_escape($user_ip) . "', user_lang = '" . $db->sql_escape($data['default_lang']) . "', user_email='" . $db->sql_escape($data['board_email1']) . "', user_dateformat='" . $db->sql_escape($lang['default_dateformat']) . "', user_email_hash = " . $db->sql_escape(phpbb_email_hash($data['board_email1'])) . ", username_clean = '" . $db->sql_escape(utf8_clean_string($data['admin_name'])) . "' +				SET username = '" . $db->sql_escape($data['admin_name']) . "', user_password='" . $db->sql_escape(md5($data['admin_pass1'])) . "', user_ip = '" . $db->sql_escape($user_ip) . "', user_lang = '" . $db->sql_escape($data['default_lang']) . "', user_email='" . $db->sql_escape($data['board_email']) . "', user_dateformat='" . $db->sql_escape($lang['default_dateformat']) . "', user_email_hash = " . $db->sql_escape(phpbb_email_hash($data['board_email'])) . ", username_clean = '" . $db->sql_escape(utf8_clean_string($data['admin_name'])) . "'  				WHERE username = 'Admin'",  			'UPDATE ' . $data['table_prefix'] . "moderator_cache @@ -1355,7 +1348,7 @@ class install_install extends module  				WHERE config_name = 'dbms_version'",  		); -		if (@extension_loaded('gd') || can_load_dll('gd')) +		if (@extension_loaded('gd'))  		{  			$sql_ary[] = 'UPDATE ' . $data['table_prefix'] . "config  				SET config_value = 'phpbb_captcha_gd' @@ -1414,7 +1407,7 @@ class install_install extends module  	*/  	function build_search_index($mode, $sub)  	{ -		global $db, $lang, $phpbb_root_path, $phpEx, $config; +		global $db, $lang, $phpbb_root_path, $phpEx, $config, $auth, $user;  		// Obtain any submitted data  		$data = $this->get_submitted_data(); @@ -1431,11 +1424,8 @@ class install_install extends module  		$dbms = $available_dbms[$data['dbms']]['DRIVER']; -		// Load the appropriate database class if not already loaded -		include($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx); -  		// Instantiate the database -		$db = new $sql_db(); +		$db = new $dbms();  		$db->sql_connect($data['dbhost'], $data['dbuser'], htmlspecialchars_decode($data['dbpasswd']), $data['dbname'], $data['dbport'], false, false);  		// NOTE: trigger_error does not work here. @@ -1444,20 +1434,13 @@ class install_install extends module  		include_once($phpbb_root_path . 'includes/constants.' . $phpEx);  		include_once($phpbb_root_path . 'includes/search/fulltext_native.' . $phpEx); -		// Fill the config array - it is needed by those functions we call -		$sql = 'SELECT * -			FROM ' . CONFIG_TABLE; -		$result = $db->sql_query($sql); - -		$config = array(); -		while ($row = $db->sql_fetchrow($result)) -		{ -			$config[$row['config_name']] = $row['config_value']; -		} -		$db->sql_freeresult($result); +		// We need to fill the config to let internal functions correctly work +		$config = new phpbb_config_db($db, new phpbb_cache_driver_null, CONFIG_TABLE); +		set_config(null, null, null, $config); +		set_config_count(null, null, null, $config);  		$error = false; -		$search = new fulltext_native($error); +		$search = new phpbb_search_fulltext_native($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user);  		$sql = 'SELECT post_id, post_subject, post_text, poster_id, forum_id  			FROM ' . POSTS_TABLE; @@ -1475,7 +1458,13 @@ class install_install extends module  	*/  	function add_modules($mode, $sub)  	{ -		global $db, $lang, $phpbb_root_path, $phpEx; +		global $db, $lang, $phpbb_root_path, $phpEx, $phpbb_extension_manager, $config, $phpbb_container; + +		// modules require an extension manager +		if (empty($phpbb_extension_manager)) +		{ +			$phpbb_extension_manager = $phpbb_container->get('ext.manager'); +		}  		include_once($phpbb_root_path . 'includes/acp/acp_modules.' . $phpEx); @@ -1492,8 +1481,14 @@ class install_install extends module  			foreach ($this->module_categories[$module_class] as $cat_name => $subs)  			{ +				$basename = ''; +				// Check if this sub-category has a basename. If it has, use it. +				if (isset($this->module_categories_basenames[$cat_name])) +				{ +					$basename = $this->module_categories_basenames[$cat_name]; +				}  				$module_data = array( -					'module_basename'	=> '', +					'module_basename'	=> $basename,  					'module_enabled'	=> 1,  					'module_display'	=> 1,  					'parent_id'			=> 0, @@ -1521,8 +1516,14 @@ class install_install extends module  				{  					foreach ($subs as $level2_name)  					{ +						$basename = ''; +						// Check if this sub-category has a basename. If it has, use it. +						if (isset($this->module_categories_basenames[$level2_name])) +						{ +							$basename = $this->module_categories_basenames[$level2_name]; +						}  						$module_data = array( -							'module_basename'	=> '', +							'module_basename'	=> $basename,  							'module_enabled'	=> 1,  							'module_display'	=> 1,  							'parent_id'			=> (int) $categories[$cat_name]['id'], @@ -1590,7 +1591,7 @@ class install_install extends module  				// Move main module 4 up...  				$sql = 'SELECT *  					FROM ' . MODULES_TABLE . " -					WHERE module_basename = 'main' +					WHERE module_basename = 'acp_main'  						AND module_class = 'acp'  						AND module_mode = 'main'";  				$result = $db->sql_query($sql); @@ -1602,7 +1603,7 @@ class install_install extends module  				// Move permissions intro screen module 4 up...  				$sql = 'SELECT *  					FROM ' . MODULES_TABLE . " -					WHERE module_basename = 'permissions' +					WHERE module_basename = 'acp_permissions'  						AND module_class = 'acp'  						AND module_mode = 'intro'";  				$result = $db->sql_query($sql); @@ -1614,7 +1615,7 @@ class install_install extends module  				// Move manage users screen module 5 up...  				$sql = 'SELECT *  					FROM ' . MODULES_TABLE . " -					WHERE module_basename = 'users' +					WHERE module_basename = 'acp_users'  						AND module_class = 'acp'  						AND module_mode = 'overview'";  				$result = $db->sql_query($sql); @@ -1629,7 +1630,7 @@ class install_install extends module  				// Move attachment module 4 down...  				$sql = 'SELECT *  					FROM ' . MODULES_TABLE . " -					WHERE module_basename = 'attachments' +					WHERE module_basename = 'ucp_attachments'  						AND module_class = 'ucp'  						AND module_mode = 'attachments'";  				$result = $db->sql_query($sql); @@ -1733,72 +1734,6 @@ class install_install extends module  					$error = $db->sql_error($db->sql_error_sql);  					$this->p_master->db_error($error['message'], $db->sql_error_sql, __LINE__, __FILE__);  				} - -				$valid_localized = array( -					'icon_back_top', 'icon_contact_aim', 'icon_contact_email', 'icon_contact_icq', 'icon_contact_jabber', 'icon_contact_msnm', 'icon_contact_pm', 'icon_contact_yahoo', 'icon_contact_www', 'icon_post_delete', 'icon_post_edit', 'icon_post_info', 'icon_post_quote', 'icon_post_report', 'icon_user_online', 'icon_user_offline', 'icon_user_profile', 'icon_user_search', 'icon_user_warn', 'button_pm_forward', 'button_pm_new', 'button_pm_reply', 'button_topic_locked', 'button_topic_new', 'button_topic_reply', -				); - -				$sql_ary = array(); - -				$sql = 'SELECT * -					FROM ' . STYLES_IMAGESET_TABLE; -				$result = $db->sql_query($sql); - -				while ($imageset_row = $db->sql_fetchrow($result)) -				{ -					if (@file_exists("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/{$lang_pack['lang_iso']}/imageset.cfg")) -					{ -						$cfg_data_imageset_data = parse_cfg_file("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/{$lang_pack['lang_iso']}/imageset.cfg"); -						foreach ($cfg_data_imageset_data as $image_name => $value) -						{ -							if (strpos($value, '*') !== false) -							{ -								if (substr($value, -1, 1) === '*') -								{ -									list($image_filename, $image_height) = explode('*', $value); -									$image_width = 0; -								} -								else -								{ -									list($image_filename, $image_height, $image_width) = explode('*', $value); -								} -							} -							else -							{ -								$image_filename = $value; -								$image_height = $image_width = 0; -							} - -							if (strpos($image_name, 'img_') === 0 && $image_filename) -							{ -								$image_name = substr($image_name, 4); -								if (in_array($image_name, $valid_localized)) -								{ -									$sql_ary[] = array( -										'image_name'		=> (string) $image_name, -										'image_filename'	=> (string) $image_filename, -										'image_height'		=> (int) $image_height, -										'image_width'		=> (int) $image_width, -										'imageset_id'		=> (int) $imageset_row['imageset_id'], -										'image_lang'		=> (string) $lang_pack['lang_iso'], -									); -								} -							} -						} -					} -				} -				$db->sql_freeresult($result); - -				if (sizeof($sql_ary)) -				{ -					$db->sql_multi_insert(STYLES_IMAGESET_DATA_TABLE, $sql_ary); - -					if ($db->sql_error_triggered) -					{ -						$error = $db->sql_error($db->sql_error_sql); -						$this->p_master->db_error($error['message'], $db->sql_error_sql, __LINE__, __FILE__); -					} -				}  			}  		}  		closedir($dir); @@ -1814,17 +1749,10 @@ class install_install extends module  		// Obtain any submitted data  		$data = $this->get_submitted_data(); -		// Fill the config array - it is needed by those functions we call -		$sql = 'SELECT * -			FROM ' . CONFIG_TABLE; -		$result = $db->sql_query($sql); - -		$config = array(); -		while ($row = $db->sql_fetchrow($result)) -		{ -			$config[$row['config_name']] = $row['config_value']; -		} -		$db->sql_freeresult($result); +		// We need to fill the config to let internal functions correctly work +		$config = new phpbb_config_db($db, new phpbb_cache_driver_null, CONFIG_TABLE); +		set_config(null, null, null, $config); +		set_config_count(null, null, null, $config);  		$sql = 'SELECT group_id  			FROM ' . GROUPS_TABLE . " @@ -1856,7 +1784,7 @@ class install_install extends module  				'user_email'			=> '',  				'user_lang'				=> $data['default_lang'],  				'user_style'			=> 1, -				'user_timezone'			=> 0, +				'user_timezone'			=> 'UTC',  				'user_dateformat'		=> $lang['default_dateformat'],  				'user_allow_massemail'	=> 0,  				'user_allow_pm'			=> 0, @@ -1888,23 +1816,17 @@ class install_install extends module  	*/  	function email_admin($mode, $sub)  	{ -		global $auth, $config, $db, $lang, $template, $user, $phpbb_root_path, $phpEx; +		global $auth, $config, $db, $lang, $template, $user, $phpbb_root_path, $phpbb_admin_path, $phpEx;  		$this->page_title = $lang['STAGE_FINAL'];  		// Obtain any submitted data  		$data = $this->get_submitted_data(); -		$sql = 'SELECT * -			FROM ' . CONFIG_TABLE; -		$result = $db->sql_query($sql); - -		$config = array(); -		while ($row = $db->sql_fetchrow($result)) -		{ -			$config[$row['config_name']] = $row['config_value']; -		} -		$db->sql_freeresult($result); +		// We need to fill the config to let internal functions correctly work +		$config = new phpbb_config_db($db, new phpbb_cache_driver_null, CONFIG_TABLE); +		set_config(null, null, null, $config); +		set_config_count(null, null, null, $config);  		$user->session_begin();  		$auth->login($data['admin_name'], $data['admin_pass1'], false, true, true); @@ -1922,7 +1844,7 @@ class install_install extends module  			$messenger->template('installed', $data['language']); -			$messenger->to($data['board_email1'], $data['admin_name']); +			$messenger->to($data['board_email'], $data['admin_name']);  			$messenger->anti_abuse_headers($config, $user); @@ -1941,7 +1863,7 @@ class install_install extends module  			'TITLE'		=> $lang['INSTALL_CONGRATS'],  			'BODY'		=> sprintf($lang['INSTALL_CONGRATS_EXPLAIN'], $config['version'], append_sid($phpbb_root_path . 'install/index.' . $phpEx, 'mode=convert&language=' . $data['language']), '../docs/README.html'),  			'L_SUBMIT'	=> $lang['INSTALL_LOGIN'], -			'U_ACTION'	=> append_sid($phpbb_root_path . 'adm/index.' . $phpEx, 'i=send_statistics&mode=send_statistics'), +			'U_ACTION'	=> append_sid($phpbb_admin_path . 'index.' . $phpEx, 'i=send_statistics&mode=send_statistics'),  		));  	} @@ -1961,6 +1883,26 @@ class install_install extends module  	}  	/** +	* Populate migrations for the installation +	* +	* This "installs" all migrations from (root path)/includes/db/migrations/data. +	* "installs" means it adds all migrations to the migrations table, but does not +	* perform any of the actions in the migrations. +	* +	* @param phpbb_extension_manager $extension_manager +	* @param phpbb_db_migrator $migrator +	*/ +	function populate_migrations($extension_manager, $migrator) +	{ +		$finder = $extension_manager->get_finder(); + +		$migrations = $finder +			->core_path('includes/db/migration/data/') +			->get_classes(); +		$migrator->populate_migrations($migrations); +	} + +	/**  	* Generate a list of available mail server authentication methods  	*/  	function mail_auth_select($selected_method) @@ -1996,8 +1938,7 @@ class install_install extends module  			'admin_name'	=> utf8_normalize_nfc(request_var('admin_name', '', true)),  			'admin_pass1'	=> request_var('admin_pass1', '', true),  			'admin_pass2'	=> request_var('admin_pass2', '', true), -			'board_email1'	=> strtolower(request_var('board_email1', '')), -			'board_email2'	=> strtolower(request_var('board_email2', '')), +			'board_email'	=> strtolower(request_var('board_email', '')),  			'img_imagick'	=> request_var('img_imagick', ''),  			'ftp_path'		=> request_var('ftp_path', ''),  			'ftp_user'		=> request_var('ftp_user', ''), @@ -2036,8 +1977,7 @@ class install_install extends module  		'admin_name'			=> array('lang' => 'ADMIN_USERNAME',			'type' => 'text:25:100', 'explain' => true),  		'admin_pass1'			=> array('lang' => 'ADMIN_PASSWORD',			'type' => 'password:25:100', 'explain' => true),  		'admin_pass2'			=> array('lang' => 'ADMIN_PASSWORD_CONFIRM',	'type' => 'password:25:100', 'explain' => false), -		'board_email1'			=> array('lang' => 'CONTACT_EMAIL',				'type' => 'text:25:100', 'explain' => false), -		'board_email2'			=> array('lang' => 'CONTACT_EMAIL_CONFIRM',		'type' => 'text:25:100', 'explain' => false), +		'board_email'			=> array('lang' => 'CONTACT_EMAIL',				'type' => 'text:25:100', 'explain' => false),  	);  	var $advanced_config_options = array(  		'legend1'				=> 'ACP_EMAIL_SETTINGS', @@ -2178,9 +2118,10 @@ class install_install extends module  				'ACP_PERMISSION_ROLES',  				'ACP_PERMISSION_MASKS',  			), -			'ACP_CAT_STYLES'		=> array( +			'ACP_CAT_CUSTOMISE'		=> array(  				'ACP_STYLE_MANAGEMENT', -				'ACP_STYLE_COMPONENTS', +				'ACP_EXTENSION_MANAGEMENT', +				'ACP_LANGUAGE',  			),  			'ACP_CAT_MAINTENANCE'	=> array(  				'ACP_FORUM_LOGS', @@ -2211,6 +2152,9 @@ class install_install extends module  			'UCP_ZEBRA'			=> null,  		),  	); +	var $module_categories_basenames = array( +		'UCP_PM' => 'ucp_pm', +	);  	var $module_extras = array(  		'acp'	=> array( @@ -2232,5 +2176,3 @@ class install_install extends module  		),  	);  } - -?>
\ No newline at end of file diff --git a/phpBB/install/install_main.php b/phpBB/install/install_main.php index e9f35efa1d..974b006db3 100644 --- a/phpBB/install/install_main.php +++ b/phpBB/install/install_main.php @@ -2,9 +2,8 @@  /**  *  * @package install -* @version $Id$  * @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -74,5 +73,3 @@ class install_main extends module  		));  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/install/install_update.php b/phpBB/install/install_update.php index ec76f2a407..aa1bd0fa35 100644 --- a/phpBB/install/install_update.php +++ b/phpBB/install/install_update.php @@ -2,9 +2,8 @@  /**  *  * @package install -* @version $Id$  * @copyright (c) 2006 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  * @todo check for writable cache/store/files directory  */ @@ -72,7 +71,14 @@ class install_update extends module  	function main($mode, $sub)  	{ -		global $template, $phpEx, $phpbb_root_path, $user, $db, $config, $cache, $auth, $language; +		global $phpbb_style, $template, $phpEx, $phpbb_root_path, $user, $db, $config, $cache, $auth, $language; +		global $request, $phpbb_admin_path, $phpbb_adm_relative_path, $phpbb_container; + +		// Create a normal container now +		$phpbb_container = phpbb_create_default_container($phpbb_root_path, $phpEx); + +		// Writes into global $cache +		$cache = $phpbb_container->get('cache');  		$this->tpl_name = 'install_update';  		$this->page_title = 'UPDATE_INSTALLATION'; @@ -83,7 +89,6 @@ class install_update extends module  		// Init DB  		require($phpbb_root_path . 'config.' . $phpEx); -		require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);  		require($phpbb_root_path . 'includes/constants.' . $phpEx);  		// Special options for conflicts/modified files @@ -92,7 +97,9 @@ class install_update extends module  		define('MERGE_NEW_FILE', 3);  		define('MERGE_MOD_FILE', 4); -		$db = new $sql_db(); +		$dbms = phpbb_convert_30_dbms_to_31($dbms); + +		$db = new $dbms();  		// Connect to DB  		$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, false); @@ -100,17 +107,10 @@ class install_update extends module  		// We do not need this any longer, unset for safety purposes  		unset($dbpasswd); -		$config = array(); - -		$sql = 'SELECT config_name, config_value -			FROM ' . CONFIG_TABLE; -		$result = $db->sql_query($sql); - -		while ($row = $db->sql_fetchrow($result)) -		{ -			$config[$row['config_name']] = $row['config_value']; -		} -		$db->sql_freeresult($result); +		// We need to fill the config to let internal functions correctly work +		$config = new phpbb_config_db($db, new phpbb_cache_driver_null, CONFIG_TABLE); +		set_config(null, null, null, $config); +		set_config_count(null, null, null, $config);  		// Force template recompile  		$config['load_tplcompile'] = 1; @@ -138,10 +138,7 @@ class install_update extends module  		}  		// Set custom template again. ;) -		$template->set_custom_template('../adm/style', 'admin'); - -		// still, the acp template is never stored in the database -		$user->theme['template_storedb'] = false; +		$phpbb_style->set_custom_style('admin', $phpbb_admin_path . 'style', array(), '');  		$template->assign_vars(array(  			'S_USER_LANG'			=> $user->lang['USER_LANG'], @@ -226,7 +223,7 @@ class install_update extends module  		if ($this->test_update === false)  		{  			// Got the updater template itself updated? If so, we are able to directly use it - but only if all three files are present -			if (in_array('adm/style/install_update.html', $this->update_info['files'])) +			if (in_array($phpbb_adm_relative_path . 'style/install_update.html', $this->update_info['files']))  			{  				$this->tpl_name = '../../install/update/new/adm/style/install_update';  			} @@ -251,7 +248,7 @@ class install_update extends module  		$this->include_file('includes/diff/renderer.' . $phpEx);  		// Make sure we stay at the file check if checking the files again -		if (!empty($_POST['check_again'])) +		if ($request->variable('check_again', false, false, phpbb_request_interface::POST))  		{  			$sub = $this->p_master->sub = 'file_check';  		} @@ -358,8 +355,8 @@ class install_update extends module  				$action = request_var('action', '');  				// We are directly within an update. To make sure our update list is correct we check its status. -				$update_list = (!empty($_POST['check_again'])) ? false : $cache->get('_update_list'); -				$modified = ($update_list !== false) ? @filemtime($cache->cache_dir . 'data_update_list.' . $phpEx) : 0; +				$update_list = ($request->variable('check_again', false, false, phpbb_request_interface::POST)) ? false : $cache->get('_update_list'); +				$modified = ($update_list !== false) ? @filemtime($cache->get_driver()->cache_dir . 'data_update_list.' . $phpEx) : 0;  				// Make sure the list is up-to-date  				if ($update_list !== false) @@ -503,6 +500,7 @@ class install_update extends module  				$template->assign_vars(array(  					'S_FILE_CHECK'			=> true,  					'S_ALL_UP_TO_DATE'		=> $all_up_to_date, +					'L_ALL_FILES_UP_TO_DATE'	=> $user->lang('ALL_FILES_UP_TO_DATE', append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login'), append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login&redirect=' . $phpbb_adm_relative_path . 'index.php%3Fi=send_statistics%26mode=send_statistics')),  					'S_VERSION_UP_TO_DATE'	=> $up_to_date,  					'U_ACTION'				=> append_sid($this->p_master->module_url, "language=$language&mode=$mode&sub=file_check"),  					'U_UPDATE_ACTION'		=> append_sid($this->p_master->module_url, "language=$language&mode=$mode&sub=update_files"), @@ -514,56 +512,6 @@ class install_update extends module  					// Add database update to log  					add_log('admin', 'LOG_UPDATE_PHPBB', $this->current_version, $this->update_to_version); -					// Refresh prosilver css data - this may cause some unhappy users, but -					$sql = 'SELECT * -						FROM ' . STYLES_THEME_TABLE . " -						WHERE LOWER(theme_name) = 'prosilver'"; -					$result = $db->sql_query($sql); -					$theme = $db->sql_fetchrow($result); -					$db->sql_freeresult($result); - -					if ($theme) -					{ -						$recache = (empty($theme['theme_data'])) ? true : false; -						$update_time = time(); - -						// We test for stylesheet.css because it is faster and most likely the only file changed on common themes -						if (!$recache && $theme['theme_mtime'] < @filemtime("{$phpbb_root_path}styles/" . $theme['theme_path'] . '/theme/stylesheet.css')) -						{ -							$recache = true; -							$update_time = @filemtime("{$phpbb_root_path}styles/" . $theme['theme_path'] . '/theme/stylesheet.css'); -						} -						else if (!$recache) -						{ -							$last_change = $theme['theme_mtime']; -							$dir = @opendir("{$phpbb_root_path}styles/{$theme['theme_path']}/theme"); - -							if ($dir) -							{ -								while (($entry = readdir($dir)) !== false) -								{ -									if (substr(strrchr($entry, '.'), 1) == 'css' && $last_change < @filemtime("{$phpbb_root_path}styles/{$theme['theme_path']}/theme/{$entry}")) -									{ -										$recache = true; -										break; -									} -								} -								closedir($dir); -							} -						} - -						if ($recache) -						{ -							// Instead of re-caching here, we simply remove theme_data... HAR HAR HAR (think about a carribean pirate) -							$sql = 'UPDATE ' . STYLES_THEME_TABLE . " SET theme_data = '' -								WHERE theme_id = " . $theme['theme_id']; -							$db->sql_query($sql); - -							$cache->destroy('sql', STYLES_THEME_TABLE); -							$cache->destroy('sql', STYLES_TABLE); -						} -					} -  					$db->sql_return_on_error(true);  					$db->sql_query('DELETE FROM ' . CONFIG_TABLE . " WHERE config_name = 'version_update_from'");  					$db->sql_return_on_error(false); @@ -714,7 +662,7 @@ class install_update extends module  							{  								$cache->put('_diff_files', $file_list); -								if (!empty($_REQUEST['download'])) +								if ($request->variable('download', false))  								{  									$params[] = 'download=1';  								} @@ -829,7 +777,7 @@ class install_update extends module  				$file_list['status'] = -1;  				$cache->put('_diff_files', $file_list); -				if (!empty($_REQUEST['download'])) +				if ($request->variable('download', false))  				{  					$this->include_file('includes/functions_compress.' . $phpEx); @@ -922,7 +870,14 @@ class install_update extends module  					$test_connection = false;  					if ($test_ftp_connection || $submit)  					{ -						$transfer = new $method(request_var('host', ''), request_var('username', ''), request_var('password', ''), request_var('root_path', ''), request_var('port', ''), request_var('timeout', '')); +						$transfer = new $method( +							request_var('host', ''), +							request_var('username', ''), +							htmlspecialchars_decode($request->untrimmed_variable('password', '')), +							request_var('root_path', ''), +							request_var('port', ''), +							request_var('timeout', '') +						);  						$test_connection = $transfer->open_session();  						// Make sure that the directory is correct by checking for the existence of common.php @@ -963,7 +918,7 @@ class install_update extends module  								'DATA'		=> $data,  								'NAME'		=> $user->lang[strtoupper($method . '_' . $data)],  								'EXPLAIN'	=> $user->lang[strtoupper($method . '_' . $data) . '_EXPLAIN'], -								'DEFAULT'	=> (!empty($_REQUEST[$data])) ? request_var($data, '') : $default +								'DEFAULT'	=> $request->variable($data, (string) $default),  							));  						} @@ -1008,7 +963,14 @@ class install_update extends module  				}  				else  				{ -					$transfer = new $method(request_var('host', ''), request_var('username', ''), request_var('password', ''), request_var('root_path', ''), request_var('port', ''), request_var('timeout', '')); +					$transfer = new $method( +						request_var('host', ''), +						request_var('username', ''), +						htmlspecialchars_decode($request->untrimmed_variable('password', '')), +						request_var('root_path', ''), +						request_var('port', ''), +						request_var('timeout', '') +					);  					$transfer->open_session();  				} @@ -1123,12 +1085,12 @@ class install_update extends module  	*/  	function show_diff(&$update_list)  	{ -		global $phpbb_root_path, $template, $user; +		global $phpbb_root_path, $template, $user, $phpbb_adm_relative_path;  		$this->tpl_name = 'install_update_diff';  		// Got the diff template itself updated? If so, we are able to directly use it -		if (in_array('adm/style/install_update_diff.html', $this->update_info['files'])) +		if (in_array($phpbb_adm_relative_path . 'style/install_update_diff.html', $this->update_info['files']))  		{  			$this->tpl_name = '../../install/update/new/adm/style/install_update_diff';  		} @@ -1704,9 +1666,9 @@ class install_update extends module  					$info['custom'] = array();  /*  					// Get custom installed styles... -					$sql = 'SELECT template_name, template_path -						FROM ' . STYLES_TEMPLATE_TABLE . " -						WHERE LOWER(template_name) NOT IN ('subsilver2', 'prosilver')"; +					$sql = 'SELECT style_name, style_path +						FROM ' . STYLES_TABLE . " +						WHERE LOWER(style_name) NOT IN ('subsilver2', 'prosilver')";  					$result = $db->sql_query($sql);  					$templates = array(); @@ -1725,7 +1687,7 @@ class install_update extends module  							{  								foreach ($templates as $row)  								{ -									$info['custom'][$filename][] = str_replace('/prosilver/', '/' . $row['template_path'] . '/', $filename); +									$info['custom'][$filename][] = str_replace('/prosilver/', '/' . $row['style_path'] . '/', $filename);  								}  							}  						} @@ -1795,5 +1757,3 @@ class install_update extends module  		return $diff;  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/install/phpinfo.php b/phpBB/install/phpinfo.php index 6480abf34a..83f154933a 100644 --- a/phpBB/install/phpinfo.php +++ b/phpBB/install/phpinfo.php @@ -1,5 +1,3 @@  <?php  phpinfo(); - -?>
\ No newline at end of file diff --git a/phpBB/install/schemas/firebird_schema.sql b/phpBB/install/schemas/firebird_schema.sql index eae692f529..18ca184c65 100644 --- a/phpBB/install/schemas/firebird_schema.sql +++ b/phpBB/install/schemas/firebird_schema.sql @@ -222,6 +222,15 @@ ALTER TABLE phpbb_config ADD PRIMARY KEY (config_name);;  CREATE INDEX phpbb_config_is_dynamic ON phpbb_config(is_dynamic);; +# Table: 'phpbb_config_text' +CREATE TABLE phpbb_config_text ( +	config_name VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, +	config_value BLOB SUB_TYPE TEXT CHARACTER SET NONE DEFAULT '' NOT NULL +);; + +ALTER TABLE phpbb_config_text ADD PRIMARY KEY (config_name);; + +  # Table: 'phpbb_confirm'  CREATE TABLE phpbb_confirm (  	confirm_id CHAR(32) CHARACTER SET NONE DEFAULT '' NOT NULL, @@ -282,6 +291,15 @@ BEGIN  END;; +# Table: 'phpbb_ext' +CREATE TABLE phpbb_ext ( +	ext_name VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, +	ext_active INTEGER DEFAULT 0 NOT NULL, +	ext_state BLOB SUB_TYPE TEXT CHARACTER SET NONE DEFAULT '' NOT NULL +);; + +CREATE UNIQUE INDEX phpbb_ext_ext_name ON phpbb_ext(ext_name);; +  # Table: 'phpbb_extensions'  CREATE TABLE phpbb_extensions (  	extension_id INTEGER NOT NULL, @@ -436,7 +454,7 @@ CREATE TABLE phpbb_groups (  	group_desc_uid VARCHAR(8) CHARACTER SET NONE DEFAULT '' NOT NULL,  	group_display INTEGER DEFAULT 0 NOT NULL,  	group_avatar VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, -	group_avatar_type INTEGER DEFAULT 0 NOT NULL, +	group_avatar_type VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL,  	group_avatar_width INTEGER DEFAULT 0 NOT NULL,  	group_avatar_height INTEGER DEFAULT 0 NOT NULL,  	group_rank INTEGER DEFAULT 0 NOT NULL, @@ -445,7 +463,7 @@ CREATE TABLE phpbb_groups (  	group_receive_pm INTEGER DEFAULT 0 NOT NULL,  	group_message_limit INTEGER DEFAULT 0 NOT NULL,  	group_max_recipients INTEGER DEFAULT 0 NOT NULL, -	group_legend INTEGER DEFAULT 1 NOT NULL +	group_legend INTEGER DEFAULT 0 NOT NULL  );;  ALTER TABLE phpbb_groups ADD PRIMARY KEY (group_id);; @@ -530,6 +548,7 @@ CREATE TABLE phpbb_log (  ALTER TABLE phpbb_log ADD PRIMARY KEY (log_id);;  CREATE INDEX phpbb_log_log_type ON phpbb_log(log_type);; +CREATE INDEX phpbb_log_log_time ON phpbb_log(log_time);;  CREATE INDEX phpbb_log_forum_id ON phpbb_log(forum_id);;  CREATE INDEX phpbb_log_topic_id ON phpbb_log(topic_id);;  CREATE INDEX phpbb_log_reportee_id ON phpbb_log(reportee_id);; @@ -575,6 +594,20 @@ CREATE TABLE phpbb_moderator_cache (  CREATE INDEX phpbb_moderator_cache_disp_idx ON phpbb_moderator_cache(display_on_index);;  CREATE INDEX phpbb_moderator_cache_forum_id ON phpbb_moderator_cache(forum_id);; +# Table: 'phpbb_migrations' +CREATE TABLE phpbb_migrations ( +	migration_name VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, +	migration_depends_on BLOB SUB_TYPE TEXT CHARACTER SET NONE DEFAULT '' NOT NULL, +	migration_schema_done INTEGER DEFAULT 0 NOT NULL, +	migration_data_done INTEGER DEFAULT 0 NOT NULL, +	migration_data_state BLOB SUB_TYPE TEXT CHARACTER SET NONE DEFAULT '' NOT NULL, +	migration_start_time INTEGER DEFAULT 0 NOT NULL, +	migration_end_time INTEGER DEFAULT 0 NOT NULL +);; + +ALTER TABLE phpbb_migrations ADD PRIMARY KEY (migration_name);; + +  # Table: 'phpbb_modules'  CREATE TABLE phpbb_modules (  	module_id INTEGER NOT NULL, @@ -607,6 +640,43 @@ BEGIN  END;; +# Table: 'phpbb_notification_types' +CREATE TABLE phpbb_notification_types ( +	notification_type VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, +	notification_type_enabled INTEGER DEFAULT 1 NOT NULL +);; + +ALTER TABLE phpbb_notification_types ADD PRIMARY KEY (notification_type, notification_type_enabled);; + + +# Table: 'phpbb_notifications' +CREATE TABLE phpbb_notifications ( +	notification_id INTEGER NOT NULL, +	item_type VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, +	item_id INTEGER DEFAULT 0 NOT NULL, +	item_parent_id INTEGER DEFAULT 0 NOT NULL, +	user_id INTEGER DEFAULT 0 NOT NULL, +	notification_read INTEGER DEFAULT 0 NOT NULL, +	notification_time INTEGER DEFAULT 1 NOT NULL, +	notification_data BLOB SUB_TYPE TEXT CHARACTER SET UTF8 DEFAULT '' NOT NULL +);; + +ALTER TABLE phpbb_notifications ADD PRIMARY KEY (notification_id);; + +CREATE INDEX phpbb_notifications_item_ident ON phpbb_notifications(item_type, item_id);; +CREATE INDEX phpbb_notifications_user ON phpbb_notifications(user_id, notification_read);; + +CREATE GENERATOR phpbb_notifications_gen;; +SET GENERATOR phpbb_notifications_gen TO 0;; + +CREATE TRIGGER t_phpbb_notifications FOR phpbb_notifications +BEFORE INSERT +AS +BEGIN +	NEW.notification_id = GEN_ID(phpbb_notifications_gen, 1); +END;; + +  # Table: 'phpbb_poll_options'  CREATE TABLE phpbb_poll_options (  	poll_option_id INTEGER DEFAULT 0 NOT NULL, @@ -809,6 +879,7 @@ CREATE TABLE phpbb_profile_fields (  	field_required INTEGER DEFAULT 0 NOT NULL,  	field_show_novalue INTEGER DEFAULT 0 NOT NULL,  	field_show_on_reg INTEGER DEFAULT 0 NOT NULL, +	field_show_on_pm INTEGER DEFAULT 0 NOT NULL,  	field_show_on_vt INTEGER DEFAULT 0 NOT NULL,  	field_show_profile INTEGER DEFAULT 0 NOT NULL,  	field_hide INTEGER DEFAULT 0 NOT NULL, @@ -898,7 +969,13 @@ CREATE TABLE phpbb_reports (  	user_notify INTEGER DEFAULT 0 NOT NULL,  	report_closed INTEGER DEFAULT 0 NOT NULL,  	report_time INTEGER DEFAULT 0 NOT NULL, -	report_text BLOB SUB_TYPE TEXT CHARACTER SET UTF8 DEFAULT '' NOT NULL +	report_text BLOB SUB_TYPE TEXT CHARACTER SET UTF8 DEFAULT '' NOT NULL, +	reported_post_text BLOB SUB_TYPE TEXT CHARACTER SET UTF8 DEFAULT '' NOT NULL, +	reported_post_uid VARCHAR(8) CHARACTER SET NONE DEFAULT '' NOT NULL, +	reported_post_bitfield VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, +	reported_post_enable_magic_url INTEGER DEFAULT 1 NOT NULL, +	reported_post_enable_smilies INTEGER DEFAULT 1 NOT NULL, +	reported_post_enable_bbcode INTEGER DEFAULT 1 NOT NULL  );;  ALTER TABLE phpbb_reports ADD PRIMARY KEY (report_id);; @@ -1075,17 +1152,15 @@ CREATE TABLE phpbb_styles (  	style_name VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE,  	style_copyright VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE,  	style_active INTEGER DEFAULT 1 NOT NULL, -	template_id INTEGER DEFAULT 0 NOT NULL, -	theme_id INTEGER DEFAULT 0 NOT NULL, -	imageset_id INTEGER DEFAULT 0 NOT NULL +	style_path VARCHAR(100) CHARACTER SET NONE DEFAULT '' NOT NULL, +	bbcode_bitfield VARCHAR(255) CHARACTER SET NONE DEFAULT 'kNg=' NOT NULL, +	style_parent_id INTEGER DEFAULT 0 NOT NULL, +	style_parent_tree BLOB SUB_TYPE TEXT CHARACTER SET NONE DEFAULT '' NOT NULL  );;  ALTER TABLE phpbb_styles ADD PRIMARY KEY (style_id);;  CREATE UNIQUE INDEX phpbb_styles_style_name ON phpbb_styles(style_name);; -CREATE INDEX phpbb_styles_template_id ON phpbb_styles(template_id);; -CREATE INDEX phpbb_styles_theme_id ON phpbb_styles(theme_id);; -CREATE INDEX phpbb_styles_imageset_id ON phpbb_styles(imageset_id);;  CREATE GENERATOR phpbb_styles_gen;;  SET GENERATOR phpbb_styles_gen TO 0;; @@ -1098,117 +1173,26 @@ BEGIN  END;; -# Table: 'phpbb_styles_template' -CREATE TABLE phpbb_styles_template ( -	template_id INTEGER NOT NULL, -	template_name VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE, -	template_copyright VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE, -	template_path VARCHAR(100) CHARACTER SET NONE DEFAULT '' NOT NULL, -	bbcode_bitfield VARCHAR(255) CHARACTER SET NONE DEFAULT 'kNg=' NOT NULL, -	template_storedb INTEGER DEFAULT 0 NOT NULL, -	template_inherits_id INTEGER DEFAULT 0 NOT NULL, -	template_inherit_path VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL -);; - -ALTER TABLE phpbb_styles_template ADD PRIMARY KEY (template_id);; - -CREATE UNIQUE INDEX phpbb_styles_template_tmplte_nm ON phpbb_styles_template(template_name);; - -CREATE GENERATOR phpbb_styles_template_gen;; -SET GENERATOR phpbb_styles_template_gen TO 0;; - -CREATE TRIGGER t_phpbb_styles_template FOR phpbb_styles_template -BEFORE INSERT -AS -BEGIN -	NEW.template_id = GEN_ID(phpbb_styles_template_gen, 1); -END;; - - -# Table: 'phpbb_styles_template_data' -CREATE TABLE phpbb_styles_template_data ( -	template_id INTEGER DEFAULT 0 NOT NULL, -	template_filename VARCHAR(100) CHARACTER SET NONE DEFAULT '' NOT NULL, -	template_included BLOB SUB_TYPE TEXT CHARACTER SET NONE DEFAULT '' NOT NULL, -	template_mtime INTEGER DEFAULT 0 NOT NULL, -	template_data BLOB SUB_TYPE TEXT CHARACTER SET UTF8 DEFAULT '' NOT NULL -);; - -CREATE INDEX phpbb_styles_template_data_tid ON phpbb_styles_template_data(template_id);; -CREATE INDEX phpbb_styles_template_data_tfn ON phpbb_styles_template_data(template_filename);; - -# Table: 'phpbb_styles_theme' -CREATE TABLE phpbb_styles_theme ( -	theme_id INTEGER NOT NULL, -	theme_name VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE, -	theme_copyright VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE, -	theme_path VARCHAR(100) CHARACTER SET NONE DEFAULT '' NOT NULL, -	theme_storedb INTEGER DEFAULT 0 NOT NULL, -	theme_mtime INTEGER DEFAULT 0 NOT NULL, -	theme_data BLOB SUB_TYPE TEXT CHARACTER SET UTF8 DEFAULT '' NOT NULL -);; - -ALTER TABLE phpbb_styles_theme ADD PRIMARY KEY (theme_id);; - -CREATE UNIQUE INDEX phpbb_styles_theme_theme_name ON phpbb_styles_theme(theme_name);; - -CREATE GENERATOR phpbb_styles_theme_gen;; -SET GENERATOR phpbb_styles_theme_gen TO 0;; - -CREATE TRIGGER t_phpbb_styles_theme FOR phpbb_styles_theme -BEFORE INSERT -AS -BEGIN -	NEW.theme_id = GEN_ID(phpbb_styles_theme_gen, 1); -END;; - - -# Table: 'phpbb_styles_imageset' -CREATE TABLE phpbb_styles_imageset ( -	imageset_id INTEGER NOT NULL, -	imageset_name VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE, -	imageset_copyright VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE, -	imageset_path VARCHAR(100) CHARACTER SET NONE DEFAULT '' NOT NULL -);; - -ALTER TABLE phpbb_styles_imageset ADD PRIMARY KEY (imageset_id);; - -CREATE UNIQUE INDEX phpbb_styles_imageset_imgset_nm ON phpbb_styles_imageset(imageset_name);; - -CREATE GENERATOR phpbb_styles_imageset_gen;; -SET GENERATOR phpbb_styles_imageset_gen TO 0;; - -CREATE TRIGGER t_phpbb_styles_imageset FOR phpbb_styles_imageset -BEFORE INSERT -AS -BEGIN -	NEW.imageset_id = GEN_ID(phpbb_styles_imageset_gen, 1); -END;; - - -# Table: 'phpbb_styles_imageset_data' -CREATE TABLE phpbb_styles_imageset_data ( -	image_id INTEGER NOT NULL, -	image_name VARCHAR(200) CHARACTER SET NONE DEFAULT '' NOT NULL, -	image_filename VARCHAR(200) CHARACTER SET NONE DEFAULT '' NOT NULL, -	image_lang VARCHAR(30) CHARACTER SET NONE DEFAULT '' NOT NULL, -	image_height INTEGER DEFAULT 0 NOT NULL, -	image_width INTEGER DEFAULT 0 NOT NULL, -	imageset_id INTEGER DEFAULT 0 NOT NULL +# Table: 'phpbb_teampage' +CREATE TABLE phpbb_teampage ( +	teampage_id INTEGER NOT NULL, +	group_id INTEGER DEFAULT 0 NOT NULL, +	teampage_name VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE, +	teampage_position INTEGER DEFAULT 0 NOT NULL, +	teampage_parent INTEGER DEFAULT 0 NOT NULL  );; -ALTER TABLE phpbb_styles_imageset_data ADD PRIMARY KEY (image_id);; +ALTER TABLE phpbb_teampage ADD PRIMARY KEY (teampage_id);; -CREATE INDEX phpbb_styles_imageset_data_i_d ON phpbb_styles_imageset_data(imageset_id);; -CREATE GENERATOR phpbb_styles_imageset_data_gen;; -SET GENERATOR phpbb_styles_imageset_data_gen TO 0;; +CREATE GENERATOR phpbb_teampage_gen;; +SET GENERATOR phpbb_teampage_gen TO 0;; -CREATE TRIGGER t_phpbb_styles_imageset_data FOR phpbb_styles_imageset_data +CREATE TRIGGER t_phpbb_teampage FOR phpbb_teampage  BEFORE INSERT  AS  BEGIN -	NEW.image_id = GEN_ID(phpbb_styles_imageset_data_gen, 1); +	NEW.teampage_id = GEN_ID(phpbb_teampage_gen, 1);  END;; @@ -1304,6 +1288,16 @@ CREATE INDEX phpbb_topics_watch_topic_id ON phpbb_topics_watch(topic_id);;  CREATE INDEX phpbb_topics_watch_user_id ON phpbb_topics_watch(user_id);;  CREATE INDEX phpbb_topics_watch_notify_stat ON phpbb_topics_watch(notify_status);; +# Table: 'phpbb_user_notifications' +CREATE TABLE phpbb_user_notifications ( +	item_type VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, +	item_id INTEGER DEFAULT 0 NOT NULL, +	user_id INTEGER DEFAULT 0 NOT NULL, +	method VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, +	notify INTEGER DEFAULT 1 NOT NULL +);; + +  # Table: 'phpbb_user_group'  CREATE TABLE phpbb_user_group (  	group_id INTEGER DEFAULT 0 NOT NULL, @@ -1346,8 +1340,7 @@ CREATE TABLE phpbb_users (  	user_inactive_time INTEGER DEFAULT 0 NOT NULL,  	user_posts INTEGER DEFAULT 0 NOT NULL,  	user_lang VARCHAR(30) CHARACTER SET NONE DEFAULT '' NOT NULL, -	user_timezone DOUBLE PRECISION DEFAULT 0 NOT NULL, -	user_dst INTEGER DEFAULT 0 NOT NULL, +	user_timezone VARCHAR(100) CHARACTER SET NONE DEFAULT 'UTC' NOT NULL,  	user_dateformat VARCHAR(30) CHARACTER SET UTF8 DEFAULT 'd M Y H:i' NOT NULL COLLATE UNICODE,  	user_style INTEGER DEFAULT 0 NOT NULL,  	user_rank INTEGER DEFAULT 0 NOT NULL, @@ -1373,7 +1366,7 @@ CREATE TABLE phpbb_users (  	user_allow_massemail INTEGER DEFAULT 1 NOT NULL,  	user_options INTEGER DEFAULT 230271 NOT NULL,  	user_avatar VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, -	user_avatar_type INTEGER DEFAULT 0 NOT NULL, +	user_avatar_type VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL,  	user_avatar_width INTEGER DEFAULT 0 NOT NULL,  	user_avatar_height INTEGER DEFAULT 0 NOT NULL,  	user_sig BLOB SUB_TYPE TEXT CHARACTER SET UTF8 DEFAULT '' NOT NULL, diff --git a/phpBB/install/schemas/mssql_schema.sql b/phpBB/install/schemas/mssql_schema.sql index 0b2f8368de..3530f9cd25 100644 --- a/phpBB/install/schemas/mssql_schema.sql +++ b/phpBB/install/schemas/mssql_schema.sql @@ -294,6 +294,23 @@ GO  /* +	Table: 'phpbb_config_text' +*/ +CREATE TABLE [phpbb_config_text] ( +	[config_name] [varchar] (255) DEFAULT ('') NOT NULL , +	[config_value] [text] DEFAULT ('') NOT NULL  +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [phpbb_config_text] WITH NOCHECK ADD  +	CONSTRAINT [PK_phpbb_config_text] PRIMARY KEY  CLUSTERED  +	( +		[config_name] +	)  ON [PRIMARY]  +GO + + +/*  	Table: 'phpbb_confirm'  */  CREATE TABLE [phpbb_confirm] ( @@ -361,6 +378,20 @@ GO  /* +	Table: 'phpbb_ext' +*/ +CREATE TABLE [phpbb_ext] ( +	[ext_name] [varchar] (255) DEFAULT ('') NOT NULL , +	[ext_active] [int] DEFAULT (0) NOT NULL , +	[ext_state] [varchar] (8000) DEFAULT ('') NOT NULL  +) ON [PRIMARY] +GO + +CREATE  UNIQUE  INDEX [ext_name] ON [phpbb_ext]([ext_name]) ON [PRIMARY] +GO + + +/*  	Table: 'phpbb_extensions'  */  CREATE TABLE [phpbb_extensions] ( @@ -539,7 +570,7 @@ CREATE TABLE [phpbb_groups] (  	[group_desc_uid] [varchar] (8) DEFAULT ('') NOT NULL ,  	[group_display] [int] DEFAULT (0) NOT NULL ,  	[group_avatar] [varchar] (255) DEFAULT ('') NOT NULL , -	[group_avatar_type] [int] DEFAULT (0) NOT NULL , +	[group_avatar_type] [varchar] (255) DEFAULT ('') NOT NULL ,  	[group_avatar_width] [int] DEFAULT (0) NOT NULL ,  	[group_avatar_height] [int] DEFAULT (0) NOT NULL ,  	[group_rank] [int] DEFAULT (0) NOT NULL , @@ -548,7 +579,7 @@ CREATE TABLE [phpbb_groups] (  	[group_receive_pm] [int] DEFAULT (0) NOT NULL ,  	[group_message_limit] [int] DEFAULT (0) NOT NULL ,  	[group_max_recipients] [int] DEFAULT (0) NOT NULL , -	[group_legend] [int] DEFAULT (1) NOT NULL  +	[group_legend] [int] DEFAULT (0) NOT NULL   ) ON [PRIMARY]  GO @@ -638,6 +669,9 @@ GO  CREATE  INDEX [log_type] ON [phpbb_log]([log_type]) ON [PRIMARY]  GO +CREATE  INDEX [log_time] ON [phpbb_log]([log_time]) ON [PRIMARY] +GO +  CREATE  INDEX [forum_id] ON [phpbb_log]([forum_id]) ON [PRIMARY]  GO @@ -699,6 +733,28 @@ GO  /* +	Table: 'phpbb_migrations' +*/ +CREATE TABLE [phpbb_migrations] ( +	[migration_name] [varchar] (255) DEFAULT ('') NOT NULL , +	[migration_depends_on] [varchar] (8000) DEFAULT ('') NOT NULL , +	[migration_schema_done] [int] DEFAULT (0) NOT NULL , +	[migration_data_done] [int] DEFAULT (0) NOT NULL , +	[migration_data_state] [varchar] (8000) DEFAULT ('') NOT NULL , +	[migration_start_time] [int] DEFAULT (0) NOT NULL , +	[migration_end_time] [int] DEFAULT (0) NOT NULL  +) ON [PRIMARY] +GO + +ALTER TABLE [phpbb_migrations] WITH NOCHECK ADD  +	CONSTRAINT [PK_phpbb_migrations] PRIMARY KEY  CLUSTERED  +	( +		[migration_name] +	)  ON [PRIMARY]  +GO + + +/*  	Table: 'phpbb_modules'  */  CREATE TABLE [phpbb_modules] ( @@ -734,6 +790,53 @@ GO  /* +	Table: 'phpbb_notification_types' +*/ +CREATE TABLE [phpbb_notification_types] ( +	[notification_type] [varchar] (255) DEFAULT ('') NOT NULL , +	[notification_type_enabled] [int] DEFAULT (1) NOT NULL  +) ON [PRIMARY] +GO + +ALTER TABLE [phpbb_notification_types] WITH NOCHECK ADD  +	CONSTRAINT [PK_phpbb_notification_types] PRIMARY KEY  CLUSTERED  +	( +		[notification_type], +		[notification_type_enabled] +	)  ON [PRIMARY]  +GO + + +/* +	Table: 'phpbb_notifications' +*/ +CREATE TABLE [phpbb_notifications] ( +	[notification_id] [int] IDENTITY (1, 1) NOT NULL , +	[item_type] [varchar] (255) DEFAULT ('') NOT NULL , +	[item_id] [int] DEFAULT (0) NOT NULL , +	[item_parent_id] [int] DEFAULT (0) NOT NULL , +	[user_id] [int] DEFAULT (0) NOT NULL , +	[notification_read] [int] DEFAULT (0) NOT NULL , +	[notification_time] [int] DEFAULT (1) NOT NULL , +	[notification_data] [varchar] (4000) DEFAULT ('') NOT NULL  +) ON [PRIMARY] +GO + +ALTER TABLE [phpbb_notifications] WITH NOCHECK ADD  +	CONSTRAINT [PK_phpbb_notifications] PRIMARY KEY  CLUSTERED  +	( +		[notification_id] +	)  ON [PRIMARY]  +GO + +CREATE  INDEX [item_ident] ON [phpbb_notifications]([item_type], [item_id]) ON [PRIMARY] +GO + +CREATE  INDEX [user] ON [phpbb_notifications]([user_id], [notification_read]) ON [PRIMARY] +GO + + +/*  	Table: 'phpbb_poll_options'  */  CREATE TABLE [phpbb_poll_options] ( @@ -976,6 +1079,7 @@ CREATE TABLE [phpbb_profile_fields] (  	[field_required] [int] DEFAULT (0) NOT NULL ,  	[field_show_novalue] [int] DEFAULT (0) NOT NULL ,  	[field_show_on_reg] [int] DEFAULT (0) NOT NULL , +	[field_show_on_pm] [int] DEFAULT (0) NOT NULL ,  	[field_show_on_vt] [int] DEFAULT (0) NOT NULL ,  	[field_show_profile] [int] DEFAULT (0) NOT NULL ,  	[field_hide] [int] DEFAULT (0) NOT NULL , @@ -1090,7 +1194,13 @@ CREATE TABLE [phpbb_reports] (  	[user_notify] [int] DEFAULT (0) NOT NULL ,  	[report_closed] [int] DEFAULT (0) NOT NULL ,  	[report_time] [int] DEFAULT (0) NOT NULL , -	[report_text] [text] DEFAULT ('') NOT NULL  +	[report_text] [text] DEFAULT ('') NOT NULL , +	[reported_post_text] [text] DEFAULT ('') NOT NULL , +	[reported_post_uid] [varchar] (8) DEFAULT ('') NOT NULL , +	[reported_post_bitfield] [varchar] (255) DEFAULT ('') NOT NULL , +	[reported_post_enable_magic_url] [int] DEFAULT (1) NOT NULL , +	[reported_post_enable_smilies] [int] DEFAULT (1) NOT NULL , +	[reported_post_enable_bbcode] [int] DEFAULT (1) NOT NULL   ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  GO @@ -1304,9 +1414,10 @@ CREATE TABLE [phpbb_styles] (  	[style_name] [varchar] (255) DEFAULT ('') NOT NULL ,  	[style_copyright] [varchar] (255) DEFAULT ('') NOT NULL ,  	[style_active] [int] DEFAULT (1) NOT NULL , -	[template_id] [int] DEFAULT (0) NOT NULL , -	[theme_id] [int] DEFAULT (0) NOT NULL , -	[imageset_id] [int] DEFAULT (0) NOT NULL  +	[style_path] [varchar] (100) DEFAULT ('') NOT NULL , +	[bbcode_bitfield] [varchar] (255) DEFAULT ('kNg=') NOT NULL , +	[style_parent_id] [int] DEFAULT (0) NOT NULL , +	[style_parent_tree] [varchar] (8000) DEFAULT ('') NOT NULL   ) ON [PRIMARY]  GO @@ -1320,132 +1431,26 @@ GO  CREATE  UNIQUE  INDEX [style_name] ON [phpbb_styles]([style_name]) ON [PRIMARY]  GO -CREATE  INDEX [template_id] ON [phpbb_styles]([template_id]) ON [PRIMARY] -GO - -CREATE  INDEX [theme_id] ON [phpbb_styles]([theme_id]) ON [PRIMARY] -GO - -CREATE  INDEX [imageset_id] ON [phpbb_styles]([imageset_id]) ON [PRIMARY] -GO - - -/* -	Table: 'phpbb_styles_template' -*/ -CREATE TABLE [phpbb_styles_template] ( -	[template_id] [int] IDENTITY (1, 1) NOT NULL , -	[template_name] [varchar] (255) DEFAULT ('') NOT NULL , -	[template_copyright] [varchar] (255) DEFAULT ('') NOT NULL , -	[template_path] [varchar] (100) DEFAULT ('') NOT NULL , -	[bbcode_bitfield] [varchar] (255) DEFAULT ('kNg=') NOT NULL , -	[template_storedb] [int] DEFAULT (0) NOT NULL , -	[template_inherits_id] [int] DEFAULT (0) NOT NULL , -	[template_inherit_path] [varchar] (255) DEFAULT ('') NOT NULL  -) ON [PRIMARY] -GO - -ALTER TABLE [phpbb_styles_template] WITH NOCHECK ADD  -	CONSTRAINT [PK_phpbb_styles_template] PRIMARY KEY  CLUSTERED  -	( -		[template_id] -	)  ON [PRIMARY]  -GO - -CREATE  UNIQUE  INDEX [tmplte_nm] ON [phpbb_styles_template]([template_name]) ON [PRIMARY] -GO - - -/* -	Table: 'phpbb_styles_template_data' -*/ -CREATE TABLE [phpbb_styles_template_data] ( -	[template_id] [int] DEFAULT (0) NOT NULL , -	[template_filename] [varchar] (100) DEFAULT ('') NOT NULL , -	[template_included] [varchar] (8000) DEFAULT ('') NOT NULL , -	[template_mtime] [int] DEFAULT (0) NOT NULL , -	[template_data] [text] DEFAULT ('') NOT NULL  -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO - -CREATE  INDEX [tid] ON [phpbb_styles_template_data]([template_id]) ON [PRIMARY] -GO - -CREATE  INDEX [tfn] ON [phpbb_styles_template_data]([template_filename]) ON [PRIMARY] -GO - - -/* -	Table: 'phpbb_styles_theme' -*/ -CREATE TABLE [phpbb_styles_theme] ( -	[theme_id] [int] IDENTITY (1, 1) NOT NULL , -	[theme_name] [varchar] (255) DEFAULT ('') NOT NULL , -	[theme_copyright] [varchar] (255) DEFAULT ('') NOT NULL , -	[theme_path] [varchar] (100) DEFAULT ('') NOT NULL , -	[theme_storedb] [int] DEFAULT (0) NOT NULL , -	[theme_mtime] [int] DEFAULT (0) NOT NULL , -	[theme_data] [text] DEFAULT ('') NOT NULL  -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO - -ALTER TABLE [phpbb_styles_theme] WITH NOCHECK ADD  -	CONSTRAINT [PK_phpbb_styles_theme] PRIMARY KEY  CLUSTERED  -	( -		[theme_id] -	)  ON [PRIMARY]  -GO - -CREATE  UNIQUE  INDEX [theme_name] ON [phpbb_styles_theme]([theme_name]) ON [PRIMARY] -GO - - -/* -	Table: 'phpbb_styles_imageset' -*/ -CREATE TABLE [phpbb_styles_imageset] ( -	[imageset_id] [int] IDENTITY (1, 1) NOT NULL , -	[imageset_name] [varchar] (255) DEFAULT ('') NOT NULL , -	[imageset_copyright] [varchar] (255) DEFAULT ('') NOT NULL , -	[imageset_path] [varchar] (100) DEFAULT ('') NOT NULL  -) ON [PRIMARY] -GO - -ALTER TABLE [phpbb_styles_imageset] WITH NOCHECK ADD  -	CONSTRAINT [PK_phpbb_styles_imageset] PRIMARY KEY  CLUSTERED  -	( -		[imageset_id] -	)  ON [PRIMARY]  -GO - -CREATE  UNIQUE  INDEX [imgset_nm] ON [phpbb_styles_imageset]([imageset_name]) ON [PRIMARY] -GO -  /* -	Table: 'phpbb_styles_imageset_data' +	Table: 'phpbb_teampage'  */ -CREATE TABLE [phpbb_styles_imageset_data] ( -	[image_id] [int] IDENTITY (1, 1) NOT NULL , -	[image_name] [varchar] (200) DEFAULT ('') NOT NULL , -	[image_filename] [varchar] (200) DEFAULT ('') NOT NULL , -	[image_lang] [varchar] (30) DEFAULT ('') NOT NULL , -	[image_height] [int] DEFAULT (0) NOT NULL , -	[image_width] [int] DEFAULT (0) NOT NULL , -	[imageset_id] [int] DEFAULT (0) NOT NULL  +CREATE TABLE [phpbb_teampage] ( +	[teampage_id] [int] IDENTITY (1, 1) NOT NULL , +	[group_id] [int] DEFAULT (0) NOT NULL , +	[teampage_name] [varchar] (255) DEFAULT ('') NOT NULL , +	[teampage_position] [int] DEFAULT (0) NOT NULL , +	[teampage_parent] [int] DEFAULT (0) NOT NULL   ) ON [PRIMARY]  GO -ALTER TABLE [phpbb_styles_imageset_data] WITH NOCHECK ADD  -	CONSTRAINT [PK_phpbb_styles_imageset_data] PRIMARY KEY  CLUSTERED  +ALTER TABLE [phpbb_teampage] WITH NOCHECK ADD  +	CONSTRAINT [PK_phpbb_teampage] PRIMARY KEY  CLUSTERED   	( -		[image_id] +		[teampage_id]  	)  ON [PRIMARY]   GO -CREATE  INDEX [i_d] ON [phpbb_styles_imageset_data]([imageset_id]) ON [PRIMARY] -GO -  /*  	Table: 'phpbb_topics' @@ -1580,6 +1585,19 @@ GO  /* +	Table: 'phpbb_user_notifications' +*/ +CREATE TABLE [phpbb_user_notifications] ( +	[item_type] [varchar] (255) DEFAULT ('') NOT NULL , +	[item_id] [int] DEFAULT (0) NOT NULL , +	[user_id] [int] DEFAULT (0) NOT NULL , +	[method] [varchar] (255) DEFAULT ('') NOT NULL , +	[notify] [int] DEFAULT (1) NOT NULL  +) ON [PRIMARY] +GO + + +/*  	Table: 'phpbb_user_group'  */  CREATE TABLE [phpbb_user_group] ( @@ -1632,8 +1650,7 @@ CREATE TABLE [phpbb_users] (  	[user_inactive_time] [int] DEFAULT (0) NOT NULL ,  	[user_posts] [int] DEFAULT (0) NOT NULL ,  	[user_lang] [varchar] (30) DEFAULT ('') NOT NULL , -	[user_timezone] [float] DEFAULT (0) NOT NULL , -	[user_dst] [int] DEFAULT (0) NOT NULL , +	[user_timezone] [varchar] (100) DEFAULT ('UTC') NOT NULL ,  	[user_dateformat] [varchar] (30) DEFAULT ('d M Y H:i') NOT NULL ,  	[user_style] [int] DEFAULT (0) NOT NULL ,  	[user_rank] [int] DEFAULT (0) NOT NULL , @@ -1659,7 +1676,7 @@ CREATE TABLE [phpbb_users] (  	[user_allow_massemail] [int] DEFAULT (1) NOT NULL ,  	[user_options] [int] DEFAULT (230271) NOT NULL ,  	[user_avatar] [varchar] (255) DEFAULT ('') NOT NULL , -	[user_avatar_type] [int] DEFAULT (0) NOT NULL , +	[user_avatar_type] [varchar] (255) DEFAULT ('') NOT NULL ,  	[user_avatar_width] [int] DEFAULT (0) NOT NULL ,  	[user_avatar_height] [int] DEFAULT (0) NOT NULL ,  	[user_sig] [text] DEFAULT ('') NOT NULL , diff --git a/phpBB/install/schemas/mysql_40_schema.sql b/phpBB/install/schemas/mysql_40_schema.sql index 969cbe0472..8c405677a8 100644 --- a/phpBB/install/schemas/mysql_40_schema.sql +++ b/phpBB/install/schemas/mysql_40_schema.sql @@ -157,6 +157,14 @@ CREATE TABLE phpbb_config (  ); +# Table: 'phpbb_config_text' +CREATE TABLE phpbb_config_text ( +	config_name varbinary(255) DEFAULT '' NOT NULL, +	config_value mediumblob NOT NULL, +	PRIMARY KEY (config_name) +); + +  # Table: 'phpbb_confirm'  CREATE TABLE phpbb_confirm (  	confirm_id binary(32) DEFAULT '' NOT NULL, @@ -192,6 +200,15 @@ CREATE TABLE phpbb_drafts (  ); +# Table: 'phpbb_ext' +CREATE TABLE phpbb_ext ( +	ext_name varbinary(255) DEFAULT '' NOT NULL, +	ext_active tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	ext_state blob NOT NULL, +	UNIQUE ext_name (ext_name) +); + +  # Table: 'phpbb_extensions'  CREATE TABLE phpbb_extensions (  	extension_id mediumint(8) UNSIGNED NOT NULL auto_increment, @@ -308,7 +325,7 @@ CREATE TABLE phpbb_groups (  	group_desc_uid varbinary(8) DEFAULT '' NOT NULL,  	group_display tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	group_avatar varbinary(255) DEFAULT '' NOT NULL, -	group_avatar_type tinyint(2) DEFAULT '0' NOT NULL, +	group_avatar_type varbinary(255) DEFAULT '' NOT NULL,  	group_avatar_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL,  	group_avatar_height smallint(4) UNSIGNED DEFAULT '0' NOT NULL,  	group_rank mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, @@ -317,7 +334,7 @@ CREATE TABLE phpbb_groups (  	group_receive_pm tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	group_message_limit mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,  	group_max_recipients mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	group_legend tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, +	group_legend mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,  	PRIMARY KEY (group_id),  	KEY group_legend_name (group_legend, group_name(255))  ); @@ -363,6 +380,7 @@ CREATE TABLE phpbb_log (  	log_data mediumblob NOT NULL,  	PRIMARY KEY (log_id),  	KEY log_type (log_type), +	KEY log_time (log_time),  	KEY forum_id (forum_id),  	KEY topic_id (topic_id),  	KEY reportee_id (reportee_id), @@ -399,6 +417,19 @@ CREATE TABLE phpbb_moderator_cache (  ); +# Table: 'phpbb_migrations' +CREATE TABLE phpbb_migrations ( +	migration_name varbinary(255) DEFAULT '' NOT NULL, +	migration_depends_on blob NOT NULL, +	migration_schema_done tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	migration_data_done tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	migration_data_state blob NOT NULL, +	migration_start_time int(11) UNSIGNED DEFAULT '0' NOT NULL, +	migration_end_time int(11) UNSIGNED DEFAULT '0' NOT NULL, +	PRIMARY KEY (migration_name) +); + +  # Table: 'phpbb_modules'  CREATE TABLE phpbb_modules (  	module_id mediumint(8) UNSIGNED NOT NULL auto_increment, @@ -419,6 +450,30 @@ CREATE TABLE phpbb_modules (  ); +# Table: 'phpbb_notification_types' +CREATE TABLE phpbb_notification_types ( +	notification_type varbinary(255) DEFAULT '' NOT NULL, +	notification_type_enabled tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, +	PRIMARY KEY (notification_type, notification_type_enabled) +); + + +# Table: 'phpbb_notifications' +CREATE TABLE phpbb_notifications ( +	notification_id mediumint(8) UNSIGNED NOT NULL auto_increment, +	item_type varbinary(255) DEFAULT '' NOT NULL, +	item_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	item_parent_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	notification_read tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	notification_time int(11) UNSIGNED DEFAULT '1' NOT NULL, +	notification_data blob NOT NULL, +	PRIMARY KEY (notification_id), +	KEY item_ident (item_type, item_id), +	KEY user (user_id, notification_read) +); + +  # Table: 'phpbb_poll_options'  CREATE TABLE phpbb_poll_options (  	poll_option_id tinyint(4) DEFAULT '0' NOT NULL, @@ -573,6 +628,7 @@ CREATE TABLE phpbb_profile_fields (  	field_required tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	field_show_novalue tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	field_show_on_reg tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	field_show_on_pm tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	field_show_on_vt tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	field_show_profile tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	field_hide tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, @@ -636,6 +692,12 @@ CREATE TABLE phpbb_reports (  	report_closed tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	report_time int(11) UNSIGNED DEFAULT '0' NOT NULL,  	report_text mediumblob NOT NULL, +	reported_post_text mediumblob NOT NULL, +	reported_post_uid varbinary(8) DEFAULT '' NOT NULL, +	reported_post_bitfield varbinary(255) DEFAULT '' NOT NULL, +	reported_post_enable_magic_url tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, +	reported_post_enable_smilies tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, +	reported_post_enable_bbcode tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,  	PRIMARY KEY (report_id),  	KEY post_id (post_id),  	KEY pm_id (pm_id) @@ -749,80 +811,23 @@ CREATE TABLE phpbb_styles (  	style_name blob NOT NULL,  	style_copyright blob NOT NULL,  	style_active tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, -	template_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	theme_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	imageset_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	PRIMARY KEY (style_id), -	UNIQUE style_name (style_name(255)), -	KEY template_id (template_id), -	KEY theme_id (theme_id), -	KEY imageset_id (imageset_id) -); - - -# Table: 'phpbb_styles_template' -CREATE TABLE phpbb_styles_template ( -	template_id mediumint(8) UNSIGNED NOT NULL auto_increment, -	template_name blob NOT NULL, -	template_copyright blob NOT NULL, -	template_path varbinary(100) DEFAULT '' NOT NULL, +	style_path varbinary(100) DEFAULT '' NOT NULL,  	bbcode_bitfield varbinary(255) DEFAULT 'kNg=' NOT NULL, -	template_storedb tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, -	template_inherits_id int(4) UNSIGNED DEFAULT '0' NOT NULL, -	template_inherit_path varbinary(255) DEFAULT '' NOT NULL, -	PRIMARY KEY (template_id), -	UNIQUE tmplte_nm (template_name(255)) -); - - -# Table: 'phpbb_styles_template_data' -CREATE TABLE phpbb_styles_template_data ( -	template_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	template_filename varbinary(100) DEFAULT '' NOT NULL, -	template_included blob NOT NULL, -	template_mtime int(11) UNSIGNED DEFAULT '0' NOT NULL, -	template_data mediumblob NOT NULL, -	KEY tid (template_id), -	KEY tfn (template_filename) -); - - -# Table: 'phpbb_styles_theme' -CREATE TABLE phpbb_styles_theme ( -	theme_id mediumint(8) UNSIGNED NOT NULL auto_increment, -	theme_name blob NOT NULL, -	theme_copyright blob NOT NULL, -	theme_path varbinary(100) DEFAULT '' NOT NULL, -	theme_storedb tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, -	theme_mtime int(11) UNSIGNED DEFAULT '0' NOT NULL, -	theme_data mediumblob NOT NULL, -	PRIMARY KEY (theme_id), -	UNIQUE theme_name (theme_name(255)) -); - - -# Table: 'phpbb_styles_imageset' -CREATE TABLE phpbb_styles_imageset ( -	imageset_id mediumint(8) UNSIGNED NOT NULL auto_increment, -	imageset_name blob NOT NULL, -	imageset_copyright blob NOT NULL, -	imageset_path varbinary(100) DEFAULT '' NOT NULL, -	PRIMARY KEY (imageset_id), -	UNIQUE imgset_nm (imageset_name(255)) +	style_parent_id int(4) UNSIGNED DEFAULT '0' NOT NULL, +	style_parent_tree blob NOT NULL, +	PRIMARY KEY (style_id), +	UNIQUE style_name (style_name(255))  ); -# Table: 'phpbb_styles_imageset_data' -CREATE TABLE phpbb_styles_imageset_data ( -	image_id mediumint(8) UNSIGNED NOT NULL auto_increment, -	image_name varbinary(200) DEFAULT '' NOT NULL, -	image_filename varbinary(200) DEFAULT '' NOT NULL, -	image_lang varbinary(30) DEFAULT '' NOT NULL, -	image_height smallint(4) UNSIGNED DEFAULT '0' NOT NULL, -	image_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL, -	imageset_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	PRIMARY KEY (image_id), -	KEY i_d (imageset_id) +# Table: 'phpbb_teampage' +CREATE TABLE phpbb_teampage ( +	teampage_id mediumint(8) UNSIGNED NOT NULL auto_increment, +	group_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	teampage_name blob NOT NULL, +	teampage_position mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	teampage_parent mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	PRIMARY KEY (teampage_id)  ); @@ -904,6 +909,16 @@ CREATE TABLE phpbb_topics_watch (  ); +# Table: 'phpbb_user_notifications' +CREATE TABLE phpbb_user_notifications ( +	item_type varbinary(255) DEFAULT '' NOT NULL, +	item_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	method varbinary(255) DEFAULT '' NOT NULL, +	notify tinyint(1) UNSIGNED DEFAULT '1' NOT NULL +); + +  # Table: 'phpbb_user_group'  CREATE TABLE phpbb_user_group (  	group_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, @@ -946,8 +961,7 @@ CREATE TABLE phpbb_users (  	user_inactive_time int(11) UNSIGNED DEFAULT '0' NOT NULL,  	user_posts mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,  	user_lang varbinary(30) DEFAULT '' NOT NULL, -	user_timezone decimal(5,2) DEFAULT '0' NOT NULL, -	user_dst tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	user_timezone varbinary(100) DEFAULT 'UTC' NOT NULL,  	user_dateformat varbinary(90) DEFAULT 'd M Y H:i' NOT NULL,  	user_style mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,  	user_rank mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, @@ -973,7 +987,7 @@ CREATE TABLE phpbb_users (  	user_allow_massemail tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,  	user_options int(11) UNSIGNED DEFAULT '230271' NOT NULL,  	user_avatar varbinary(255) DEFAULT '' NOT NULL, -	user_avatar_type tinyint(2) DEFAULT '0' NOT NULL, +	user_avatar_type varbinary(255) DEFAULT '' NOT NULL,  	user_avatar_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL,  	user_avatar_height smallint(4) UNSIGNED DEFAULT '0' NOT NULL,  	user_sig mediumblob NOT NULL, diff --git a/phpBB/install/schemas/mysql_41_schema.sql b/phpBB/install/schemas/mysql_41_schema.sql index 15d34894d8..cb259aa57d 100644 --- a/phpBB/install/schemas/mysql_41_schema.sql +++ b/phpBB/install/schemas/mysql_41_schema.sql @@ -157,6 +157,14 @@ CREATE TABLE phpbb_config (  ) CHARACTER SET `utf8` COLLATE `utf8_bin`; +# Table: 'phpbb_config_text' +CREATE TABLE phpbb_config_text ( +	config_name varchar(255) DEFAULT '' NOT NULL, +	config_value mediumtext NOT NULL, +	PRIMARY KEY (config_name) +) CHARACTER SET `utf8` COLLATE `utf8_bin`; + +  # Table: 'phpbb_confirm'  CREATE TABLE phpbb_confirm (  	confirm_id char(32) DEFAULT '' NOT NULL, @@ -192,6 +200,15 @@ CREATE TABLE phpbb_drafts (  ) CHARACTER SET `utf8` COLLATE `utf8_bin`; +# Table: 'phpbb_ext' +CREATE TABLE phpbb_ext ( +	ext_name varchar(255) DEFAULT '' NOT NULL, +	ext_active tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	ext_state text NOT NULL, +	UNIQUE ext_name (ext_name) +) CHARACTER SET `utf8` COLLATE `utf8_bin`; + +  # Table: 'phpbb_extensions'  CREATE TABLE phpbb_extensions (  	extension_id mediumint(8) UNSIGNED NOT NULL auto_increment, @@ -308,7 +325,7 @@ CREATE TABLE phpbb_groups (  	group_desc_uid varchar(8) DEFAULT '' NOT NULL,  	group_display tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	group_avatar varchar(255) DEFAULT '' NOT NULL, -	group_avatar_type tinyint(2) DEFAULT '0' NOT NULL, +	group_avatar_type varchar(255) DEFAULT '' NOT NULL,  	group_avatar_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL,  	group_avatar_height smallint(4) UNSIGNED DEFAULT '0' NOT NULL,  	group_rank mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, @@ -317,7 +334,7 @@ CREATE TABLE phpbb_groups (  	group_receive_pm tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	group_message_limit mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,  	group_max_recipients mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	group_legend tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, +	group_legend mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,  	PRIMARY KEY (group_id),  	KEY group_legend_name (group_legend, group_name)  ) CHARACTER SET `utf8` COLLATE `utf8_bin`; @@ -363,6 +380,7 @@ CREATE TABLE phpbb_log (  	log_data mediumtext NOT NULL,  	PRIMARY KEY (log_id),  	KEY log_type (log_type), +	KEY log_time (log_time),  	KEY forum_id (forum_id),  	KEY topic_id (topic_id),  	KEY reportee_id (reportee_id), @@ -399,6 +417,19 @@ CREATE TABLE phpbb_moderator_cache (  ) CHARACTER SET `utf8` COLLATE `utf8_bin`; +# Table: 'phpbb_migrations' +CREATE TABLE phpbb_migrations ( +	migration_name varchar(255) DEFAULT '' NOT NULL, +	migration_depends_on text NOT NULL, +	migration_schema_done tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	migration_data_done tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	migration_data_state text NOT NULL, +	migration_start_time int(11) UNSIGNED DEFAULT '0' NOT NULL, +	migration_end_time int(11) UNSIGNED DEFAULT '0' NOT NULL, +	PRIMARY KEY (migration_name) +) CHARACTER SET `utf8` COLLATE `utf8_bin`; + +  # Table: 'phpbb_modules'  CREATE TABLE phpbb_modules (  	module_id mediumint(8) UNSIGNED NOT NULL auto_increment, @@ -419,6 +450,30 @@ CREATE TABLE phpbb_modules (  ) CHARACTER SET `utf8` COLLATE `utf8_bin`; +# Table: 'phpbb_notification_types' +CREATE TABLE phpbb_notification_types ( +	notification_type varchar(255) DEFAULT '' NOT NULL, +	notification_type_enabled tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, +	PRIMARY KEY (notification_type, notification_type_enabled) +) CHARACTER SET `utf8` COLLATE `utf8_bin`; + + +# Table: 'phpbb_notifications' +CREATE TABLE phpbb_notifications ( +	notification_id mediumint(8) UNSIGNED NOT NULL auto_increment, +	item_type varchar(255) DEFAULT '' NOT NULL, +	item_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	item_parent_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	notification_read tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	notification_time int(11) UNSIGNED DEFAULT '1' NOT NULL, +	notification_data text NOT NULL, +	PRIMARY KEY (notification_id), +	KEY item_ident (item_type, item_id), +	KEY user (user_id, notification_read) +) CHARACTER SET `utf8` COLLATE `utf8_bin`; + +  # Table: 'phpbb_poll_options'  CREATE TABLE phpbb_poll_options (  	poll_option_id tinyint(4) DEFAULT '0' NOT NULL, @@ -573,6 +628,7 @@ CREATE TABLE phpbb_profile_fields (  	field_required tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	field_show_novalue tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	field_show_on_reg tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	field_show_on_pm tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	field_show_on_vt tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	field_show_profile tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	field_hide tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, @@ -636,6 +692,12 @@ CREATE TABLE phpbb_reports (  	report_closed tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,  	report_time int(11) UNSIGNED DEFAULT '0' NOT NULL,  	report_text mediumtext NOT NULL, +	reported_post_text mediumtext NOT NULL, +	reported_post_uid varchar(8) DEFAULT '' NOT NULL, +	reported_post_bitfield varchar(255) DEFAULT '' NOT NULL, +	reported_post_enable_magic_url tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, +	reported_post_enable_smilies tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, +	reported_post_enable_bbcode tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,  	PRIMARY KEY (report_id),  	KEY post_id (post_id),  	KEY pm_id (pm_id) @@ -749,80 +811,23 @@ CREATE TABLE phpbb_styles (  	style_name varchar(255) DEFAULT '' NOT NULL,  	style_copyright varchar(255) DEFAULT '' NOT NULL,  	style_active tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, -	template_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	theme_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	imageset_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	PRIMARY KEY (style_id), -	UNIQUE style_name (style_name), -	KEY template_id (template_id), -	KEY theme_id (theme_id), -	KEY imageset_id (imageset_id) -) CHARACTER SET `utf8` COLLATE `utf8_bin`; - - -# Table: 'phpbb_styles_template' -CREATE TABLE phpbb_styles_template ( -	template_id mediumint(8) UNSIGNED NOT NULL auto_increment, -	template_name varchar(255) DEFAULT '' NOT NULL, -	template_copyright varchar(255) DEFAULT '' NOT NULL, -	template_path varchar(100) DEFAULT '' NOT NULL, +	style_path varchar(100) DEFAULT '' NOT NULL,  	bbcode_bitfield varchar(255) DEFAULT 'kNg=' NOT NULL, -	template_storedb tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, -	template_inherits_id int(4) UNSIGNED DEFAULT '0' NOT NULL, -	template_inherit_path varchar(255) DEFAULT '' NOT NULL, -	PRIMARY KEY (template_id), -	UNIQUE tmplte_nm (template_name) -) CHARACTER SET `utf8` COLLATE `utf8_bin`; - - -# Table: 'phpbb_styles_template_data' -CREATE TABLE phpbb_styles_template_data ( -	template_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	template_filename varchar(100) DEFAULT '' NOT NULL, -	template_included text NOT NULL, -	template_mtime int(11) UNSIGNED DEFAULT '0' NOT NULL, -	template_data mediumtext NOT NULL, -	KEY tid (template_id), -	KEY tfn (template_filename) -) CHARACTER SET `utf8` COLLATE `utf8_bin`; - - -# Table: 'phpbb_styles_theme' -CREATE TABLE phpbb_styles_theme ( -	theme_id mediumint(8) UNSIGNED NOT NULL auto_increment, -	theme_name varchar(255) DEFAULT '' NOT NULL, -	theme_copyright varchar(255) DEFAULT '' NOT NULL, -	theme_path varchar(100) DEFAULT '' NOT NULL, -	theme_storedb tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, -	theme_mtime int(11) UNSIGNED DEFAULT '0' NOT NULL, -	theme_data mediumtext NOT NULL, -	PRIMARY KEY (theme_id), -	UNIQUE theme_name (theme_name) -) CHARACTER SET `utf8` COLLATE `utf8_bin`; - - -# Table: 'phpbb_styles_imageset' -CREATE TABLE phpbb_styles_imageset ( -	imageset_id mediumint(8) UNSIGNED NOT NULL auto_increment, -	imageset_name varchar(255) DEFAULT '' NOT NULL, -	imageset_copyright varchar(255) DEFAULT '' NOT NULL, -	imageset_path varchar(100) DEFAULT '' NOT NULL, -	PRIMARY KEY (imageset_id), -	UNIQUE imgset_nm (imageset_name) +	style_parent_id int(4) UNSIGNED DEFAULT '0' NOT NULL, +	style_parent_tree text NOT NULL, +	PRIMARY KEY (style_id), +	UNIQUE style_name (style_name)  ) CHARACTER SET `utf8` COLLATE `utf8_bin`; -# Table: 'phpbb_styles_imageset_data' -CREATE TABLE phpbb_styles_imageset_data ( -	image_id mediumint(8) UNSIGNED NOT NULL auto_increment, -	image_name varchar(200) DEFAULT '' NOT NULL, -	image_filename varchar(200) DEFAULT '' NOT NULL, -	image_lang varchar(30) DEFAULT '' NOT NULL, -	image_height smallint(4) UNSIGNED DEFAULT '0' NOT NULL, -	image_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL, -	imageset_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, -	PRIMARY KEY (image_id), -	KEY i_d (imageset_id) +# Table: 'phpbb_teampage' +CREATE TABLE phpbb_teampage ( +	teampage_id mediumint(8) UNSIGNED NOT NULL auto_increment, +	group_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	teampage_name varchar(255) DEFAULT '' NOT NULL, +	teampage_position mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	teampage_parent mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	PRIMARY KEY (teampage_id)  ) CHARACTER SET `utf8` COLLATE `utf8_bin`; @@ -904,6 +909,16 @@ CREATE TABLE phpbb_topics_watch (  ) CHARACTER SET `utf8` COLLATE `utf8_bin`; +# Table: 'phpbb_user_notifications' +CREATE TABLE phpbb_user_notifications ( +	item_type varchar(255) DEFAULT '' NOT NULL, +	item_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, +	method varchar(255) DEFAULT '' NOT NULL, +	notify tinyint(1) UNSIGNED DEFAULT '1' NOT NULL +) CHARACTER SET `utf8` COLLATE `utf8_bin`; + +  # Table: 'phpbb_user_group'  CREATE TABLE phpbb_user_group (  	group_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, @@ -946,8 +961,7 @@ CREATE TABLE phpbb_users (  	user_inactive_time int(11) UNSIGNED DEFAULT '0' NOT NULL,  	user_posts mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,  	user_lang varchar(30) DEFAULT '' NOT NULL, -	user_timezone decimal(5,2) DEFAULT '0' NOT NULL, -	user_dst tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, +	user_timezone varchar(100) DEFAULT 'UTC' NOT NULL,  	user_dateformat varchar(30) DEFAULT 'd M Y H:i' NOT NULL,  	user_style mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,  	user_rank mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, @@ -973,7 +987,7 @@ CREATE TABLE phpbb_users (  	user_allow_massemail tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,  	user_options int(11) UNSIGNED DEFAULT '230271' NOT NULL,  	user_avatar varchar(255) DEFAULT '' NOT NULL, -	user_avatar_type tinyint(2) DEFAULT '0' NOT NULL, +	user_avatar_type varchar(255) DEFAULT '' NOT NULL,  	user_avatar_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL,  	user_avatar_height smallint(4) UNSIGNED DEFAULT '0' NOT NULL,  	user_sig mediumtext NOT NULL, diff --git a/phpBB/install/schemas/oracle_schema.sql b/phpBB/install/schemas/oracle_schema.sql index af7b2b60ec..35f05e34cd 100644 --- a/phpBB/install/schemas/oracle_schema.sql +++ b/phpBB/install/schemas/oracle_schema.sql @@ -332,6 +332,17 @@ CREATE INDEX phpbb_config_is_dynamic ON phpbb_config (is_dynamic)  /  /* +	Table: 'phpbb_config_text' +*/ +CREATE TABLE phpbb_config_text ( +	config_name varchar2(255) DEFAULT '' , +	config_value clob DEFAULT '' , +	CONSTRAINT pk_phpbb_config_text PRIMARY KEY (config_name) +) +/ + + +/*  	Table: 'phpbb_confirm'  */  CREATE TABLE phpbb_confirm ( @@ -410,6 +421,18 @@ END;  /* +	Table: 'phpbb_ext' +*/ +CREATE TABLE phpbb_ext ( +	ext_name varchar2(255) DEFAULT '' , +	ext_active number(1) DEFAULT '0' NOT NULL, +	ext_state clob DEFAULT '' , +	CONSTRAINT u_phpbb_ext_name UNIQUE (ext_name) +) +/ + + +/*  	Table: 'phpbb_extensions'  */  CREATE TABLE phpbb_extensions ( @@ -598,7 +621,7 @@ CREATE TABLE phpbb_groups (  	group_desc_uid varchar2(8) DEFAULT '' ,  	group_display number(1) DEFAULT '0' NOT NULL,  	group_avatar varchar2(255) DEFAULT '' , -	group_avatar_type number(2) DEFAULT '0' NOT NULL, +	group_avatar_type varchar2(255) DEFAULT '' ,  	group_avatar_width number(4) DEFAULT '0' NOT NULL,  	group_avatar_height number(4) DEFAULT '0' NOT NULL,  	group_rank number(8) DEFAULT '0' NOT NULL, @@ -607,7 +630,7 @@ CREATE TABLE phpbb_groups (  	group_receive_pm number(1) DEFAULT '0' NOT NULL,  	group_message_limit number(8) DEFAULT '0' NOT NULL,  	group_max_recipients number(8) DEFAULT '0' NOT NULL, -	group_legend number(1) DEFAULT '1' NOT NULL, +	group_legend number(8) DEFAULT '0' NOT NULL,  	CONSTRAINT pk_phpbb_groups PRIMARY KEY (group_id)  )  / @@ -717,6 +740,8 @@ CREATE TABLE phpbb_log (  CREATE INDEX phpbb_log_log_type ON phpbb_log (log_type)  / +CREATE INDEX phpbb_log_log_time ON phpbb_log (log_time) +/  CREATE INDEX phpbb_log_forum_id ON phpbb_log (forum_id)  /  CREATE INDEX phpbb_log_topic_id ON phpbb_log (topic_id) @@ -784,6 +809,22 @@ CREATE INDEX phpbb_moderator_cache_forum_id ON phpbb_moderator_cache (forum_id)  /  /* +	Table: 'phpbb_migrations' +*/ +CREATE TABLE phpbb_migrations ( +	migration_name varchar2(255) DEFAULT '' , +	migration_depends_on clob DEFAULT '' , +	migration_schema_done number(1) DEFAULT '0' NOT NULL, +	migration_data_done number(1) DEFAULT '0' NOT NULL, +	migration_data_state clob DEFAULT '' , +	migration_start_time number(11) DEFAULT '0' NOT NULL, +	migration_end_time number(11) DEFAULT '0' NOT NULL, +	CONSTRAINT pk_phpbb_migrations PRIMARY KEY (migration_name) +) +/ + + +/*  	Table: 'phpbb_modules'  */  CREATE TABLE phpbb_modules ( @@ -826,6 +867,54 @@ END;  /* +	Table: 'phpbb_notification_types' +*/ +CREATE TABLE phpbb_notification_types ( +	notification_type varchar2(255) DEFAULT '' , +	notification_type_enabled number(1) DEFAULT '1' NOT NULL, +	CONSTRAINT pk_phpbb_notification_types PRIMARY KEY (notification_type, notification_type_enabled) +) +/ + + +/* +	Table: 'phpbb_notifications' +*/ +CREATE TABLE phpbb_notifications ( +	notification_id number(8) NOT NULL, +	item_type varchar2(255) DEFAULT '' , +	item_id number(8) DEFAULT '0' NOT NULL, +	item_parent_id number(8) DEFAULT '0' NOT NULL, +	user_id number(8) DEFAULT '0' NOT NULL, +	notification_read number(1) DEFAULT '0' NOT NULL, +	notification_time number(11) DEFAULT '1' NOT NULL, +	notification_data clob DEFAULT '' , +	CONSTRAINT pk_phpbb_notifications PRIMARY KEY (notification_id) +) +/ + +CREATE INDEX phpbb_notifications_item_ident ON phpbb_notifications (item_type, item_id) +/ +CREATE INDEX phpbb_notifications_user ON phpbb_notifications (user_id, notification_read) +/ + +CREATE SEQUENCE phpbb_notifications_seq +/ + +CREATE OR REPLACE TRIGGER t_phpbb_notifications +BEFORE INSERT ON phpbb_notifications +FOR EACH ROW WHEN ( +	new.notification_id IS NULL OR new.notification_id = 0 +) +BEGIN +	SELECT phpbb_notifications_seq.nextval +	INTO :new.notification_id +	FROM dual; +END; +/ + + +/*  	Table: 'phpbb_poll_options'  */  CREATE TABLE phpbb_poll_options ( @@ -1087,6 +1176,7 @@ CREATE TABLE phpbb_profile_fields (  	field_required number(1) DEFAULT '0' NOT NULL,  	field_show_novalue number(1) DEFAULT '0' NOT NULL,  	field_show_on_reg number(1) DEFAULT '0' NOT NULL, +	field_show_on_pm number(1) DEFAULT '0' NOT NULL,  	field_show_on_vt number(1) DEFAULT '0' NOT NULL,  	field_show_profile number(1) DEFAULT '0' NOT NULL,  	field_hide number(1) DEFAULT '0' NOT NULL, @@ -1199,6 +1289,12 @@ CREATE TABLE phpbb_reports (  	report_closed number(1) DEFAULT '0' NOT NULL,  	report_time number(11) DEFAULT '0' NOT NULL,  	report_text clob DEFAULT '' , +	reported_post_text clob DEFAULT '' , +	reported_post_uid varchar2(8) DEFAULT '' , +	reported_post_bitfield varchar2(255) DEFAULT '' , +	reported_post_enable_magic_url number(1) DEFAULT '1' NOT NULL, +	reported_post_enable_smilies number(1) DEFAULT '1' NOT NULL, +	reported_post_enable_bbcode number(1) DEFAULT '1' NOT NULL,  	CONSTRAINT pk_phpbb_reports PRIMARY KEY (report_id)  )  / @@ -1429,20 +1525,15 @@ CREATE TABLE phpbb_styles (  	style_name varchar2(765) DEFAULT '' ,  	style_copyright varchar2(765) DEFAULT '' ,  	style_active number(1) DEFAULT '1' NOT NULL, -	template_id number(8) DEFAULT '0' NOT NULL, -	theme_id number(8) DEFAULT '0' NOT NULL, -	imageset_id number(8) DEFAULT '0' NOT NULL, +	style_path varchar2(100) DEFAULT '' , +	bbcode_bitfield varchar2(255) DEFAULT 'kNg=' NOT NULL, +	style_parent_id number(4) DEFAULT '0' NOT NULL, +	style_parent_tree clob DEFAULT '' ,  	CONSTRAINT pk_phpbb_styles PRIMARY KEY (style_id),  	CONSTRAINT u_phpbb_style_name UNIQUE (style_name)  )  / -CREATE INDEX phpbb_styles_template_id ON phpbb_styles (template_id) -/ -CREATE INDEX phpbb_styles_theme_id ON phpbb_styles (theme_id) -/ -CREATE INDEX phpbb_styles_imageset_id ON phpbb_styles (imageset_id) -/  CREATE SEQUENCE phpbb_styles_seq  / @@ -1461,148 +1552,30 @@ END;  /* -	Table: 'phpbb_styles_template' +	Table: 'phpbb_teampage'  */ -CREATE TABLE phpbb_styles_template ( -	template_id number(8) NOT NULL, -	template_name varchar2(765) DEFAULT '' , -	template_copyright varchar2(765) DEFAULT '' , -	template_path varchar2(100) DEFAULT '' , -	bbcode_bitfield varchar2(255) DEFAULT 'kNg=' NOT NULL, -	template_storedb number(1) DEFAULT '0' NOT NULL, -	template_inherits_id number(4) DEFAULT '0' NOT NULL, -	template_inherit_path varchar2(255) DEFAULT '' , -	CONSTRAINT pk_phpbb_styles_template PRIMARY KEY (template_id), -	CONSTRAINT u_phpbb_tmplte_nm UNIQUE (template_name) -) -/ - - -CREATE SEQUENCE phpbb_styles_template_seq -/ - -CREATE OR REPLACE TRIGGER t_phpbb_styles_template -BEFORE INSERT ON phpbb_styles_template -FOR EACH ROW WHEN ( -	new.template_id IS NULL OR new.template_id = 0 -) -BEGIN -	SELECT phpbb_styles_template_seq.nextval -	INTO :new.template_id -	FROM dual; -END; -/ - - -/* -	Table: 'phpbb_styles_template_data' -*/ -CREATE TABLE phpbb_styles_template_data ( -	template_id number(8) DEFAULT '0' NOT NULL, -	template_filename varchar2(100) DEFAULT '' , -	template_included clob DEFAULT '' , -	template_mtime number(11) DEFAULT '0' NOT NULL, -	template_data clob DEFAULT ''  -) -/ - -CREATE INDEX phpbb_styles_template_data_tid ON phpbb_styles_template_data (template_id) -/ -CREATE INDEX phpbb_styles_template_data_tfn ON phpbb_styles_template_data (template_filename) -/ - -/* -	Table: 'phpbb_styles_theme' -*/ -CREATE TABLE phpbb_styles_theme ( -	theme_id number(8) NOT NULL, -	theme_name varchar2(765) DEFAULT '' , -	theme_copyright varchar2(765) DEFAULT '' , -	theme_path varchar2(100) DEFAULT '' , -	theme_storedb number(1) DEFAULT '0' NOT NULL, -	theme_mtime number(11) DEFAULT '0' NOT NULL, -	theme_data clob DEFAULT '' , -	CONSTRAINT pk_phpbb_styles_theme PRIMARY KEY (theme_id), -	CONSTRAINT u_phpbb_theme_name UNIQUE (theme_name) -) -/ - - -CREATE SEQUENCE phpbb_styles_theme_seq -/ - -CREATE OR REPLACE TRIGGER t_phpbb_styles_theme -BEFORE INSERT ON phpbb_styles_theme -FOR EACH ROW WHEN ( -	new.theme_id IS NULL OR new.theme_id = 0 -) -BEGIN -	SELECT phpbb_styles_theme_seq.nextval -	INTO :new.theme_id -	FROM dual; -END; -/ - - -/* -	Table: 'phpbb_styles_imageset' -*/ -CREATE TABLE phpbb_styles_imageset ( -	imageset_id number(8) NOT NULL, -	imageset_name varchar2(765) DEFAULT '' , -	imageset_copyright varchar2(765) DEFAULT '' , -	imageset_path varchar2(100) DEFAULT '' , -	CONSTRAINT pk_phpbb_styles_imageset PRIMARY KEY (imageset_id), -	CONSTRAINT u_phpbb_imgset_nm UNIQUE (imageset_name) -) -/ - - -CREATE SEQUENCE phpbb_styles_imageset_seq -/ - -CREATE OR REPLACE TRIGGER t_phpbb_styles_imageset -BEFORE INSERT ON phpbb_styles_imageset -FOR EACH ROW WHEN ( -	new.imageset_id IS NULL OR new.imageset_id = 0 -) -BEGIN -	SELECT phpbb_styles_imageset_seq.nextval -	INTO :new.imageset_id -	FROM dual; -END; -/ - - -/* -	Table: 'phpbb_styles_imageset_data' -*/ -CREATE TABLE phpbb_styles_imageset_data ( -	image_id number(8) NOT NULL, -	image_name varchar2(200) DEFAULT '' , -	image_filename varchar2(200) DEFAULT '' , -	image_lang varchar2(30) DEFAULT '' , -	image_height number(4) DEFAULT '0' NOT NULL, -	image_width number(4) DEFAULT '0' NOT NULL, -	imageset_id number(8) DEFAULT '0' NOT NULL, -	CONSTRAINT pk_phpbb_styles_imageset_data PRIMARY KEY (image_id) +CREATE TABLE phpbb_teampage ( +	teampage_id number(8) NOT NULL, +	group_id number(8) DEFAULT '0' NOT NULL, +	teampage_name varchar2(765) DEFAULT '' , +	teampage_position number(8) DEFAULT '0' NOT NULL, +	teampage_parent number(8) DEFAULT '0' NOT NULL, +	CONSTRAINT pk_phpbb_teampage PRIMARY KEY (teampage_id)  )  / -CREATE INDEX phpbb_styles_imageset_data_i_d ON phpbb_styles_imageset_data (imageset_id) -/ -CREATE SEQUENCE phpbb_styles_imageset_data_seq +CREATE SEQUENCE phpbb_teampage_seq  / -CREATE OR REPLACE TRIGGER t_phpbb_styles_imageset_data -BEFORE INSERT ON phpbb_styles_imageset_data +CREATE OR REPLACE TRIGGER t_phpbb_teampage +BEFORE INSERT ON phpbb_teampage  FOR EACH ROW WHEN ( -	new.image_id IS NULL OR new.image_id = 0 +	new.teampage_id IS NULL OR new.teampage_id = 0  )  BEGIN -	SELECT phpbb_styles_imageset_data_seq.nextval -	INTO :new.image_id +	SELECT phpbb_teampage_seq.nextval +	INTO :new.teampage_id  	FROM dual;  END;  / @@ -1726,6 +1699,19 @@ CREATE INDEX phpbb_topics_watch_notify_stat ON phpbb_topics_watch (notify_status  /  /* +	Table: 'phpbb_user_notifications' +*/ +CREATE TABLE phpbb_user_notifications ( +	item_type varchar2(255) DEFAULT '' , +	item_id number(8) DEFAULT '0' NOT NULL, +	user_id number(8) DEFAULT '0' NOT NULL, +	method varchar2(255) DEFAULT '' , +	notify number(1) DEFAULT '1' NOT NULL +) +/ + + +/*  	Table: 'phpbb_user_group'  */  CREATE TABLE phpbb_user_group ( @@ -1775,8 +1761,7 @@ CREATE TABLE phpbb_users (  	user_inactive_time number(11) DEFAULT '0' NOT NULL,  	user_posts number(8) DEFAULT '0' NOT NULL,  	user_lang varchar2(30) DEFAULT '' , -	user_timezone number(5, 2) DEFAULT '0' NOT NULL, -	user_dst number(1) DEFAULT '0' NOT NULL, +	user_timezone varchar2(100) DEFAULT 'UTC' NOT NULL,  	user_dateformat varchar2(90) DEFAULT 'd M Y H:i' NOT NULL,  	user_style number(8) DEFAULT '0' NOT NULL,  	user_rank number(8) DEFAULT '0' NOT NULL, @@ -1802,7 +1787,7 @@ CREATE TABLE phpbb_users (  	user_allow_massemail number(1) DEFAULT '1' NOT NULL,  	user_options number(11) DEFAULT '230271' NOT NULL,  	user_avatar varchar2(255) DEFAULT '' , -	user_avatar_type number(2) DEFAULT '0' NOT NULL, +	user_avatar_type varchar2(255) DEFAULT '' ,  	user_avatar_width number(4) DEFAULT '0' NOT NULL,  	user_avatar_height number(4) DEFAULT '0' NOT NULL,  	user_sig clob DEFAULT '' , diff --git a/phpBB/install/schemas/postgres_schema.sql b/phpBB/install/schemas/postgres_schema.sql index 0a05a7cd75..6dc507b46d 100644 --- a/phpBB/install/schemas/postgres_schema.sql +++ b/phpBB/install/schemas/postgres_schema.sql @@ -270,6 +270,16 @@ CREATE TABLE phpbb_config (  CREATE INDEX phpbb_config_is_dynamic ON phpbb_config (is_dynamic);  /* +	Table: 'phpbb_config_text' +*/ +CREATE TABLE phpbb_config_text ( +	config_name varchar(255) DEFAULT '' NOT NULL, +	config_value TEXT DEFAULT '' NOT NULL, +	PRIMARY KEY (config_name) +); + + +/*  	Table: 'phpbb_confirm'  */  CREATE TABLE phpbb_confirm ( @@ -315,6 +325,17 @@ CREATE TABLE phpbb_drafts (  CREATE INDEX phpbb_drafts_save_time ON phpbb_drafts (save_time);  /* +	Table: 'phpbb_ext' +*/ +CREATE TABLE phpbb_ext ( +	ext_name varchar(255) DEFAULT '' NOT NULL, +	ext_active INT2 DEFAULT '0' NOT NULL CHECK (ext_active >= 0), +	ext_state varchar(8000) DEFAULT '' NOT NULL +); + +CREATE UNIQUE INDEX phpbb_ext_ext_name ON phpbb_ext (ext_name); + +/*  	Table: 'phpbb_extensions'  */  CREATE SEQUENCE phpbb_extensions_seq; @@ -452,7 +473,7 @@ CREATE TABLE phpbb_groups (  	group_desc_uid varchar(8) DEFAULT '' NOT NULL,  	group_display INT2 DEFAULT '0' NOT NULL CHECK (group_display >= 0),  	group_avatar varchar(255) DEFAULT '' NOT NULL, -	group_avatar_type INT2 DEFAULT '0' NOT NULL, +	group_avatar_type varchar(255) DEFAULT '' NOT NULL,  	group_avatar_width INT2 DEFAULT '0' NOT NULL CHECK (group_avatar_width >= 0),  	group_avatar_height INT2 DEFAULT '0' NOT NULL CHECK (group_avatar_height >= 0),  	group_rank INT4 DEFAULT '0' NOT NULL CHECK (group_rank >= 0), @@ -461,7 +482,7 @@ CREATE TABLE phpbb_groups (  	group_receive_pm INT2 DEFAULT '0' NOT NULL CHECK (group_receive_pm >= 0),  	group_message_limit INT4 DEFAULT '0' NOT NULL CHECK (group_message_limit >= 0),  	group_max_recipients INT4 DEFAULT '0' NOT NULL CHECK (group_max_recipients >= 0), -	group_legend INT2 DEFAULT '1' NOT NULL CHECK (group_legend >= 0), +	group_legend INT4 DEFAULT '0' NOT NULL CHECK (group_legend >= 0),  	PRIMARY KEY (group_id)  ); @@ -521,6 +542,7 @@ CREATE TABLE phpbb_log (  );  CREATE INDEX phpbb_log_log_type ON phpbb_log (log_type); +CREATE INDEX phpbb_log_log_time ON phpbb_log (log_time);  CREATE INDEX phpbb_log_forum_id ON phpbb_log (forum_id);  CREATE INDEX phpbb_log_topic_id ON phpbb_log (topic_id);  CREATE INDEX phpbb_log_reportee_id ON phpbb_log (reportee_id); @@ -560,6 +582,21 @@ CREATE INDEX phpbb_moderator_cache_disp_idx ON phpbb_moderator_cache (display_on  CREATE INDEX phpbb_moderator_cache_forum_id ON phpbb_moderator_cache (forum_id);  /* +	Table: 'phpbb_migrations' +*/ +CREATE TABLE phpbb_migrations ( +	migration_name varchar(255) DEFAULT '' NOT NULL, +	migration_depends_on varchar(8000) DEFAULT '' NOT NULL, +	migration_schema_done INT2 DEFAULT '0' NOT NULL CHECK (migration_schema_done >= 0), +	migration_data_done INT2 DEFAULT '0' NOT NULL CHECK (migration_data_done >= 0), +	migration_data_state varchar(8000) DEFAULT '' NOT NULL, +	migration_start_time INT4 DEFAULT '0' NOT NULL CHECK (migration_start_time >= 0), +	migration_end_time INT4 DEFAULT '0' NOT NULL CHECK (migration_end_time >= 0), +	PRIMARY KEY (migration_name) +); + + +/*  	Table: 'phpbb_modules'  */  CREATE SEQUENCE phpbb_modules_seq; @@ -584,6 +621,36 @@ CREATE INDEX phpbb_modules_module_enabled ON phpbb_modules (module_enabled);  CREATE INDEX phpbb_modules_class_left_id ON phpbb_modules (module_class, left_id);  /* +	Table: 'phpbb_notification_types' +*/ +CREATE TABLE phpbb_notification_types ( +	notification_type varchar(255) DEFAULT '' NOT NULL, +	notification_type_enabled INT2 DEFAULT '1' NOT NULL CHECK (notification_type_enabled >= 0), +	PRIMARY KEY (notification_type, notification_type_enabled) +); + + +/* +	Table: 'phpbb_notifications' +*/ +CREATE SEQUENCE phpbb_notifications_seq; + +CREATE TABLE phpbb_notifications ( +	notification_id INT4 DEFAULT nextval('phpbb_notifications_seq'), +	item_type varchar(255) DEFAULT '' NOT NULL, +	item_id INT4 DEFAULT '0' NOT NULL CHECK (item_id >= 0), +	item_parent_id INT4 DEFAULT '0' NOT NULL CHECK (item_parent_id >= 0), +	user_id INT4 DEFAULT '0' NOT NULL CHECK (user_id >= 0), +	notification_read INT2 DEFAULT '0' NOT NULL CHECK (notification_read >= 0), +	notification_time INT4 DEFAULT '1' NOT NULL CHECK (notification_time >= 0), +	notification_data varchar(4000) DEFAULT '' NOT NULL, +	PRIMARY KEY (notification_id) +); + +CREATE INDEX phpbb_notifications_item_ident ON phpbb_notifications (item_type, item_id); +CREATE INDEX phpbb_notifications_user ON phpbb_notifications (user_id, notification_read); + +/*  	Table: 'phpbb_poll_options'  */  CREATE TABLE phpbb_poll_options ( @@ -763,6 +830,7 @@ CREATE TABLE phpbb_profile_fields (  	field_required INT2 DEFAULT '0' NOT NULL CHECK (field_required >= 0),  	field_show_novalue INT2 DEFAULT '0' NOT NULL CHECK (field_show_novalue >= 0),  	field_show_on_reg INT2 DEFAULT '0' NOT NULL CHECK (field_show_on_reg >= 0), +	field_show_on_pm INT2 DEFAULT '0' NOT NULL CHECK (field_show_on_pm >= 0),  	field_show_on_vt INT2 DEFAULT '0' NOT NULL CHECK (field_show_on_vt >= 0),  	field_show_profile INT2 DEFAULT '0' NOT NULL CHECK (field_show_profile >= 0),  	field_hide INT2 DEFAULT '0' NOT NULL CHECK (field_hide >= 0), @@ -840,6 +908,12 @@ CREATE TABLE phpbb_reports (  	report_closed INT2 DEFAULT '0' NOT NULL CHECK (report_closed >= 0),  	report_time INT4 DEFAULT '0' NOT NULL CHECK (report_time >= 0),  	report_text TEXT DEFAULT '' NOT NULL, +	reported_post_text TEXT DEFAULT '' NOT NULL, +	reported_post_uid varchar(8) DEFAULT '' NOT NULL, +	reported_post_bitfield varchar(255) DEFAULT '' NOT NULL, +	reported_post_enable_magic_url INT2 DEFAULT '1' NOT NULL CHECK (reported_post_enable_magic_url >= 0), +	reported_post_enable_smilies INT2 DEFAULT '1' NOT NULL CHECK (reported_post_enable_smilies >= 0), +	reported_post_enable_bbcode INT2 DEFAULT '1' NOT NULL CHECK (reported_post_enable_bbcode >= 0),  	PRIMARY KEY (report_id)  ); @@ -981,100 +1055,29 @@ CREATE TABLE phpbb_styles (  	style_name varchar(255) DEFAULT '' NOT NULL,  	style_copyright varchar(255) DEFAULT '' NOT NULL,  	style_active INT2 DEFAULT '1' NOT NULL CHECK (style_active >= 0), -	template_id INT4 DEFAULT '0' NOT NULL CHECK (template_id >= 0), -	theme_id INT4 DEFAULT '0' NOT NULL CHECK (theme_id >= 0), -	imageset_id INT4 DEFAULT '0' NOT NULL CHECK (imageset_id >= 0), +	style_path varchar(100) DEFAULT '' NOT NULL, +	bbcode_bitfield varchar(255) DEFAULT 'kNg=' NOT NULL, +	style_parent_id INT4 DEFAULT '0' NOT NULL CHECK (style_parent_id >= 0), +	style_parent_tree varchar(8000) DEFAULT '' NOT NULL,  	PRIMARY KEY (style_id)  );  CREATE UNIQUE INDEX phpbb_styles_style_name ON phpbb_styles (style_name); -CREATE INDEX phpbb_styles_template_id ON phpbb_styles (template_id); -CREATE INDEX phpbb_styles_theme_id ON phpbb_styles (theme_id); -CREATE INDEX phpbb_styles_imageset_id ON phpbb_styles (imageset_id);  /* -	Table: 'phpbb_styles_template' +	Table: 'phpbb_teampage'  */ -CREATE SEQUENCE phpbb_styles_template_seq; +CREATE SEQUENCE phpbb_teampage_seq; -CREATE TABLE phpbb_styles_template ( -	template_id INT4 DEFAULT nextval('phpbb_styles_template_seq'), -	template_name varchar(255) DEFAULT '' NOT NULL, -	template_copyright varchar(255) DEFAULT '' NOT NULL, -	template_path varchar(100) DEFAULT '' NOT NULL, -	bbcode_bitfield varchar(255) DEFAULT 'kNg=' NOT NULL, -	template_storedb INT2 DEFAULT '0' NOT NULL CHECK (template_storedb >= 0), -	template_inherits_id INT4 DEFAULT '0' NOT NULL CHECK (template_inherits_id >= 0), -	template_inherit_path varchar(255) DEFAULT '' NOT NULL, -	PRIMARY KEY (template_id) -); - -CREATE UNIQUE INDEX phpbb_styles_template_tmplte_nm ON phpbb_styles_template (template_name); - -/* -	Table: 'phpbb_styles_template_data' -*/ -CREATE TABLE phpbb_styles_template_data ( -	template_id INT4 DEFAULT '0' NOT NULL CHECK (template_id >= 0), -	template_filename varchar(100) DEFAULT '' NOT NULL, -	template_included varchar(8000) DEFAULT '' NOT NULL, -	template_mtime INT4 DEFAULT '0' NOT NULL CHECK (template_mtime >= 0), -	template_data TEXT DEFAULT '' NOT NULL -); - -CREATE INDEX phpbb_styles_template_data_tid ON phpbb_styles_template_data (template_id); -CREATE INDEX phpbb_styles_template_data_tfn ON phpbb_styles_template_data (template_filename); - -/* -	Table: 'phpbb_styles_theme' -*/ -CREATE SEQUENCE phpbb_styles_theme_seq; - -CREATE TABLE phpbb_styles_theme ( -	theme_id INT4 DEFAULT nextval('phpbb_styles_theme_seq'), -	theme_name varchar(255) DEFAULT '' NOT NULL, -	theme_copyright varchar(255) DEFAULT '' NOT NULL, -	theme_path varchar(100) DEFAULT '' NOT NULL, -	theme_storedb INT2 DEFAULT '0' NOT NULL CHECK (theme_storedb >= 0), -	theme_mtime INT4 DEFAULT '0' NOT NULL CHECK (theme_mtime >= 0), -	theme_data TEXT DEFAULT '' NOT NULL, -	PRIMARY KEY (theme_id) -); - -CREATE UNIQUE INDEX phpbb_styles_theme_theme_name ON phpbb_styles_theme (theme_name); - -/* -	Table: 'phpbb_styles_imageset' -*/ -CREATE SEQUENCE phpbb_styles_imageset_seq; - -CREATE TABLE phpbb_styles_imageset ( -	imageset_id INT4 DEFAULT nextval('phpbb_styles_imageset_seq'), -	imageset_name varchar(255) DEFAULT '' NOT NULL, -	imageset_copyright varchar(255) DEFAULT '' NOT NULL, -	imageset_path varchar(100) DEFAULT '' NOT NULL, -	PRIMARY KEY (imageset_id) -); - -CREATE UNIQUE INDEX phpbb_styles_imageset_imgset_nm ON phpbb_styles_imageset (imageset_name); - -/* -	Table: 'phpbb_styles_imageset_data' -*/ -CREATE SEQUENCE phpbb_styles_imageset_data_seq; - -CREATE TABLE phpbb_styles_imageset_data ( -	image_id INT4 DEFAULT nextval('phpbb_styles_imageset_data_seq'), -	image_name varchar(200) DEFAULT '' NOT NULL, -	image_filename varchar(200) DEFAULT '' NOT NULL, -	image_lang varchar(30) DEFAULT '' NOT NULL, -	image_height INT2 DEFAULT '0' NOT NULL CHECK (image_height >= 0), -	image_width INT2 DEFAULT '0' NOT NULL CHECK (image_width >= 0), -	imageset_id INT4 DEFAULT '0' NOT NULL CHECK (imageset_id >= 0), -	PRIMARY KEY (image_id) +CREATE TABLE phpbb_teampage ( +	teampage_id INT4 DEFAULT nextval('phpbb_teampage_seq'), +	group_id INT4 DEFAULT '0' NOT NULL CHECK (group_id >= 0), +	teampage_name varchar(255) DEFAULT '' NOT NULL, +	teampage_position INT4 DEFAULT '0' NOT NULL CHECK (teampage_position >= 0), +	teampage_parent INT4 DEFAULT '0' NOT NULL CHECK (teampage_parent >= 0), +	PRIMARY KEY (teampage_id)  ); -CREATE INDEX phpbb_styles_imageset_data_i_d ON phpbb_styles_imageset_data (imageset_id);  /*  	Table: 'phpbb_topics' @@ -1165,6 +1168,18 @@ CREATE INDEX phpbb_topics_watch_user_id ON phpbb_topics_watch (user_id);  CREATE INDEX phpbb_topics_watch_notify_stat ON phpbb_topics_watch (notify_status);  /* +	Table: 'phpbb_user_notifications' +*/ +CREATE TABLE phpbb_user_notifications ( +	item_type varchar(255) DEFAULT '' NOT NULL, +	item_id INT4 DEFAULT '0' NOT NULL CHECK (item_id >= 0), +	user_id INT4 DEFAULT '0' NOT NULL CHECK (user_id >= 0), +	method varchar(255) DEFAULT '' NOT NULL, +	notify INT2 DEFAULT '1' NOT NULL CHECK (notify >= 0) +); + + +/*  	Table: 'phpbb_user_group'  */  CREATE TABLE phpbb_user_group ( @@ -1212,8 +1227,7 @@ CREATE TABLE phpbb_users (  	user_inactive_time INT4 DEFAULT '0' NOT NULL CHECK (user_inactive_time >= 0),  	user_posts INT4 DEFAULT '0' NOT NULL CHECK (user_posts >= 0),  	user_lang varchar(30) DEFAULT '' NOT NULL, -	user_timezone decimal(5,2) DEFAULT '0' NOT NULL, -	user_dst INT2 DEFAULT '0' NOT NULL CHECK (user_dst >= 0), +	user_timezone varchar(100) DEFAULT 'UTC' NOT NULL,  	user_dateformat varchar(30) DEFAULT 'd M Y H:i' NOT NULL,  	user_style INT4 DEFAULT '0' NOT NULL CHECK (user_style >= 0),  	user_rank INT4 DEFAULT '0' NOT NULL CHECK (user_rank >= 0), @@ -1239,7 +1253,7 @@ CREATE TABLE phpbb_users (  	user_allow_massemail INT2 DEFAULT '1' NOT NULL CHECK (user_allow_massemail >= 0),  	user_options INT4 DEFAULT '230271' NOT NULL CHECK (user_options >= 0),  	user_avatar varchar(255) DEFAULT '' NOT NULL, -	user_avatar_type INT2 DEFAULT '0' NOT NULL, +	user_avatar_type varchar(255) DEFAULT '' NOT NULL,  	user_avatar_width INT2 DEFAULT '0' NOT NULL CHECK (user_avatar_width >= 0),  	user_avatar_height INT2 DEFAULT '0' NOT NULL CHECK (user_avatar_height >= 0),  	user_sig TEXT DEFAULT '' NOT NULL, diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql index b139857d28..355981721e 100644 --- a/phpBB/install/schemas/schema_data.sql +++ b/phpBB/install/schemas/schema_data.sql @@ -9,6 +9,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('active_sessions',  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_attachments', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_autologin', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar', '1'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar_gravatar', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar_local', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar_remote', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_avatar_upload', '1'); @@ -17,6 +18,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_bbcode', '1'  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_birthdays', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_bookmarks', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_emailreuse', '0'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_password_reset', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_forum_notify', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_mass_pm', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_name_chars', 'USERNAME_CHARS_ANY'); @@ -54,12 +56,12 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_salt', 'php  INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_contact', 'contact@yourdomain.tld');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_disable', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_disable_msg', ''); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_dst', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email', 'address@yourdomain.tld');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_form', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_sig', '{L_CONFIG_BOARD_EMAIL_SIG}');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_hide_emails', '1'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_timezone', '0'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_index_text', ''); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_timezone', 'UTC');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('browser_check', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('bump_interval', '10');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('bump_type', 'd'); @@ -88,6 +90,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('dbms_version', '')  INSERT INTO phpbb_config (config_name, config_value) VALUES ('default_dateformat', 'D M d, Y g:i a');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('default_style', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('display_last_edited', '1'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('display_last_subject', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('display_order', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('edit_time', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('delete_time', '0'); @@ -124,6 +127,11 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_native_co  INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_native_load_upd', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_native_max_chars', '14');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_native_min_chars', '3'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_postgres_max_word_len', '254'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_postgres_min_word_len', '4'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_postgres_ts_name', 'simple'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_sphinx_indexer_mem_limit', '512'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_sphinx_stopwords', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('gzip_compress', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('hot_threshold', '25');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('icons_path', 'images/icons'); @@ -155,17 +163,22 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_server', '');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_uid', '');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_user', '');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_user_filter', ''); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('legend_sort_groupname', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('limit_load', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('limit_search_load', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_anon_lastread', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_birthdays', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_cpf_memberlist', '0'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_cpf_profile', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_cpf_viewprofile', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_cpf_viewtopic', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_db_lastread', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_db_track', '1'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_jquery_cdn', '0'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_jquery_url', '//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_jumpbox', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_moderators', '1'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_notifications', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_online', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_online_guests', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_online_time', '5'); @@ -222,7 +235,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_block_size'  INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_gc', '7200');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_interval', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_anonymous_interval', '0'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_type', 'fulltext_native'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_type', 'phpbb_search_fulltext_native');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_store_results', '1800');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('secure_allow_deny', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('secure_allow_empty_referer', '1'); @@ -233,6 +246,8 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('server_protocol',  INSERT INTO phpbb_config (config_name, config_value) VALUES ('session_gc', '3600');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('session_length', '3600');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('site_desc', '{L_CONFIG_SITE_DESC}'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('site_home_url', ''); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('site_home_text', '');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('sitename', '{L_CONFIG_SITENAME}');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('smilies_path', 'images/smilies');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('smilies_per_page', '50'); @@ -242,11 +257,14 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_host', '');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_password', '');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_port', '25');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_username', ''); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('teampage_memberships', '1'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('teampage_forums', '1');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('topics_per_page', '25');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('tpl_allow_php', '0');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_icons_path', 'images/upload_icons');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_path', 'files'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.0.12-dev'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_system_cron', '0'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.1.0-dev');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90');  INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400'); @@ -333,6 +351,7 @@ INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('a_board', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('a_bots', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('a_clearlogs', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('a_email', 1); +INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('a_extensions', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('a_fauth', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('a_forum', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('a_forumadd', 1); @@ -372,6 +391,7 @@ INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('u_chgemail', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('u_chggrp', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('u_chgname', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('u_chgpasswd', 1); +INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('u_chgprofileinfo', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('u_download', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('u_hideonline', 1);  INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('u_ignoreflood', 1); @@ -430,86 +450,7 @@ INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order)  INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_FORUM_NEW_MEMBER', 'ROLE_DESCRIPTION_FORUM_NEW_MEMBER', 'f_', 10);  # -- phpbb_styles -INSERT INTO phpbb_styles (style_name, style_copyright, style_active, template_id, theme_id, imageset_id) VALUES ('prosilver', '© phpBB Group', 1, 1, 1, 1); - -# -- phpbb_styles_imageset -INSERT INTO phpbb_styles_imageset (imageset_name, imageset_copyright, imageset_path) VALUES ('prosilver', '© phpBB Group', 'prosilver'); - -# -- phpbb_styles_imageset_data -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('site_logo', 'site_logo.gif', '', 52, 139, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_link', 'forum_link.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_read', 'forum_read.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_read_locked', 'forum_read_locked.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_read_subforum', 'forum_read_subforum.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_unread', 'forum_unread.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_unread_locked', 'forum_unread_locked.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_unread_subforum', 'forum_unread_subforum.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_moved', 'topic_moved.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read', 'topic_read.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_mine', 'topic_read_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_hot', 'topic_read_hot.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_hot_mine', 'topic_read_hot_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_locked', 'topic_read_locked.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_locked_mine', 'topic_read_locked_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread', 'topic_unread.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_mine', 'topic_unread_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_hot', 'topic_unread_hot.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_hot_mine', 'topic_unread_hot_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_locked', 'topic_unread_locked.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_locked_mine', 'topic_unread_locked_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read', 'sticky_read.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read_mine', 'sticky_read_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read_locked', 'sticky_read_locked.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read_locked_mine', 'sticky_read_locked_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread', 'sticky_unread.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread_mine', 'sticky_unread_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread_locked', 'sticky_unread_locked.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread_locked_mine', 'sticky_unread_locked_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read', 'announce_read.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read_mine', 'announce_read_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read_locked', 'announce_read_locked.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read_locked_mine', 'announce_read_locked_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread', 'announce_unread.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread_mine', 'announce_unread_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread_locked', 'announce_unread_locked.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread_locked_mine', 'announce_unread_locked_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read', 'announce_read.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read_mine', 'announce_read_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read_locked', 'announce_read_locked.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read_locked_mine', 'announce_read_locked_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread', 'announce_unread.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread_mine', 'announce_unread_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread_locked', 'announce_unread_locked.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread_locked_mine', 'announce_unread_locked_mine.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('pm_read', 'topic_read.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('pm_unread', 'topic_unread.gif', '', 27, 27, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_back_top', 'icon_back_top.gif', '', 11, 11, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_aim', 'icon_contact_aim.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_email', 'icon_contact_email.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_icq', 'icon_contact_icq.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_jabber', 'icon_contact_jabber.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_msnm', 'icon_contact_msnm.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_www', 'icon_contact_www.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_yahoo', 'icon_contact_yahoo.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_delete', 'icon_post_delete.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_info', 'icon_post_info.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_report', 'icon_post_report.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_target', 'icon_post_target.gif', '', 9, 11, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_target_unread', 'icon_post_target_unread.gif', '', 9, 11, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_attach', 'icon_topic_attach.gif', '', 10, 7, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_latest', 'icon_topic_latest.gif', '', 9, 11, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_newest', 'icon_topic_newest.gif', '', 9, 11, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_reported', 'icon_topic_reported.gif', '', 14, 16, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_unapproved', 'icon_topic_unapproved.gif', '', 14, 16, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_warn', 'icon_user_warn.gif', '', 20, 20, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('subforum_read', 'subforum_read.gif', '', 9, 11, 1); -INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('subforum_unread', 'subforum_unread.gif', '', 9, 11, 1); - -# -- phpbb_styles_template -INSERT INTO phpbb_styles_template (template_name, template_copyright, template_path, bbcode_bitfield, template_storedb) VALUES ('prosilver', '© phpBB Group', 'prosilver', 'lNg=', 0); - -# -- phpbb_styles_theme -INSERT INTO phpbb_styles_theme (theme_name, theme_copyright, theme_path, theme_storedb, theme_data) VALUES ('prosilver', '© phpBB Group', 'prosilver', 1, ''); +INSERT INTO phpbb_styles (style_name, style_copyright, style_active, style_path, bbcode_bitfield, style_parent_id, style_parent_tree) VALUES ('prosilver', '© phpBB Group', 1, 'prosilver', 'kNg=', 0, '');  # -- Forums  INSERT INTO phpbb_forums (forum_name, forum_desc, left_id, right_id, parent_id, forum_type, forum_posts, forum_topics, forum_topics_real, forum_last_post_id, forum_last_poster_id, forum_last_poster_name, forum_last_poster_colour, forum_last_post_time, forum_link, forum_password, forum_image, forum_rules, forum_rules_link, forum_rules_uid, forum_desc_uid, prune_days, prune_viewed, forum_parents) VALUES ('{L_FORUMS_FIRST_CATEGORY}', '', 1, 4, 0, 0, 1, 1, 1, 1, 2, 'Admin', 'AA0000', 972086460, '', '', '', '', '', '', '', 0, 0, ''); @@ -526,11 +467,15 @@ INSERT INTO phpbb_users (user_type, group_id, username, username_clean, user_reg  INSERT INTO phpbb_groups (group_name, group_type, group_founder_manage, group_colour, group_legend, group_avatar, group_desc, group_desc_uid, group_max_recipients) VALUES ('GUESTS', 3, 0, '', 0, '', '', '', 5);  INSERT INTO phpbb_groups (group_name, group_type, group_founder_manage, group_colour, group_legend, group_avatar, group_desc, group_desc_uid, group_max_recipients) VALUES ('REGISTERED', 3, 0, '', 0, '', '', '', 5);  INSERT INTO phpbb_groups (group_name, group_type, group_founder_manage, group_colour, group_legend, group_avatar, group_desc, group_desc_uid, group_max_recipients) VALUES ('REGISTERED_COPPA', 3, 0, '', 0, '', '', '', 5); -INSERT INTO phpbb_groups (group_name, group_type, group_founder_manage, group_colour, group_legend, group_avatar, group_desc, group_desc_uid, group_max_recipients) VALUES ('GLOBAL_MODERATORS', 3, 0, '00AA00', 1, '', '', '', 0); +INSERT INTO phpbb_groups (group_name, group_type, group_founder_manage, group_colour, group_legend, group_avatar, group_desc, group_desc_uid, group_max_recipients) VALUES ('GLOBAL_MODERATORS', 3, 0, '00AA00', 2, '', '', '', 0);  INSERT INTO phpbb_groups (group_name, group_type, group_founder_manage, group_colour, group_legend, group_avatar, group_desc, group_desc_uid, group_max_recipients) VALUES ('ADMINISTRATORS', 3, 1, 'AA0000', 1, '', '', '', 0);  INSERT INTO phpbb_groups (group_name, group_type, group_founder_manage, group_colour, group_legend, group_avatar, group_desc, group_desc_uid, group_max_recipients) VALUES ('BOTS', 3, 0, '9E8DA7', 0, '', '', '', 5);  INSERT INTO phpbb_groups (group_name, group_type, group_founder_manage, group_colour, group_legend, group_avatar, group_desc, group_desc_uid, group_max_recipients) VALUES ('NEWLY_REGISTERED', 3, 0, '', 0, '', '', '', 5); +# -- Teampage +INSERT INTO phpbb_teampage (group_id, teampage_name, teampage_position, teampage_parent) VALUES (5, '', 1, 0); +INSERT INTO phpbb_teampage (group_id, teampage_name, teampage_position, teampage_parent) VALUES (4, '', 2, 0); +  # -- User -> Group  INSERT INTO phpbb_user_group (group_id, user_id, user_pending, group_leader) VALUES (1, 1, 0, 0);  INSERT INTO phpbb_user_group (group_id, user_id, user_pending, group_leader) VALUES (2, 2, 0, 0); @@ -612,7 +557,7 @@ INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT  INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 22, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option NOT IN ('f_announce', 'f_attach', 'f_bump', 'f_delete', 'f_flash', 'f_icons', 'f_ignoreflood', 'f_sticky', 'f_user_lock', 'f_votechg');  # New Member (u_) -INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 23, auth_option_id, 0 FROM phpbb_acl_options WHERE auth_option LIKE 'u_%' AND auth_option IN ('u_sendpm', 'u_masspm', 'u_masspm_group'); +INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 23, auth_option_id, 0 FROM phpbb_acl_options WHERE auth_option LIKE 'u_%' AND auth_option IN ('u_sendpm', 'u_masspm', 'u_masspm_group', 'u_chgprofileinfo');  # New Member (f_)  INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 24, auth_option_id, 0 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option IN ('f_noapprove'); @@ -833,4 +778,10 @@ INSERT INTO phpbb_extensions (group_id, extension) VALUES (9, 'mp3');  INSERT INTO phpbb_extensions (group_id, extension) VALUES (9, 'ogg');  INSERT INTO phpbb_extensions (group_id, extension) VALUES (9, 'ogm'); +# User Notification Options (for first user) +INSERT INTO phpbb_user_notifications (item_type, item_id, user_id, method) VALUES('post', 0, 2, ''); +INSERT INTO phpbb_user_notifications (item_type, item_id, user_id, method) VALUES('post', 0, 2, 'email'); +INSERT INTO phpbb_user_notifications (item_type, item_id, user_id, method) VALUES('topic', 0, 2, ''); +INSERT INTO phpbb_user_notifications (item_type, item_id, user_id, method) VALUES('topic', 0, 2, 'email'); +  # POSTGRES COMMIT # diff --git a/phpBB/install/schemas/sqlite_schema.sql b/phpBB/install/schemas/sqlite_schema.sql index be7faa4688..ccb67ad46f 100644 --- a/phpBB/install/schemas/sqlite_schema.sql +++ b/phpBB/install/schemas/sqlite_schema.sql @@ -154,6 +154,14 @@ CREATE TABLE phpbb_config (  CREATE INDEX phpbb_config_is_dynamic ON phpbb_config (is_dynamic); +# Table: 'phpbb_config_text' +CREATE TABLE phpbb_config_text ( +	config_name varchar(255) NOT NULL DEFAULT '', +	config_value mediumtext(16777215) NOT NULL DEFAULT '', +	PRIMARY KEY (config_name) +); + +  # Table: 'phpbb_confirm'  CREATE TABLE phpbb_confirm (  	confirm_id char(32) NOT NULL DEFAULT '', @@ -187,6 +195,15 @@ CREATE TABLE phpbb_drafts (  CREATE INDEX phpbb_drafts_save_time ON phpbb_drafts (save_time); +# Table: 'phpbb_ext' +CREATE TABLE phpbb_ext ( +	ext_name varchar(255) NOT NULL DEFAULT '', +	ext_active INTEGER UNSIGNED NOT NULL DEFAULT '0', +	ext_state text(65535) NOT NULL DEFAULT '' +); + +CREATE UNIQUE INDEX phpbb_ext_ext_name ON phpbb_ext (ext_name); +  # Table: 'phpbb_extensions'  CREATE TABLE phpbb_extensions (  	extension_id INTEGER PRIMARY KEY NOT NULL , @@ -300,7 +317,7 @@ CREATE TABLE phpbb_groups (  	group_desc_uid varchar(8) NOT NULL DEFAULT '',  	group_display INTEGER UNSIGNED NOT NULL DEFAULT '0',  	group_avatar varchar(255) NOT NULL DEFAULT '', -	group_avatar_type tinyint(2) NOT NULL DEFAULT '0', +	group_avatar_type varchar(255) NOT NULL DEFAULT '',  	group_avatar_width INTEGER UNSIGNED NOT NULL DEFAULT '0',  	group_avatar_height INTEGER UNSIGNED NOT NULL DEFAULT '0',  	group_rank INTEGER UNSIGNED NOT NULL DEFAULT '0', @@ -309,7 +326,7 @@ CREATE TABLE phpbb_groups (  	group_receive_pm INTEGER UNSIGNED NOT NULL DEFAULT '0',  	group_message_limit INTEGER UNSIGNED NOT NULL DEFAULT '0',  	group_max_recipients INTEGER UNSIGNED NOT NULL DEFAULT '0', -	group_legend INTEGER UNSIGNED NOT NULL DEFAULT '1' +	group_legend INTEGER UNSIGNED NOT NULL DEFAULT '0'  );  CREATE INDEX phpbb_groups_group_legend_name ON phpbb_groups (group_legend, group_name); @@ -353,6 +370,7 @@ CREATE TABLE phpbb_log (  );  CREATE INDEX phpbb_log_log_type ON phpbb_log (log_type); +CREATE INDEX phpbb_log_log_time ON phpbb_log (log_time);  CREATE INDEX phpbb_log_forum_id ON phpbb_log (forum_id);  CREATE INDEX phpbb_log_topic_id ON phpbb_log (topic_id);  CREATE INDEX phpbb_log_reportee_id ON phpbb_log (reportee_id); @@ -387,6 +405,19 @@ CREATE TABLE phpbb_moderator_cache (  CREATE INDEX phpbb_moderator_cache_disp_idx ON phpbb_moderator_cache (display_on_index);  CREATE INDEX phpbb_moderator_cache_forum_id ON phpbb_moderator_cache (forum_id); +# Table: 'phpbb_migrations' +CREATE TABLE phpbb_migrations ( +	migration_name varchar(255) NOT NULL DEFAULT '', +	migration_depends_on text(65535) NOT NULL DEFAULT '', +	migration_schema_done INTEGER UNSIGNED NOT NULL DEFAULT '0', +	migration_data_done INTEGER UNSIGNED NOT NULL DEFAULT '0', +	migration_data_state text(65535) NOT NULL DEFAULT '', +	migration_start_time INTEGER UNSIGNED NOT NULL DEFAULT '0', +	migration_end_time INTEGER UNSIGNED NOT NULL DEFAULT '0', +	PRIMARY KEY (migration_name) +); + +  # Table: 'phpbb_modules'  CREATE TABLE phpbb_modules (  	module_id INTEGER PRIMARY KEY NOT NULL , @@ -406,6 +437,29 @@ CREATE INDEX phpbb_modules_left_right_id ON phpbb_modules (left_id, right_id);  CREATE INDEX phpbb_modules_module_enabled ON phpbb_modules (module_enabled);  CREATE INDEX phpbb_modules_class_left_id ON phpbb_modules (module_class, left_id); +# Table: 'phpbb_notification_types' +CREATE TABLE phpbb_notification_types ( +	notification_type varchar(255) NOT NULL DEFAULT '', +	notification_type_enabled INTEGER UNSIGNED NOT NULL DEFAULT '1', +	PRIMARY KEY (notification_type, notification_type_enabled) +); + + +# Table: 'phpbb_notifications' +CREATE TABLE phpbb_notifications ( +	notification_id INTEGER PRIMARY KEY NOT NULL , +	item_type varchar(255) NOT NULL DEFAULT '', +	item_id INTEGER UNSIGNED NOT NULL DEFAULT '0', +	item_parent_id INTEGER UNSIGNED NOT NULL DEFAULT '0', +	user_id INTEGER UNSIGNED NOT NULL DEFAULT '0', +	notification_read INTEGER UNSIGNED NOT NULL DEFAULT '0', +	notification_time INTEGER UNSIGNED NOT NULL DEFAULT '1', +	notification_data text(65535) NOT NULL DEFAULT '' +); + +CREATE INDEX phpbb_notifications_item_ident ON phpbb_notifications (item_type, item_id); +CREATE INDEX phpbb_notifications_user ON phpbb_notifications (user_id, notification_read); +  # Table: 'phpbb_poll_options'  CREATE TABLE phpbb_poll_options (  	poll_option_id tinyint(4) NOT NULL DEFAULT '0', @@ -556,6 +610,7 @@ CREATE TABLE phpbb_profile_fields (  	field_required INTEGER UNSIGNED NOT NULL DEFAULT '0',  	field_show_novalue INTEGER UNSIGNED NOT NULL DEFAULT '0',  	field_show_on_reg INTEGER UNSIGNED NOT NULL DEFAULT '0', +	field_show_on_pm INTEGER UNSIGNED NOT NULL DEFAULT '0',  	field_show_on_vt INTEGER UNSIGNED NOT NULL DEFAULT '0',  	field_show_profile INTEGER UNSIGNED NOT NULL DEFAULT '0',  	field_hide INTEGER UNSIGNED NOT NULL DEFAULT '0', @@ -616,7 +671,13 @@ CREATE TABLE phpbb_reports (  	user_notify INTEGER UNSIGNED NOT NULL DEFAULT '0',  	report_closed INTEGER UNSIGNED NOT NULL DEFAULT '0',  	report_time INTEGER UNSIGNED NOT NULL DEFAULT '0', -	report_text mediumtext(16777215) NOT NULL DEFAULT '' +	report_text mediumtext(16777215) NOT NULL DEFAULT '', +	reported_post_text mediumtext(16777215) NOT NULL DEFAULT '', +	reported_post_uid varchar(8) NOT NULL DEFAULT '', +	reported_post_bitfield varchar(255) NOT NULL DEFAULT '', +	reported_post_enable_magic_url INTEGER UNSIGNED NOT NULL DEFAULT '1', +	reported_post_enable_smilies INTEGER UNSIGNED NOT NULL DEFAULT '1', +	reported_post_enable_bbcode INTEGER UNSIGNED NOT NULL DEFAULT '1'  );  CREATE INDEX phpbb_reports_post_id ON phpbb_reports (post_id); @@ -725,77 +786,23 @@ CREATE TABLE phpbb_styles (  	style_name varchar(255) NOT NULL DEFAULT '',  	style_copyright varchar(255) NOT NULL DEFAULT '',  	style_active INTEGER UNSIGNED NOT NULL DEFAULT '1', -	template_id INTEGER UNSIGNED NOT NULL DEFAULT '0', -	theme_id INTEGER UNSIGNED NOT NULL DEFAULT '0', -	imageset_id INTEGER UNSIGNED NOT NULL DEFAULT '0' -); - -CREATE UNIQUE INDEX phpbb_styles_style_name ON phpbb_styles (style_name); -CREATE INDEX phpbb_styles_template_id ON phpbb_styles (template_id); -CREATE INDEX phpbb_styles_theme_id ON phpbb_styles (theme_id); -CREATE INDEX phpbb_styles_imageset_id ON phpbb_styles (imageset_id); - -# Table: 'phpbb_styles_template' -CREATE TABLE phpbb_styles_template ( -	template_id INTEGER PRIMARY KEY NOT NULL , -	template_name varchar(255) NOT NULL DEFAULT '', -	template_copyright varchar(255) NOT NULL DEFAULT '', -	template_path varchar(100) NOT NULL DEFAULT '', +	style_path varchar(100) NOT NULL DEFAULT '',  	bbcode_bitfield varchar(255) NOT NULL DEFAULT 'kNg=', -	template_storedb INTEGER UNSIGNED NOT NULL DEFAULT '0', -	template_inherits_id INTEGER UNSIGNED NOT NULL DEFAULT '0', -	template_inherit_path varchar(255) NOT NULL DEFAULT '' -); - -CREATE UNIQUE INDEX phpbb_styles_template_tmplte_nm ON phpbb_styles_template (template_name); - -# Table: 'phpbb_styles_template_data' -CREATE TABLE phpbb_styles_template_data ( -	template_id INTEGER UNSIGNED NOT NULL DEFAULT '0', -	template_filename varchar(100) NOT NULL DEFAULT '', -	template_included text(65535) NOT NULL DEFAULT '', -	template_mtime INTEGER UNSIGNED NOT NULL DEFAULT '0', -	template_data mediumtext(16777215) NOT NULL DEFAULT '' -); - -CREATE INDEX phpbb_styles_template_data_tid ON phpbb_styles_template_data (template_id); -CREATE INDEX phpbb_styles_template_data_tfn ON phpbb_styles_template_data (template_filename); - -# Table: 'phpbb_styles_theme' -CREATE TABLE phpbb_styles_theme ( -	theme_id INTEGER PRIMARY KEY NOT NULL , -	theme_name varchar(255) NOT NULL DEFAULT '', -	theme_copyright varchar(255) NOT NULL DEFAULT '', -	theme_path varchar(100) NOT NULL DEFAULT '', -	theme_storedb INTEGER UNSIGNED NOT NULL DEFAULT '0', -	theme_mtime INTEGER UNSIGNED NOT NULL DEFAULT '0', -	theme_data mediumtext(16777215) NOT NULL DEFAULT '' +	style_parent_id INTEGER UNSIGNED NOT NULL DEFAULT '0', +	style_parent_tree text(65535) NOT NULL DEFAULT ''  ); -CREATE UNIQUE INDEX phpbb_styles_theme_theme_name ON phpbb_styles_theme (theme_name); - -# Table: 'phpbb_styles_imageset' -CREATE TABLE phpbb_styles_imageset ( -	imageset_id INTEGER PRIMARY KEY NOT NULL , -	imageset_name varchar(255) NOT NULL DEFAULT '', -	imageset_copyright varchar(255) NOT NULL DEFAULT '', -	imageset_path varchar(100) NOT NULL DEFAULT '' -); - -CREATE UNIQUE INDEX phpbb_styles_imageset_imgset_nm ON phpbb_styles_imageset (imageset_name); +CREATE UNIQUE INDEX phpbb_styles_style_name ON phpbb_styles (style_name); -# Table: 'phpbb_styles_imageset_data' -CREATE TABLE phpbb_styles_imageset_data ( -	image_id INTEGER PRIMARY KEY NOT NULL , -	image_name varchar(200) NOT NULL DEFAULT '', -	image_filename varchar(200) NOT NULL DEFAULT '', -	image_lang varchar(30) NOT NULL DEFAULT '', -	image_height INTEGER UNSIGNED NOT NULL DEFAULT '0', -	image_width INTEGER UNSIGNED NOT NULL DEFAULT '0', -	imageset_id INTEGER UNSIGNED NOT NULL DEFAULT '0' +# Table: 'phpbb_teampage' +CREATE TABLE phpbb_teampage ( +	teampage_id INTEGER PRIMARY KEY NOT NULL , +	group_id INTEGER UNSIGNED NOT NULL DEFAULT '0', +	teampage_name varchar(255) NOT NULL DEFAULT '', +	teampage_position INTEGER UNSIGNED NOT NULL DEFAULT '0', +	teampage_parent INTEGER UNSIGNED NOT NULL DEFAULT '0'  ); -CREATE INDEX phpbb_styles_imageset_data_i_d ON phpbb_styles_imageset_data (imageset_id);  # Table: 'phpbb_topics'  CREATE TABLE phpbb_topics ( @@ -874,6 +881,16 @@ CREATE INDEX phpbb_topics_watch_topic_id ON phpbb_topics_watch (topic_id);  CREATE INDEX phpbb_topics_watch_user_id ON phpbb_topics_watch (user_id);  CREATE INDEX phpbb_topics_watch_notify_stat ON phpbb_topics_watch (notify_status); +# Table: 'phpbb_user_notifications' +CREATE TABLE phpbb_user_notifications ( +	item_type varchar(255) NOT NULL DEFAULT '', +	item_id INTEGER UNSIGNED NOT NULL DEFAULT '0', +	user_id INTEGER UNSIGNED NOT NULL DEFAULT '0', +	method varchar(255) NOT NULL DEFAULT '', +	notify INTEGER UNSIGNED NOT NULL DEFAULT '1' +); + +  # Table: 'phpbb_user_group'  CREATE TABLE phpbb_user_group (  	group_id INTEGER UNSIGNED NOT NULL DEFAULT '0', @@ -916,8 +933,7 @@ CREATE TABLE phpbb_users (  	user_inactive_time INTEGER UNSIGNED NOT NULL DEFAULT '0',  	user_posts INTEGER UNSIGNED NOT NULL DEFAULT '0',  	user_lang varchar(30) NOT NULL DEFAULT '', -	user_timezone decimal(5,2) NOT NULL DEFAULT '0', -	user_dst INTEGER UNSIGNED NOT NULL DEFAULT '0', +	user_timezone varchar(100) NOT NULL DEFAULT 'UTC',  	user_dateformat varchar(30) NOT NULL DEFAULT 'd M Y H:i',  	user_style INTEGER UNSIGNED NOT NULL DEFAULT '0',  	user_rank INTEGER UNSIGNED NOT NULL DEFAULT '0', @@ -943,7 +959,7 @@ CREATE TABLE phpbb_users (  	user_allow_massemail INTEGER UNSIGNED NOT NULL DEFAULT '1',  	user_options INTEGER UNSIGNED NOT NULL DEFAULT '230271',  	user_avatar varchar(255) NOT NULL DEFAULT '', -	user_avatar_type tinyint(2) NOT NULL DEFAULT '0', +	user_avatar_type varchar(255) NOT NULL DEFAULT '',  	user_avatar_width INTEGER UNSIGNED NOT NULL DEFAULT '0',  	user_avatar_height INTEGER UNSIGNED NOT NULL DEFAULT '0',  	user_sig mediumtext(16777215) NOT NULL DEFAULT '',  | 
