From: <pre...@us...> - 2002-06-08 02:58:09
|
Update of /cvsroot/mantisbt/mantisbt/admin In directory usw-pr-cvs1:/tmp/cvs-serv4210/admin Added Files: admin_check.php admin_upgrade.php admin_upgrade_0_14_0.php admin_upgrade_0_15_0.php admin_upgrade_0_16_0.php admin_upgrade_0_17_0.php admin_upgrade_0_18_0.php admin_upgrade_inc.php Log Message: Moved admin_* scripts into admin/ folder. --- NEW FILE: admin_check.php --- <?php require( "../constant_inc.php" ); require( "../config_inc.php" ); require( "../core_database_API.php" ); ?> <?php error_reporting( E_ALL ); # mail test if ( isset( $f_mail_test ) ) { $result = mail( $f_to_email, "Testing PHP mail() function", $f_message, "From: $f_to_email\n" ); } define( "CRYPT2", 10 ); define( "CRYPT3", 20 ); function get_password( $p_test_password, $p_type ) { switch( $p_type ) { case CRYPT: $salt = substr( $p_test_password, 0, 2 ); return crypt( $p_test_password, $salt ); case CRYPT_FULL_SALT:$salt = $p_test_password; return crypt( $p_test_password, $salt ); case PLAIN: return $p_test_password; case MD5: return md5( $p_test_password ); #case LDAP: if ( ldap_uid_pass( $f_username, $p_test_password ) ) { } } define( "BAD", 0 ); define( "GOOD", 1 ); function print_test_result( $p_result ) { if ( BAD == $p_result ) { PRINT "<td bgcolor=#ff0088>BAD</td>"; } if ( GOOD == $p_result ) { PRINT "<td bgcolor=#00ff88>GOOD</td>"; } } function print_yes_no( $p_result ) { if (( 0 === $p_result ) || ( "no" === strtolower( $p_result ) )) { PRINT "<font bgcolor=#ff0088>No</font>"; } if (( 1 === $p_result ) || ( "yes" === strtolower( $p_result ) )) { PRINT "<font bgcolor=#00ff88>Yes</font>"; } } $version = phpversion(); ?> <html> <head> <title>Administrator checks</title> <style type="text/css"> body { background-color: #ffffff; font-family:Verdana, Arial; font-size: 10pt } td { font-family:Verdana, Arial; font-size: 10pt } p { font-family:Verdana, Arial; font-size: 10pt } address { font-family:Verdana, Arial; font-size: 8pt } span.required { font-family:Verdana, Arial; font-size: 10pt; color: #aa0000 } span.title { font-family:Verdana, Arial; font-size: 12pt; color: #000000; font-weight: bold; } </style> </head> <body> <h2>Admin Check</h2> <?php # ---- Version Check ---- ?> <table width="100%" bgcolor="#0000aa" border="0" cellpadding="20" cellspacing="1"> <tr> <td bgcolor="#f0f0ff"> <span class="title">Version</span> <p> Mantis requires at least <b>PHP 4.0.3</b>. If you are not running this version you or you radministrator will need to upgrade your build of PHP. I recommend 4.0.6 or 4.1.2 at the moment. <p /> You are running <b>PHP <?php echo $version ?></b> </td> </tr> </table> <p> <table width="100%" bgcolor="#222222" border="0" cellpadding="10" cellspacing="1"> <!-- Test DATABASE part 1 --> <tr> <td bgcolor="#e8e8e8" colspan="2"> <span class="title">Checking your installation</span> </td> </tr> <tr> <td bgcolor="#ffffff"> Opening connection to database on host [<?php echo $g_hostname ?>] with username [<?php echo $g_db_username ?>] </td> <?php $result = mysql_connect( $g_hostname, $g_db_username, $g_db_password ); if ( false == $result ) { print_test_result( BAD ); } else { print_test_result( GOOD ); } ?> </tr> <!-- Test DATABASE part 2 --> <tr> <td bgcolor="#ffffff"> Selecting database [<?php echo $g_database_name ?>] </td> <?php $result = mysql_select_db( $g_database_name ); if ( false == $result ) { print_test_result( BAD ); } else { print_test_result( GOOD ); } ?> </tr> <!-- Absolute path check --> <tr> <td bgcolor="#ffffff"> Checking to see if your $g_absolute_path variable has a trailing / </td> <?php if (( "\\" == $g_absolute_path[strlen($g_absolute_path)-1] ) || ( "/" == $g_absolute_path[strlen($g_absolute_path)-1] )) { print_test_result( GOOD ); } else { print_test_result( BAD ); } ?> </tr> <!-- PHP Setup check --> <tr> <td bgcolor="#ffffff"> register_globals should be set to On or 1 </td> <?php $test_val = ini_get( "register_globals" ); if ( ( 1 == $test_val ) || ( "On" == $test_val ) ) { print_test_result( GOOD ); } else { print_test_result( BAD ); } ?> </tr> <!-- PHP Setup check --> <tr> <td bgcolor="#ffffff"> magic_quotes_gpc </td> <td bgcolor="#ffffff"> <?php echo ini_get( "magic_quotes_gpc" ) ?> </td> </tr> <tr> <td bgcolor="#ffffff"> gpc_order </td> <td bgcolor="#ffffff"> <?php echo ini_get( "gpc_order" ) ?> </td> </tr> <tr> <td bgcolor="#ffffff"> variables_order </td> <td bgcolor="#ffffff"> <?php echo ini_get( "variables_order" ) ?> </td> </tr> <tr> <td bgcolor="#ffffff"> include_path </td> <td bgcolor="#ffffff"> <?php echo ini_get( "include_path" ) ?> </td> </tr> <tr> <td bgcolor="#ffffff"> short_open_tag </td> <td bgcolor="#ffffff"> <?php echo ini_get("short_open_tag") ?> </td> </tr> </table> <p> <?php # ---- Windows ? ---- ?> <table width="100%" bgcolor="#008800" border="0" cellpadding="20" cellspacing="1"> <tr> <td bgcolor="#f4fff4"> <span class="title">Using Windows?</span> In your config_inc.php set the following:<br /> <pre> $g_validate_email = OFF; $g_check_mx_record = OFF; </pre> getmxrr() and checkdnsrr() are not available under Windows. You need to turn these off the configuration variables above to avoid warnings and errors. </td> </tr> </table> <p> <?php # ---- Email testing ---- ?> <table width="100%" bgcolor="#222222" border="0" cellpadding="20" cellspacing="1"> <tr> <td bgcolor="#f4f4f4"> <span class="title">Testing Email</span> <p> You can test the mail() function with this form. Just fill in the adddress and submit. If the page takes a very long time to reappear or results in an error then you will need to investigate your php/mail server settings. More help can be found at the <a href="http://www.php.net/manual/en/ref.mail.php">PHP website</a>. <p> <?php if ( isset( $f_mail_test ) ) { ?> <b><font color="#ff0000">Mail sent</font></b> - <?php if ( !$result ) { PRINT " PROBLEMS SENDING MAIL TO: $f_to_email. Please check your php/mail server settings.<p>"; } else { PRINT " mail() send successful.<p>"; } } ?> <form method="post" action="<?php echo $PHP_SELF ?>"> Email Address: <input type="text" size="32" name="f_to_email" value="<?php if ( isset( $f_to_email ) ) echo $f_to_email ?>"><br> <textarea name="f_message" cols="60" rows="5">Test message text</textarea><br> <input type="submit" value="Send Mail" name="f_mail_test"> </form> </td> </tr> </table> <a name="password"><p></a> <?php # ---- Password ---- ?> <table width="100%" bgcolor="#008800" border="0" cellpadding="20" cellspacing="1"> <tr> <td bgcolor="#f4fff4"> <span class="title">Password Check:</span> <p> <form method="post" action="<?php echo $PHP_SELF ?>#password"> Password: <input type="text" size="32" name="f_password" value="<?php if ( isset( $f_password ) ) echo $f_password ?>"><br> <input type="submit" name="f_password_test"> </form> <?php if ( isset( $f_password_test ) ) { echo "Password: ".get_password( $f_password, PLAIN )."<br />"; $crypt_pass = get_password( $f_password, CRYPT ); echo "CRYPT: ".get_password( $crypt_pass, CRYPT )."<br />"; echo "CRYPT_FULL_SALT: ".get_password( $f_password, CRYPT_FULL_SALT )."<br />"; echo "MD5: ".get_password( $f_password, MD5 )."<br />"; } ?> </td> </tr> </table> <p> <?php # ---- CRYPT CHECKS ---- ?> <table width="100%" bgcolor="#aa0000" border="0" cellpadding="20" cellspacing="1"> <tr> <td bgcolor="#fff0f0"> <span class="title">Which types of Crypt() does your installation support:</span> <p> Standard DES: <?php print_yes_no( CRYPT_STD_DES ) ?> <br /> Extended DES: <?php print_yes_no( CRYPT_EXT_DES ) ?> <br /> MD5: <?php print_yes_no( CRYPT_MD5 ) ?> <br /> Blowfish: <?php print_yes_no( CRYPT_BLOWFISH ) ?> </td> </tr> </table> </body> </html> --- NEW FILE: admin_upgrade.php --- <?php require( "../constant_inc.php" ); require( "../config_inc.php" ); require( "../core_database_API.php" ); ?> <h1>Mantis Database Upgrade</h1> <b>WARNING:</b> - Always backup your database data before upgrading. From the command line you can do this with the mysqldump command. <p> eg: <p> <font face="courier new">mysqldump -u[username] -p[password] [database_name] > [filename]</font> <p> This will dump the contents of the specified database into the specified filename. <p> If an error occurs you can re-create your previous database by just importing your backed up database data. You'll need to drop and recreate your database (or remove each table). <p> <font face="courier new">mysql -u[username] -p[password] [database_name] < [filename]</font> <p> <hr> If you are more than one minor version behind then you will need to run upgrades sequentially. So to jump from 0.15.1 to 0.17.0 you would run 0.15.x to 0.16.x then 0.16.x to 0.17.x <hr> <p> <table border=0 width=50%> <?php require_once ( 'admin_upgrade_0_18_0.php' ) ?> <tr><td>Upgrade from 0.16.x to 0.17.x</td><td>[ <a href="admin_upgrade_0_17_0<?php echo $g_php ?>">Upgrade Now</a> ]</td></tr> <tr><td>Upgrade from 0.15.x to 0.16.x</td><td>[ <a href="admin_upgrade_0_16_0<?php echo $g_php ?>">Upgrade Now</a> ]</td></tr> <tr><td>Upgrade from 0.14.x to 0.15.x</td><td>[ <a href="admin_upgrade_0_15_0<?php echo $g_php ?>">Upgrade Now</a> ]</td></tr> <tr><td>Upgrade to 0.14.x</td><td>[ <a href="admin_upgrade_0_14_0<?php echo $g_php ?>">Upgrade Now</a> ]</td></tr> </table> <p> <hr> <p> Upgrades may take several minutes depending on the size of your database. --- NEW FILE: admin_upgrade_0_14_0.php --- <?php require( "../constant_inc.php" ); require( "../config_inc.php" ); require( "../core_database_API.php" ); ?> <?php db_connect( $g_hostname, $g_db_username, $g_db_password, $g_database_name ); ?> <?php if ( $f_action=="upgrade" ) { $query3 = "CREATE TABLE mantis_project_table ( id int(7) unsigned zerofill DEFAULT '0000001' NOT NULL auto_increment, name varchar(128) NOT NULL, status enum('development','release','stable','obsolete') DEFAULT 'development' NOT NULL, enabled char(3) NOT NULL, view_state set('public','private') DEFAULT 'public' NOT NULL, description text NOT NULL, PRIMARY KEY (id), KEY id (id), UNIQUE name (name) )"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>Added mantis_project_table<p>"; } else { PRINT "FAILED $query3"; exit; } $query3 = "INSERT INTO mantis_project_table VALUES ( '0000001', 'mantis', 'development', 'on', 'public', 'Mantis. Report problems with t he actual bug tracker here. (Do not remove this account. You can set it to be disabled or private if you do not wish to see i t)')"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>inserted default project into mantis_project_table<p>"; } else { PRINT "FAILED $query3"; exit; } $query3 = "CREATE TABLE mantis_project_category_table ( project_id int(7) unsigned zerofill DEFAULT '0000000' NOT NULL, category varchar(32) NOT NULL )"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>Added mantis_project_category_table<p>"; } else { PRINT "FAILED $query3"; exit; } $query3 = "CREATE TABLE mantis_project_version_table ( project_id int(7) unsigned zerofill DEFAULT '0000000' NOT NULL, version varchar(32) NOT NULL )"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>Added mantis_project_version_table<p>"; } else { PRINT "FAILED $query3"; exit; } PRINT "UPDATED PROJECTS"; $query = "SELECT id, date_submitted, last_updated FROM $g_mantis_bug_table"; $result = db_query( $query ); $bug_count = db_num_rows( $result ); # update bug table $query3 = "ALTER TABLE mantis_bug_table ADD project_id INT (7) UNSIGNED ZEROFILL not null AFTER id"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>Added project_id to mantis_bug_table<p>"; } else { PRINT "FAILED $query3"; exit; } $query3 = "ALTER TABLE mantis_bug_table CHANGE category category VARCHAR (32) not null"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>Changed category to varchar<p>"; } else { PRINT "FAILED $query3"; exit; } $query3 = "ALTER TABLE mantis_bug_table CHANGE version version VARCHAR (32) DEFAULT 'none' not null"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>Changed version to varchar<p>"; } else { PRINT "FAILED $query3"; exit; } for ($i;$i<$bug_count;$i++) { $row = db_fetch_array( $result ); extract( $row, EXTR_PREFIX_ALL, "v" ); $query2 = "UPDATE $g_mantis_bug_table SET date_submitted='$v_date_submitted', last_updated='$v_last_updated', project_id='0000001' WHERE id='$v_id'"; $result2 = db_query( $query2 ); } PRINT "UPGRADED BUGS"; $query = "SELECT id, date_posted, last_modified FROM $g_mantis_news_table"; $result = db_query( $query ); $news_count = db_num_rows( $result ); # update news table $query3 = "ALTER TABLE mantis_news_table ADD project_id INT (7) UNSIGNED ZEROFILL not null AFTER id"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>Added project_id to news table<p>"; } else { PRINT "FAILED $query3"; exit; } for ($i;$i<$news_count;$i++) { $row = db_fetch_array( $result ); extract( $row, EXTR_PREFIX_ALL, "v" ); $query2 = "UPDATE $g_mantis_news_table SET date_posted='$v_date_posted', last_modified='$v_last_modified', project_id='0000001' WHERE id='$v_id'"; $result2 = db_query( $query2 ); } PRINT "UPGRADED NEWS"; $query = "SELECT id, date_created, last_visit FROM $g_mantis_user_table"; $result = db_query( $query ); $user_count = db_num_rows( $result ); # update user tables $query3 = "ALTER TABLE mantis_user_table ADD login_count INT not null DEFAULT '0' AFTER access_level"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>Added login count to user_table<p>"; } else { PRINT "FAILED $query3"; exit; } $query3 = "ALTER TABLE mantis_user_table CHANGE access_level access_level ENUM ('viewer','reporter','updater','developer','manager','administrator') DEFAULT 'viewer' not null"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>Added manager to access_levels<p>"; } else { PRINT "FAILED $query3"; exit; } $query3 = "ALTER TABLE mantis_user_table ADD UNIQUE(username)"; $result3 = db_query( $query3 ); if ( $result3 ) { PRINT "<p>Made username unique<p>"; } else { PRINT "FAILED $query3"; exit; } for ($i;$i<$user_count;$i++) { $row = db_fetch_array( $result ); extract( $row, EXTR_PREFIX_ALL, "v" ); $query2 = "UPDATE $g_mantis_user_table SET date_created='$v_date_created', last_visit='$v_last_visit' WHERE id='$v_id'"; $result2 = db_query( $query2 ); } PRINT "UPGRADED USER"; } ?> <?php if (!isset($f_action) ) { ?> <p> Upgrading your Mantis version from 0.12.x and 0.13.x to 0.14.0 <p> <a href="<?php echo $PHP_SELF ?>?f_action=upgrade">Click here to upgrade</a> <?php } else { ?> <p>**** Upgrade is complete. <?php } ?> --- NEW FILE: admin_upgrade_0_15_0.php --- <?php require( "../constant_inc.php" ); require( "../config_inc.php" ); require( "../core_database_API.php" ); ?> <?php db_connect( $g_hostname, $g_db_username, $g_db_password, $g_database_name ); ?> <?php # ================= # 0.14.x to 0.15.0 # ================= # preserve bug date information PRINT "<p>Preserving Bug Date Information"; $save_bug_query = "SELECT id, last_updated FROM mantis_bug_table"; $save_bug_result = db_query( $save_bug_query ); # preserve user date information PRINT "<p>Preserving User Date Information<p>"; $save_user_query = "SELECT id, date_created, last_visit FROM mantis_user_table ORDER BY id"; $save_user_result = db_query( $save_user_query ); $query0 = array(); $query0[0] = "ALTER TABLE mantis_project_table CHANGE view_state view_state VARCHAR (32) DEFAULT 'public' not null"; $query0[1] = "ALTER TABLE mantis_project_table CHANGE status status VARCHAR (32) DEFAULT 'development' not null"; $query0[2] = "ALTER TABLE mantis_user_table CHANGE access_level access_level VARCHAR (32) DEFAULT 'viewer' not null"; $query0[3] = "ALTER TABLE mantis_bug_table CHANGE eta eta VARCHAR (32) DEFAULT 'none' not null"; $query0[4] = "ALTER TABLE mantis_bug_table CHANGE projection projection VARCHAR (32) DEFAULT 'none' not null"; $query0[5] = "ALTER TABLE mantis_bug_table CHANGE resolution resolution VARCHAR (32) DEFAULT 'open' not null"; $query0[6] = "ALTER TABLE mantis_bug_table CHANGE priority priority VARCHAR (32) DEFAULT 'none' not null"; $query0[7] = "ALTER TABLE mantis_bug_table CHANGE status status VARCHAR (32) DEFAULT 'new' not null"; $query0[8] = "ALTER TABLE mantis_bug_table CHANGE severity severity VARCHAR (32) DEFAULT 'minor' not null"; $query0[9] = "ALTER TABLE mantis_bug_table CHANGE reproducibility reproducibility VARCHAR (32) DEFAULT 'always' not null"; # Make sure username is unique # @@ err.. bad query.. just make it do nothing $query0[10] = "SELECT id FROM mantis_project_table"; $query = array(); # Change some of the TIMESTAMP fields to DATETIME $query[0] = "ALTER TABLE mantis_bug_table CHANGE date_submitted date_submitted DATETIME"; $query[1] = "ALTER TABLE mantis_bugnote_table CHANGE date_submitted date_submitted DATETIME"; $query[2] = "ALTER TABLE mantis_news_table CHANGE date_posted date_posted DATETIME"; $query[3] = "ALTER TABLE mantis_user_table CHANGE date_created date_created DATETIME"; # INT(1) Updates (Before ALTERation) $query[4] = "UPDATE mantis_project_table SET enabled='0' WHERE enabled=''"; $query[5] = "UPDATE mantis_project_table SET enabled='1' WHERE enabled='on'"; $query[6] = "UPDATE mantis_user_pref_table SET advanced_report='0' WHERE advanced_report=''"; $query[7] = "UPDATE mantis_user_pref_table SET advanced_report='1' WHERE advanced_report='on'"; $query[8] = "UPDATE mantis_user_pref_table SET advanced_view='0' WHERE advanced_view=''"; $query[9] = "UPDATE mantis_user_pref_table SET advanced_view='1' WHERE advanced_view='on'"; $query[10] = "UPDATE mantis_user_profile_table SET default_profile='0' WHERE default_profile=''"; $query[11] = "UPDATE mantis_user_profile_table SET default_profile='1' WHERE default_profile='on'"; $query[12] = "UPDATE mantis_user_table SET enabled='0' WHERE enabled=''"; $query[13] = "UPDATE mantis_user_table SET enabled='1' WHERE enabled='on'"; $query[14] = "UPDATE mantis_user_table SET protected='0' WHERE protected=''"; $query[15] = "UPDATE mantis_user_table SET protected='1' WHERE protected='on'"; # Change CHAR(3) to INT(1) $query[16] = "ALTER TABLE mantis_project_table CHANGE enabled enabled INT (1) not null"; $query[17] = "ALTER TABLE mantis_user_pref_table CHANGE advanced_report advanced_report INT (1) not null"; $query[18] = "ALTER TABLE mantis_user_pref_table CHANGE advanced_view advanced_view INT (1) not null"; $query[19] = "ALTER TABLE mantis_user_profile_table CHANGE default_profile default_profile INT (1) not null"; $query[20] = "ALTER TABLE mantis_user_table CHANGE enabled enabled INT (1) DEFAULT '1' not null"; $query[21] = "ALTER TABLE mantis_user_table CHANGE protected protected INT (1) not null"; # ENUM Updates (Before ALTERation) $query[22] = "UPDATE mantis_project_table SET view_state='10' WHERE view_state='public'"; $query[23] = "UPDATE mantis_project_table SET view_state='50' WHERE view_state='private'"; $query[24] = "UPDATE mantis_project_table SET status='10' WHERE status='development'"; $query[25] = "UPDATE mantis_project_table SET status='30' WHERE status='release'"; $query[26] = "UPDATE mantis_project_table SET status='50' WHERE status='stable'"; $query[27] = "UPDATE mantis_project_table SET status='70' WHERE status='obsolete'"; $query[28] = "UPDATE mantis_user_table SET access_level='10' WHERE access_level='viewer'"; $query[29] = "UPDATE mantis_user_table SET access_level='25' WHERE access_level='reporter'"; $query[30] = "UPDATE mantis_user_table SET access_level='40' WHERE access_level='updater'"; $query[31] = "UPDATE mantis_user_table SET access_level='55' WHERE access_level='developer'"; $query[32] = "UPDATE mantis_user_table SET access_level='70' WHERE access_level='manager'"; $query[33] = "UPDATE mantis_user_table SET access_level='90' WHERE access_level='administrator'"; $query[34] = "UPDATE mantis_bug_table SET eta='10' WHERE eta='none'"; $query[35] = "UPDATE mantis_bug_table SET eta='20' WHERE eta='< 1 day'"; $query[36] = "UPDATE mantis_bug_table SET eta='30' WHERE eta='2-3 days'"; $query[37] = "UPDATE mantis_bug_table SET eta='40' WHERE eta='< 1 week'"; $query[38] = "UPDATE mantis_bug_table SET eta='50' WHERE eta='< 1 month'"; $query[39] = "UPDATE mantis_bug_table SET eta='60' WHERE eta='> 1 month'"; $query[40] = "UPDATE mantis_bug_table SET projection='10' WHERE projection='none'"; $query[41] = "UPDATE mantis_bug_table SET projection='30' WHERE projection='tweak'"; $query[42] = "UPDATE mantis_bug_table SET projection='50' WHERE projection='minor fix'"; $query[43] = "UPDATE mantis_bug_table SET projection='70' WHERE projection='major rework'"; $query[44] = "UPDATE mantis_bug_table SET projection='90' WHERE projection='redesign'"; $query[45] = "UPDATE mantis_bug_table SET resolution='10' WHERE resolution='open'"; $query[46] = "UPDATE mantis_bug_table SET resolution='20' WHERE resolution='fixed'"; $query[47] = "UPDATE mantis_bug_table SET resolution='30' WHERE resolution='reopened'"; $query[48] = "UPDATE mantis_bug_table SET resolution='40' WHERE resolution='unable to duplicate'"; $query[49] = "UPDATE mantis_bug_table SET resolution='50' WHERE resolution='not fixable'"; $query[50] = "UPDATE mantis_bug_table SET resolution='60' WHERE resolution='duplicate'"; $query[51] = "UPDATE mantis_bug_table SET resolution='70' WHERE resolution='not a bug'"; $query[52] = "UPDATE mantis_bug_table SET resolution='80' WHERE resolution='suspended'"; $query[53] = "UPDATE mantis_bug_table SET priority='10' WHERE priority='none'"; $query[54] = "UPDATE mantis_bug_table SET priority='20' WHERE priority='low'"; $query[55] = "UPDATE mantis_bug_table SET priority='30' WHERE priority='normal'"; $query[56] = "UPDATE mantis_bug_table SET priority='40' WHERE priority='high'"; $query[57] = "UPDATE mantis_bug_table SET priority='50' WHERE priority='urgent'"; $query[58] = "UPDATE mantis_bug_table SET priority='60' WHERE priority='immediate'"; $query[59] = "UPDATE mantis_bug_table SET status='10' WHERE status='new'"; $query[60] = "UPDATE mantis_bug_table SET status='20' WHERE status='feedback'"; $query[61] = "UPDATE mantis_bug_table SET status='30' WHERE status='acknowledged'"; $query[62] = "UPDATE mantis_bug_table SET status='40' WHERE status='confirmed'"; $query[63] = "UPDATE mantis_bug_table SET status='50' WHERE status='assigned'"; $query[64] = "UPDATE mantis_bug_table SET status='90' WHERE status='resolved'"; $query[65] = "UPDATE mantis_bug_table SET status='90' WHERE status='closed'"; $query[66] = "UPDATE mantis_bug_table SET severity='10' WHERE severity='feature'"; $query[67] = "UPDATE mantis_bug_table SET severity='20' WHERE severity='trivial'"; $query[68] = "UPDATE mantis_bug_table SET severity='30' WHERE severity='text'"; $query[69] = "UPDATE mantis_bug_table SET severity='40' WHERE severity='tweak'"; $query[70] = "UPDATE mantis_bug_table SET severity='50' WHERE severity='minor'"; $query[71] = "UPDATE mantis_bug_table SET severity='60' WHERE severity='major'"; $query[72] = "UPDATE mantis_bug_table SET severity='70' WHERE severity='crash'"; $query[73] = "UPDATE mantis_bug_table SET severity='80' WHERE severity='block'"; $query[74] = "UPDATE mantis_bug_table SET reproducibility='10' WHERE reproducibility='always'"; $query[75] = "UPDATE mantis_bug_table SET reproducibility='30' WHERE reproducibility='sometimes'"; $query[76] = "UPDATE mantis_bug_table SET reproducibility='50' WHERE reproducibility='random'"; $query[77] = "UPDATE mantis_bug_table SET reproducibility='70' WHERE reproducibility='have not tried'"; $query[78] = "UPDATE mantis_bug_table SET reproducibility='90' WHERE reproducibility='unable to duplicate'"; # Change ENUM to INT $query[79] = "ALTER TABLE mantis_project_table CHANGE view_state view_state INT (2) DEFAULT '10' not null"; $query[80] = "ALTER TABLE mantis_project_table CHANGE status status INT (2) DEFAULT '10' not null"; $query[81] = "ALTER TABLE mantis_user_table CHANGE access_level access_level INT (2) DEFAULT '10' not null"; $query[82] = "ALTER TABLE mantis_bug_table CHANGE eta eta INT (2) DEFAULT '10' not null"; $query[83] = "ALTER TABLE mantis_bug_table CHANGE projection projection INT (2) DEFAULT '10' not null"; $query[84] = "ALTER TABLE mantis_bug_table CHANGE resolution resolution INT (2) DEFAULT '10' not null"; $query[85] = "ALTER TABLE mantis_bug_table CHANGE priority priority INT (2) DEFAULT '30' not null"; $query[86] = "ALTER TABLE mantis_bug_table CHANGE status status INT (2) DEFAULT '10' not null"; # Update dates to be legal $query[87] = "UPDATE mantis_user_table SET date_created='1970-01-01 00:00:01' WHERE date_created='0000-00-00 00:00:00'"; $query[88] = "UPDATE mantis_bug_table SET date_submitted='1970-01-01 00:00:01' WHERE date_submitted='0000-00-00 00:00:00'"; $query[89] = "UPDATE mantis_news_table SET date_posted='1970-01-01 00:00:01' WHERE date_posted='0000-00-00 00:00:00'"; # Shorten cookie string to 64 characters $query[90] = "ALTER TABLE mantis_user_table CHANGE cookie_string cookie_string VARCHAR (64) not null"; # Add file_path to projects, also min access $query[91] = "ALTER TABLE mantis_project_table ADD file_path VARCHAR (250) not null"; $query[92] = "ALTER TABLE mantis_project_table ADD access_min INT (2) DEFAULT '10' not null"; # Add new user prefs $query[93] = "ALTER TABLE mantis_user_pref_table ADD refresh_delay INT (4) not null"; $query[94] = "ALTER TABLE mantis_user_pref_table ADD language VARCHAR (16)DEFAULT 'english' not null"; $query[95] = "ALTER TABLE mantis_user_pref_table ADD email_on_new INT (1) not null"; $query[96] = "ALTER TABLE mantis_user_pref_table ADD email_on_assigned INT (1) not null"; $query[97] = "ALTER TABLE mantis_user_pref_table ADD email_on_feedback INT (1) not null"; $query[98] = "ALTER TABLE mantis_user_pref_table ADD email_on_resolved INT (1) not null"; $query[99] = "ALTER TABLE mantis_user_pref_table ADD email_on_closed INT (1) not null"; $query[100] = "ALTER TABLE mantis_user_pref_table ADD email_on_reopened INT (1) not null"; $query[101] = "ALTER TABLE mantis_user_pref_table ADD email_on_bugnote INT (1) not null"; $query[102] = "ALTER TABLE mantis_user_pref_table ADD email_on_status INT (1) not null"; $query[103] = "ALTER TABLE mantis_user_pref_table ADD redirect_delay INT (1) not null"; $query[104] = "ALTER TABLE mantis_user_pref_table ADD email_on_priority INT (1) not null"; $query[105] = "ALTER TABLE mantis_user_pref_table ADD advanced_update INT (1) not null"; $query[106] = "ALTER TABLE mantis_user_pref_table ADD default_profile INT (7) UNSIGNED ZEROFILL DEFAULT '0' not null"; $query[107] = "ALTER TABLE mantis_user_pref_table ADD default_project INT (7) UNSIGNED ZEROFILL not null"; $query[108] = "ALTER TABLE mantis_user_profile_table DROP default_profile"; # Make new project level user access table $query[109] = "CREATE TABLE mantis_project_user_list_table ( project_id int(7) unsigned zerofill DEFAULT '0000000' NOT NULL, user_id int(7) unsigned zerofill DEFAULT '0000000' NOT NULL, access_level int(2) DEFAULT '10' NOT NULL)"; # Make new project file table $query[110] = "CREATE TABLE mantis_project_file_table ( id int(7) unsigned zerofill DEFAULT '0000000' NOT NULL auto_increment, project_id int(7) unsigned zerofill DEFAULT '0000000' NOT NULL, title varchar(250) NOT NULL, description varchar(250) NOT NULL, diskfile varchar(250) NOT NULL, filename varchar(250) NOT NULL, folder varchar(250) NOT NULL, filesize int(11) DEFAULT '0' NOT NULL, date_added datetime DEFAULT '1970-01-01 00:00:01' NOT NULL, content blob NOT NULL, PRIMARY KEY (id))"; # Make new bug file table $query[111] = "CREATE TABLE mantis_bug_file_table ( id int(7) unsigned zerofill DEFAULT '0000000' NOT NULL auto_increment, bug_id int(7) unsigned zerofill DEFAULT '0000000' NOT NULL, title varchar(250) NOT NULL, description varchar(250) NOT NULL, diskfile varchar(250) NOT NULL, filename varchar(250) NOT NULL, folder varchar(250) NOT NULL, filesize int(11) DEFAULT '0' NOT NULL, date_added datetime DEFAULT '1970-01-01 00:00:01' NOT NULL, content blob NOT NULL, PRIMARY KEY (id))"; # more varchar to enum conversions $query[112] = "ALTER TABLE mantis_bug_table CHANGE severity severity INT (2) DEFAULT '50' not null"; $query[113] = "ALTER TABLE mantis_bug_table CHANGE reproducibility reproducibility INT (2) DEFAULT '10' not null"; # Need this entry for the project listing to work $query[114] = "INSERT INTO mantis_project_user_list_table (project_id, user_id, access_level) VALUES ('0000000','0000000','00')"; # Add ordering field for versions $query[115] = "ALTER TABLE mantis_project_version_table ADD ver_order INT (7) not null"; # Make the cookie string unique $query[116] = "ALTER TABLE mantis_user_table ADD UNIQUE(cookie_string)"; # --------------- # run queries # --------------- for ($i=0;$i<count($query0);$i++) { $result = db_query( $query0[$i] ); if ( $result <= 0 ) { PRINT "ERROR: $query0[$i]<br />"; } else { PRINT "<span class=\"bold\">$i</span>: $query0[$i]<br />"; } } PRINT "<p>"; for ($i=0;$i<count($query);$i++) { $result = db_query( $query[$i] ); if ( $result <= 0 ) { PRINT "ERROR: $query[$i]<br />"; } else { PRINT "<span class=\"bold\">$i</span>: $query[$i]<br />"; } } PRINT "<p>Restoring Bug Date Information"; # Restore bug data information $save_bug_count = db_num_rows( $save_bug_result ); for ($i=0;$i<$save_bug_count;$i++) { $row = db_fetch_array( $save_bug_result ); extract( $row ); $run_query = "UPDATE mantis_bug_table SET last_updated='$last_updated' WHERE id='$id'"; $run_result = db_query( $run_query ); } PRINT "<p>Restoring User Date Information"; # Restore bug data information $save_user_count = db_num_rows( $save_user_result ); for ($i=0;$i<$save_user_count;$i++) { $row = db_fetch_array( $save_user_result ); extract( $row ); if ( isset( $last_visit ) ) { $run_query = "UPDATE mantis_user_table SET last_visit='$last_visit' WHERE id='$id'"; } else { $run_query = "UPDATE mantis_user_table SET last_visit=NOW() WHERE id='$id'"; } $run_result = db_query( $run_query ); } ?> <p>Finished --- NEW FILE: admin_upgrade_0_16_0.php --- <?php require( "../constant_inc.php" ); require( "../config_inc.php" ); require( "../core_database_API.php" ); ?> <?php db_connect( $g_hostname, $g_db_username, $g_db_password, $g_database_name ); class UpgradeItem { var $item_count; var $query_arr; function UpgradeItem() { $this->item_count = 0; $this->query_arr = array(); } function AddItem( $p_string ) { $this->query_arr[$this->item_count] = $p_string; $this->item_count++; } function PrintAll() { for ( $i=0; $i<$this->item_count; $i++ ) { echo "ONLY PRINTING: ".$this->query_arr[$i]."<br />"; } } function PerformAll() { for ( $i=0; $i<$this->item_count; $i++ ) { PRINT "Executing upgrade #".$i.": ".$this->query_arr[$i]."<br />"; $result = db_query( $this->query_arr[$i] ); } } } ?> <?php # save timestamps $query = "SELECT id, last_updated FROM mantis_bug_table"; $result = db_query( $query ); $upgrade_obj = new UpgradeItem(); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_file_table ADD file_type VARCHAR(250) NOT NULL AFTER filesize" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_project_file_table ADD file_type VARCHAR(250) NOT NULL AFTER filesize" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_table CHANGE os_build os_build VARCHAR(32) NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_table CHANGE build build VARCHAR(32) NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_table CHANGE votes votes INT(4) NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_user_profile_table CHANGE os_build os_build VARCHAR(32) NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_user_pref_table CHANGE language language VARCHAR(32) DEFAULT 'english' NOT NULL" ); $upgrade_obj->AddItem( "CREATE TABLE mantis_bug_history_table ( user_id int(7) unsigned zerofill NOT NULL default '0000000', bug_id int(7) unsigned zerofill NOT NULL default '0000000', date_modified datetime NOT NULL default '1970-01-01 00:00:01', field_name varchar(32) NOT NULL default '', old_value varchar(128) NOT NULL default '', new_value varchar(128) NOT NULL default '', KEY bug_id (bug_id), KEY user_id (user_id))" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_project_version_table ADD date_order DATETIME DEFAULT '1970-01-01 00:00:01' NOT NULL" ); $upgrade_obj->PerformAll(); # restore timestamps $bug_count = db_num_rows( $result ); for ( $i=0; $i < $bug_count; $i++ ) { $row = db_fetch_array( $result ); extract( $row ); $query2 = "UPDATE mantis_bug_table SET last_updated='$last_updated' WHERE id='$id'"; $result2 = db_query( $query2 ); } ?> <p>Finished --- NEW FILE: admin_upgrade_0_17_0.php --- <?php require( "../constant_inc.php" ); require( "../config_inc.php" ); require( "../core_database_API.php" ); ?> <?php db_connect( $g_hostname, $g_db_username, $g_db_password, $g_database_name ); class UpgradeItem { var $item_count; var $query_arr; function UpgradeItem() { $this->item_count = 0; $this->query_arr = array(); } function AddItem( $p_string ) { $this->query_arr[$this->item_count] = $p_string; $this->item_count++; } function PrintAll() { for ( $i=0; $i<$this->item_count; $i++ ) { echo "ONLY PRINTING: ".$this->query_arr[$i]."<br />"; } } function PerformAll() { for ( $i=0; $i<$this->item_count; $i++ ) { PRINT "Executing upgrade #".$i.": ".$this->query_arr[$i]."<br />"; $result = db_query( $this->query_arr[$i] ); } } } ?> <?php $upgrade_obj = new UpgradeItem(); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_table CHANGE last_updated last_updated DATETIME DEFAULT '1970-01-01 00:00:01' NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bugnote_table CHANGE last_modified last_modified DATETIME DEFAULT '1970-01-01 00:00:01' NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_news_table CHANGE last_modified last_modified DATETIME DEFAULT '1970-01-01 00:00:01' NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_user_table CHANGE last_visit last_visit DATETIME DEFAULT '1970-01-01 00:00:01' NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_file_table CHANGE content content LONGBLOB NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_project_file_table CHANGE content content LONGBLOB NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_table ADD view_state INT(2) DEFAULT '10' NOT NULL AFTER profile_id" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bugnote_table ADD view_state INT(2) DEFAULT '10' NOT NULL AFTER bugnote_text_id" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_project_version_table CHANGE version version VARCHAR(64) NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_project_category_table CHANGE category category VARCHAR(64) NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_table CHANGE category category VARCHAR(64) NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_table CHANGE version version VARCHAR(64) NOT NULL" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_user_pref_table ADD project_id INT(7) UNSIGNED ZEROFILL NOT NULL AFTER user_id" ); $upgrade_obj->AddItem( "CREATE TABLE mantis_bug_relationship_table ( source_bug_id int(7) unsigned zerofill NOT NULL default '0000000', destination_bug_id int(7) unsigned zerofill NOT NULL default '0000000', relationship_type int(2) NOT NULL default '0')" ); $upgrade_obj->AddItem( "CREATE TABLE mantis_bug_monitor_table ( user_id int(7) unsigned zerofill NOT NULL default '0000000', bug_id int(7) unsigned NOT NULL default '0')" ); $upgrade_obj->PerformAll(); ?> <p>Finished --- NEW FILE: admin_upgrade_0_18_0.php --- <?php require_once ( 'admin_upgrade_inc.php' ); $upgrade_obj = new UpgradeItem(); $upgrade_obj->SetUpgradeName ( 'Upgrade from 0.17.x to 0.18.x', 'admin_upgrade_0_18_0' ); # START OF UPGRADE SQL STATEMENTS # --- LATEST CHANGES SHOULD GO AT THE BOTTOM --- $upgrade_obj->AddItem( "# Bug history" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_history_table ADD type INT(2) NOT NULL" ); $upgrade_obj->AddItem(); $upgrade_obj->AddItem( "# Auto-assigning of bugs for a default user per category" ); $upgrade_obj->AddItem( "ALTER TABLE mantis_bug_history_table ADD type INT(2) NOT NULL" ); # END OF UPGRADE SQL STATEMENTS if ( !isset ( $f_action ) ) { $upgrade_obj->PrintActions(); } else { $upgrade_obj->Execute( $f_action ); } ?> --- NEW FILE: admin_upgrade_inc.php --- <?php require_once( '../constant_inc.php' ); require_once( '../config_inc.php' ); require_once( '../core_database_API.php' ); ?> <?php db_connect( $g_hostname, $g_db_username, $g_db_password, $g_database_name ); class UpgradeItem { var $item_count; var $query_arr; var $upgrade_name; var $upgrade_file; function UpgradeItem() { $this->item_count = 0; $this->query_arr = array(); $this->upgrade_name = 'upgrade_name_not_set_call_SetUpgradeName'; $this->upgrade_file = 'script_name_not_set_call_SetUpgradeName'; } # For example, Upgrade Name = 'Upgrade from 0.17.x to 0.18.x' # Upgrade File = 'admin_upgrade_0_18_0' # The upgrade file name will also be used for the name of the generated # SQL file, it should also be the same as the php script file that has the # SQL statements and their execution (without extension). function SetUpgradeName( $p_upgrade_name, $p_upgrade_file ) { $this->upgrade_name = $p_upgrade_name; $this->upgrade_file = $p_upgrade_file; } # Valid comments are empty lines or lines that start with a # function IsValidComment( $p_comment ) { return ( ( strlen ( $p_comment ) == 0 ) || ( $p_comment[0] == '#' ) ); } function AddComment( $p_comment ) { if ( !$this->IsValidComment( $p_comment ) ) { PRINT "Error: Comments must start with # ( $p_comment )"; return; } $this->AddItem ( $p_comment ); } # Empty lines or lines start with a # are considered comments function AddItem( $p_string = '' ) { $this->query_arr[$this->item_count] = $p_string; $this->item_count++; } # Prints the upgrade title + the execution links, hence SetUpgradeName()) must be called first. function PrintActions() { global $g_php; PRINT "<tr><td width='300'>$this->upgrade_name</td><td> [ <a href='$this->upgrade_file$g_php?f_action=print'>Print</a> ] [ <a href='$this->upgrade_file$g_php?f_action=sql'>Download SQL</a> ] [ <a href='$this->upgrade_file$g_php?f_action=upgrade'>Upgrade Now</a> ]</td></tr>"; } function Execute( $p_action ) { if ( strcmp($p_action, 'print' ) == 0 ) { $t_message = "PRINTING ONLY"; } else if ( strcmp ( $p_action, 'upgrade' ) == 0 ) { $t_message = "PRINTING AND EXECUTING"; } else if ( strcmp ( $p_action, 'sql' ) == 0) { # @@@ The generated file is in UNIX format, should it be in Windows format? $t_filename = $this->upgrade_file . '.sql'; header( "Content-Type: text/plain; name=$t_filename" ); header( 'Content-Transfer-Encoding: BASE64;' ); header( "Content-Disposition: attachment; filename=$t_filename" ); for ( $i=0; $i<$this->item_count; $i++ ) { if ( $this->IsValidComment( $this->query_arr[$i] ) ) { PRINT $this->query_arr[$i] . "\n"; } else { PRINT $this->query_arr[$i] . ";\n"; } } die; # how to mark the eof with terminating the script. } else { PRINT "Unknown action < $p_action >."; return; } PRINT "<hr><big>$this->upgrade_name - $t_message</big><br><hr><code>"; $t_query_number = 0; for ( $i=0; $i<$this->item_count; $i++ ) { if ( $this->IsValidComment( $this->query_arr[$i] ) ) { PRINT '<b>' . $this->query_arr[$i] . '</b><br>'; } else { $t_query_number++; PRINT $t_query_number . ': '.$this->query_arr[$i].'<br>'; flush(); if ( strcmp( $p_action, 'upgrade' ) == 0 ) { $result = db_query( $this->query_arr[$i] ); } } } PRINT "</code><hr>"; } } ?> |