- private static function insertActivity(&$item)
- {
- $activity_index = self::activityToIndex($item['verb']);
-
- if ($activity_index < 0) {
- return false;
- }
-
- $fields = ['activity' => $activity_index, 'uri-hash' => (string)$item['uri-id'], 'uri-id' => $item['uri-id']];
-
- // We just remove everything that is content
- foreach (array_merge(self::CONTENT_FIELDLIST, self::MIXED_CONTENT_FIELDLIST) as $field) {
- unset($item[$field]);
- }
-
- // To avoid timing problems, we are using locks.
- $locked = DI::lock()->acquire('item_insert_activity');
- if (!$locked) {
- Logger::log("Couldn't acquire lock for URI " . $item['uri'] . " - proceeding anyway.");
- }
-
- // Do we already have this content?
- $item_activity = DBA::selectFirst('item-activity', ['id'], ['uri-id' => $item['uri-id']]);
- if (DBA::isResult($item_activity)) {
- $item['iaid'] = $item_activity['id'];
- Logger::log('Fetched activity for URI ' . $item['uri'] . ' (' . $item['iaid'] . ')');
- } elseif (DBA::insert('item-activity', $fields)) {
- $item['iaid'] = DBA::lastInsertId();
- Logger::log('Inserted activity for URI ' . $item['uri'] . ' (' . $item['iaid'] . ')');
- } else {
- // This shouldn't happen.
- Logger::log('Could not insert activity for URI ' . $item['uri'] . ' - should not happen');
- DI::lock()->release('item_insert_activity');
- return false;
- }
- if ($locked) {
- DI::lock()->release('item_insert_activity');
- }
- return true;
- }
-
- /**
- * Insert a new item content entry
- *
- * @param array $item The item fields that are to be inserted
- * @throws \Exception
- */
- private static function insertContent(&$item)