Merge pull request #8665 from annando/update-vid

Update the "vid" field in the "update" process
This commit is contained in:
Hypolite Petovan 2020-05-19 17:01:11 -04:00 committed by GitHub
commit aadaf032ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 4 deletions

View file

@ -94,7 +94,7 @@ class Item
// All fields in the item table
const ITEM_FIELDLIST = ['id', 'uid', 'parent', 'uri', 'parent-uri', 'thr-parent',
'guid', 'uri-id', 'parent-uri-id', 'thr-parent-id',
'guid', 'uri-id', 'parent-uri-id', 'thr-parent-id', 'vid',
'contact-id', 'type', 'wall', 'gravity', 'extid', 'icid', 'iaid', 'psid',
'created', 'edited', 'commented', 'received', 'changed', 'verb',
'postopts', 'plink', 'resource-id', 'event-id', 'attach', 'inform',
@ -669,7 +669,7 @@ class Item
$fields = [];
$fields['item'] = ['id', 'uid', 'parent', 'uri', 'parent-uri', 'thr-parent',
'guid', 'uri-id', 'parent-uri-id', 'thr-parent-id',
'guid', 'uri-id', 'parent-uri-id', 'thr-parent-id', 'vid',
'contact-id', 'owner-id', 'author-id', 'type', 'wall', 'gravity', 'extid',
'created', 'edited', 'commented', 'received', 'changed', 'psid',
'resource-id', 'event-id', 'attach', 'post-type', 'file',

View file

@ -33,7 +33,7 @@ class Verb
* @return integer verb id
* @throws \Exception
*/
public static function getID($verb)
public static function getID(string $verb)
{
if (empty($verb)) {
return 0;
@ -48,4 +48,24 @@ class Verb
return DBA::lastInsertId();
}
/**
* Return verb name for the given ID
*
* @param integer $id
* @return string verb
*/
public static function getByID(int $id)
{
if (empty($id)) {
return '';
}
$verb_record = DBA::selectFirst('verb', ['name'], ['id' => $id]);
if (!DBA::isResult($verb_record)) {
return '';
}
return $verb_record['name'];
}
}

View file

@ -54,7 +54,7 @@
use Friendica\Database\DBA;
if (!defined('DB_UPDATE_VERSION')) {
define('DB_UPDATE_VERSION', 1348);
define('DB_UPDATE_VERSION', 1349);
}
return [

View file

@ -474,3 +474,28 @@ function update_1348()
return Update::SUCCESS;
}
function update_1349()
{
$correct = true;
foreach (Item::ACTIVITIES as $index => $activity) {
if (!DBA::exists('verb', ['id' => $index + 1, 'name' => $activity])) {
$correct = false;
}
}
if (!$correct) {
// The update failed - but it cannot be recovered, since the data doesn't match our expectation
// This means that we can't use this "shortcut" to fill the "vid" field and we have to rely upon
// the postupdate. This is not fatal, but means that it will take some longer time for the system
// to fill all data.
return Update::SUCCESS;
}
if (!DBA::e("UPDATE `item` INNER JOIN `item-activity` ON `item`.`uri-id` = `item-activity`.`uri-id`
SET `vid` = `item-activity`.`activity` + 1 WHERE `gravity` = ? AND (`vid` IS NULL OR `vid` = 0)", GRAVITY_ACTIVITY)) {
return Update::FAILED;
}
return Update::SUCCESS;
}