get('backend', 'resource', 'reporting') ) ); $config->options = [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ]; if ($config->db === 'mysql') { $config->options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET SESSION SQL_MODE='STRICT_TRANS_TABLES" . ",NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'"; } return new RetryConnection($config); } /** * List all reporting timeframes * * @return array */ public static function listTimeframes(): array { return self::list( (new Sql\Select()) ->from('timeframe') ->columns(['id', 'name']) ); } /** * List all reporting templates * * @return array */ public static function listTemplates(): array { return self::list( (new Sql\Select()) ->from('template') ->columns(['id', 'name']) ); } /** * Helper method for list templates and timeframes * * @param Sql\Select $select * * @return array */ private static function list(Sql\Select $select): array { $result = []; /** @var stdClass $row */ foreach (self::get()->select($select) as $row) { /** @var int $id */ $id = $row->id; /** @var string $name */ $name = $row->name; $result[$id] = $name; } return $result; } }