Api
johnhenry\clickyanalytics\services\Api is the plugin's single service. It wraps the Clicky stats API: a low-level request method packs one or more report "types" into each call, normalises Clicky's nested [{type, dates:[{items:[…]}]}] response into flat arrays, decorates rows with flags and logos, and caches results for the configured duration.
$api = ClickyAnalytics::getInstance()->getApi();
Every method that performs a request throws \RuntimeException if the plugin is unconfigured or the API returns an error, except ping(), which returns a structured result instead.
Configuration & connectivity
| Method | Returns | Notes |
|---|
isConfigured(): bool |
Whether both a Site ID and a Sitekey are set. |
Never throws. |
ping(string $siteId, string $siteKey): array |
{success: bool, message: string} |
Tests a credential pair independently of saved settings; backs the Test connection button. |
Low-level
| Method | Returns |
|---|
getStats(array $types, string $date, array $params = []): array |
Items keyed by report type. |
getTally(string $type, string $date): int |
The single scalar value of a tally report type. |
getDailySeries(string $type, string $date): array |
A per-day series (oldest first) for charting. |
getReport(string $type, string $date, int $limit = 10): array |
A ranked report by Clicky type, routing to the enriched getTop* method when one exists. Backs the configurable Report widget. |
Headline metrics
| Method | Returns |
|---|
getVisitorsOnline(): int |
Visitors online now. |
getNewVsReturning(string $date): array |
{new, returning, total}. |
getOverview(string $date, ?string $previousDate = null): array |
Visitors, actions, bounce rate and average time, each with an optional period-over-period trend. |
Ranked reports
All take (string $date, int $limit = 10) unless noted.
| Method | Report |
|---|
getTopPages |
Pages |
getTopSources |
Traffic sources |
getTopReferrers |
Referring domains |
getTopSearchEngines |
Search engines (grouped by brand, with logos) |
getTopCountries($date, $limit, $withDrilldown = false) |
Countries (with ISO code; canDrill flag when $withDrilldown) |
getTopCities / getTopRegions |
Cities / regions |
getTopBrowsers($date, $limit, ?bool $consolidate = null) |
Browsers (consolidates versions by default; with logos) |
getTopOperatingSystems($date, $limit, ?bool $consolidate = null) |
Operating systems (consolidates versions by default; with logos) |
getTopDevices |
Hardware device types (with a device icon) |
getTopScreenResolutions |
Screen resolutions |
getEntryPages / getExitPages |
Landing / exit pages |
getTopDownloads |
Downloads |
getTopGoals |
Goal completions |
getTopCampaigns |
Campaigns |
Country drilldown
| Method | Returns |
|---|
getCountryBreakdown(string $country, string $date, int $limit = 5): array |
{cities, regions} for a single country (filtered client-side from the global lists). |
getCountriesWithBreakdown(string $date): array |
A lookup of countries that have any city/region data, so the UI shows the drilldown only where there's something to expand. |
Visitors & pages
| Method | Returns |
|---|
getRecentVisitors(string $date = 'last-7-days', int $limit = 12): array |
Normalised recent-visitor rows (location, flag, browser/OS logos, referrer, duration, new vs returning). |
getPageStats(string $href, string $date, int $visitorLimit = 5): array |
Headline tallies, traffic sources and recent visitors for a single page path. Backs the page-stats field. |
Caching
Responses are cached under a key derived from the Site ID, the requested types, the date expression and any extra params, for Settings::$cacheDuration seconds. Set the duration to 0 to disable caching entirely.