X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fdbstructure.php;h=32fd304f4ba8658177260db1a7fb9cb9c580a219;hb=0cd9db9cb7f4c96f597e37590a536eaae123238d;hp=8c29eb641526f619d9cc9c330e6f38c004bfedd0;hpb=96fb7433641a46898359e6953b9591edd49ee2d9;p=friendica.git diff --git a/include/dbstructure.php b/include/dbstructure.php index 8c29eb6415..32fd304f4b 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -1,12 +1,17 @@ q($sql); + $result = $db->q($sql); if (!dbm::is_result($result)) { print_update_error($db, $sql); } @@ -80,6 +85,7 @@ function update_fail($update_id, $error_message) { /* + @TODO deprecated code? $email_tpl = get_intltext_template("update_fail_eml.tpl"); $email_msg = replace_macros($email_tpl, array( '$sitename' => $a->config['sitename'], @@ -128,7 +134,7 @@ function table_structure($table) { // On utf8mb4 a varchar index can only have a length of 191 // The "show index" command sometimes returns this value although this value wasn't added manually. // Because we don't want to add this number to every index, we ignore bigger numbers - if (($index["Sub_part"] != "") AND (($index["Sub_part"] < 191) OR ($index["Key_name"] == "PRIMARY"))) { + if (($index["Sub_part"] != "") && (($index["Sub_part"] < 191) || ($index["Key_name"] == "PRIMARY"))) { $column .= "(".$index["Sub_part"].")"; } @@ -227,7 +233,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { } // MySQL >= 5.7.4 doesn't support the IGNORE keyword in ALTER TABLE statements - if ((version_compare($db->server_info(), '5.7.4') >= 0) AND + if ((version_compare($db->server_info(), '5.7.4') >= 0) && !(strpos($db->server_info(), 'MariaDB') !== false)) { $ignore = ''; } else { @@ -376,7 +382,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { $field_definition = $database[$name]["fields"][$fieldname]; // Define the default collation if not given - if (!isset($parameters['Collation']) AND !is_null($field_definition['Collation'])) { + if (!isset($parameters['Collation']) && !is_null($field_definition['Collation'])) { $parameters['Collation'] = 'utf8mb4_general_ci'; } else { $parameters['Collation'] = null; @@ -384,7 +390,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { if ($field_definition['Collation'] != $parameters['Collation']) { $sql2 = db_modify_table_field($fieldname, $parameters); - if (($sql3 == "") OR (substr($sql3, -2, 2) == "; ")) { + if (($sql3 == "") || (substr($sql3, -2, 2) == "; ")) { $sql3 .= "ALTER" . $ignore . " TABLE `".$temp_name."` ".$sql2; } else { $sql3 .= ", ".$sql2; @@ -398,6 +404,14 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { $sql3 .= ";"; } + $field_list = ''; + if ($is_unique && $ignore == '') { + foreach ($structure['fields'] AS $fieldname => $parameters) { + $field_list .= 'ANY_VALUE(`' . $fieldname . '`),'; + } + $field_list = rtrim($field_list, ','); + } + if ($verbose) { // Ensure index conversion to unique removes duplicates if ($is_unique) { @@ -414,7 +428,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { if ($ignore != "") { echo "SET session old_alter_table=0;\n"; } else { - echo "INSERT INTO `".$temp_name."` SELECT * FROM `".$name."`".$group_by.";\n"; + echo "INSERT INTO `".$temp_name."` SELECT ".$field_list." FROM `".$name."`".$group_by.";\n"; echo "DROP TABLE `".$name."`;\n"; echo "RENAME TABLE `".$temp_name."` TO `".$name."`;\n"; } @@ -445,7 +459,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { if ($ignore != "") { $db->q("SET session old_alter_table=0;"); } else { - $r = $db->q("INSERT INTO `".$temp_name."` SELECT * FROM `".$name."`".$group_by.";"); + $r = $db->q("INSERT INTO `".$temp_name."` SELECT ".$field_list." FROM `".$name."`".$group_by.";"); if (!dbm::is_result($r)) { $errors .= print_update_error($db, $sql3); return $errors; @@ -471,6 +485,12 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { Config::set('system', 'maintenance_reason', ''); } + if ($errors) { + Config::set('system', 'dbupdate', DB_UPDATE_FAILED); + } else { + Config::set('system', 'dbupdate', DB_UPDATE_SUCCESSFUL); + } + return $errors; } @@ -494,7 +514,7 @@ function db_field_command($parameters, $create = true) { if ($parameters["extra"] != "") $fieldstruct .= " ".$parameters["extra"]; - /*if (($parameters["primary"] != "") AND $create) + /*if (($parameters["primary"] != "") && $create) $fieldstruct .= " PRIMARY KEY";*/ return($fieldstruct); @@ -511,7 +531,7 @@ function db_create_table($name, $fields, $verbose, $action, $indexes=null) { $primary_keys = array(); foreach ($fields AS $fieldname => $field) { $sql_rows[] = "`".dbesc($fieldname)."` ".db_field_command($field); - if (x($field,'primary') and $field['primary']!='') { + if (x($field,'primary') && $field['primary']!='') { $primary_keys[] = $fieldname; } } @@ -799,7 +819,7 @@ function db_definition() { $database["conv"] = array( "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "guid" => array("type" => "varchar(64)", "not null" => "1", "default" => ""), + "guid" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "recips" => array("type" => "text"), "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "creator" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1186,7 +1206,7 @@ function db_definition() { "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "name" => array("type" => "varchar(128)", "not null" => "1", "default" => ""), "locked" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), - "created" => array("type" => "datetime", "default" => NULL_DATE), + "pid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), ), "indexes" => array( "PRIMARY" => array("id"), @@ -1196,7 +1216,7 @@ function db_definition() { "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), - "guid" => array("type" => "varchar(64)", "not null" => "1", "default" => ""), + "guid" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "from-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "from-photo" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "from-url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1218,6 +1238,7 @@ function db_definition() { "convid" => array("convid"), "uri" => array("uri(64)"), "parent-uri" => array("parent-uri(64)"), + "contactid" => array("contact-id"), ) ); $database["mailacct"] = array( @@ -1355,6 +1376,7 @@ function db_definition() { ), "indexes" => array( "PRIMARY" => array("id"), + "contactid" => array("contact-id"), "uid_contactid" => array("uid", "contact-id"), "uid_profile" => array("uid", "profile"), "uid_album_scale_created" => array("uid", "album(32)", "scale", "created"), @@ -1718,9 +1740,14 @@ function db_definition() { "created" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "pid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "executed" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), + "done" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), ), "indexes" => array( "PRIMARY" => array("id"), + "pid" => array("pid"), + "parameter" => array("parameter(64)"), + "priority_created" => array("priority", "created"), + "executed" => array("executed"), ) ); @@ -1735,17 +1762,17 @@ function dbstructure_run(&$argv, &$argc) { global $a, $db; if (is_null($a)) { - $a = new App; + $a = new App(dirname(__DIR__)); } if (is_null($db)) { - @include(".htconfig.php"); - require_once("include/dba.php"); + @include ".htconfig.php"; + require_once "include/dba.php"; $db = new dba($db_host, $db_user, $db_pass, $db_data); - unset($db_host, $db_user, $db_pass, $db_data); + unset($db_host, $db_user, $db_pass, $db_data); } - if ($argc==2) { + if ($argc == 2) { switch ($argv[1]) { case "dryrun": update_structure(true, false); @@ -1755,7 +1782,7 @@ function dbstructure_run(&$argv, &$argc) { $build = get_config('system','build'); if (!x($build)) { - set_config('system','build',DB_UPDATE_VERSION); + set_config('system', 'build', DB_UPDATE_VERSION); $build = DB_UPDATE_VERSION; } @@ -1765,7 +1792,9 @@ function dbstructure_run(&$argv, &$argc) { // run any left update_nnnn functions in update.php for ($x = $stored; $x < $current; $x ++) { $r = run_update_function($x); - if (!$r) break; + if (!$r) { + break; + } } set_config('system','build',DB_UPDATE_VERSION); @@ -1792,7 +1821,7 @@ function dbstructure_run(&$argv, &$argc) { } -if (array_search(__file__,get_included_files())===0) { +if (array_search(__FILE__,get_included_files())===0) { dbstructure_run($_SERVER["argv"],$_SERVER["argc"]); killme(); }