Пример #1
0
function queryFromFile($sql_file_path)
{
    $sqlUtility = new SqlUtility();
    global $db, $progress, $errors;
    $tables = array();
    if (!file_exists($sql_file_path)) {
        $progress[] = $sql_file_path . ': file not exists.';
        return false;
    }
    $sql_query = trim(fread(fopen($sql_file_path, 'r'), filesize($sql_file_path)));
    $sqlUtility->splitSqlFile($pieces, $sql_query);
    foreach ($pieces as $piece) {
        $piece = trim($piece);
        // [0] contains the prefixed query
        // [4] contains unprefixed table name
        if ($_POST['tb_prefix'] || $_POST['tb_prefix'] == '') {
            $prefixed_query = $sqlUtility->prefixQuery($piece, $_POST['tb_prefix']);
        } else {
            $prefixed_query = $piece;
        }
        if ($prefixed_query != false) {
            $prefixed_query[1] = strtoupper($prefixed_query[1]);
            $table = $_POST['tb_prefix'] . $prefixed_query[4];
            if ($prefixed_query[1] == 'CREATE TABLE') {
                if (mysql_query($prefixed_query[0], $db) !== false) {
                    $progress[] = 'Table <strong>' . $table . '</strong> created successfully.';
                } else {
                    if (mysql_errno($db) == 1050) {
                        $progress[] = 'Table <strong>' . $table . '</strong> already exists. Skipping.';
                    } else {
                        $errors[] = 'Table <strong>' . $table . '</strong> creation failed.';
                    }
                }
            } elseif ($prefixed_query[1] == 'INSERT INTO') {
                mysql_query($prefixed_query[0], $db);
            } elseif ($prefixed_query[1] == 'DELETE FROM') {
                mysql_query($prefixed_query[0], $db);
            } elseif ($prefixed_query[1] == 'REPLACE INTO') {
                mysql_query($prefixed_query[0], $db);
            } elseif ($prefixed_query[1] == 'ALTER TABLE') {
                if (mysql_query($prefixed_query[0], $db) !== false) {
                    $progress[] = 'Table <strong>' . $table . '</strong> altered successfully.';
                } else {
                    if (mysql_errno($db) == 1060) {
                        $progress[] = 'Table <strong>' . $table . '</strong> fields already exists. Skipping.';
                    } elseif (mysql_errno($db) == 1091) {
                        $progress[] = 'Table <strong>' . $table . '</strong> fields already dropped. Skipping.';
                    } else {
                        $errors[] = 'Table <strong>' . $table . '</strong> alteration failed.';
                    }
                }
            } elseif ($prefixed_query[1] == 'DROP TABLE') {
                mysql_query($prefixed_query[1] . ' ' . $table, $db);
            } elseif ($prefixed_query[1] == 'UPDATE') {
                mysql_query($prefixed_query[0], $db);
            }
        }
    }
    return true;
}
Пример #2
0
	function revertQueryFromFile($sql_file_path, $table_prefix)
	{
		global $db, $progress, $errors;

		$tables = array();

		if (!file_exists($sql_file_path))
			return false;

		$sql_query = trim(fread(fopen($sql_file_path, 'r'), filesize($sql_file_path)));
		SqlUtility::splitSqlFile($pieces, $sql_query);

		foreach ($pieces as $piece)
		{
			$piece = trim($piece);

			$pattern_create_table = "/^CREATE TABLE\s+([`]?)([^`\s]+)\\1(\s)+/siU";
			if (preg_match($pattern_create_table, $piece, $matches))
			{
				$sql = 'DROP TABLE '. $table_prefix . $matches[2];
				mysql_query($sql, $db);
			}
			
			$pattern_insert_lang = "/^INSERT INTO\s+([`]?)language_text\\1\s+.*VALUES.*'.*'.*'(.*)'.*'(.*)'/siU";
			if (preg_match($pattern_insert_lang, $piece, $matches))
			{
				$sql = "DELETE FROM ".$table_prefix."language_text WHERE variable='".$matches[2]."' AND term='".$matches[3]."'";
				mysql_query($sql, $db);
			}
		}

    return TRUE;
  }
Пример #3
0
 function queryFromFile($sql_file_path, $table_prefix)
 {
     global $db, $progress, $errors;
     include_once AC_INCLUDE_PATH . 'classes/DAO/DAO.class.php';
     $dao = new DAO();
     $tables = array();
     if (!file_exists($sql_file_path)) {
         return false;
     }
     $sql_query = trim(fread(fopen($sql_file_path, 'r'), filesize($sql_file_path)));
     SqlUtility::splitSqlFile($pieces, $sql_query);
     foreach ($pieces as $piece) {
         $piece = trim($piece);
         // [0] contains the prefixed query
         // [4] contains unprefixed table name
         if ($table_prefix || $table_prefix == '') {
             $prefixed_query = SqlUtility::prefixQuery($piece, $table_prefix);
         } else {
             $prefixed_query = $piece;
         }
         if ($prefixed_query != false) {
             $table = $table_prefix . $prefixed_query[4];
             $prefixed_query[1] = strtoupper($prefixed_query[1]);
             if (strtoupper($prefixed_query[1]) == 'CREATE TABLE') {
                 if ($dao->execute($prefixed_query[0]) !== false) {
                     $progress[] = 'Table <b>' . $table . '</b> created successfully.';
                 } else {
                     if (mysql_errno($db) == 1050) {
                         $progress[] = 'Table <b>' . $table . '</b> already exists. Skipping.';
                     } else {
                         $errors[] = 'Table <b>' . $table . '</b> creation failed.';
                     }
                 }
             } elseif ($prefixed_query[1] == 'INSERT INTO' || $prefixed_query[1] == 'ALTER TABLE' || $prefixed_query[1] == 'DROP TABLE' || $prefixed_query[1] == 'UPDATE') {
                 $dao->execute($prefixed_query[0]);
             }
         }
     }
     return TRUE;
 }