function insertOrUpdate(FeedItem $item) { $existing = $this->db->idps->findOne($this->getQuery($item)); if ($existing !== null) { $existingItem = FeedItem::fromDB($existing); if ($existingItem->equalTo($item)) { DiscoUtils::log('No changes in metadata ' . tc_colored('SKIP', 'cyan') . ' ' . $item->entityId); } else { DiscoUtils::log('Metadata is changed, storing changes ' . tc_colored('UPDATE', 'red') . ' ' . $item->entityId); $this->update($item); } } else { DiscoUtils::log('Metadata is completely new ' . tc_colored('INSERT', 'green') . ' ' . $item->entityId); $this->insert($item); } }