/** * {@inheritdoc} */ protected function createStatistics($type, $dateFrom, $dateTo = null, $id) { if (empty($dateFrom)) { throw new \InvalidArgumentException("{$dateFrom} is invalid, a valid dateFrom must be passed"); } //Check type, create objects accordingly switch ($type) { case parent::PUBLISHER: $obj = new Publisher(); break; case parent::WEBSITE: $obj = new Website(); break; case parent::ZONE: $obj = new Zone(); break; default: throw new \InvalidArgumentException("{$type} is not a valid statistics set"); } $host = $obj->getAddress($id) . "&from=" . $dateFrom; if (!empty($dateTo)) { $host = $host . "&to=" . $dateTo; } //connect to the API service $connection = new Connection(new ArrayConfig(array("host" => $host, "key" => self::KEY, "sharedSecret" => self::SHARED_SECRET))); //get the response from API connection $arr = $connection->getResponse(); //API returns everything under one element, load it $arr = $arr[0]; //set stats from result $obj->setImpressions($arr["impressions"]); $obj->setClicks($arr["clicks"]); $obj->setRevenues($arr["revenue"]); return $obj; }