trait AcquiaContentHubStatusMetricsTrait in Acquia Content Hub 8.2
Trait to set status metrics for Content Hub client cdf entities.
@package Drupal\acquia_contenthub
Hierarchy
- trait \Drupal\acquia_contenthub\AcquiaContentHubStatusMetricsTrait
2 files declare their use of AcquiaContentHubStatusMetricsTrait
- PublisherTracker.php in modules/
acquia_contenthub_publisher/ src/ PublisherTracker.php - SubscriberTracker.php in modules/
acquia_contenthub_subscriber/ src/ SubscriberTracker.php
File
- src/
AcquiaContentHubStatusMetricsTrait.php, line 10
Namespace
Drupal\acquia_contenthubView source
trait AcquiaContentHubStatusMetricsTrait {
/**
* The database connection.
*
* @var \Drupal\Core\Database\Connection
*/
protected $database;
/**
* Calculates metrics timestamped and indexed by status.
*
* @return array
* Array of metric statuses.
*/
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,
];
}
/**
* Calculates updated time of most recent published tracked entity.
*
* @return false|int
* Timestamp of most recent record
*/
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;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AcquiaContentHubStatusMetricsTrait:: |
protected | property | The database connection. | |
AcquiaContentHubStatusMetricsTrait:: |
public | function | Calculates updated time of most recent published tracked entity. | |
AcquiaContentHubStatusMetricsTrait:: |
public | function | Calculates metrics timestamped and indexed by status. |