src/Repository/Model/Useractivity.php
<?php
declare(strict_types=0);
/**
* vim:set softtabstop=4 shiftwidth=4 expandtab:
*
* LICENSE: GNU Affero General Public License, version 3 (AGPL-3.0-or-later)
* Copyright Ampache.org, 2001-2023
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
namespace Ampache\Repository\Model;
use Ampache\Module\System\Dba;
use PDOStatement;
class Useractivity extends database_object
{
protected const DB_TABLENAME = 'user_activity';
/* Variables from DB */
public int $id = 0;
public int $user;
public string $action;
public int $object_id;
public string $object_type;
public int $activity_date;
/**
* Constructor
* This is run every time a new object is created, and requires
* the id and type of object that we need to pull the flag for
* @param int|null $useract_id
*/
public function __construct($useract_id = 0)
{
if (!$useract_id) {
return;
}
$info = $this->get_info($useract_id, static::DB_TABLENAME);
foreach ($info as $key => $value) {
$this->$key = $value;
}
}
public function getId(): int
{
return (int)($this->id ?? 0);
}
/**
* this attempts to build a cache of the data from the passed activities all in one query
* @param int[] $ids
*/
public static function build_cache($ids): bool
{
if (empty($ids)) {
return false;
}
$idlist = '(' . implode(',', $ids) . ')';
$sql = "SELECT * FROM `user_activity` WHERE `id` IN $idlist";
$db_results = Dba::read($sql);
while ($row = Dba::fetch_assoc($db_results)) {
parent::add_to_cache('user_activity', $row['id'], $row);
}
return true;
}
/**
* Migrate an object associate stats to a new object
* @param string $object_type
* @param int $old_object_id
* @param int $new_object_id
* @return PDOStatement|bool
*/
public static function migrate($object_type, $old_object_id, $new_object_id)
{
$sql = "UPDATE `user_activity` SET `object_id` = ? WHERE `object_type` = ? AND `object_id` = ?";
return Dba::write($sql, array($new_object_id, $object_type, $old_object_id));
}
}