Saver - объект предназначен для сохранения сущностей в базу.
Для кастомизации необходимо переименовать namespace:
namespace Modules\Activity\Panel\Models;
И установить:
const entity = 'app_activity_items';
<?php
namespace Modules\Activity\Panel\Models;
use Prologue\Framework\Database\Database;
use Prologue\Framework\Tests\TDD;
Class Saver
{
const entity = 'app_activity_items';
public static function save($params)
{
TDD::debug($params, 'params', 'Инициализаруем параметры');
if (!$params['id']) {
$params['id'] = self::createTmpEntity();
}
self::save__updateDatabaseRecord($params);
self::removeTmpEntity();
return $params['id'];
}
private static function save__updateDatabaseRecord($params)
{
$database = new Database;
$pdo = $database->init();
$sql = '';
$params['fields']['is_tmp'] = 0;
if ($params['fields']) {
foreach ($params['fields'] as $code => $value) {
$arSaveData[$code] = $value;
$sql .= "$code=:$code,";
}
$sql = rtrim($sql, ', ');
}
$sql = 'UPDATE ' . self::entity . ' SET ' . $sql . ' WHERE id=:id';
$stmt = $pdo->prepare($sql);
$arSaveData['id'] = $params['id'];
$stmt->execute($arSaveData);
}
private static function createTmpEntity()
{
$database = new Database;
$pdo = $database->init();
$sql = 'INSERT INTO ' . self::entity . ' SET is_tmp=:is_tmp, active=:active, date_create=NOW()';
$stmt = $pdo->prepare($sql);
$stmt->execute(
[
'active' => 0,
'is_tmp' => 1,
]
);
return $pdo->lastInsertId();
}
private static function removeTmpEntity()
{
$database = new Database;
$pdo = $database->init();
$sql = 'DELETE FROM ' . self::entity . ' WHERE is_tmp=:is_tmp';
$stmt = $pdo->prepare($sql);
$stmt->execute(
[
'is_tmp' => 1,
]
);
}
}