[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
14082024
/
Data
/
htdocs
/
htdocs
/
jurnal-kesmas
/
baru
/
lib
/
pkp
/
classes
/
log
/
event
/
[
Home
]
File: DAO.php
<?php /** * @file classes/log/event/DAO.php * * Copyright (c) 2014-2023 Simon Fraser University * Copyright (c) 2000-2023 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class DAO * * @brief Read and write event information to the database. */ namespace PKP\log\event; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\LazyCollection; use PKP\core\EntityDAO; use PKP\services\PKPSchemaService; class DAO extends EntityDAO { /** @copydoc EntityDAO::$schema */ public $schema = PKPSchemaService::SCHEMA_EVENT_LOG; /** @copydoc EntityDAO::$table */ public $table = 'event_log'; /** @copydoc EntityDAO::$settingsTable */ public $settingsTable = 'event_log_settings'; /** @copydoc EntityDAO::$primaryKeyColumn */ public $primaryKeyColumn = 'log_id'; /** @copydoc EntityDAO::$primaryTableColumns */ public $primaryTableColumns = [ 'id' => 'log_id', 'assocType' => 'assoc_type', 'assocId' => 'assoc_id', 'userId' => 'user_id', 'dateLogged' => 'date_logged', 'eventType' => 'event_type', 'message' => 'message', 'isTranslated' => 'is_translated', ]; /** * Instantiate a new DataObject */ public function newDataObject(): EventLogEntry { return app(EventLogEntry::class); } /** * Check if a log entry exists */ public function exists(int $id): bool { return DB::table($this->table) ->where($this->primaryKeyColumn, '=', $id) ->exists(); } /** * Get an event log entry */ public function get(int $id): ?EventLogEntry { $row = DB::table($this->table) ->where($this->primaryKeyColumn, $id) ->first(); return $row ? $this->fromRow($row) : null; } /** * Get the number of log entries matching the configured query */ public function getCount(Collector $query): int { return $query ->getQueryBuilder() ->count(); } /** * Get a list of ids matching the configured query */ public function getIds(Collector $query): Collection { return $query ->getQueryBuilder() ->select('e.' . $this->primaryKeyColumn) ->pluck('e.' . $this->primaryKeyColumn); } /** * Get a collection of log entries matching the configured query */ public function getMany(Collector $query): LazyCollection { $rows = $query ->getQueryBuilder() ->get(); return LazyCollection::make(function () use ($rows) { foreach ($rows as $row) { yield $row->log_id => $this->fromRow($row); } }); } /** * @copydoc EntityDAO::fromRow() */ public function fromRow(object $row): EventLogEntry { $logEntry = parent::fromRow($row); $schema = $this->schemaService->get($this->schema); DB::table($this->settingsTable) ->where($this->primaryKeyColumn, '=', $row->{$this->primaryKeyColumn}) ->get() ->each(function ($row) use ($logEntry, $schema) { if (!empty($schema->properties->{$row->setting_name})) { return; } // Retrieve custom properties if (!empty($row->setting_type)) { $logEntry->setData( $row->setting_name, $this->convertFromDB( $row->setting_value, $row->setting_type ), empty($row->locale) ? null : $row->locale ); } }); return $logEntry; } /** * @copydoc EntityDAO::insert() */ public function insert(EventLogEntry $eventLog): int { return parent::_insert($eventLog); } /** * @copydoc EntityDAO::delete() */ public function delete(EventLogEntry $eventLog) { parent::_delete($eventLog); } /** * Transfer all log entries to another user. */ public function changeUser(int $oldUserId, int $newUserId) { DB::table($this->table)->where('user_id', $oldUserId)->update(['user_id' => $newUserId]); } }