serviceContainer = $serviceContainer; } /** * @param string $webservice * @param array $params * @return array */ public function getChoices($webservice, $params = array()) { $choices = array(); $results = $this->getArray($webservice, $params); foreach ($results as $row) { $choices[$row['name']] = $row['id']; } return $choices; } /** * @param string $webservice * @param array $params * @return array */ public function getArray($webservice, $params = array()) { $results = array(); if ($this->serviceContainer->hasParameter($webservice)) { $url = $this->serviceContainer->getParameter($webservice); $url .= '?filters[qb-criteria]'; foreach ($params as $param => $value) { $url .= "&filters[{$param}]=$value"; } try { $results = json_decode(file_get_contents($url), true); } catch (\Exception $ex) { } } return $results; } /** * @param string $webservice * @param array $filters * @param array $order_by * @param integer $limit * @param integer $offset * @return array */ public function getData($webservice, $filters = array(), $order_by = array(), $limit = null, $offset = null) { if ($this->serviceContainer->hasParameter($webservice)) { $url = $this->serviceContainer->getParameter($webservice) . "?"; if($filters) { $url .= http_build_query(array('filters' => $filters)); } if($order_by) { $url .= http_build_query(array('order_by' => $order_by)); } if($limit) { $url .= "&limit={$limit}"; } if($offset) { $url .= "&offset={$offset}"; } $data = array(); try { $data = json_decode(file_get_contents($url), true); } catch (\Exception $ex) { } //$data['url'] = $url; return $data; } return array(); } /** * @param string $webservice * @param array $filters * @param array $order_by * @param integer $limit * @param integer $offset * @return array */ public function putData($webservice, $id, $data) { if ($this->serviceContainer->hasParameter($webservice)) { $url = str_replace(".json", "/{$id}", $this->serviceContainer->getParameter($webservice)); $data_string = json_encode($data); $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: '.strlen($data_string))); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); try { $return = curl_exec($ch); } catch (\Exception $ex) { return array("error"=>"Connection Error."); } if($return) { return json_decode($return, true); } else { return array("error"=>"Transaction Error."); } } return array("error"=>"Webservice({$webservice}) not found."); } }