/** * Creates a new request, sends and receives the data, uses caching if defined by the user. * @param string $uri The uri this request is sent to. * @param string $method The method (GET,PUT,POST,DELETE) * @param array $customHeader A customHeader to be sent * @param array $data The data to be sent as array * @return EActiveResourceResponse The response object */ public function sendRequest($uri, $method, $data = null, $customHeader = null, $contentType = 'application/json', $acceptType = 'application/json') { ///LOOK FOR CACHED RESPONSES FIRST if ($this->queryCachingCount > 0 && $this->queryCachingDuration > 0 && $this->queryCacheID !== false && ($cache = Yii::app()->getComponent($this->queryCacheID)) !== null) { $this->queryCachingCount--; $cacheKey = 'yii:eactiveresourcerequest:' . $uri . ':' . $method . ':' . $this->recursiveImplode('-', $customHeader); $cacheKey .= ':' . $this->recursiveImplode('#', $data); if (($result = $cache->get($cacheKey)) !== false) { Yii::trace('Respone found in cache', 'ext.EActiveResource.EActiveResourceConnection'); return $result; } } $request = new EActiveResourceRequest(); $request->setUri($uri); $request->setMethod($method); $request->setData($data); $request->setContentType($contentType); $request->setAcceptType($acceptType); $request->setCustomHeader($customHeader); $response = $request->run(); //CACHE RESULT IF CACHE IS SET if (isset($cache, $cacheKey)) { $cache->set($cacheKey, $response, $this->queryCachingDuration, $this->queryCachingDependency); } return $response; }