63 lines
1.7 KiB
PHP
63 lines
1.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file classes/statistics/TemporaryInstitutionsDAO.php
|
|
*
|
|
* Copyright (c) 2022 Simon Fraser University
|
|
* Copyright (c) 2022 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class TemporaryInstitutionsDAO
|
|
*
|
|
* @ingroup statistics
|
|
*
|
|
* @brief Operations for retrieving and adding the normalized data for institutions usage stats temporary records.
|
|
*/
|
|
|
|
namespace PKP\statistics;
|
|
|
|
use Illuminate\Support\Collection;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class TemporaryInstitutionsDAO
|
|
{
|
|
/** The name of the table */
|
|
public string $table = 'usage_stats_institution_temporary_records';
|
|
|
|
/**
|
|
* Insert the institution ids to normalize the data in temporary tables.
|
|
*/
|
|
public function insert(array $institutionIds, int $lineNumber, string $loadId): void
|
|
{
|
|
foreach ($institutionIds as $institutionId) {
|
|
DB::table($this->table)->insert([
|
|
'load_id' => $loadId,
|
|
'line_number' => $lineNumber,
|
|
'institution_id' => $institutionId
|
|
]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Delete all records associated
|
|
* with the passed load id.
|
|
*/
|
|
public function deleteByLoadId(string $loadId): void
|
|
{
|
|
DB::table($this->table)->where('load_id', '=', $loadId)->delete();
|
|
}
|
|
|
|
/**
|
|
* Retrieve all distinct institution IDs for the given load id.
|
|
*/
|
|
public function getInstitutionIdsByLoadId(string $loadId): Collection
|
|
{
|
|
$institutionIds = DB::table($this->table)
|
|
->select('institution_id')
|
|
->distinct()
|
|
->where('load_id', '=', $loadId)
|
|
->pluck('institution_id');
|
|
return $institutionIds;
|
|
}
|
|
}
|