diff --git a/addons/babel.eclipse.org/backend_functions.php b/addons/babel.eclipse.org/backend_functions.php
index 17a19cf..9074eb9 100644
--- a/addons/babel.eclipse.org/backend_functions.php
+++ b/addons/babel.eclipse.org/backend_functions.php
@@ -32,8 +32,8 @@
         $hash_query = "SELECT users.password_hash FROM users WHERE email = '$email'";
         $hash_result = mysqli_query($dbh, $hash_query);
 
-        if ($hash_result && mysql_num_rows($hash_result) > 0) {
-            $hash_row = mysql_fetch_assoc($hash_result);
+        if ($hash_result && mysqli_num_rows($hash_result) > 0) {
+            $hash_row = mysqli_fetch_assoc($hash_result);
             $hash = $hash_row['password_hash'];
 
             # Handle crypt and sha-256 passwords
@@ -54,9 +54,9 @@
                             AND password_hash = '" . $pw . "'";
 
             $result = mysqli_query($dbh, $sql);
-            if($result && mysql_num_rows($result) > 0) {
+            if($result && mysqli_num_rows($result) > 0) {
                 $rValue = true;
-                $myrow = mysql_fetch_assoc($result);
+                $myrow = mysqli_fetch_assoc($result);
 
                 $User->userid               = $myrow['userid'];
                 $User->username             = $myrow['username'];
@@ -73,11 +73,11 @@
 
             } else {
                 // password failed
-                $GLOBALS['g_ERRSTRS'][1] = mysql_error();
+                $GLOBALS['g_ERRSTRS'][1] = mysqli_error();
             }
         } else {
             // username failed
-            $GLOBALS['g_ERRSTRS'][1] = mysql_error();
+            $GLOBALS['g_ERRSTRS'][1] = mysqli_error();
         }
     }
 
diff --git a/classes/database_versioning/abstractschemachecker.class.php b/classes/database_versioning/abstractschemachecker.class.php
index fd751ec..4d00ca1 100644
--- a/classes/database_versioning/abstractschemachecker.class.php
+++ b/classes/database_versioning/abstractschemachecker.class.php
@@ -28,8 +28,8 @@
 		if( $context->testmode && $context->initmode === false ) {
 			echo "..creating in memory <br>\n";
 		 	$sql = "DROP TABLE IF EXISTS $tablename ";
-		 	mysql_remember_query( $sql, $dbh );
-		 	mysql_error_check();
+		 	remember_query($dbh, $sql);
+		 	mysqli_error_check($dbh);
 		 	$sql = $this->$createfunction('');
 		 	$translations = array(
 				'/param(\d+) TEXT/' => 'param\1 varchar(1024)',
@@ -52,14 +52,14 @@
 			return true;
 		} else {
 			$table_name = $tablename.$tablenamesuffix;		
-			$result = mysql_remember_query( "DESCRIBE $tablename$tablenamesuffix", $dbh );
-			if( strlen(mysql_error()) > 0 ) {
+			$result = remember_query($dbh, "DESCRIBE $tablename$tablenamesuffix");
+			if( strlen(mysqli_error()) > 0 ) {
 				if( $context->devmode
 				 || $context->testmode
 				 || $databasename == 'myfoundation' ) {
 					echo "..does not exist, creating <br>\n";
 					$this->create_db( $this->$createfunction($tablenamesuffix),  $dbh );
-					$result = mysql_remember_query( "DESCRIBE $tablename$tablenamesuffix", $dbh );
+					$result = remember_query($dbh, "DESCRIBE $tablename$tablenamesuffix");
 					$str = $this->table_has_schema($result, $tablename . $tablenamesuffix, $schemas[count($schemas)], $dbh);
 					if( $str === false )
 						return true;
@@ -69,10 +69,10 @@
 						return false;
 					}
 				} else {
-//				print mysql_error();
+//				print mysqli_error();
 					echo "..does not exist, error <br>\n";
 					$this->createTableFromSchema($table_name,$schemas[count($schemas)],$dbh,$context);				
-					$result = mysql_remember_query( "DESCRIBE $tablename$tablenamesuffix", $dbh );
+					$result = remember_query($dbh, "DESCRIBE $tablename$tablenamesuffix");
 					$str = $this->table_has_schema($result, $tablename . $tablenamesuffix, $schemas[count($schemas)], $dbh);
 					if( $str === false )
 						return true;
@@ -87,7 +87,7 @@
 			$laststr = '';
 			for( $i = 1; $i <= count($schemas); $i++ ) {
 				if( $i > 1 )
-					$result = mysql_remember_query( "DESCRIBE $tablename$tablenamesuffix", $dbh );
+					$result = remember_query($dbh, "DESCRIBE $tablename$tablenamesuffix");
 				$str = $this->table_has_schema($result, $tablename . $tablenamesuffix, $schemas[$i], $dbh);
 				if( $str === false )
 					$lastmatch = $i;
@@ -98,10 +98,10 @@
 				if( $context->devmode
 				 || $context->testmode ) {
 		  			echo "..no matching schema, deleting and recreating <br>\n";
-		  			mysql_remember_query( "DROP TABLE $tablename$tablenamesuffix", $dbh);
-					mysql_error_check();
+		  			remember_query($dbh, "DROP TABLE $tablename$tablenamesuffix");
+					mysqli_error_check($dbh);
 					$this->create_db( $this->$createfunction($tablenamesuffix),  $dbh );
-					$result = mysql_remember_query( "DESCRIBE $tablename$tablenamesuffix", $dbh );
+					$result = remember_query($dbh, "DESCRIBE $tablename$tablenamesuffix");
 					$str = $this->table_has_schema($result, $tablename . $tablenamesuffix, $schemas[count($schemas)], $dbh);
 					if( $str === false )
 						return true;
@@ -129,7 +129,7 @@
 			 		$modifyfunction = 'modify_' . $tablename . '_' . $i . '_' . ($i+1);
 			 		$this->$modifyfunction( $tablenamesuffix, $dbh );
 			 	}
-				$result = mysql_remember_query( "DESCRIBE $tablename$tablenamesuffix", $dbh );
+				$result = remember_query($dbh, "DESCRIBE $tablename$tablenamesuffix");
 				$str = $this->table_has_schema($result, $tablename . $tablenamesuffix, $schemas[count($schemas)], $dbh);
 				if( $str === false )
 					return true;
@@ -186,7 +186,7 @@
 				print "MODIFY - $k\n";
 				if($diff['Default'] or $diff['Field']){
 					$modq = "alter table $table_name modify  $k ".$new_fields[$k]['Type']." ".$new_fields[$k]['Default']. " ".$diff['Extra'];
-					mysql_remember_query($modq,$dbh);
+					remember_query($dbh, $modq);
 				}
 			}else{
 				//drop new field
@@ -198,7 +198,7 @@
 				if($v['Key'] == "MUL"){
 					$query .= " DROP INDEX ";
 				}
-				mysqli_query($query);
+				mysqli_query($dbh, $query);
 			}
 		}
 
@@ -221,9 +221,9 @@
 				}
 				
 				print $query."\n";
-				mysqli_query($query);
+				mysqli_query($dbh, $query);
 				foreach($endqueries as $q){
-					mysqli_query($q);
+					mysqli_query($dbh, $q);
 				}
 				
 			}
@@ -276,7 +276,7 @@
 		print $query;
 		$result = mysqli_query($dbh, $query);
 		$ret = array();
-		while( $row = mysql_fetch_assoc($result) ) {
+		while( $row = mysqli_fetch_assoc($result) ) {
 			$ret[$row['Field']] = $row;
 		}	
 		return $ret;
@@ -308,15 +308,15 @@
 	}
 	
 	private function create_db( $sql, $dbh ) {
-		mysql_remember_query( $sql, $dbh );
-		mysql_error_check();
+		remember_query($dbh, $sql);
+		mysqli_error_check($dbh);
 	}
 	
 	/* returns error string if error, null if schema matches */
 	private function table_has_schema( $result, $tablename, $schemadescription, $dbh ) {
 		$schema = $this->splitSchema($schemadescription);
 		
-		while( $row = mysql_fetch_assoc($result) ) {
+		while( $row = mysqli_fetch_assoc($result) ) {
 			if( !array_key_exists($row['Field'], $schema) ) {
 				$rtrn .= "..column " . $row['Field'] . " not in schema  <br>\n";
 				continue;
diff --git a/classes/database_versioning/check-database-schema.class.php b/classes/database_versioning/check-database-schema.class.php
index 7928a81..49d8d08 100644
--- a/classes/database_versioning/check-database-schema.class.php
+++ b/classes/database_versioning/check-database-schema.class.php
@@ -26,7 +26,7 @@
 	
 			if( file_exists( $dir . "$component/check-database-schema.php" ) ) {
 				echo "Checking db schema for table '$component'\n";
-				mysql_select_db($component);
+				mysqli_select_db($dbh, $component);
 				// the included code uses the context to check (and perhaps modify) the database(s) schemas
 				include_once( $dir . "$component/check-database-schema.php" );
 				$checkername = $component . "_SchemaChecker";
diff --git a/classes/database_versioning/check_databases.php b/classes/database_versioning/check_databases.php
index 38c5754..14b66c0 100644
--- a/classes/database_versioning/check_databases.php
+++ b/classes/database_versioning/check_databases.php
@@ -17,7 +17,7 @@
 global $spent_quries;
 $spent_quries = array();
 
-function mysql_remember_query($sql,$dbh){
+function remember_query($dbh, $sql){
 	global $spent_quries;
 	$spent_quries[] = $sql;
 	return mysqli_query($dbh, $sql);
diff --git a/classes/export/dbmaintenance_15min.php b/classes/export/dbmaintenance_15min.php
index 6d25fc6..17d9863 100644
--- a/classes/export/dbmaintenance_15min.php
+++ b/classes/export/dbmaintenance_15min.php
@@ -51,7 +51,7 @@
 GROUP BY f.file_id, l.language_id
 HAVING translate_percent > 0";
 		$rs = mysqli_query($dbh, $sql);
-		while($myrow = mysql_fetch_assoc($rs)) {
+		while($myrow = mysqli_fetch_assoc($rs)) {
 			mysqli_query($dbh, "INSERT INTO file_progress (file_id, language_id, pct_complete)
 			VALUES(" . $myrow['file_id'] . ", " . $myrow['language_id'] . ", " . $myrow['translate_percent'] . ")
 			ON DUPLICATE KEY UPDATE pct_complete=" . $myrow['translate_percent']);
@@ -62,7 +62,7 @@
 	# Update project/version/language progress 
 	$sql = "SELECT * FROM project_progress WHERE is_stale";
 	$rs = mysqli_query($dbh, $sql);
-	while($myrow = mysql_fetch_assoc($rs)) {
+	while($myrow = mysqli_fetch_assoc($rs)) {
 		mysqli_query($dbh, "LOCK TABLES project_progress WRITE, 
 			project_versions AS v READ, 
 			files AS f READ, 
@@ -94,7 +94,7 @@
 					        AND v.version = '" . addslashes($myrow['version']) . "'
 					 )";
 		mysqli_query($dbh, $sql);
-		echo mysql_error();
+		echo mysqli_error();
 		
 		# Let's lock and unlock in the loop to allow other queries to go through. There's no rush on completing these stats.
 		mysqli_query($dbh, "UNLOCK TABLES");
diff --git a/classes/export/generate1.php b/classes/export/generate1.php
index 067f8d1..4b7b2b9 100755
--- a/classes/export/generate1.php
+++ b/classes/export/generate1.php
@@ -43,9 +43,9 @@
 # Get all release trains
 $dbc = new DBConnection();
 $dbh = $dbc->connect();
-$result = mysqli_query("SELECT * FROM release_trains ORDER BY train_version DESC");
+$result = mysqli_query($dbh, "SELECT * FROM release_trains ORDER BY train_version DESC");
 $train_result = array();
-while ($train_row = mysql_fetch_assoc($result)) {
+while ($train_row = mysqli_fetch_assoc($result)) {
   $train_result[$train_row['train_id']] = $train_row['train_version'];
 }
 
@@ -136,13 +136,13 @@
 	exec("mkdir ${output_dir_for_train}plugins/");
 
 	$sql = "SELECT language_id, iso_code, IF(locale <> '', CONCAT(CONCAT(CONCAT(name, ' ('), locale), ')'), name) as name, is_active, IF(language_id = 1,1,0) AS sorthack FROM languages ORDER BY sorthack, name ASC";
-	$language_result = mysqli_query($sql);
+	$language_result = mysqli_query($dbh, $sql);
 	if($language_result === FALSE) {
 		# We may have lost the database connection with our shell-outs, reconnect
 		$dbh = $dbc->connect();
-		$language_result = mysqli_query($sql);
+		$language_result = mysqli_query($dbh, $sql);
 	}
-	while (($language_row = mysql_fetch_assoc($language_result)) != null) {
+	while (($language_row = mysqli_fetch_assoc($language_result)) != null) {
 		$language_name = $language_row['name'];
 		$language_iso = $language_row['iso_code'];
 		$language_id = $language_row['language_id'];
@@ -155,14 +155,14 @@
 
 		# Determine which plug-ins need to be in this language pack
 		if (strcmp($language_iso, "en_AA") == 0) {
-			$file_result = mysqli_query("SELECT DISTINCT f.project_id, f.version, f.file_id, f.name
+			$file_result = mysqli_query($dbh, "SELECT DISTINCT f.project_id, f.version, f.file_id, f.name
 				FROM files AS f
 				INNER JOIN strings AS s ON f.file_id = s.file_id
 				INNER JOIN release_train_projects as v ON (f.project_id = v.project_id AND f.version = v.version)
 				WHERE f.is_active
 				AND v.train_id = '" . $train_id . "'");
 		} else {
-			$file_result = mysqli_query("SELECT DISTINCT f.project_id, f.version, f.file_id, f.name
+			$file_result = mysqli_query($dbh, "SELECT DISTINCT f.project_id, f.version, f.file_id, f.name
 				FROM files AS f
 				INNER JOIN strings AS s ON f.file_id = s.file_id
 				INNER JOIN translations AS t ON (s.string_id = t.string_id AND t.is_active)
@@ -177,7 +177,7 @@
 		$projects_include_orion = array();
 		$project_versions = array();
 		$pseudo_translations_indexes = array();
-		while (($file_row = mysql_fetch_assoc($file_result)) != null) {
+		while (($file_row = mysqli_fetch_assoc($file_result)) != null) {
 			# save original filename
 			$file_row['origname'] = $file_row['name'];
 
@@ -274,8 +274,8 @@
 				if (strcmp($language_iso, "en_AA") == 0) {
 					$sql = "SELECT string_id, name, value FROM strings WHERE file_id = " . $properties_file['file_id'] .
 						" AND is_active AND non_translatable = 0";
-					$strings_result = mysqli_query($sql);
-					while (($strings_row = mysql_fetch_assoc($strings_result)) != null) {
+					$strings_result = mysqli_query($dbh, $sql);
+					while (($strings_row = mysqli_fetch_assoc($strings_result)) != null) {
 						/* Check for value starting with form tag (bug 270456) */
 						if (preg_match("/^(<form>)(.*)/i", $strings_row['value'], $matches)) {
 							$pattern = "/^(<form>)(.*)/i";
@@ -309,8 +309,8 @@
 						AND strings.non_translatable = 0
 						AND translations.language_id = " . $language_id . "
 						AND translations.is_active";
-					$strings_result = mysqli_query($sql);
-					while (($strings_row = mysql_fetch_assoc($strings_result)) != null) {
+					$strings_result = mysqli_query($dbh, $sql);
+					while (($strings_row = mysqli_fetch_assoc($strings_result)) != null) {
 						fwrite($outp, "\n" . $strings_row['key'] . "=");
 						# echo "${leader1S}${leaderS}${leaderS}${leaderS}" . $strings_row['key'] . "=";
 						if ($strings_row['trans']) {
@@ -568,8 +568,8 @@
 					WHERE project_id = \"$project_id\"
 						AND version = \"$project_version\"
 						AND language_id = $language_id";
-				$project_pct_complete_result = mysqli_query($sql);
-				$project_pct_complete = mysql_result($project_pct_complete_result, 0);
+				$project_pct_complete_result = mysqli_query($dbh, $sql);
+				$project_pct_complete = mysqli_result($project_pct_complete_result, 0);
 			}
 
 			$outp = fopen("$tmp_dir/feature.xml", "w");
diff --git a/classes/export/generate_orion.php b/classes/export/generate_orion.php
index b8ad682..04695f9 100644
--- a/classes/export/generate_orion.php
+++ b/classes/export/generate_orion.php
@@ -17,9 +17,9 @@
 # Get all release trains
 $dbc = new DBConnection();
 $dbh = $dbc->connect();
-$result = mysqli_query("SELECT * FROM release_trains ORDER BY train_version DESC");
+$result = mysqli_query($dbh, "SELECT * FROM release_trains ORDER BY train_version DESC");
 $train_result = array();
-while ($train_row = mysql_fetch_assoc($result)) {
+while ($train_row = mysqli_fetch_assoc($result)) {
   $train_result[$train_row['train_id']] = $train_row['train_version'];
 }
 
@@ -95,13 +95,13 @@
 	$site_xml = "";
 
 	$sql = "SELECT language_id, iso_code, IF(locale <> '', CONCAT(CONCAT(CONCAT(name, ' ('), locale), ')'), name) as name, IF(locale <> '', CONCAT(name, locale), name) as name_no_space, is_active, IF(language_id = 1,1,0) AS sorthack FROM languages ORDER BY sorthack, name ASC";
-	$language_result = mysqli_query($sql);
+	$language_result = mysqli_query($dbh, $sql);
 	if($language_result === FALSE) {
 		# We may have lost the database connection with our shell-outs, reconnect
 		$dbh = $dbc->connect();
-		$language_result = mysqli_query($sql);
+		$language_result = mysqli_query($dbh, $sql);
 	}
-	while (($language_row = mysql_fetch_assoc($language_result)) != null) {
+	while (($language_row = mysqli_fetch_assoc($language_result)) != null) {
 		$language_name = $language_row['name'];
 		$language_name_no_space = $language_row['name_no_space'];
 		$language_iso = $language_row['iso_code'];
@@ -117,7 +117,7 @@
 
 		# Determine which plug-ins need to be in this language pack
 		if (strcmp($language_iso, "en_AA") == 0) {
-			$file_result = mysqli_query("SELECT DISTINCT f.project_id, f.version, f.file_id, f.name
+			$file_result = mysqli_query($dbh, "SELECT DISTINCT f.project_id, f.version, f.file_id, f.name
 				FROM files AS f
 				INNER JOIN strings AS s ON f.file_id = s.file_id
 				INNER JOIN release_train_projects as v ON (f.project_id = v.project_id AND f.version = v.version)
@@ -125,7 +125,7 @@
 				AND f.project_id = 'eclipse.orion'
 				AND v.train_id = '" . $train_id . "'");
 		} else {
-			$file_result = mysqli_query("SELECT DISTINCT f.project_id, f.version, f.file_id, f.name
+			$file_result = mysqli_query($dbh, "SELECT DISTINCT f.project_id, f.version, f.file_id, f.name
 				FROM files AS f
 				INNER JOIN strings AS s ON f.file_id = s.file_id
 				INNER JOIN release_train_projects as v ON (f.project_id = v.project_id AND f.version = v.version)
@@ -144,11 +144,11 @@
 				WHERE project_id = \"$project_id\"
 					AND version = \"$version\"
 					AND language_id = $language_id";
-			$project_pct_complete_result = mysqli_query($sql);
-			if (mysql_num_rows($project_pct_complete_result) == 0) {
+			$project_pct_complete_result = mysqli_query($dbh, $sql);
+			if (mysqli_num_rows($project_pct_complete_result) == 0) {
 				$project_pct_complete = 0;
 			} else {
-				$project_pct_complete = mysql_result($project_pct_complete_result, 0);
+				$project_pct_complete = mysqli_result($project_pct_complete_result, 0);
 			}
 		}
 
@@ -157,7 +157,7 @@
 			$projects = array();
 			$project_versions = array();
 			$pseudo_translations_indexes = array();
-			while (($file_row = mysql_fetch_assoc($file_result)) != null) {
+			while (($file_row = mysqli_fetch_assoc($file_result)) != null) {
 				# parse plugin name, dir name, file name
 				$pattern = 
 					'/^
@@ -209,8 +209,8 @@
 					if (strcmp($language_iso, "en_AA") == 0) {
 						$sql = "SELECT string_id, name AS 'key', value FROM strings WHERE file_id = " . $properties_file['file_id'] .
 							" AND is_active AND non_translatable = 0";
-						$strings_result = mysqli_query($sql);
-						while (($strings_row = mysql_fetch_assoc($strings_result)) != null) {
+						$strings_result = mysqli_query($dbh, $sql);
+						while (($strings_row = mysqli_fetch_assoc($strings_result)) != null) {
 							if ($line_leader == null) {
 								fwrite($outp, "\n  ");
 								$line_leader = ",\n  ";
@@ -241,8 +241,8 @@
 							AND strings.non_translatable = 0
 							AND translations.language_id = " . $language_id . "
 							AND translations.is_active";
-						$strings_result = mysqli_query($sql);
-						while (($strings_row = mysql_fetch_assoc($strings_result)) != null) {
+						$strings_result = mysqli_query($dbh, $sql);
+						while (($strings_row = mysqli_fetch_assoc($strings_result)) != null) {
 							if ($line_leader == null) {
 								fwrite($outp, "\n  ");
 								$line_leader = ",\n  ";
diff --git a/classes/export/import_from_csv.php b/classes/export/import_from_csv.php
index 492bc48..db89465 100644
--- a/classes/export/import_from_csv.php
+++ b/classes/export/import_from_csv.php
@@ -58,7 +58,7 @@
 $csv_file = $argv[3];
 
 $sql = "select language_id from languages where iso_code = '" . addslashes($language) ."'";
-$lrow = mysql_fetch_assoc(mysqli_query($sql));
+$lrow = mysqli_fetch_assoc(mysqli_query($dbh, $sql));
 if (!$lrow) {
 	echo "This language code is not supported by Babel. Please see the Babel documentation for more information";
 	exit;
@@ -72,8 +72,8 @@
 SELECT s.string_id FROM files AS f INNER JOIN strings AS s ON f.file_id = s.file_id INNER JOIN release_train_projects as v ON (f.project_id = v.project_id AND f.version = v.version) WHERE f.is_active AND s.non_translatable <> 1 AND s.name = '$data[0]' AND s.value = BINARY '$data[1]' AND v.train_id = '$release_train_id'
 
 SQL;
-    $values = mysqli_query($sql);
-    $value_row = mysql_fetch_assoc($values);
+    $values = mysqli_query($dbh, $sql);
+    $value_row = mysqli_fetch_assoc($values);
     if (!$value_row) {
 	    echo "Could not find the matching record for $data[0] with a value of $data[1]";
 	    continue;
@@ -81,7 +81,7 @@
     $string_id = $value_row['string_id'];
     
     $sql = "select possibly_incorrect from translations where string_id = $string_id and language_id = $language_id";
-    $tr_row = mysql_fetch_assoc(mysqli_query($sql));
+    $tr_row = mysqli_fetch_assoc(mysqli_query($dbh, $sql));
     if ($tr_row) {
 	    if ($fuzzy == 1) {
 		    if ($tr_row['possibly_incorrect'] == 1) {
@@ -95,10 +95,10 @@
 		    // we are not fuzzy, for now let's assume it's ok to override non-fuzzy translations when yours aren't either.
 	    }
 	    $query = "UPDATE translations set is_active = 0 where string_id = " . $string_id . " and language_id = '" . $language_id . "'";
-	    mysqli_query($query);
+	    mysqli_query($dbh, $query);
     }
     $query = "INSERT INTO translations(string_id, language_id, value, userid, created_on, possibly_incorrect) values('". addslashes($string_id) ."','".  addslashes($language_id) ."','" . addslashes($data[2]) . "', '". addslashes($USER) ."', NOW(), $fuzzy)";
-    mysqli_query($query);
+    mysqli_query($dbh, $query);
     echo "Added translation \"$data[2]\" for entry '$data[0]'\n";
 }
 fclose($handle);
diff --git a/classes/export/import_js_translations.php b/classes/export/import_js_translations.php
index 257e923..3fff6b3 100644
--- a/classes/export/import_js_translations.php
+++ b/classes/export/import_js_translations.php
@@ -58,7 +58,7 @@
 		AND F.project_id = '" . $PROJECT_ID . "' AND F.version = '" . $VERSION . "'
 			AND F.name LIKE '%" . $file . "' AND L.iso_code = '" . $language . "'";
 		$rs = mysqli_query($dbh, $SQL);
-		if($myrow = mysql_fetch_assoc($rs)) {
+		if($myrow = mysqli_fetch_assoc($rs)) {
 			$file_id 		= $myrow['file_id'];
 			$language_id 	= $myrow['language_id'];
 			# echo "  Found file: " . $file_id . "\n";
@@ -93,7 +93,7 @@
 							WHERE s.is_active = 1 AND s.non_translatable <> 1 AND s.file_id = " . $file_id . " AND s.name = '" . $key . "'";
 							$rs_string = mysqli_query($dbh, $SQL);
 						if ($rs_string) {
-							$myrow_string = mysql_fetch_assoc($rs_string);
+							$myrow_string = mysqli_fetch_assoc($rs_string);
 							if($myrow_string['string_id'] > 0  				# There is an English string   
 								 && $value != ""							# With a non-null English value
 								 && $myrow_string['ever_tr_value'] == ""	# That's never been translated to this incoming value
diff --git a/classes/export/import_translation_zip.php b/classes/export/import_translation_zip.php
index 7936661..8f4a225 100644
--- a/classes/export/import_translation_zip.php
+++ b/classes/export/import_translation_zip.php
@@ -84,7 +84,7 @@
 		AND F.project_id = '" . $PROJECT_ID . "' AND F.version = '" . $VERSION . "'
 			AND F.name LIKE '%" . $first_part_file . "%' AND F.name LIKE '%" . $second_part_file . "' AND L.iso_code = '" . $language . "'";
 		$rs = mysqli_query($dbh, $SQL);
-		if($myrow = mysql_fetch_assoc($rs)) {
+		if($myrow = mysqli_fetch_assoc($rs)) {
 			$file_id 		= $myrow['file_id'];
 			$language_id 	= $myrow['language_id'];
 			echo "  Found file: " . $file_id . "\n";
@@ -95,7 +95,7 @@
 			AND F.project_id = '" . $PROJECT_ID . "' AND F.version = '" . $VERSION . "'
 				AND F.name LIKE '%" . $first_part_file . "%' AND F.name LIKE '%" . $last_part_file . "' AND L.iso_code = '" . $language . "'";
 			$rs = mysqli_query($dbh, $SQL);
-			if($myrow = mysql_fetch_assoc($rs)) {
+			if($myrow = mysqli_fetch_assoc($rs)) {
 				$file_id 		= $myrow['file_id'];
 				$language_id 	= $myrow['language_id'];
 				echo "  Found file: " . $file_id . "\n";
@@ -154,7 +154,7 @@
 	    					and trv.value = '" . addslashes(unescape($tags[1])) . "')
 							WHERE s.is_active = 1 AND s.non_translatable <> 1 AND s.file_id = " . $file_id . " AND s.name = '" . $tags[0] . "'";
 							$rs_string = mysqli_query($dbh, $SQL);
-							$myrow_string = mysql_fetch_assoc($rs_string);
+							$myrow_string = mysqli_fetch_assoc($rs_string);
 							if($myrow_string['string_id'] > 0  				# There is an English string   
 								 && $tags[1] != ""							# With a non-null English value
 								 && $myrow_string['ever_tr_value'] == ""	# That's never been translated to this incoming value
diff --git a/classes/export/syncup.php b/classes/export/syncup.php
index fb070fa..6c07f90 100644
--- a/classes/export/syncup.php
+++ b/classes/export/syncup.php
@@ -51,12 +51,12 @@
 	$untranslated_value = rtrim($untranslated_value, "\n\r");
 	# BINARY the lookup value instead of the field to support an index.
 	# is_active is not used in consideration of case to reuse.
-	$rs = mysqli_query( "SELECT string_id FROM strings WHERE value = BINARY '" . addslashes($untranslated_value) . "' and non_translatable = 0 ");
+	$rs = mysqli_query($dbh, "SELECT string_id FROM strings WHERE value = BINARY '" . addslashes($untranslated_value) . "' and non_translatable = 0 ");
 	if ($rs === false) {
 		return NULL;
 	}
 	$string_ids_tmp = array();
-	while ( ($row = mysql_fetch_assoc($rs)) != null) {
+	while ( ($row = mysqli_fetch_assoc($rs)) != null) {
 		$string_ids_tmp[] = $row['string_id'];
 	}
 	$string_ids = implode(',',$string_ids_tmp);
@@ -65,24 +65,24 @@
 	}
 	#if SQL result has many records, last created record will be used.
 	# s.is_active is not used in consideration of case to reuse.
-	$rs2 = mysqli_query( "SELECT t.created_on, t.value from strings As s inner join translations AS t on s.string_id = t.string_id where s.string_id IN ($string_ids) and t.language_id = '" . $language_id . "' and t.is_active order by created_on DESC");
-	if ($rs2 and (($translation_row = mysql_fetch_assoc($rs2)) != null)) {
+	$rs2 = mysqli_query($dbh, "SELECT t.created_on, t.value from strings As s inner join translations AS t on s.string_id = t.string_id where s.string_id IN ($string_ids) and t.language_id = '" . $language_id . "' and t.is_active order by created_on DESC");
+	if ($rs2 and (($translation_row = mysqli_fetch_assoc($rs2)) != null)) {
 		return $translation_row['value'];
 	}
 	return null;
 }
 
-$language_result = mysqli_query( "SELECT language_id, iso_code, IF(locale <> '', CONCAT(CONCAT(CONCAT(name, ' ('), locale), ')'), name) as name FROM languages WHERE languages.is_active AND languages.language_id<>1 ORDER BY name ASC" );
-while( ($language_row = mysql_fetch_assoc($language_result)) != null ) {
+$language_result = mysqli_query($dbh, "SELECT language_id, iso_code, IF(locale <> '', CONCAT(CONCAT(CONCAT(name, ' ('), locale), ')'), name) as name FROM languages WHERE languages.is_active AND languages.language_id<>1 ORDER BY name ASC" );
+while( ($language_row = mysqli_fetch_assoc($language_result)) != null ) {
 	$language_name = $language_row['name'];
 	$language_iso = $language_row['iso_code'];
 	$language_id = $language_row['language_id'];
 	echo "\nInvestigating $language_name ($language_iso) (language_id=$language_id)\n";
 	#In performance purpose, the SQL sorts a temporary table, TEMP.
-	$untranslated_strings = mysqli_query( "SELECT * FROM (SELECT string_id, value from strings where is_active and non_translatable = 0 and value <> '' and string_id not in(select string_id from translations where language_id=$language_id) ) AS TEMP order by value" );
+	$untranslated_strings = mysqli_query($dbh, "SELECT * FROM (SELECT string_id, value from strings where is_active and non_translatable = 0 and value <> '' and string_id not in(select string_id from translations where language_id=$language_id) ) AS TEMP order by value" );
 	$count = 0;
 	$prev_value = '';
-    while ( ($string_row = mysql_fetch_assoc($untranslated_strings)) != null) {
+    while ( ($string_row = mysqli_fetch_assoc($untranslated_strings)) != null) {
     	$count++;
 
     	if($count % 10000 == 0) {
@@ -104,7 +104,7 @@
        	if ($translation !== null) {
            	$query = "INSERT INTO translations(string_id, language_id, value, userid, created_on) values('". addslashes($untranslated_id) ."','". addslashes($language_id) ."','" . addslashes($translation) . "', '". addslashes($User->userid) ."', NOW())";
            	echo "\tTranslating ", addslashes($untranslated_id), " with: ", addslashes($translation), "\n";
-			mysqli_query($query);
+			mysqli_query($dbh, $query);
 		}
     }
 }
diff --git a/classes/file/file.class.php b/classes/file/file.class.php
index 8d3deea..940ee9f 100755
--- a/classes/file/file.class.php
+++ b/classes/file/file.class.php
@@ -60,7 +60,7 @@
 							is_active	= " . $this->is_active . $where;
 			if(mysqli_query($dbh, $sql)) {
 				if($this->file_id == 0) {
-					$this->file_id = mysql_insert_id($dbh);
+					$this->file_id = mysqli_insert_id($dbh);
 					$Event->key_value = $this->file_id;
 				}
 				$rValue = true;
@@ -68,7 +68,7 @@
 			}
 			else {
 				echo $sql . "\n";
-				$GLOBALS['g_ERRSTRS'][1] = mysql_error();
+				$GLOBALS['g_ERRSTRS'][1] = mysqli_error();
 			}
 		}
 		else {
@@ -90,8 +90,8 @@
 					AND version = '" . sqlSanitize($_version, $dbh) . "'";
 
 			$result = mysqli_query($dbh, $sql);
-			if($result && mysql_num_rows($result) > 0) {
-				$myrow = mysql_fetch_assoc($result);
+			if($result && mysqli_num_rows($result) > 0) {
+				$myrow = mysqli_fetch_assoc($result);
 				$rValue = $myrow['file_id'];
 			}
 		}
@@ -109,7 +109,7 @@
 			$strings = array();
 			$sql = "SELECT * from strings WHERE is_active = 1 AND file_id = $this->file_id";
 			$rs_strings = mysqli_query($dbh, $sql);
-			while ($myrow_strings = mysql_fetch_assoc($rs_strings)) {
+			while ($myrow_strings = mysqli_fetch_assoc($rs_strings)) {
 			  $string = new String();
 			  $string->string_id = $myrow_strings['string_id'];
 			  $string->file_id = $myrow_strings['file_id'];
@@ -203,7 +203,7 @@
 			$strings = array();
 			$sql = "SELECT * from strings WHERE is_active = 1 AND file_id = $this->file_id";
 			$rs_strings = mysqli_query($dbh, $sql);
-			while ($myrow_strings = mysql_fetch_assoc($rs_strings)) {
+			while ($myrow_strings = mysqli_fetch_assoc($rs_strings)) {
 			  $string = new String();
 			  $string->string_id = $myrow_strings['string_id'];
 			  $string->file_id = $myrow_strings['file_id'];
@@ -288,8 +288,8 @@
 		if (strcmp($language->iso, "en_AA") == 0) {
 			$sql = "SELECT string_id, name, value FROM strings WHERE file_id = " . $this->file_id .
 			" AND is_active AND non_translatable = 0";
-			$strings_result = mysqli_query($sql);
-			while (($strings_row = mysql_fetch_assoc($strings_result)) != null) {
+			$strings_result = mysqli_query($dbh, $sql);
+			while (($strings_row = mysqli_fetch_assoc($strings_result)) != null) {
 				$result[$strings_row['name']] = $this->project_id . $strings_row['string_id'] . ":" . $strings_row['value'];
 			}
 		} else {
@@ -304,8 +304,8 @@
 				AND strings.non_translatable = 0
 				AND translations.language_id = " . $language->id . "
 				AND translations.is_active";
-			$strings_result = mysqli_query($sql);
-			while (($strings_row = mysql_fetch_assoc($strings_result)) != null) {
+			$strings_result = mysqli_query($dbh, $sql);
+			while (($strings_row = mysqli_fetch_assoc($strings_result)) != null) {
 				$result[$strings_row['key']] = $strings_row['trans'];
 			}
 		}
diff --git a/classes/heal/fix_deactivated_translations.php b/classes/heal/fix_deactivated_translations.php
index e5a5a09..99782be 100644
--- a/classes/heal/fix_deactivated_translations.php
+++ b/classes/heal/fix_deactivated_translations.php
@@ -21,56 +21,56 @@
 
 print "fetching translation to heal\n";
 $query = "select translation_id,string_id,language_id,created_on,value from translations group by string_id,language_id order by created_on desc";
-$res = mysqli_query($query);
+$res = mysqli_query($dbh, $query);
 
 print "starting to heal the translations\n";
 
-while($row = mysql_fetch_assoc($res)){
+while($row = mysqli_fetch_assoc($res)){
 	$string_id = $row['string_id'];
 	$language_id = $row['language_id'];
 	
 	$query = "select translation_id from translations where string_id = $string_id and language_id = $language_id and is_active = 1";
 	
-	$looking = mysqli_query($query);
-	if(mysql_num_rows($looking) == 0){
+	$looking = mysqli_query($dbh, $query);
+	if(mysqli_num_rows($looking) == 0){
 //		print "found 0 ".$row['translation_id']."\n";
-	}elseif(mysql_num_rows($looking) > 1){
-//		print "found == ".mysql_num_rows($looking)." --  translation_id ".$row['translation_id']." string_id ---  ".$row['string_id']."  -- date : ".$row['created_on']."\n".$row['value']."\n";
+	}elseif(mysqli_num_rows($looking) > 1){
+//		print "found == ".mysqli_num_rows($looking)." --  translation_id ".$row['translation_id']." string_id ---  ".$row['string_id']."  -- date : ".$row['created_on']."\n".$row['value']."\n";
 		
 		$query = "select max(version) as max from translations where string_id = $string_id and language_id = $language_id ";
-		$max = mysql_fetch_assoc(mysqli_query($query));
+		$max = mysqli_fetch_assoc(mysqli_query($dbh, $query));
 		$max = $max['max'];
 		$query = "update translations set is_active = 0 where string_id = $string_id and language_id = $language_id and version != $max";
-		mysqli_query($query);			
+		mysqli_query($dbh, $query);			
 		
 		$query =  "update translations set is_active = 1 where string_id = $string_id and language_id = $language_id and version = $max";
-		mysqli_query($query);
+		mysqli_query($dbh, $query);
 	}
 }
 
 print "deleting file_progress table data\n";
 //drop all the old calced file progress
 $query = "delete from file_progress";
-mysqli_query($query);
+mysqli_query($dbh, $query);
 
 print "getting all the file ids and language ids\n";
 //get all the files
 $query = "select file_id from files";
-$res = mysqli_query($query);
-while($row = mysql_fetch_assoc($res)){
+$res = mysqli_query($dbh, $query);
+while($row = mysqli_fetch_assoc($res)){
 	$file_ids[] = $row['file_id'];
 }
 //get all the langs
 $query = "select language_id from languages";
-$res = mysqli_query($query);
-while($row = mysql_fetch_assoc($res)){
+$res = mysqli_query($dbh, $query);
+while($row = mysqli_fetch_assoc($res)){
 	$lang_ids[] = $row['language_id'];
 }
 
 print "cleaning up the file progress of all 0 completed!\n";
 //clean up all the pct_complete == 0
 $query = "delete from file_progress where pct_complete = 0";
-mysqli_query($query);
+mysqli_query($dbh, $query);
 
  
 print "Removing all files affected by bug 233305\n";
@@ -79,34 +79,34 @@
 # find lowest version
 $file_count = 0;
 $query = "select min(file_id) as file_id, project_id, version, name from files where version='unspecified' group by project_id, version, name";
-$res = mysqli_query($query);
-while($row = mysql_fetch_assoc($res)){
+$res = mysqli_query($dbh, $query);
+while($row = mysqli_fetch_assoc($res)){
 	$query = "select file_id from files 
 	where project_id = '" . $row['project_id'] . "' 
 	and version = 'unspecified' 
 	and name = '" . $row['name'] . "'
 	and file_id <> " . $row['file_id'];
 
-	$res_f = mysqli_query($query);
-	while($row_f = mysql_fetch_assoc($res_f)){
+	$res_f = mysqli_query($dbh, $query);
+	while($row_f = mysqli_fetch_assoc($res_f)){
 		# find strings
 		$file_count++;
 		$query = "delete from translations where string_id in (select string_id from strings where file_id = '" . $row_f['file_id'] . "')";
 		print $query . "... ";
-		mysqli_query($query);
-		print mysql_affected_rows() . " rows deleted\n";
+		mysqli_query($dbh, $query);
+		print mysqli_affected_rows($dbh) . " rows deleted\n";
 		
 		# delete strings
 		$query = "delete from strings where file_id = '" . $row_f['file_id'] . "'";
 		print $query . "... ";
-		mysqli_query($query);
-		print mysql_affected_rows() . " rows deleted\n";
+		mysqli_query($dbh, $query);
+		print mysqli_affected_rows($dbh) . " rows deleted\n";
 
 		# delete strings
 		$query = "delete from files where file_id = '" . $row_f['file_id'] . "'";
 		print $query . "... ";
-		mysqli_query($query);
-		print mysql_affected_rows() . " rows deleted\n";
+		mysqli_query($dbh, $query);
+		print mysqli_affected_rows($dbh) . " rows deleted\n";
 		
 	}
 	
@@ -129,26 +129,26 @@
 		if(	$found_active == 0){
 //			print "0 - $string_id - $language_id<br>\n";
 			$query = "select max(version) as max from translations where string_id = $string_id and language_id = $language_id ";
-			$max = mysql_fetch_assoc(mysqli_query($query));
+			$max = mysqli_fetch_assoc(mysqli_query($dbh, $query));
 			$max = $max['max'];
 			$query = "update translations set is_active = 1 where string_id = $string_id and language_id = $language_id and version = $max";			
 			print $query."\n";
-//			mysqli_query($query);			
-			print mysql_error();
+//			mysqli_query($dbh, $query);			
+			print mysqli_error();
 			
 		}elseif($found_active > 1){
 			$query = "select max(version) as max from translations where string_id = $string_id and language_id = $language_id ";
-			$max = mysql_fetch_assoc(mysqli_query($query));
+			$max = mysqli_fetch_assoc(mysqli_query($dbh, $query));
 			$max = $max['max'];
 			$query = "update translations set is_active = 0 where string_id = $string_id and language_id = $language_id and version != $max";
 			print $query."\n";
-//			mysqli_query($query);			
-			print mysql_error();
+//			mysqli_query($dbh, $query);			
+			print mysqli_error();
 			
 			$query =  "update translations set is_active = 1 where string_id = $string_id and language_id = $language_id and version = $max";
 			print $query."\n";
-//			mysqli_query($query);
-			print mysql_error();
+//			mysqli_query($dbh, $query);
+			print mysqli_error();
 			
 		}
 	}
diff --git a/classes/string/string.class.php b/classes/string/string.class.php
index 8fccbd4..eb0e855 100755
--- a/classes/string/string.class.php
+++ b/classes/string/string.class.php
@@ -54,12 +54,12 @@
 								is_active	= " . sqlSanitize($this->is_active, $dbh) . $where;
 				if(mysqli_query($dbh, $sql)) {
 					if($this->string_id == 0) {
-						$this->string_id = mysql_insert_id($dbh);
+						$this->string_id = mysqli_insert_id($dbh);
 					}
 					$rValue = true;
 				}
 				else {
-					$GLOBALS['g_ERRSTRS'][1] = mysql_error();
+					$GLOBALS['g_ERRSTRS'][1] = mysqli_error();
 				}
 			}
 			else {
@@ -103,12 +103,12 @@
 								is_active	= " . sqlSanitize($this->is_active, $dbh) . $where;
 				if(mysqli_query($dbh, $sql)) {
 					if($this->string_id == 0) {
-						$this->string_id = mysql_insert_id($dbh);
+						$this->string_id = mysqli_insert_id($dbh);
 					}
 					$rValue = true;
 				}
 				else {
-					$GLOBALS['g_ERRSTRS'][1] = mysql_error();
+					$GLOBALS['g_ERRSTRS'][1] = mysqli_error();
 				}
 			}
 			else {
@@ -140,8 +140,8 @@
 					AND name = BINARY " . returnQuotedString(sqlSanitize($_name, $dbh));	
 
 			$result = mysqli_query($dbh, $sql);
-			if($result && mysql_num_rows($result) > 0) {
-				$myrow = mysql_fetch_assoc($result);
+			if($result && mysqli_num_rows($result) > 0) {
+				$myrow = mysqli_fetch_assoc($result);
 				$String = new String();
 				$String->string_id 	= $myrow['string_id'];
 				$String->file_id 	= $myrow['file_id'];
@@ -169,8 +169,8 @@
 					AND name = BINARY " . $_name;
 
 			$result = mysqli_query($dbh, $sql);
-			if($result && mysql_num_rows($result) > 0) {
-				$myrow = mysql_fetch_assoc($result);
+			if($result && mysqli_num_rows($result) > 0) {
+				$myrow = mysqli_fetch_assoc($result);
 				$String = new String();
 				$String->string_id 	= $myrow['string_id'];
 				$String->file_id 	= $myrow['file_id'];
@@ -197,8 +197,8 @@
 					AND string_id = " . $_string_id;	
 
 			$result = mysqli_query($dbh, $sql);
-			if($result && mysql_num_rows($result) > 0) {
-				$myrow = mysql_fetch_assoc($result);
+			if($result && mysqli_num_rows($result) > 0) {
+				$myrow = mysqli_fetch_assoc($result);
 				$String = new String();
 				$String->string_id 	= $myrow['string_id'];
 				$String->file_id 	= $myrow['file_id'];
@@ -231,7 +231,7 @@
 					AND is_active = 1";	
 
 			$result = mysqli_query($dbh, $sql);
-			while($myrow = mysql_fetch_assoc($result)) {
+			while($myrow = mysqli_fetch_assoc($result)) {
 				$String = new String();
 				$String->string_id 	= $myrow['string_id'];
 				$String->file_id 	= $myrow['file_id'];
diff --git a/classes/system/common_functions.php b/classes/system/common_functions.php
index 717fb81..4b8ed37 100644
--- a/classes/system/common_functions.php
+++ b/classes/system/common_functions.php
@@ -22,7 +22,7 @@
         if(get_magic_quotes_gpc()) {
             $_value = stripslashes($_value);
         }
-        $_value = mysql_real_escape_string($_value, $_dbh);
+        $_value = mysqli_real_escape_string($_dbh, $_value);
         return $_value;
     }
     
@@ -140,4 +140,16 @@
         $_SESSION[$varName] = $varVal;
         return $varVal;
     }
+
+    function mysqli_result($res, $row=0, $col=0) {
+    	$numrows = mysqli_num_rows($res);
+    	if ($numrows && $row <= ($numrows-1) && $row >=0) {
+    		mysqli_data_seek($res, $row);
+    		$resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
+    		if (isset($resrow[$col])) {
+    			return $resrow[$col];
+    		}
+    	}
+    	return false;
+    }
 ?>
diff --git a/classes/system/dbconnection.class.php b/classes/system/dbconnection.class.php
index d75fc8c..ab55823 100755
--- a/classes/system/dbconnection.class.php
+++ b/classes/system/dbconnection.class.php
@@ -29,8 +29,8 @@
 		/*
     	$database = $db_params['db_read_name'];
 		if (isset($database)) {
-			if (!mysql_select_db($database)) {
-				errorLog("Failed attempt to open database: $database - aborting \n\t" . mysql_error());
+			if (!mysqli_select_db($dbh, $database)) {
+				errorLog("Failed attempt to open database: $database - aborting \n\t" . mysqli_error());
 				exitTo("/error.php?errNo=101303","error: 101303 - unknown database name");
 			}
 		}
@@ -40,7 +40,7 @@
 	}
 
 	function disconnect() {
-		mysql_close();
+		mysqli_close();
 	}
 }
 ?>
\ No newline at end of file
diff --git a/classes/system/event_log.class.php b/classes/system/event_log.class.php
index a3ebbf1..d0f1480 100755
--- a/classes/system/event_log.class.php
+++ b/classes/system/event_log.class.php
@@ -62,10 +62,10 @@
 					created_on = NOW()";
 
 			mysqli_query($dbh, $sql);
-			if(mysql_error() != "") {
+			if(mysqli_error() != "") {
 				echo "An unknown database error has occurred while logging information.  Please contact the System Administrator.";
-				echo mysql_error();
-				$rValue = "MYSQL: " . mysql_error();
+				echo mysqli_error();
+				$rValue = "MYSQL: " . mysqli_error();
 			}
 		}
 		else {
diff --git a/classes/system/feature.class.php b/classes/system/feature.class.php
index b9b0ea8..272517e 100644
--- a/classes/system/feature.class.php
+++ b/classes/system/feature.class.php
@@ -54,9 +54,9 @@
 				WHERE project_id = \"". $project->id ."\"
 					AND version = \"". $project->version ."\"
 					AND language_id = " . $this->language->id;
-			$project_pct_complete_result = mysqli_query($sql);
+			$project_pct_complete_result = mysqli_query($dbh, $sql);
 			if ($project_pct_complete_result and 
-				(($project_pct_complete = mysql_fetch_assoc($project_pct_complete_result)) != null)) {
+				(($project_pct_complete = mysqli_fetch_assoc($project_pct_complete_result)) != null)) {
 				if (!isSet($pct)) {
 					$pct = $project_pct_complete['pct_complete'];
 				} else {
@@ -292,10 +292,10 @@
 			AND s.non_translatable <> 1
 			AND v.train_id = '$train'
 SQL;
-		$result = mysqli_query($sql);
+		$result = mysqli_query($dbh, $sql);
 		$f = fopen("$this->output_dir/" . $this->filename() . ".csv", "w");
-		while (($row = mysql_fetch_assoc($result)) != null) {
-		    $value_row = mysql_fetch_assoc(mysqli_query("SELECT value from translations where string_id = " . $row['string_id'] . " and language_id = " . $language));
+		while (($row = mysqli_fetch_assoc($result)) != null) {
+		    $value_row = mysqli_fetch_assoc(mysqli_query($dbh, "SELECT value from translations where string_id = " . $row['string_id'] . " and language_id = " . $language));
 			$value = '';
 			if ($value_row != null) {
 				$value = $value_row['value'];
diff --git a/classes/system/fragment.class.php b/classes/system/fragment.class.php
index db563a5..8ce93f6 100644
--- a/classes/system/fragment.class.php
+++ b/classes/system/fragment.class.php
@@ -57,9 +57,9 @@
 				AND f.is_active
 				AND v.train_id = '" . $train->id . "'";
 		}
-		$file_result = mysqli_query($sql);
+		$file_result = mysqli_query($dbh, $sql);
 		$plugins = array();
-		while (($file_row = mysql_fetch_assoc($file_result)) != null) {
+		while (($file_row = mysqli_fetch_assoc($file_result)) != null) {
 			$f = new File();
 			$f->file_id = $file_row['file_id'];
 			$f->name = $file_row['name'];
diff --git a/classes/system/language.class.php b/classes/system/language.class.php
index f184d2f..e479583 100644
--- a/classes/system/language.class.php
+++ b/classes/system/language.class.php
@@ -47,8 +47,8 @@
   
 	static function all() {
 		$langs = array();
-		$language_result = mysqli_query("SELECT * FROM languages WHERE languages.is_active ORDER BY name, locale");
-		while (($language_row = mysql_fetch_assoc($language_result)) != null) {
+		$language_result = mysqli_query($dbh, "SELECT * FROM languages WHERE languages.is_active ORDER BY name, locale");
+		while (($language_row = mysqli_fetch_assoc($language_result)) != null) {
 			$langs[] = Language::fromRow($language_row);
 		}
 		return $langs;
diff --git a/classes/system/release_train.class.php b/classes/system/release_train.class.php
index 0648551..a077d85 100644
--- a/classes/system/release_train.class.php
+++ b/classes/system/release_train.class.php
@@ -30,8 +30,8 @@
 	
 	static function all() {
 		$trains = array();
-		$train_result = mysqli_query("SELECT DISTINCT train_id FROM release_train_projects");
-		while (($train_row = mysql_fetch_assoc($train_result)) != null) {
+		$train_result = mysqli_query($dbh, "SELECT DISTINCT train_id FROM release_train_projects");
+		while (($train_row = mysqli_fetch_assoc($train_result)) != null) {
 			$trains[] = new ReleaseTrain($train_row['train_id']);
 		}
 		return $trains;
diff --git a/classes/system/scoreboard.class.php b/classes/system/scoreboard.class.php
index cf3a458..8909a79 100644
--- a/classes/system/scoreboard.class.php
+++ b/classes/system/scoreboard.class.php
@@ -20,7 +20,7 @@
 			"AND quantity < (SELECT MAX(translation_id) as t FROM translations)";
 
 		$result = mysqli_query($dbh, $sql);
-		if(($result && mysql_num_rows($result) > 0) || $forceRefresh) {
+		if(($result && mysqli_num_rows($result) > 0) || $forceRefresh) {
 
 			# "lock" the scoreboard so that 2 clients don't update it simultaneously
 			mysqli_query($dbh, "UPDATE scoreboard SET quantity = 9999999999 WHERE itemid = 'LASGEN'");
diff --git a/classes/system/session.class.php b/classes/system/session.class.php
index 26a49f2..764b59e 100644
--- a/classes/system/session.class.php
+++ b/classes/system/session.class.php
@@ -45,9 +45,9 @@
 		$sql = "SELECT id, userid, gid, subnet, updated_at FROM sessions WHERE gid = " . returnQuotedString($_gid);
 		
 		$result = mysqli_query($dbh, $sql);
-		if($result && mysql_num_rows($result) > 0) {
+		if($result && mysqli_num_rows($result) > 0) {
 			$rValue = true;
-			$myrow = mysql_fetch_assoc($result);
+			$myrow = mysqli_fetch_assoc($result);
 			$this->_id			= $myrow['id'];
 			$this->_userid		= $myrow['userid'];
 			$this->_gid			= $myrow['gid'];
@@ -55,7 +55,7 @@
 			$this->updated_at	= $myrow['updated_at'];
 		}
 		else {
-			$GLOBALS['g_ERRSTRS'][1] = mysql_error();
+			$GLOBALS['g_ERRSTRS'][1] = mysqli_error();
 		}
 		
 		return $rValue;
diff --git a/classes/system/user.class.php b/classes/system/user.class.php
index 6692118..2ff8a22 100755
--- a/classes/system/user.class.php
+++ b/classes/system/user.class.php
@@ -61,9 +61,9 @@
 					users 
 				WHERE userid = $_userid";
 			$result = mysqli_query($dbh, $sql);
-			if($result && mysql_num_rows($result) > 0) {
+			if($result && mysqli_num_rows($result) > 0) {
 				$rValue = true;
-				$myrow = mysql_fetch_assoc($result);
+				$myrow = mysqli_fetch_assoc($result);
 				
 				$this->userid              = $myrow['userid'];
 				$this->username            = $myrow['username'];
@@ -79,7 +79,7 @@
 				$this->created_at			= $myrow['created_at'];
 			}
 			else {
-				$GLOBALS['g_ERRSTRS'][1] = mysql_error();
+				$GLOBALS['g_ERRSTRS'][1] = mysqli_error();
 			}
 		}
 		return $rValue;
diff --git a/html/callback/getCurrentStringTranslation.php b/html/callback/getCurrentStringTranslation.php
index 68f3281..6861e52 100644
--- a/html/callback/getCurrentStringTranslation.php
+++ b/html/callback/getCurrentStringTranslation.php
@@ -60,7 +60,7 @@
 
 $res = mysqli_query($dbh, $query);
 
-$line = mysql_fetch_array($res, MYSQL_ASSOC);
+$line = mysqli_fetch_array($res, MYSQL_ASSOC);
 
 //print_r($line);
 
@@ -136,9 +136,9 @@
                  AND t.language_id = '" . addslashes($language) . "'
                  ORDER BY LENGTH(t.value) ASC LIMIT 10";
 			$res_th = mysqli_query($dbh, $q_th);
-			if(mysql_affected_rows($dbh) > 0) {
+			if(mysqli_affected_rows($dbh) > 0) {
 				echo "<b>, or use from the following:</b><ul>";
-				while($translation_hints = mysql_fetch_array($res_th, MYSQL_ASSOC)){
+				while($translation_hints = mysqli_fetch_array($res_th, MYSQL_ASSOC)){
 					echo "<li>", $translation_hints['value'], "</li>";
 				}
 				echo "</ul>";
@@ -180,10 +180,10 @@
 			$query = "select value,first_name,last_name,translations.created_on, possibly_incorrect as fuzzy from translations,users where string_id = '".addslashes($line['string_id'])."' and language_id = '".addslashes($language)."' and translations.userid = users.userid order by translations.created_on desc";
 			$res_history = mysqli_query($dbh, $query);
 			
-			if(!mysql_num_rows($res_history)){
+			if(!mysqli_num_rows($res_history)){
 				print "No history.";
 			}else{		
-				while($line = mysql_fetch_array($res_history, MYSQL_ASSOC)){
+				while($line = mysqli_fetch_array($res_history, MYSQL_ASSOC)){
 					$fuzzy = "";
 					if($line['fuzzy'] == 1) {
 						$fuzzy = "<img src='images/fuzzy.png' />";
diff --git a/html/callback/getExcludePatterns.php b/html/callback/getExcludePatterns.php
index 0636e7b..f3d5fa7 100644
--- a/html/callback/getExcludePatterns.php
+++ b/html/callback/getExcludePatterns.php
@@ -23,8 +23,8 @@
 	" AND version = " . returnQuotedString(sqlSanitize($version, $dbh));
 
 $res = mysqli_query($dbh, $query);
-if (mysql_affected_rows($dbh) > 0) {
-	while ($line = mysql_fetch_array($res, MYSQL_ASSOC)) {
+if (mysqli_affected_rows($dbh) > 0) {
+	while ($line = mysqli_fetch_array($res, MYSQL_ASSOC)) {
 		echo $line['pattern'] . "\n";
 	}
 } else {
diff --git a/html/callback/getFilesForProject.php b/html/callback/getFilesForProject.php
index c126f92..d334a6a 100644
--- a/html/callback/getFilesForProject.php
+++ b/html/callback/getFilesForProject.php
@@ -61,7 +61,7 @@
 $res = mysqli_query($dbh, $query);
 
 
-while($line = mysql_fetch_array($res, MYSQL_ASSOC)){
+while($line = mysqli_fetch_array($res, MYSQL_ASSOC)){
 	$ret = Array();
 	
 	$ret['name'] = $line['name'];
diff --git a/html/callback/getLanguages.php b/html/callback/getLanguages.php
index 5730520..0d04883 100644
--- a/html/callback/getLanguages.php
+++ b/html/callback/getLanguages.php
@@ -22,7 +22,7 @@
 
 $return = Array();
 
-while($line = mysql_fetch_array($res, MYSQL_ASSOC)){
+while($line = mysqli_fetch_array($res, MYSQL_ASSOC)){
     if(isset($_SESSION['language']) and $line['language_id'] == $_SESSION['language']){
     	$line['current'] = true;
     }
diff --git a/html/callback/getMapFiles.php b/html/callback/getMapFiles.php
index 71c8dfc..3b4866c 100644
--- a/html/callback/getMapFiles.php
+++ b/html/callback/getMapFiles.php
@@ -26,8 +26,8 @@
 	AND m.version = " . returnQuotedString(sqlSanitize($version, $dbh));
 
 $res = mysqli_query($dbh, $query);
-if (mysql_affected_rows($dbh) > 0) {
-	while ($line = mysql_fetch_array($res, MYSQL_ASSOC)) {
+if (mysqli_affected_rows($dbh) > 0) {
+	while ($line = mysqli_fetch_array($res, MYSQL_ASSOC)) {
 		echo $line['location'] . "\n";
 	}
 } else {
diff --git a/html/callback/getProjectSourceLocations.php b/html/callback/getProjectSourceLocations.php
index 3208848..a9bb04f 100644
--- a/html/callback/getProjectSourceLocations.php
+++ b/html/callback/getProjectSourceLocations.php
@@ -23,8 +23,8 @@
 	AND m.version = " . returnQuotedString(sqlSanitize($version, $dbh));
 
 $res = mysqli_query($dbh, $query);
-if (mysql_affected_rows($dbh) > 0) {
-	while ($line = mysql_fetch_array($res, MYSQL_ASSOC)) {
+if (mysqli_affected_rows($dbh) > 0) {
+	while ($line = mysqli_fetch_array($res, MYSQL_ASSOC)) {
 		echo $line['location'] . "\n";
 	}
 } else {
diff --git a/html/callback/getProjects.php b/html/callback/getProjects.php
index 3d3c9ba..0211dd0 100644
--- a/html/callback/getProjects.php
+++ b/html/callback/getProjects.php
@@ -25,7 +25,7 @@
 
 //	$return = '<ul id="project-choices">';
 
-	while($line = mysql_fetch_array($res, MYSQL_ASSOC)){
+	while($line = mysqli_fetch_array($res, MYSQL_ASSOC)){
 		$ret = Array();
 		$ret['project'] = $line['project_id'];
 		//	$ret['version'] = $line['version'];
diff --git a/html/callback/getStringsforProject.php b/html/callback/getStringsforProject.php
index ac57e05..e20553a 100644
--- a/html/callback/getStringsforProject.php
+++ b/html/callback/getStringsforProject.php
@@ -137,11 +137,11 @@
 
 $res = mysqli_query($dbh, $query);
 
-//print mysql_error();
+//print mysqli_error();
 
 $stringids = Array();
 $return = Array();
-while($line = mysql_fetch_array($res, MYSQL_ASSOC)){
+while($line = mysqli_fetch_array($res, MYSQL_ASSOC)){
     if(isset($stringids[$line['stringId']])){
  		  continue;
     }else{
diff --git a/html/callback/getTranslationHints.php b/html/callback/getTranslationHints.php
index 2fcaf5a..c8ed069 100644
--- a/html/callback/getTranslationHints.php
+++ b/html/callback/getTranslationHints.php
@@ -39,9 +39,9 @@
 ORDER BY LENGTH(t.value) ASC LIMIT 15";
 
 $res = mysqli_query($dbh, $query);
-if(mysql_affected_rows($dbh) > 0) {
+if(mysqli_affected_rows($dbh) > 0) {
 	echo "<ul>";
-	while($line = mysql_fetch_array($res, MYSQL_ASSOC)){
+	while($line = mysqli_fetch_array($res, MYSQL_ASSOC)){
 		echo "<li>", $line['value'], "</li>";
 	}
 	echo "</ul>";
@@ -61,9 +61,9 @@
 	ORDER BY LENGTH(t.value) ASC LIMIT 15";
 	
 	$res = mysqli_query($dbh, $query2);
-	if(mysql_affected_rows($dbh) > 0) {
+	if(mysqli_affected_rows($dbh) > 0) {
 		echo "<ul>";
-		while($line = mysql_fetch_array($res, MYSQL_ASSOC)){
+		while($line = mysqli_fetch_array($res, MYSQL_ASSOC)){
 			echo "<li>", $line['value'], "</li>";
 		}
 		echo "</ul>";
diff --git a/html/callback/getUrlType.php b/html/callback/getUrlType.php
index 582339d..5d7dd97 100644
--- a/html/callback/getUrlType.php
+++ b/html/callback/getUrlType.php
@@ -21,8 +21,8 @@
 	" AND version = " . returnQuotedString(sqlSanitize($version, $dbh)) . " LIMIT 1";
 
 $res = mysqli_query($dbh, $query);
-if (mysql_affected_rows($dbh) > 0) {
-	while ($line = mysql_fetch_array($res, MYSQL_ASSOC)) {
+if (mysqli_affected_rows($dbh) > 0) {
+	while ($line = mysqli_fetch_array($res, MYSQL_ASSOC)) {
 		echo $line['is_map_file'];
 	}
 } else {
diff --git a/html/callback/getVersionsforProject.php b/html/callback/getVersionsforProject.php
index 72fc226..ced82a9 100644
--- a/html/callback/getVersionsforProject.php
+++ b/html/callback/getVersionsforProject.php
@@ -37,7 +37,7 @@
 
 	$return = array();
 
-	while($line = mysql_fetch_array($res, MYSQL_ASSOC)){
+	while($line = mysqli_fetch_array($res, MYSQL_ASSOC)){
 		$ret = Array();
 		$ret['version'] = $line['version'];
 		$ret['pct'] = $line['pct_complete'];
diff --git a/html/callback/setStringNonTranslatable.php b/html/callback/setStringNonTranslatable.php
index fc38a69..a45a1f2 100644
--- a/html/callback/setStringNonTranslatable.php
+++ b/html/callback/setStringNonTranslatable.php
@@ -18,7 +18,7 @@
 		 '";
 
 $res = mysqli_query($dbh, $query);
-$row = mysql_fetch_assoc($res);
+$row = mysqli_fetch_assoc($res);
 
 if($checked_state == "true"){
 	$checked_state = 1;
@@ -37,7 +37,7 @@
 		  ";
 
 $res = mysqli_query($dbh, $query);
-$updated_rows = mysql_affected_rows();
+$updated_rows = mysqli_affected_rows($dbh);
 
 if($updated_rows < 0){
 	$message = "An error has occurred in processing your request, please file a bug.";
diff --git a/html/callback/setStringTranslation.php b/html/callback/setStringTranslation.php
index 98c17da..590e06a 100644
--- a/html/callback/setStringTranslation.php
+++ b/html/callback/setStringTranslation.php
@@ -60,7 +60,7 @@
 				  	created_on = NOW()
 				  	";
 	$res = mysqli_query($dbh, $query);
-	$affected_rows += mysql_affected_rows();
+	$affected_rows += mysqli_affected_rows($dbh);
 	
 //	print $query;
 }else{
@@ -80,7 +80,7 @@
 			  and s.is_active = 1";
 		  	
 	$res = mysqli_query($dbh, $query);
-	while($row = mysql_fetch_assoc($res)){
+	while($row = mysqli_fetch_assoc($res)){
 		$string_ids[] = $row['string_id'];
 	}
 	
@@ -88,7 +88,7 @@
 	$query= "select value from translations where string_id = '".addslashes($string_id)."' and language_id = '".addslashes($language_id)."' and is_active = 1 order by version limit 1";
 	$res = mysqli_query($dbh, $query);
 	$string_translation = "";
-	while($row = mysql_fetch_assoc($res)){
+	while($row = mysqli_fetch_assoc($res)){
 		$string_translation = $row['value'];
 	}
 	
@@ -109,7 +109,7 @@
 		  ";
 		
 		$res = mysqli_query($dbh, $query);
-		while($row = mysql_fetch_assoc($res)){
+		while($row = mysqli_fetch_assoc($res)){
 			//DE-ACTIVATE ALL OLD TRANSLATIONS
 			$query = "update translations set is_active = 0 where translation_id = '".addslashes($row['translation_id'])."'";	
 			$res2 = mysqli_query($dbh, $query);
@@ -126,7 +126,7 @@
 				   		created_on  = NOW()
 					";
 			$res2 = mysqli_query($dbh, $query);
-			$affected_rows += mysql_affected_rows();
+			$affected_rows += mysqli_affected_rows($dbh);
 			
 		}
 		
@@ -148,7 +148,7 @@
 		
 		$res = mysqli_query($dbh, $query);
 		
-		while($row = mysql_fetch_assoc($res)){
+		while($row = mysqli_fetch_assoc($res)){
 			$translation_ids[] = $row['string_id'];
 			//INSERT NEW TRANSLATIONS
 			$query = "insert into 
@@ -162,7 +162,7 @@
 				   		created_on  = NOW()
 					";
 			$res2 = mysqli_query($dbh, $query);
-			$affected_rows += mysql_affected_rows();
+			$affected_rows += mysqli_affected_rows($dbh);
 		}	
 	}	
 }
@@ -178,9 +178,9 @@
 			AND s.is_active = 1 AND t.value IS NULL GROUP BY s.string_id HAVING tr_count = 0";
 
 		$res 		= mysqli_query($dbh, $sql);
-		$str_count 	= mysql_affected_rows();
+		$str_count 	= mysqli_affected_rows($dbh);
 	
-		while($myrow = mysql_fetch_assoc($res)) {
+		while($myrow = mysqli_fetch_assoc($res)) {
 			$sql = "insert into 
 						translations
 					  set
@@ -190,7 +190,7 @@
 					  	userid = '".addslashes($user_id)."',
 					  	created_on = NOW()";
 			mysqli_query($dbh, $sql);
-			$affected_rows += mysql_affected_rows();
+			$affected_rows += mysqli_affected_rows($dbh);
 		}
 	}
 }
diff --git a/html/content/en_map_files.php b/html/content/en_map_files.php
index f00568b..3812eeb 100644
--- a/html/content/en_map_files.php
+++ b/html/content/en_map_files.php
@@ -12,7 +12,7 @@
 <tr>
   <td>Project:</td>
   <td><select name="project_id" onchange="fnSetVersionList();" style="width:150px"><?php
-	while($myrow = mysql_fetch_assoc($rs_project_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_project_list)) {
 		$selected = "";
 		if($myrow['project_id'] == $PROJECT_ID) {
 			$selected = 'selected="selected"';
@@ -30,7 +30,7 @@
 <tr>
   <td>Release Train:</td>
   <td><select name="train_id" style="width:150px"><?php
-	while($myrow = mysql_fetch_assoc($rs_train_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_train_list)) {
 		$selected = "";
 		if($myrow['train_id'] == $TRAIN_ID) {
 			$selected = 'selected="selected"';
@@ -140,7 +140,7 @@
 <?php
 	$prev_project = "";
 	$count = 0;
-	while($myrow = mysql_fetch_assoc($rs_version_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_version_list)) {
 		if($prev_project != $myrow['project_id']) {
 			if($count > 0) {
 				echo "];
@@ -170,7 +170,7 @@
 <?php
 	$prev_project = "";
 	$count = 0;
-	while($myrow = mysql_fetch_assoc($rs_train_project_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_train_project_list)) {
 		if($prev_project != $myrow['project_id']) {
 			if($count > 0) {
 				echo "};
diff --git a/html/content/en_map_files_show.php b/html/content/en_map_files_show.php
index 40c1637..3c025ae 100644
--- a/html/content/en_map_files_show.php
+++ b/html/content/en_map_files_show.php
@@ -4,7 +4,7 @@
 <tr>
   <td>Project</td><td align="right">Version</td><td>Train</td><td>URL</td><td>File name</td><td>Delete</td></tr>
 <?php
-	while($myrow = mysql_fetch_assoc($rs_map_file_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_map_file_list)) {
 		$train_id = $myrow['train_id'];
 		if ($train_id == null)
 			$train_id = "&nbsp";
diff --git a/html/content/en_project_source_locations.php b/html/content/en_project_source_locations.php
index 4ef1387..9506c31 100644
--- a/html/content/en_project_source_locations.php
+++ b/html/content/en_project_source_locations.php
@@ -12,7 +12,7 @@
 <tr>
   <td>Project:</td>
   <td><select name="project_id" onchange="fnSetVersionList();" style="width:150px"><?php
-	while($myrow = mysql_fetch_assoc($rs_project_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_project_list)) {
 		$selected = "";
 		if($myrow['project_id'] == $PROJECT_ID) {
 			$selected = 'selected="selected"';
@@ -30,7 +30,7 @@
 <tr>
   <td>Release Train:</td>
   <td><select name="train_id" style="width:150px"><?php
-	while($myrow = mysql_fetch_assoc($rs_train_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_train_list)) {
 		$selected = "";
 		if($myrow['train_id'] == $TRAIN_ID) {
 			$selected = 'selected="selected"';
@@ -134,7 +134,7 @@
 <?php
 	$prev_project = "";
 	$count = 0;
-	while($myrow = mysql_fetch_assoc($rs_version_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_version_list)) {
 		if($prev_project != $myrow['project_id']) {
 			if($count > 0) {
 				echo "];
@@ -164,7 +164,7 @@
 <?php
 	$prev_project = "";
 	$count = 0;
-	while($myrow = mysql_fetch_assoc($rs_train_project_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_train_project_list)) {
 		if($prev_project != $myrow['project_id']) {
 			if($count > 0) {
 				echo "};
diff --git a/html/content/en_recent_html_common.php b/html/content/en_recent_html_common.php
index 6f1fbe9..174b38c 100644
--- a/html/content/en_recent_html_common.php
+++ b/html/content/en_recent_html_common.php
@@ -5,7 +5,7 @@
  <td><select name="project_version">
  <option value="">All projects</option>
 <?php
-	while($myrow = mysql_fetch_assoc($rs_p_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_p_list)) {
 		$selected = "";
 		if($myrow['project_id'] . "|" . $myrow['version'] == $PROJECT_ID . "|" . $VERSION) {
 			$selected = 'selected="selected"';
@@ -33,7 +33,7 @@
    <td><select name="language_id">
    <option value="All">All languages</option>
 <?php
-	while($myrow = mysql_fetch_assoc($rs_l_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_l_list)) {
 		$selected = "";
 		if($myrow['language_id'] == $LANGUAGE_ID) {
 			$selected = 'selected="selected"';
diff --git a/html/content/en_recent_html_list.php b/html/content/en_recent_html_list.php
index fd3d31d..e9d1eeb 100644
--- a/html/content/en_recent_html_list.php
+++ b/html/content/en_recent_html_list.php
@@ -28,7 +28,7 @@
 <?php
 	$prev_date = "";
 	$rowcount=0;
-	while($myrow = mysql_fetch_assoc($rs_p_stat)) {
+	while($myrow = mysqli_fetch_assoc($rs_p_stat)) {
 		$rowcount++;
 		if($prev_date != substr($myrow['created_on'],0,10)) {
 			$prev_date = substr($myrow['created_on'],0,10);
diff --git a/html/content/en_recent_html_table.php b/html/content/en_recent_html_table.php
index 1ce56d6..d7079df 100644
--- a/html/content/en_recent_html_table.php
+++ b/html/content/en_recent_html_table.php
@@ -29,8 +29,8 @@
 <tr class="head">
 <?php
     $i = 0;
-	while($i < mysql_num_fields($rs_p_stat)) {
-		 $meta = mysql_fetch_field($rs_p_stat, $i);
+	while($i < mysqli_num_fields($rs_p_stat)) {
+		 $meta = mysqli_fetch_field($rs_p_stat, $i);
 		 $align = "";
 		 if($meta->numeric) {
 		 	$align="align='right'";
@@ -41,7 +41,7 @@
  ?></tr>
 <?php
 	$rowcount=0;
-	while($myrow = mysql_fetch_assoc($rs_p_stat)) {
+	while($myrow = mysqli_fetch_assoc($rs_p_stat)) {
 		$rowcount++;
 		$class="";
 		if($rowcount % 2) {
@@ -49,8 +49,8 @@
 		}
 		echo "<tr $class>";
 		$i = 0;
-		while($i < mysql_num_fields($rs_p_stat)) {
-			$meta = mysql_fetch_field($rs_p_stat, $i);
+		while($i < mysqli_num_fields($rs_p_stat)) {
+			$meta = mysqli_fetch_field($rs_p_stat, $i);
 			$align = "";
 		 	if($meta->numeric) {
 		 		$align="align='right'";
diff --git a/html/content/en_stats.php b/html/content/en_stats.php
index 5c74cc5..254f29a 100644
--- a/html/content/en_stats.php
+++ b/html/content/en_stats.php
@@ -28,7 +28,7 @@
  <td><select name="project_version">
  <option value="">All projects</option>
 <?php
-	while($myrow = mysql_fetch_assoc($rs_p_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_p_list)) {
 		$selected = "";
 		if($myrow['project_id'] . "|" . $myrow['version'] == $PROJECT_ID . "|" . $VERSION) {
 			$selected = 'selected="selected"';
@@ -40,7 +40,7 @@
    <td><select name="language_id">
    <option value="">All languages</option>
 <?php
-	while($myrow = mysql_fetch_assoc($rs_l_list)) {
+	while($myrow = mysqli_fetch_assoc($rs_l_list)) {
 		$selected = "";
 		if($myrow['language_id'] == $LANGUAGE_ID) {
 			$selected = 'selected="selected"';
@@ -54,8 +54,8 @@
 <tr class="head">
 <?php
     $i = 0;
-	while($i < mysql_num_fields($rs_p_stat)) {
-		 $meta = mysql_fetch_field($rs_p_stat, $i);
+	while($i < mysqli_num_fields($rs_p_stat)) {
+		 $meta = mysqli_fetch_field($rs_p_stat, $i);
 		 $align = "";
 		 if($meta->numeric) {
 		 	$align="align='right'";
@@ -66,7 +66,7 @@
  ?></tr>
 <?php
 	$rowcount=0;
-	while($myrow = mysql_fetch_assoc($rs_p_stat)) {
+	while($myrow = mysqli_fetch_assoc($rs_p_stat)) {
 		$rowcount++;
 		$class="";
 		if($rowcount % 2) {
@@ -74,8 +74,8 @@
 		}
 		echo "<tr $class>";
 		$i = 0;
-		while($i < mysql_num_fields($rs_p_stat)) {
-			$meta = mysql_fetch_field($rs_p_stat, $i);
+		while($i < mysqli_num_fields($rs_p_stat)) {
+			$meta = mysqli_fetch_field($rs_p_stat, $i);
 			$align = "";
 		 	if($meta->numeric) {
 		 		$align="align='right'";
diff --git a/html/fragments/language_progress.php b/html/fragments/language_progress.php
index 965dbef..c919beb 100644
--- a/html/fragments/language_progress.php
+++ b/html/fragments/language_progress.php
@@ -16,14 +16,14 @@
 
 $query = "SELECT value, quantity FROM scoreboard WHERE itemid = 'LANGPR' ORDER BY quantity DESC";
 
-$res = mysqli_query($query);
+$res = mysqli_query($dbh, $query);
 
 ?>
 <div id="trans-progress-area">
 	<h2>Translation Progress</h2>
 	<dl>
 	<?php
-		while($row = mysql_fetch_assoc($res)){
+		while($row = mysqli_fetch_assoc($res)){
 			echo "<dt>" . $row['value'] . "</dt>";
 			echo "<dd>" . $row['quantity'] . "</dd>";
 		}
diff --git a/html/fragments/motd.php b/html/fragments/motd.php
index 8182e23..c7788c9 100644
--- a/html/fragments/motd.php
+++ b/html/fragments/motd.php
@@ -14,8 +14,8 @@
 
 $query = "SELECT value FROM sys_values WHERE itemid = 'MOTD' AND value IS NOT NULL AND value <> '' LIMIT 1";
 
-if ($res = mysqli_query($query)) {
-	if ($row = mysql_fetch_assoc($res)) {
+if ($res = mysqli_query($dbh, $query)) {
+	if ($row = mysqli_fetch_assoc($res)) {
 		echo "<div id='motd'>";
 		echo $row['value'];
 		echo "</div>";
diff --git a/html/fragments/top_translators.php b/html/fragments/top_translators.php
index 055ede8..fa9c2b0 100644
--- a/html/fragments/top_translators.php
+++ b/html/fragments/top_translators.php
@@ -15,14 +15,14 @@
 
 $query = "SELECT value, quantity FROM scoreboard WHERE itemid = 'TOPTR' ORDER BY quantity DESC";
 
-$res = mysqli_query($query);
+$res = mysqli_query($dbh, $query);
 
 ?>
 <div id="top-translators-area">
 	<h2>Top Translators</h2>
 	<dl>
 	<?php
-		while($row = mysql_fetch_assoc($res)) {
+		while($row = mysqli_fetch_assoc($res)) {
 			echo "<dt>" . $row['value'] . "</dt>";
 			echo "<dd>" . $row['quantity'] . "</dd>";
 		}
diff --git a/html/process_map_files.php b/html/process_map_files.php
index 1daed7d..0d739da 100755
--- a/html/process_map_files.php
+++ b/html/process_map_files.php
@@ -48,7 +48,7 @@
 INNER JOIN release_trains AS t on t.train_id = r.train_id 
 WHERE m.is_active = 1 AND m.is_map_file = 1 AND t.is_active = 1";
 $rs_maps = mysqli_query($dbh, $sql);
-while ($myrow_maps = mysql_fetch_assoc($rs_maps)) {
+while ($myrow_maps = mysqli_fetch_assoc($rs_maps)) {
   $location = $myrow_maps['location'];
   $project_id = $myrow_maps['project_id'];
   $version = $myrow_maps['version'];
@@ -63,7 +63,7 @@
     $files_collected[$project_id][$version] = 1;
     $sql = "SELECT * FROM files WHERE project_id = \"$project_id\" AND version = \"$version\"";
     $rs_files = mysqli_query($dbh, $sql);
-    while($myrow_files = mysql_fetch_assoc($rs_files)) {
+    while($myrow_files = mysqli_fetch_assoc($rs_files)) {
       $file = new File();
       $file->project_id = $myrow_files['project_id'];
       $file->version = $myrow_files['version'];
@@ -87,7 +87,7 @@
   $patterns[] = "/^.*\.test\/.*$/";
   $patterns[] = "/^.*\.tests\/.*$/";
   $patterns[] = "/^.*\.testing\/.*$/";
-  while ($myrow_patterns = mysql_fetch_assoc($rs_patterns)) {
+  while ($myrow_patterns = mysqli_fetch_assoc($rs_patterns)) {
     $patterns[] = $myrow_patterns['pattern'];
   }
 
diff --git a/html/process_project_source_locations.php b/html/process_project_source_locations.php
index 59e763f..12ec46b 100644
--- a/html/process_project_source_locations.php
+++ b/html/process_project_source_locations.php
@@ -51,7 +51,7 @@
 INNER JOIN release_trains AS t on t.train_id = r.train_id 
 WHERE t.is_active = 1";
 $rs_maps = mysqli_query($dbh, $sql);
-while($update_site = mysql_fetch_assoc($rs_maps)) {
+while($update_site = mysqli_fetch_assoc($rs_maps)) {
   $site_url = $update_site['location'];
   $project_id = $update_site['project_id'];
   $version = $update_site['version'];
@@ -68,7 +68,7 @@
     $files_collected[$project_id][$version] = 1;
     $sql = "SELECT * FROM files WHERE project_id = \"$project_id\" AND version = \"$version\"";
     $rs_files = mysqli_query($dbh, $sql);
-    while ($myrow_files = mysql_fetch_assoc($rs_files)) {
+    while ($myrow_files = mysqli_fetch_assoc($rs_files)) {
       $file = new File();
       $file->project_id = $myrow_files['project_id'];
       $file->version = $myrow_files['version'];
@@ -92,7 +92,7 @@
   $patterns[] = "/^.*\.test\/.*$/";
   $patterns[] = "/^.*\.tests\/.*$/";
   $patterns[] = "/^.*\.testing\/.*$/";
-  while ($myrow_patterns = mysql_fetch_assoc($rs_patterns)) {
+  while ($myrow_patterns = mysqli_fetch_assoc($rs_patterns)) {
     $patterns[] = $myrow_patterns['pattern'];
   }
 
diff --git a/html/process_update_sites.php b/html/process_update_sites.php
index d58f45a..a3b2052 100644
--- a/html/process_update_sites.php
+++ b/html/process_update_sites.php
@@ -52,7 +52,7 @@
 INNER JOIN release_trains AS t on t.train_id = r.train_id 
 WHERE m.is_active = 1 AND m.is_map_file = 0 AND t.is_active = 1";
 $rs_maps = mysqli_query($dbh, $sql);
-while($update_site = mysql_fetch_assoc($rs_maps)) {
+while($update_site = mysqli_fetch_assoc($rs_maps)) {
   $site_url = $update_site['location'];
   $project_id = $update_site['project_id'];
   $version = $update_site['version'];
@@ -75,7 +75,7 @@
     $files_collected[$project_id][$version] = 1;
     $sql = "SELECT * FROM files WHERE project_id = \"$project_id\" AND version = \"$version\"";
     $rs_files = mysqli_query($dbh, $sql);
-    while ($myrow_files = mysql_fetch_assoc($rs_files)) {
+    while ($myrow_files = mysqli_fetch_assoc($rs_files)) {
       $file = new File();
       $file->project_id = $myrow_files['project_id'];
       $file->version = $myrow_files['version'];
@@ -99,7 +99,7 @@
   $patterns[] = "/^.*\.test\/.*$/";
   $patterns[] = "/^.*\.tests\/.*$/";
   $patterns[] = "/^.*\.testing\/.*$/";
-  while ($myrow_patterns = mysql_fetch_assoc($rs_patterns)) {
+  while ($myrow_patterns = mysqli_fetch_assoc($rs_patterns)) {
     $patterns[] = $myrow_patterns['pattern'];
   }
 
diff --git a/html/query.php b/html/query.php
index 6b25e99..cc3371c 100644
--- a/html/query.php
+++ b/html/query.php
@@ -31,14 +31,14 @@
 
 $value = html_entity_decode($value);
 
-$possible_translations = mysqli_query(
+$possible_translations = mysqli_query($dbh,
 	"SELECT t.value 
 		from strings As s inner join translations AS t on s.string_id = t.string_id
 					inner join languages As l on l.language_id = t.language_id
 					where s.value = BINARY '" . addslashes($value) . "' 
 					and l.iso_code = '" . addslashes($nl) . "' ");
 		
-if ($possible_translations and (($translation_row = mysql_fetch_assoc($possible_translations)) != null)) {
+if ($possible_translations and (($translation_row = mysqli_fetch_assoc($possible_translations)) != null)) {
 		echo $translation_row['value'];
 }
 
diff --git a/spec/system/ReleaseTrainClassSpec.php b/spec/system/ReleaseTrainClassSpec.php
index 9c6778e..84b59d0 100644
--- a/spec/system/ReleaseTrainClassSpec.php
+++ b/spec/system/ReleaseTrainClassSpec.php
@@ -28,9 +28,9 @@
 // TODO add a spec for the version of the release train
     
    public function itShouldLoadAllTheReleaseTrains() {
-	 $train_result = mysqli_query("SELECT DISTINCT train_id FROM release_train_projects");
+	 $train_result = mysqli_query($dbh, "SELECT DISTINCT train_id FROM release_train_projects");
      $all = ReleaseTrain::all();
-	 $this->spec(count($all))->should->equal(mysql_num_rows($train_result));
+	 $this->spec(count($all))->should->equal(mysqli_num_rows($train_result));
    }
 }
 ?>
\ No newline at end of file
diff --git a/spec/system/UserClassSpec.php b/spec/system/UserClassSpec.php
index 357c911..abe3939 100644
--- a/spec/system/UserClassSpec.php
+++ b/spec/system/UserClassSpec.php
@@ -19,8 +19,8 @@
 
 	public function before() {
       //delete all users from the test DB then recreate one.
-      mysqli_query("DELETE FROM users");
-      mysqli_query('insert into users set userid = 1, username = "babel@eclipse.org", first_name="babel", last_name="fish", email="babel@eclipse.org", primary_language_id = "", password_hash = "HSD9a.ShTTdvo", is_committer = true, updated_on = NOW(), updated_at="",created_on = NOW(), created_at=""');
+      mysqli_query($dbh, "DELETE FROM users");
+      mysqli_query($dbh, 'insert into users set userid = 1, username = "babel@eclipse.org", first_name="babel", last_name="fish", email="babel@eclipse.org", primary_language_id = "", password_hash = "HSD9a.ShTTdvo", is_committer = true, updated_on = NOW(), updated_at="",created_on = NOW(), created_at=""');
     }
 
     public function itShouldBeAbleToFindAUserFromItsEmailAndItsPassword() {
