Post update script to move old content from the item table
This commit is contained in:
parent
32a639891f
commit
38160a48b0
4 changed files with 59 additions and 15 deletions
|
@ -7,6 +7,7 @@ namespace Friendica\Database;
|
||||||
use Friendica\Core\Config;
|
use Friendica\Core\Config;
|
||||||
use Friendica\Database\DBM;
|
use Friendica\Database\DBM;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
use Friendica\Model\Item;
|
||||||
use dba;
|
use dba;
|
||||||
|
|
||||||
require_once 'include/dba.php';
|
require_once 'include/dba.php';
|
||||||
|
@ -30,6 +31,9 @@ class PostUpdate
|
||||||
if (!self::update1206()) {
|
if (!self::update1206()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!self::update1274()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -217,4 +221,44 @@ class PostUpdate
|
||||||
logger("Done", LOGGER_DEBUG);
|
logger("Done", LOGGER_DEBUG);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief update the "item-content" table
|
||||||
|
*
|
||||||
|
* @return bool "true" when the job is done
|
||||||
|
*/
|
||||||
|
private static function update1274()
|
||||||
|
{
|
||||||
|
// Was the script completed?
|
||||||
|
if (Config::get("system", "post_update_version") >= 1274) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger("Start", LOGGER_DEBUG);
|
||||||
|
|
||||||
|
$fields = ['id', 'title', 'content-warning', 'body', 'location', 'tag', 'file',
|
||||||
|
'coord', 'app', 'rendered-hash', 'rendered-html', 'verb',
|
||||||
|
'object-type', 'object', 'target-type', 'target', 'plink'];
|
||||||
|
|
||||||
|
$condition = ["`icid` IS NULL"];
|
||||||
|
$params = ['limit' => 10000];
|
||||||
|
$items = Item::select($fields, $condition, $params);
|
||||||
|
|
||||||
|
if (!DBM::is_result($items)) {
|
||||||
|
Config::set("system", "post_update_version", 1274);
|
||||||
|
logger("Done", LOGGER_DEBUG);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$rows = 0;
|
||||||
|
|
||||||
|
while ($item = Item::fetch($items)) {
|
||||||
|
Item::update($item, ['id' => $item['id']]);
|
||||||
|
++$rows;
|
||||||
|
}
|
||||||
|
dba::close($items);
|
||||||
|
|
||||||
|
logger("Processed rows: " . $rows, LOGGER_DEBUG);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -614,7 +614,7 @@ class Item extends BaseObject
|
||||||
// We cannot simply expand the condition to check for origin entries
|
// We cannot simply expand the condition to check for origin entries
|
||||||
// The condition needn't to be a simple array but could be a complex condition.
|
// The condition needn't to be a simple array but could be a complex condition.
|
||||||
// And we have to execute this query before the update to ensure to fetch the same data.
|
// And we have to execute this query before the update to ensure to fetch the same data.
|
||||||
$items = dba::select('item', ['id', 'origin', 'uri', 'plink'], $condition);
|
$items = dba::select('item', ['id', 'origin', 'uri', 'plink', 'icid'], $condition);
|
||||||
|
|
||||||
$content_fields = [];
|
$content_fields = [];
|
||||||
foreach (array_merge(self::CONTENT_FIELDLIST, self::MIXED_CONTENT_FIELDLIST) as $field) {
|
foreach (array_merge(self::CONTENT_FIELDLIST, self::MIXED_CONTENT_FIELDLIST) as $field) {
|
||||||
|
@ -657,6 +657,20 @@ class Item extends BaseObject
|
||||||
}
|
}
|
||||||
self::updateContent($content_fields, ['uri' => $item['uri']]);
|
self::updateContent($content_fields, ['uri' => $item['uri']]);
|
||||||
|
|
||||||
|
if (empty($item['icid'])) {
|
||||||
|
$item_content = dba::selectFirst('item-content', [], ['uri' => $item['uri']]);
|
||||||
|
if (DBM::is_result($item_content)) {
|
||||||
|
$item_fields = ['icid' => $item_content['id']];
|
||||||
|
// Clear all fields in the item table that have a content in the item-content table
|
||||||
|
foreach ($item_content as $field => $content) {
|
||||||
|
if (in_array($field, self::MIXED_CONTENT_FIELDLIST) && !empty($item_content[$field])) {
|
||||||
|
$item_fields[$field] = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dba::update('item', $item_fields, ['id' => $item['id']]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($tags)) {
|
if (!empty($tags)) {
|
||||||
Term::insertFromTagFieldByItemId($item['id'], $tags);
|
Term::insertFromTagFieldByItemId($item['id'], $tags);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2087,13 +2087,6 @@ class DFRN
|
||||||
|
|
||||||
logger('Contacts are updated.');
|
logger('Contacts are updated.');
|
||||||
|
|
||||||
// update items
|
|
||||||
// This is an extreme performance killer
|
|
||||||
Item::update(['owner-link' => $relocate["url"]], ['owner-link' => $old["url"], 'uid' => $importer["importer_uid"]]);
|
|
||||||
Item::update(['author-link' => $relocate["url"]], ['author-link' => $old["url"], 'uid' => $importer["importer_uid"]]);
|
|
||||||
|
|
||||||
logger('Items are updated.');
|
|
||||||
|
|
||||||
/// @TODO
|
/// @TODO
|
||||||
/// merge with current record, current contents have priority
|
/// merge with current record, current contents have priority
|
||||||
/// update record, set url-updated
|
/// update record, set url-updated
|
||||||
|
|
|
@ -1543,13 +1543,6 @@ class Diaspora
|
||||||
|
|
||||||
logger('Contacts are updated.');
|
logger('Contacts are updated.');
|
||||||
|
|
||||||
// update items
|
|
||||||
// This is an extreme performance killer
|
|
||||||
Item::update(['owner-link' => $data["url"]], ['owner-link' => $contact["url"], 'uid' => $importer["uid"]]);
|
|
||||||
Item::update(['author-link' => $data["url"]], ['author-link' => $contact["url"], 'uid' => $importer["uid"]]);
|
|
||||||
|
|
||||||
logger('Items are updated.');
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue