friendica-github/src/Model/Post/History.php

58 lines
1.5 KiB
PHP
Raw Normal View History

2022-05-15 20:21:56 +00:00
<?php
2024-08-24 15:27:00 +02:00
// Copyright (C) 2010-2024, the Friendica project
// SPDX-FileCopyrightText: 2010-2024 the Friendica project
//
// SPDX-License-Identifier: AGPL-3.0-or-later
2022-05-15 20:21:56 +00:00
namespace Friendica\Model\Post;
use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\Database\Database;
use Friendica\DI;
2022-05-15 20:21:56 +00:00
use Friendica\Model\Post;
class History
{
/**
* Add a post to the history before it is changed
*
* @param integer $uri_id
* @param array $item
*/
public static function add(int $uri_id, array $item)
{
$allfields = DI::dbaDefinition()->getAll();
2022-05-15 20:26:14 +00:00
$fields = array_keys($allfields['post-history']['fields']);
2022-05-15 20:21:56 +00:00
$post = Post::selectFirstPost($fields, ['uri-id' => $uri_id]);
if (empty($post)) {
Logger::warning('Post not found', ['uri-id' => $uri_id]);
return;
}
if ($item['edited'] <= $post['edited']) {
Logger::info('New edit date is not newer than the old one', ['uri-id' => $uri_id, 'old' => $post['edited'], 'new' => $item['edited']]);
2022-05-15 20:21:56 +00:00
return;
}
2022-05-15 20:26:14 +00:00
$update = false;
2022-07-13 00:23:12 +02:00
$changed = DI::dbaDefinition()->truncateFieldsForTable('post-history', $item);
2022-05-15 20:21:56 +00:00
unset($changed['uri-id']);
unset($changed['edited']);
foreach ($changed as $field => $content) {
if ($content != $post[$field]) {
$update = true;
}
}
if ($update) {
DBA::insert('post-history', $post, Database::INSERT_IGNORE);
Logger::info('Added history', ['uri-id' => $uri_id, 'edited' => $post['edited']]);
} else {
Logger::info('No content fields had been changed', ['uri-id' => $uri_id, 'edited' => $post['edited']]);
}
}
}