PluginProbe
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO / 1.27.0
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO v1.27.0
2.7.0 2.6.0 2.5.0 2.4.0 2.3.0 2.2.0 2.1.1 2.1.0 2.0.2 2.0.1 2.0.0 1.32.0 1.31.0 1.30.0 1.29.0 1.28.0 1.27.0 1.26.0 1.25.0 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.10.0 All 48 releases
thinkrank / includes / abilities / analysis / class-get-seo-analytics-data.php

class-get-seo-analytics-data.php in ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO 1.27.0, at includes/abilities/analysis/class-get-seo-analytics-data.php

102 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Get SEO analytics data ability.
4 *
5 * @package ThinkRank\Abilities\Analysis
6 */
7
8 declare(strict_types=1);
9
10 namespace ThinkRank\Abilities\Analysis;
11
12 use ThinkRank\Abilities\Ability_Base;
13 use ThinkRank\SEO\Analytics_Manager;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit; // Exit if accessed directly.
17 }
18
19 /**
20 * Retrieves the ThinkRank SEO analytics dashboard data.
21 *
22 * Requires Google Search Console / Google Analytics to be connected. When no
23 * Google connection is present, empty data is returned (this is expected and is
24 * not an error).
25 */
26 class Get_Seo_Analytics_Data extends Ability_Base {
27 /**
28 * Constructor.
29 */
30 public function __construct() {
31 $this->id = 'thinkrank/get-seo-analytics-data';
32 $this->label = __( 'Get ThinkRank SEO Analytics Data', 'thinkrank' );
33 $this->description = __( 'Retrieve the ThinkRank SEO analytics dashboard data. Requires Google Search Console / Analytics to be connected; returns empty data otherwise.', 'thinkrank' );
34 }
35
36 /**
37 * {@inheritDoc}
38 *
39 * @return array<string, bool|float|string>
40 */
41 public function get_annotations() {
42 return [
43 'readonly' => true,
44 'destructive' => false,
45 'idempotent' => true,
46 'priority' => 1.0,
47 'openWorldHint' => false,
48 ];
49 }
50
51 /**
52 * {@inheritDoc}
53 *
54 * @return array<string, mixed>
55 */
56 public function get_input_schema() {
57 return [
58 'type' => 'object',
59 'additionalProperties' => false,
60 'properties' => [
61 'date_range' => [
62 'type' => 'string',
63 'description' => __( 'The reporting date range.', 'thinkrank' ),
64 'enum' => [ '7d', '30d', '90d' ],
65 'default' => '30d',
66 ],
67 ],
68 ];
69 }
70
71 /**
72 * {@inheritDoc}
73 *
74 * @return array<string, mixed>
75 */
76 public function get_output_schema() {
77 return [
78 'type' => 'object',
79 'additionalProperties' => true,
80 'properties' => [],
81 ];
82 }
83
84 /**
85 * Execute ability.
86 *
87 * @param array<string, mixed> $input Ability input payload.
88 * @return array<string, mixed>
89 */
90 public function execute( $input ) {
91 $date_range = isset( $input['date_range'] ) ? (string) $input['date_range'] : '30d';
92
93 if ( ! in_array( $date_range, [ '7d', '30d', '90d' ], true ) ) {
94 $date_range = '30d';
95 }
96
97 $manager = new Analytics_Manager();
98
99 return $manager->get_dashboard_data( $date_range );
100 }
101 }
102