From: Michael J. Rubinsky Date: Sat, 28 Feb 2009 22:34:49 +0000 (-0500) Subject: Now I remember why I did this - always using the instance variable will X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=02b1feaa3ee4c19e516185b7fd5a8f76e524ea52;p=horde.git Now I remember why I did this - always using the instance variable will break batch processing - we have to pass in the method and the params if we are going to subclass H_S_F_Request --- diff --git a/framework/Service_Facebook/lib/Horde/Service/Facebook/BatchRequest.php b/framework/Service_Facebook/lib/Horde/Service/Facebook/BatchRequest.php index 34c74e260..58b1107e3 100644 --- a/framework/Service_Facebook/lib/Horde/Service/Facebook/BatchRequest.php +++ b/framework/Service_Facebook/lib/Horde/Service/Facebook/BatchRequest.php @@ -83,6 +83,7 @@ class Horde_Service_Facebook_BatchRequest extends Horde_Service_Facebook_Request 'session_key' => $this->_facebook->auth->getSessionKey()); $json = $this->_postRequest('batch.run', $params); $result = json_decode($json, true); + if (is_array($result) && isset($result['error_code'])) { throw new Horde_Service_Facebook_Exception($result['error_msg'], $result['error_code']); diff --git a/framework/Service_Facebook/lib/Horde/Service/Facebook/Request.php b/framework/Service_Facebook/lib/Horde/Service/Facebook/Request.php index a3ebfcd23..c4445bee0 100644 --- a/framework/Service_Facebook/lib/Horde/Service/Facebook/Request.php +++ b/framework/Service_Facebook/lib/Horde/Service/Facebook/Request.php @@ -33,7 +33,7 @@ class Horde_Service_Facebook_Request */ public function &run() { - $data = $this->_postRequest(); + $data = $this->_postRequest($this->_method, $this->_params); switch ($this->_facebook->dataFormat) { case Horde_Service_Facebook::DATA_FORMAT_JSON: case Horde_Service_Facebook::DATA_FORMAT_XML: @@ -53,13 +53,13 @@ class Horde_Service_Facebook_Request return $result; } - protected function _postRequest() + protected function _postRequest($method, &$params) { - $this->_finalizeParams(); + $this->_finalizeParams($method, $params); // TODO: Figure out why passing the array to ->post doesn't work - // we have to manually create the post string or we get an // invalid signature error from FB - $post_string = $this->_createPostString($this->_params); + $post_string = $this->_createPostString($params); $result = $this->_http->post(Horde_Service_Facebook::REST_SERVER_ADDR, $post_string); return $result->getBody(); } @@ -70,41 +70,41 @@ class Horde_Service_Facebook_Request * @param $params * @return unknown_type */ - protected function _finalizeParams() + protected function _finalizeParams($method, &$params) { - $this->_addStandardParams(); + $this->_addStandardParams($method, $params); // we need to do this before signing the params - $this->_convertToCsv(); - $this->_params['sig'] = Horde_Service_Facebook_Auth::generateSignature($this->_params, $this->_facebook->secret); + $this->_convertToCsv($params); + $params['sig'] = Horde_Service_Facebook_Auth::generateSignature($params, $this->_facebook->secret); } - protected function _addStandardParams() + protected function _addStandardParams($method, &$params) { // Select the correct data format. if ($this->_facebook->dataFormat == Horde_Service_Facebook::DATA_FORMAT_ARRAY) { - $this->_params['format'] = $this->_facebook->internalFormat; + $params['format'] = $this->_facebook->internalFormat; } else { - $this->_params['format'] = $this->_facebook->dataFormat; + $params['format'] = $this->_facebook->dataFormat; } - $this->_params['method'] = $this->_method; - $this->_params['api_key'] = $this->_facebook->apiKey; - $this->_params['call_id'] = microtime(true); - if ($this->_params['call_id'] <= $this->_last_call_id) { - $this->_params['call_id'] = $this->_last_call_id + 0.001; + $params['method'] = $method; + $params['api_key'] = $this->_facebook->apiKey; + $params['call_id'] = microtime(true); + if ($params['call_id'] <= $this->_last_call_id) { + $params['call_id'] = $this->_last_call_id + 0.001; } - $this->_last_call_id = $this->_params['call_id']; - if (!isset($this->_params['v'])) { - $this->_params['v'] = '1.0'; + $this->_last_call_id = $params['call_id']; + if (!isset($params['v'])) { + $params['v'] = '1.0'; } if (!empty($this->_facebook->useSslResources)) { - $this->_params['return_ssl_resources'] = true; + $params['return_ssl_resources'] = true; } } - protected function _convertToCsv() + protected function _convertToCsv(&$params) { - foreach ($this->_params as $key => &$val) { + foreach ($params as $key => &$val) { if (is_array($val)) { $val = implode(',', $val); } diff --git a/framework/Service_Facebook/lib/Horde/Service/Facebook/UploadRequest.php b/framework/Service_Facebook/lib/Horde/Service/Facebook/UploadRequest.php index 087c9b645..32d9820f0 100644 --- a/framework/Service_Facebook/lib/Horde/Service/Facebook/UploadRequest.php +++ b/framework/Service_Facebook/lib/Horde/Service/Facebook/UploadRequest.php @@ -47,7 +47,7 @@ class Horde_Service_Facebook_UploadRequest extends Horde_Service_Facebook_Reques $delimiter = '--' . $boundary; $close_delimiter = $delimiter . '--'; $content_lines = array(); - $this->_finalizeParams(); + $this->_finalizeParams($this->_method, $this->_params); foreach ($this->_params as $key => &$val) { $content_lines[] = $delimiter; $content_lines[] = 'Content-Disposition: form-data; name="' . $key . '"';