From: Michael Date: Fri, 10 Sep 2021 20:22:24 +0000 (+0000) Subject: update for user-contact is added X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=2486c8031bad0217b71e5adcacd2edb31642f5ef;p=friendica.git update for user-contact is added --- diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 8c84625931..25c40a1d39 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -221,7 +221,10 @@ class Contact public static function update(array $fields, array $condition, $old_fields = []) { $ret = DBA::update('contact', $fields, $condition, $old_fields); - // @todo Apply changes to the "user-contact" table on dedicated fields + + // Apply changes to the "user-contact" table on dedicated fields + Contact\User::UpdateByContactUpdate($fields, $condition); + return $ret; } diff --git a/src/Model/Contact/User.php b/src/Model/Contact/User.php index 0283fae720..e46af5191f 100644 --- a/src/Model/Contact/User.php +++ b/src/Model/Contact/User.php @@ -21,12 +21,15 @@ namespace Friendica\Model\Contact; +use Exception; use Friendica\Core\Logger; use Friendica\Core\System; use Friendica\Database\Database; use Friendica\Database\DBA; +use Friendica\Database\DBStructure; use Friendica\Model\Contact; use Friendica\Model\ItemURI; +use PDOException; /** * This class provides information about user related contacts based on the "user-contact" table. @@ -71,6 +74,43 @@ class User return $ret; } + /** + * Apply changes from contact update data to user-contact table + * + * @param array $fields + * @param array $condition + * @return void + * @throws PDOException + * @throws Exception + */ + public static function UpdateByContactUpdate(array $fields, array $condition) + { + DBA::transaction(); + + unset($fields['uid']); + unset($fields['cid']); + unset($fields['uri-id']); + + if (isset($fields['readonly'])) { + $fields['ignored'] = $fields['readonly']; + } + + $update_fields = DBStructure::getFieldsForTable('user-contact', $fields); + if (!empty($update_fields)) { + $contacts = DBA::select('contact', ['uri-id', 'uid'], $condition); + while ($row = DBA::fetch($contacts)) { + if (empty($row['uri-id'])) { + continue; + } + $ret = DBA::update('user-contact', $update_fields, ['uri-id' => $row['uri-id'], 'uid' => $row['uid']]); + Logger::info('Updated user contact', ['uid' => $row['uid'], 'uri-id' => $row['uri-id'], 'ret' => $ret]); + } + + DBA::close($contacts); + } + DBA::commit(); + } + /** * Block contact id for user id *