*/
private static function indexToActivity($index)
{
- if (!isset(self::ACTIVITIES[$index])) {
+ if (is_null($index) || !array_key_exists($index, self::ACTIVITIES)) {
return '';
}
$row['target'] = '';
}
// Build the tag string out of the term entries
- if (array_key_exists('tag', $row)) {
+ if (array_key_exists('tag', $row) && empty($row['tag'])) {
$row['tag'] = Term::tagTextFromItemId($row['internal-iid']);
}
// Build the file string out of the term entries
- if (array_key_exists('file', $row)) {
+ if (array_key_exists('file', $row) && empty($row['file'])) {
$row['file'] = Term::fileTextFromItemId($row['internal-iid']);
}
}
// 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.
// 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', 'iaid', 'icid'], $condition);
+ $items = dba::select('item', ['id', 'origin', 'uri', 'plink', 'iaid', 'icid', 'tag', 'file'], $condition);
$content_fields = [];
foreach (array_merge(self::CONTENT_FIELDLIST, self::MIXED_CONTENT_FIELDLIST) as $field) {
if (isset($fields[$field])) {
$content_fields[$field] = $fields[$field];
- unset($fields[$field]);
+ if (in_array($field, self::CONTENT_FIELDLIST)) {
+ unset($fields[$field]);
+ } else {
+ $fields[$field] = null;
+ }
+ }
+ }
+
+ $author_owner_fields = ['author-name', 'author-avatar', 'author-link', 'owner-name', 'owner-avatar', 'owner-link'];
+ foreach ($author_owner_fields as $field) {
+ if (isset($fields[$field])) {
+ $fields[$field] = null;
}
}
if (!empty($item['plink'])) {
$content_fields['plink'] = $item['plink'];
}
- if ((self::activityToIndex($item['verb']) >= 0) || !empty($item['iaid'])) {
+ if (!empty($item['iaid']) || (!empty($content_fields['verb']) && (self::activityToIndex($content_fields['verb']) >= 0))) {
self::updateActivity($content_fields, ['uri' => $item['uri']]);
if (empty($item['iaid'])) {
dba::delete('item-content', ['id' => $item['icid']]);
}
}
+ } elseif (!empty($item['icid'])) {
+ dba::update('item', ['icid' => null], ['id' => $item['id']]);
+
+ if (!dba::exists('item', ['icid' => $item['icid']])) {
+ dba::delete('item-content', ['id' => $item['icid']]);
+ }
}
} else {
self::updateContent($content_fields, ['uri' => $item['uri']]);
if (!empty($tags)) {
Term::insertFromTagFieldByItemId($item['id'], $tags);
+ if (!empty($item['tag'])) {
+ dba::update('item', ['tag' => ''], ['id' => $item['id']]);
+ }
}
if (!empty($files)) {
Term::insertFromFileFieldByItemId($item['id'], $files);
+ if (!empty($item['file'])) {
+ dba::update('item', ['file' => ''], ['id' => $item['id']]);
+ }
}
self::updateThread($item['id']);