use Friendica\Database\DBM;
use Friendica\Model\Contact;
use Friendica\Model\GContact;
+use Friendica\Model\Item;
use Friendica\Network\Probe;
use Friendica\Protocol\Diaspora;
use Friendica\Protocol\Email;
'edited' => datetime_convert(),
'changed' => datetime_convert());
- dba::update('item', $fields, ['id' => $post_id]);
-
- create_tags_from_item($post_id);
- create_files_from_item($post_id);
- update_thread($post_id);
+ Item::update($fields, ['id' => $post_id]);
// update filetags in pconfig
file_tag_update_pconfig($uid,$categories_old,$categories_new,'category');
- Worker::add(PRIORITY_HIGH, "Notifier", 'edit_post', $post_id);
if (x($_REQUEST, 'return') && strlen($return_path)) {
logger('return: ' . $return_path);
goaway($return_path);
--- /dev/null
+<?php
+
+/**
+ * @file src/Model/Item.php
+ */
+
+namespace Friendica\Model;
+
+use Friendica\Core\Worker;
+use dba;
+
+require_once 'include/tags.php';
+require_once 'include/files.php';
+require_once 'include/threads.php';
+
+class Item
+{
+ /**
+ * @brief Update existing item entries
+ *
+ * @param array $fields The fields that are to be changed
+ * @param array $condition The condition for finding the item entries
+ *
+ * @return boolean success
+ */
+ public static function update(array $fields, array $condition)
+ {
+ if (empty($condition) || empty($fields)) {
+ return false;
+ }
+
+ $success = dba::update('item', $fields, $condition);
+
+ if (!$success) {
+ return false;
+ }
+
+ // 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.
+ $items = dba::select('item', ['id', 'origin'], $condition);
+ while ($item = dba::fetch($items)) {
+ // We only need to notfiy others when it is an original entry from us
+ if (!$item['origin']) {
+ continue;
+ }
+
+ create_tags_from_item($item['id']);
+ create_files_from_item($item['id']);
+ update_thread($item['id']);
+
+ Worker::add(PRIORITY_HIGH, "Notifier", 'edit_post', $item['id']);
+ }
+
+ return true;
+ }
+}