AcquiaContentHubStatusMetricsTrait.php in Acquia Content Hub 8.2
File
src/AcquiaContentHubStatusMetricsTrait.php
View source
<?php
namespace Drupal\acquia_contenthub;
trait AcquiaContentHubStatusMetricsTrait {
protected $database;
public function getStatusMetrics($table_name, $modified_column_name) {
if (!$this->database
->schema()
->tableExists($table_name)) {
return [];
}
$query = $this->database
->select($table_name, 't')
->fields('t', [
'status',
])
->groupBy('t.status');
$query
->addExpression('count(t.status)', 'count');
$metrics = $query
->execute()
->fetchAll(\PDO::FETCH_ASSOC);
$update_time = $this
->getMostRecentUpdateTime($table_name, $modified_column_name);
return [
'data' => array_combine(array_column($metrics, 'status'), array_column($metrics, 'count')),
'last_updated' => $update_time,
];
}
public function getMostRecentUpdateTime($table_name, $modified_column_name) {
$query = $this->database
->select($table_name, 't')
->fields('t', [
$modified_column_name,
])
->orderBy($modified_column_name, 'DESC')
->range(0, 1);
$last_updated_record = $query
->execute()
->fetchAll(\PDO::FETCH_ASSOC);
$updateTime = !empty($last_updated_record) ? strtotime($last_updated_record[0][$modified_column_name]) : 0;
return $updateTime;
}
}