/**
  * Cálculo do valor e prazo do frete
  *
  * $opcoes
  * `servico`  (int)  Código do serviço, ver as defines CORREIOS_*. (Obrigatório)
  * `cepOrigem`  (string)  CEP de origem no formato XXXXX-XXX (Obrigatório)
  * `cepDestino`  (string)  CEP de destino no formato XXXXX-XXX (Obrigatório)
  * `peso`  (float)  Peso do pacote, em quilos (Obrigatório)
  * `maoPropria`  (bool)  Usar recurso de mão própria? (Obrigatório)
  * `valorDeclarado`  (float)  Valor declarado do pacote. (Obrigatório)
  * `avisoRecebimento`  (bool)  Aviso de recebimento?. (Obrigatório)
  * `formato`  (int)  Formato da encomenda (Caixa, Rolo ou envelope) veja os campos estáticos. (Obrigatório)
  * `comprimento`  (float)  Comprimento da encomenda. (Obrigatório)
  * `altura`  (float)  Altura da encomenda, caso formato seja envolope deve ser 0
  * `largura`  (float)  Largura da encomenda (Obrigatório) > 11cm
  * `diametro`  (float)  Diametro caso formato seja rolo.
  * `empresa`  (string)  O código administrativo cadastrado no ECT.
  * `senha`  (string)  A senha da empresa
  *
  * @param array $opcoes As opções para passar para API
  * @return mixed Array com os dados do frete ou integer com erro. Ver defines ERRO_CORREIOS_* para erros.
  */
 public function valorFrete($opcoes = [])
 {
     // Validação dos parâmetros
     if ($this->__erroCorreios($this->__validaOpcoes($opcoes))) {
         return $this->__validaOpcoes($opcoes);
     }
     // Ajustes nos parâmetros
     $opcoes["maoPropria"] = $opcoes["maoPropria"] ? 'S' : 'N';
     $opcoes["avisoRecebimento"] = $opcoes["avisoRecebimento"] ? 'S' : 'N';
     $query = ['op' => 'CalcPrecoPrazo', 'nCdEmpresa' => isset($opcoes["empresa"]) ? $opcoes["empresa"] : "", 'sDsSenha' => isset($opcoes["senha"]) ? $opcoes["senha"] : "", 'nCdServico' => $opcoes["servico"], 'sCepOrigem' => $opcoes["cepOrigem"], 'sCepDestino' => $opcoes["cepDestino"], 'nVlPeso' => $opcoes["peso"], 'nCdFormato' => $opcoes["formato"], 'nVlComprimento' => $opcoes["comprimento"], 'nVlAltura' => $opcoes["formato"] === CorreiosTrait::$ENCOMENDA_ENVELOPE ? 0 : $opcoes["altura"], 'nVlLargura' => $opcoes["largura"], 'nVlDiametro' => $opcoes["formato"] === CorreiosTrait::$ENCOMENDA_ROLO ? $opcoes["diametro"] : 0, 'sCdMaoPropria' => $opcoes["maoPropria"], 'nVlValorDeclarado' => $opcoes["valorDeclarado"] ? $opcoes["valorDeclarado"] : 'n', 'sCdAvisoRecebimento' => $opcoes["avisoRecebimento"] ? $opcoes["avisoRecebimento"] : 'n', 'StrRetorno' => 'xml', 'nIndicaCalculo' => 3];
     /*
      * http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=09146920&sDsSenha=123456&sCepOrigem=70002900&sCepDestino=71939360&nVlPeso=1&nCdFormato=1&nVlComprimento=30&nVlAltura=30&nVlLargura=30&sCdMaoPropria=n&nVlValorDeclarado=0&sCdAvisoRecebimento=n&nCdServico=40010&nVlDiametro=0&StrRetorno=xml&nIndicaCalculo=3
      */
     $retornoCorreios = $this->_requisitaUrl('http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx', 'get', $query);
     if (is_integer($retornoCorreios)) {
         return $retornoCorreios;
     }
     $xml = Xml::build($retornoCorreios);
     $infoCorreios = Xml::toArray($xml);
     if (!isset($infoCorreios['Servicos']['cServico'])) {
         return CorreiosTrait::$ERRO_CORREIOS_CONTEUDO_INVALIDO;
     }
     extract($infoCorreios['Servicos']['cServico']);
     /**
      * @var string $ValorMaoPropria
      * @var string $ValorValorDeclarado
      * @var string $Valor
      * @var string $EntregaDomiciliar
      * @var string $EntregaSabado
      */
     return ['valorMaoPropria' => $ValorMaoPropria, 'valorTarifaValorDeclarado' => $ValorValorDeclarado, 'valorFrete' => $Valor - $ValorValorDeclarado - $ValorMaoPropria, 'valorTotal' => $Valor, 'entregaDomiciliar' => $EntregaDomiciliar === "S" ? true : false, 'entregaSabado' => $EntregaSabado === "S" ? true : false];
 }
 /**
  * Latest Posts method.
  *
  * @return void
  */
 public function latestPosts()
 {
     $rss = file_get_contents('http://cakemanager.org/rss', false);
     if ($rss) {
         $xml = Xml::toArray(Xml::build($rss));
         $data = $xml['rss']['channel']['item'];
     }
     $this->set('posts', isset($data) ? $data : []);
 }
 private static function searchDnb($isbn)
 {
     //$scheme = 'oai_dc';
     $scheme = 'MARC21-xml';
     $options = ['operation=searchRetrieve', 'accessToken=' . Configure::read('DNB.accessToken'), 'recordSchema=' . $scheme, 'query=' . $isbn];
     $url = 'http://services.dnb.de/sru/dnb?version=1.1&' . implode($options, '&');
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     $output = curl_exec($ch);
     curl_close($ch);
     $xml = simplexml_load_string($output, 'SimpleXMLElement', LIBXML_NOCDATA);
     $xml = Xml::toArray($xml);
     if (isset($xml['searchRetrieveResponse']['numberOfRecords']) && $xml['searchRetrieveResponse']['numberOfRecords'] > 0) {
         return $xml;
     } else {
         return false;
     }
 }
 public function result()
 {
     $results = Xml::toArray(Xml::build('test.xml'));
     $this->set('results', $results);
 }
 /**
  * Helper method to parse xml input data, due to lack of anonymous functions
  * this lives here.
  *
  * @param string $xml XML string.
  * @return array Xml array data
  */
 public function convertXml($xml)
 {
     try {
         $xml = Xml::build($xml);
         if (isset($xml->data)) {
             return Xml::toArray($xml->data);
         }
         return Xml::toArray($xml);
     } catch (XmlException $e) {
         return [];
     }
 }
Exemple #6
0
 /**
  * testToArrayFail method
  *
  * @dataProvider invalidToArrayDataProvider
  * @expectedException \Cake\Utility\Exception\XmlException
  * @return void
  */
 public function testToArrayFail($value)
 {
     Xml::toArray($value);
 }
 /**
  * CurrencyLib::_loadXml()
  *
  * @param string $url
  * @return array
  */
 protected function _loadXml($url)
 {
     $CurrencyXml = Xml::build($url);
     return Xml::toArray($CurrencyXml);
 }
 public function sources()
 {
     $this->viewBuilder()->layout('ajax');
     $xml = Xml::toArray(Xml::build(__DIR__ . '/../Resources/feeds.xml'));
     $this->set('data', $xml);
 }