'string', 'pattern' => '^\d{4}-\d{2}-\d{2}$', 'required' => true, ); return array( 'prev_start' => $date, 'prev_end' => $date, ); } /** * {@inheritDoc} * * @param Profile $site Site. * @param array $params Parameters. * @return array */ public function run( Profile $site, array $params ) { if ( ! $site->segments ) { return array( 'total' => null, 'segments' => array(), ); } $gsc = $this->google->for_site( $site, Profile::SOURCE_SEARCH )->search_console(); $ttl = $this->ttl( $params['end'] ); $range = function ( array $filters ) use ( $gsc, $site, $params, $ttl ) { return array( 'cur' => $gsc->totals( $site->gsc_site, $params['start'], $params['end'], $site->search_type, $ttl, $filters ), 'prev' => $gsc->totals( $site->gsc_site, $params['prev_start'], $params['prev_end'], $site->search_type, $ttl, $filters ), ); }; $out = array(); foreach ( $site->segments as $segment ) { $out[] = array_merge( array( 'id' => $segment['id'] ), $range( SegmentFilter::gsc( array( 'segment' => $segment, 'negate' => false, ) ) ) ); } return array( 'total' => $range( array() ), 'segments' => $out, ); } }