列印繳款單(統一超商C2C).

@param array $params
@return array
338141
public function createPrintUnimartC2CBillTransaction(array $params)
    {
        // 參數初始化
        $this->sdk->Send = array_merge($this->sdk->Send, [
            'AllPayLogisticsID' => '',
            'CVSPaymentNo' => '',
            'CVSValidationNo' => '',
            'PlatformID' => '',
        ]);

        $this->sdk->Send = array_replace(
            $this->sdk->Send,
            array_intersect_key($params, $this->sdk->Send)
        );

        return $this->sdk->formToArray(
            $this->sdk->PrintUnimartC2CBill()
        );
    }
869190
protected function encodePayload(array $params)
  {
    $encoded = [];
    foreach ($params as $key => $value)
    {
      if (is_array($value))                 $encoded[$key] = $this->encodePayload($value);
      else if ($value instanceof \DateTime) $encoded[$key] = $value->format(\DateTime::ISO8601);
      else                                  $encoded[$key] = $value;
    }

    return $encoded;
  }
404051
protected function cacheKey(array $params = [])
    {
        $prefix   = config('antares/ui-components::cache');
        $required = ['resource', 'uid', 'brand_id', 'name'];
        if (count(array_only($params, $required)) != count($required)) {
            return $prefix;
        }
        $ordered = [];
        foreach ($required as $key) {
            $ordered[$key] = array_get($params, $key);
        }
        return implode('.', array_merge([config('antares/ui-components::cache')], $ordered));
    }
1165568
public function normalizeParams(array $params): array
    {
        foreach ($params as $key => $value) {
            if (false === \is_string($value) && false === \is_resource($value)) {
                $params[$key] = json_encode($value);
            }
        }

        return $params;
    }
1294939
public function transformParams(array $params): array
    {
        $newParams = [];
        foreach ($params as $key => $value) {
            $newParams['%' . $key . '%'] = $value;
        }

        return $newParams;
    }
1103719
public function prepareRequest($params = 'default')
    {
        if (is_string($params)) {
            // 载入请求模板
            $params = RequestTemplate::loadTemplate($this->getModule(), $this->getAction(), $params);
        } elseif ( ! is_array($params)) {
            $params = array();
        }

        $params['apiKey'] = isset($params['apiKey']) ? $params['apiKey'] : Config::get('API_KEY');
        $params['apiUser'] = isset($params['apiUser']) ? $params['apiUser'] : Config::get('API_USER');
        $this->data = $params;

        return $this;
    }
1267215
protected function prepareParams(array $params)
    {
        $result = $params;

        foreach ($result as $key => $val) {
            if (is_bool($val)) {
                $result[$key] = $val ? 1 : 0;
            }
        }

        return $result;
    }
1027338
protected function generateMd5Sign($params = [])
    {
        static::sortParams($params);  // 排序

        $arr = [];
        foreach ($params as $k => $v) {
            $arr[] = $k . $v;
        }
        
        $str = $this->app->app_secret . implode('', $arr) . $this->app->app_secret;

        return strtoupper(md5($str));
    }
89122
public function serializeParams($params) {
		$serialized = '';
		foreach ($params as $key => $val) {
			$serialized .= $key;
			if (is_bool($val) === true) {
				$serialized .= '=' . $val ? $this->options['param-true'] : $this->options['param-false'];
			} else if ($val != '') {
				$serialized .= '=' . $val;
			}
			$serialized .= $this->options['param-delimiter'];
		}
		return $serialized;
	}
244973
public function query(array $params = []) {
        $this->params = array_merge($this->params, $params);
        return $this->db->query($this->sql, $this->params);
    }
817743
public function getArrayGoogleMapConfigCoordonneesFromCenter($params = array())
    {
        $listeCoords = array();
        if (!isset($params['arrayIdAdresses']) && !isset($params['arrayIdEvenementsGroupeAdresse'])) {
            $latitude = $params['latitude'];
            $longitude = $params['longitude'];
            $rayon = $params['rayon'];

            $reqListeCoords = "

                        select * from (
                        SELECT ((acos(sin($latitude*PI()/180) * sin(ha1.latitude*PI()/180) + cos($latitude*PI()/180) * cos(ha1.latitude*PI()/180) * cos(($longitude - ha1.longitude)*PI()/180))/ pi() * 180.0)* 60 * 1.1515 * 1.609344) as distanceFromPoint,ha1.longitude as longitude,ha1.latitude as latitude,ha1.idAdresse as idAdresse
                        FROM historiqueAdresse ha1,historiqueAdresse ha2
                        WHERE ha1.latitude<>''
                        AND ha1.longitude<>''
                        AND ha2.idAdresse = ha1.idAdresse

                        GROUP BY ha1.idAdresse,ha1.idHistoriqueAdresse
                        HAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)

                        ) as tmp
                        WHERE tmp.distanceFromPoint*1000<$rayon
                ";

            $resListeCoords = $this->connexionBdd->requete($reqListeCoords);
            $nbListeCoords = mysql_num_rows($resListeCoords);

            $fetchListeCoordsArray = array();
            $arrayIdAdresses = array();
            while ($fetchListeCoordsAdresses = mysql_fetch_assoc($resListeCoords)) {
                $fetchListeCoordsArray[] = $fetchListeCoordsAdresses;
                $arrayIdAdresses[] = $fetchListeCoordsAdresses['idAdresse'];
            }

            $sqlCritere = "";
            if (count($arrayIdAdresses)>0) {
                $sqlCritere = " AND ae.idAdresse NOT IN (".implode(",", $arrayIdAdresses).") ";
            }

            // on fait la requete pour une recherche sur la table _adresseEvenement
            $reqListeCoordsGA = "

            select * from (
                        SELECT ((acos(sin($latitude*PI()/180) * sin(ae.latitudeGroupeAdresse*PI()/180) + cos($latitude*PI()/180) * cos(ae.latitudeGroupeAdresse*PI()/180) * cos(($longitude - ae.longitudeGroupeAdresse)*PI()/180))/ pi() * 180.0)* 60 * 1.1515 * 1.609344) as distanceFromPoint,ae.longitudeGroupeAdresse as longitude,ae.latitudeGroupeAdresse as latitude,ae.idAdresse as idAdresse,ae.idEvenement as idEvenementGroupeAdresse
                        FROM _adresseEvenement ae
                        WHERE

                            ae.latitudeGroupeAdresse<>''
                            AND
                            ae.longitudeGroupeAdresse<>''
                            AND
                            ae.latitudeGroupeAdresse<>'0'
                            AND
                            ae.longitudeGroupeAdresse<>'0'
                         $sqlCritere
                                                ) as tmp
                        WHERE tmp.distanceFromPoint*1000<$rayon

            ";


            $resListeCoordsGA = $this->connexionBdd->requete($reqListeCoordsGA);
            $nbListeCoords+=mysql_num_rows($resListeCoordsGA);
            while ($fetchListeCoordsAdressesGA = mysql_fetch_assoc($resListeCoordsGA)) {
                $fetchListeCoordsArray[] = $fetchListeCoordsAdressesGA;
            }
        }
        $i=0;
        $indiceArrayId = 0;
        $ok = true;
        while ($ok) {
            if (!isset($params['arrayIdAdresses']) && !isset($params['arrayIdEvenementsGroupeAdresse'])) {
                //$fetchListeCoords = mysql_fetch_assoc($resListeCoords);
                if (!isset($fetchListeCoordsArray[$indiceArrayId])) {
                    break;
                }
                $fetchListeCoords = $fetchListeCoordsArray[$indiceArrayId];
                if ($indiceArrayId>=$nbListeCoords-1) {
                    $ok = false;
                }
            } elseif (isset($params['arrayIdAdresses'])) {
                if (!isset($params['arrayIdAdresses'][$indiceArrayId])) {
                    break;
                }
                $fetchListeCoords = $params['arrayIdAdresses'][$indiceArrayId];
            } elseif (isset($params['arrayIdEvenementsGroupeAdresse'])) {
                if (!isset($params['arrayIdEvenementsGroupeAdresse'][$indiceArrayId])) {
                    break;
                }

                $fetchListeCoords = $params['arrayIdEvenementsGroupeAdresse'][$indiceArrayId];
            }

            // on verifie si un groupe d'adresse est bien rattaché a l'adresse , car on conserve les adresses , mais on ne les affiches pas quand elles ne sont pas reliées a un groupe d'adresse
            // si c'est un tableau de groupes d'adresses qui est transmis , dans ce cas on verifie bien qu'il existe , dans ce cas , cette requete est utilie pour recuperer un idAdresse du groupe d'adresse

            if (isset($fetchListeCoords['idEvenementGroupeAdresse'])) {
                $reqVerifGA = "SELECT idEvenement,idAdresse, longitudeGroupeAdresse,latitudeGroupeAdresse FROM _adresseEvenement WHERE idEvenement='".$fetchListeCoords['idEvenementGroupeAdresse']."'";
            } elseif (isset($fetchListeCoords['idAdresse'])) {
                $reqVerifGA = "SELECT idEvenement, longitudeGroupeAdresse,latitudeGroupeAdresse FROM _adresseEvenement WHERE idAdresse='".$fetchListeCoords['idAdresse']."'";
            } else {
                $reqVerifGA = "SELECT 0 FROM _adresseEvenement WHERE 0=1"; // debug laurent dans le cas ou il n'y a aucun point ... cette fonction a trop ete adaptée deja, a refaire si nouvelle grande adaptation requise
            }


            $resVerifGA = $this->connexionBdd->requete($reqVerifGA);

            if (mysql_num_rows($resVerifGA)==1 || isset($fetchListeCoords['idEvenementGroupeAdresse'])) { // dans le cas ou on a passé un tableau de groupe d'adresses en parametre de la fonction, vu que l'on traite le groupe d'adresse, on force le passage ici , les autres conditions traitent des idAdresses et celle ci fait ce qu'il faut
                $fetchGA = mysql_fetch_assoc($resVerifGA);

                //$fetchGA['idEvenement'],'idEvenementGroupeAdresse'
                if (isset($fetchListeCoords['idEvenementGroupeAdresse'])) {
                    $infosAdresses = $this->getIntituleAdresseFrom($fetchListeCoords['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('noQuartier'=>true,'noSousQuartier'=>true,'styleCSSTitreAdresse'=>'font-weight:bold;font-size:9px;','displayFirstTitreAdresse'=>true,'setSeparatorAfterTitle'=>'<br>'));
                } else {
                    $infosAdresses = $this->getIntituleAdresseFrom($fetchListeCoords['idAdresse'], 'idAdresse', array('noQuartier'=>true,'noSousQuartier'=>true,'styleCSSTitreAdresse'=>'font-weight:bold;font-size:9px;','displayFirstTitreAdresse'=>true,'setSeparatorAfterTitle'=>'<br>'));
                }

                // un seul groupe d'adresse , on fais une redirection vers la page du detail de l'adresse
                $listeCoords[$i]['longitude'] = $fetchListeCoords['longitude'];
                $listeCoords[$i]['latitude'] = $fetchListeCoords['latitude'];
                $listeCoords[$i]['libelle'] = '';
                $listeCoords[$i]['label'] = $infosAdresses;

                if (isset($fetchListeCoords['idAdresse'])) {
                    $listeCoords[$i]['idAdresse'] = $fetchListeCoords['idAdresse'];
                } else {
                    $listeCoords[$i]['idAdresse'] = $fetchGA['idAdresse']; // dans le cas ou on passe un tableau de groupes d'adresses a la fonction
                }
                if (isset($params['urlIcon']) && $params['urlIcon']!='') {
                    $listeCoords[$i]['urlIcon'] = $params['urlIcon'];
                }

                if (isset($params['dimIconX']) && $params['dimIconX']!='') {
                    $listeCoords[$i]['dimIconX'] = $params['dimIconX'];
                }

                if (isset($params['dimIconY']) && $params['dimIconY']!='') {
                    $listeCoords[$i]['dimIconY'] = $params['dimIconY'];
                }


                //$listeCoords[$i]['idEvenementGroupeAdresse'] = $fetchGA['idEvenement'];
                if (isset($params['urlRedirectedToParent']) && $params['urlRedirectedToParent']==true) { // si on appel d'une iframe dans une iframe
                    $listeCoords[$i]['jsCodeOnClickMarker'] = "parent.parent.document.location.href='".$this->creerUrl('', 'adresseDetail', array('archiIdAdresse'=>$fetchListeCoords['idAdresse'], "archiIdEvenementGroupeAdresse"=>$fetchGA['idEvenement']), false, false)."';";
                } else {
                    if (isset($fetchListeCoords['idAdresse'])) {
                        $listeCoords[$i]['jsCodeOnClickMarker'] = "parent.document.location.href='".$this->creerUrl('', 'adresseDetail', array('archiIdAdresse'=>$fetchListeCoords['idAdresse'], "archiIdEvenementGroupeAdresse"=>$fetchGA['idEvenement']), false, false)."';";
                    } else {
                        // cas ou l'on a transmis un tableau de groupes d'adresses a la fonction, dans ce cas l'idAdresse est recuperé par la requete qui verifie le nombre de groupe d'adresses
                        $listeCoords[$i]['jsCodeOnClickMarker'] = "parent.document.location.href='".$this->creerUrl('', '', array('archiAffichage'=>'adresseDetail','archiIdEvenementGroupeAdresse'=>$fetchGA['idEvenement'],'archiIdAdresse'=>$fetchGA['idAdresse']), false, false)."';";
                    }
                }
                $listeCoords[$i]['jsCodeOnMouseOverMarker'] = "currentLabel.show();";//"currentMarker.openInfoWindowHtml(\"<table width=150><tr><td><span style='font-size:9px;'>$infosAdresses<br><a  href='#' onclick=\\\"parent.document.location.href='".$this->creerUrl('','adresseDetail',array('archiIdAdresse'=>$fetchListeCoords['idAdresse']))."'\\\">Afficher</a></span></td></tr></table>\");";
                $listeCoords[$i]['jsCodeOnMouseOutMarker'] = "currentLabel.hide();";//setTimeout('currentMarker.closeInfoWindow()',1000);
                $i++;
            } elseif (mysql_num_rows($resVerifGA)>1) {
             // plusieurs groupes d'adresses sur la meme adresse , en principe ce cas n'est pas possible si l'on a passé des groupes d'adresses en parametre
                $infosAdresses = "";
                $j=0;
                $infosAdressesTitres = "";
                $infosAdressesTitresGroupeAdresse = "";
                while ($fetchGA = mysql_fetch_assoc($resVerifGA)) {
                    if ($fetchGA['longitudeGroupeAdresse']!='0' && $fetchGA['latitudeGroupeAdresse']!='0') {
                        // des coordonnees spécifiques pour le groupe d'adresse on été spécifiée
                        // s'il y a plusieurs groupes d'adresses il faut proposer a l'utilisateur de choisir entre eux par le formulaire de recherche
                        $infosAdresses =$this->getIntituleAdresseFrom($fetchGA['idEvenement'], 'idEvenementGroupeAdresse', array('noQuartier'=>true,'noSousQuartier'=>true,'styleCSSTitreAdresse'=>'font-weight:bold;font-size:9px;','setSeparatorAfterTitle'=>'<br>'))."<br>";

                        $titre = $this->getIntituleAdresseFrom($fetchGA['idEvenement'], 'idEvenementGroupeAdresse', array('noQuartier'=>true,'noSousQuartier'=>true,'styleCSSTitreAdresse'=>'font-weight:bold;font-size:9px;','afficheTitreSiTitreSinonRien'=>true,'setSeparatorAfterTitle'=>' '));
                        $infosAdressesTitresGroupeAdresse="";
                        if (trim($titre)!='') {
                            $infosAdressesTitresGroupeAdresse="<span style='font-weight:bold;font-size:9px;'>".$titre."</span><br>";
                        }
                        $listeCoords[$i]['longitude'] = $fetchGA['longitudeGroupeAdresse'];
                        $listeCoords[$i]['latitude'] = $fetchGA['latitudeGroupeAdresse'];
                        $listeCoords[$i]['libelle'] = '';
                        $listeCoords[$i]['label'] = $infosAdressesTitresGroupeAdresse.$infosAdresses;
                        $listeCoords[$i]['idAdresse'] = $fetchListeCoords['idAdresse'];
                        if (isset($params['urlIcon']) && $params['urlIcon']!='') {
                            $listeCoords[$i]['urlIcon'] = $params['urlIcon'];
                        }
                        //$listeCoords[$i]['idEvenementGroupeAdresse'] = $fetchGA['idEvenement'];
                        if (isset($params['urlRedirectedToParent']) && $params['urlRedirectedToParent']==true) { // si on appel d'une iframe dans une iframe
                            $listeCoords[$i]['jsCodeOnClickMarker'] = "parent.parent.document.location.href='".$this->creerUrl('', 'adresseDetail', array('archiIdEvenementGroupeAdresse'=>$fetchGA['idEvenement'],'archiIdAdresse'=>$fetchListeCoords['idAdresse']), false, false)."';";
                        } else {
                            $listeCoords[$i]['jsCodeOnClickMarker'] = "parent.document.location.href='".$this->creerUrl('', 'adresseDetail', array('archiIdEvenementGroupeAdresse'=>$fetchGA['idEvenement'],'archiIdAdresse'=>$fetchListeCoords['idAdresse']), false, false)."';";
                        }
                            $listeCoords[$i]['jsCodeOnMouseOverMarker'] = "currentLabel.show();";//"currentMarker.openInfoWindowHtml(\"<table width=150><tr><td><span style='font-size:9px;width:200px;'>$infosAdresses<br><a href='#' onclick=\\\"parent.document.location.href='".$this->creerUrl('','adresseDetail',array('archiIdAdresse'=>$fetchListeCoords['idAdresse']))."'\\\">Afficher</a></span></td></tr></table>\");";
                            $listeCoords[$i]['jsCodeOnMouseOutMarker'] = "currentLabel.hide();";//w = window.open(); for(i in currentMarker){w.document.writeln(i+' '+currentMarker[i]+'<br>')}  // setTimeout('currentMarker.closeInfoWindow()',1000);
                            $listeCoords[$i]['jsCodeMarker'] = "";
                            $i++;
                    } else {
                        if ($j==0) {
                            $infosAdresses =$this->getIntituleAdresseFrom($fetchGA['idEvenement'], 'idEvenementGroupeAdresse', array('noQuartier'=>true,'noSousQuartier'=>true,'styleCSSTitreAdresse'=>'font-weight:bold;font-size:9px;','setSeparatorAfterTitle'=>'<br>'))."<br>";
                        }
                        $titre = $this->getIntituleAdresseFrom($fetchGA['idEvenement'], 'idEvenementGroupeAdresse', array('noQuartier'=>true,'noSousQuartier'=>true,'styleCSSTitreAdresse'=>'font-weight:bold;font-size:9px;','afficheTitreSiTitreSinonRien'=>true,'setSeparatorAfterTitle'=>' '));
                        if (trim($titre)!='') {
                            $infosAdressesTitres .="<span style='font-weight:bold;font-size:9px;'>".$titre."</span><br>";
                            if ($j==0) {
                                $infosAdresses=$infosAdresses;
                            }
                        }
                        $j++;
                    }
                }

                if ($j>0) { // s'il y a des adresses à regrouper
                    if ($j==1) { // une seule adresse
                        // finalement il n'y a qu'une seule adresse "regroupée" qui n'a pas de coordonnees specifique a groupe d'adresse (sur la meme adresse, les autres groupes d'adresses ont des coordonnees renseignées) , on ne va donc pas afficher le resultat dans la recherche, mais on va aller sur le groupe d'adresse directement
                        // recherche du groupe d'adresse
                        $reqGroupeAdresseO = "SELECT idEvenement FROM _adresseEvenement WHERE longitudeGroupeAdresse='0' AND latitudeGroupeAdresse='0' AND idAdresse='".$fetchListeCoords['idAdresse']."'";
                        $resGroupeAdresse0 = $this->connexionBdd->requete($reqGroupeAdresseO);
                        if (mysql_num_rows($resGroupeAdresse0)==1) {
                            $fetchGroupeAdresse0 = mysql_fetch_assoc($resGroupeAdresse0);

                            $listeCoords[$i]['longitude'] = $fetchListeCoords['longitude'];
                            $listeCoords[$i]['latitude'] = $fetchListeCoords['latitude'];
                            $listeCoords[$i]['libelle'] = '';
                            $listeCoords[$i]['label'] = $infosAdressesTitres.$infosAdresses;
                            $listeCoords[$i]['idAdresse'] = $fetchListeCoords['idAdresse'];
                            if (isset($params['urlIcon']) && $params['urlIcon']!='') {
                                $listeCoords[$i]['urlIcon'] = $params['urlIcon'];
                            }
                            //$listeCoords[$i]['idEvenementGroupeAdresse'] = $fetchGA['idEvenement'];
                            if (isset($params['urlRedirectedToParent']) && $params['urlRedirectedToParent']==true) { // si on appel d'une iframe dans une iframe
                                $listeCoords[$i]['jsCodeOnClickMarker'] = "parent.parent.document.location.href='".$this->creerUrl('', 'adresseDetail', array('archiIdEvenementGroupeAdresse'=>$fetchGroupeAdresse0['idEvenement'],'archiIdAdresse'=>$fetchListeCoords['idAdresse']), false, false)."';";
                            } else {
                                $listeCoords[$i]['jsCodeOnClickMarker'] = "parent.document.location.href='".$this->creerUrl('', 'adresseDetail', array('archiIdEvenementGroupeAdresse'=>$fetchGroupeAdresse0['idEvenement'],'archiIdAdresse'=>$fetchListeCoords['idAdresse']), false, false)."';";
                            }
                            $listeCoords[$i]['jsCodeOnMouseOverMarker'] = "currentLabel.show();";//"currentMarker.openInfoWindowHtml(\"<table width=150><tr><td><span style='font-size:9px;width:200px;'>$infosAdresses<br><a href='#' onclick=\\\"parent.document.location.href='".$this->creerUrl('','adresseDetail',array('archiIdAdresse'=>$fetchListeCoords['idAdresse']))."'\\\">Afficher</a></span></td></tr></table>\");";
                            $listeCoords[$i]['jsCodeOnMouseOutMarker'] = "currentLabel.hide();";//w = window.open(); for(i in currentMarker){w.document.writeln(i+' '+currentMarker[i]+'<br>')}  // setTimeout('currentMarker.closeInfoWindow()',1000);
                            $listeCoords[$i]['jsCodeMarker'] = "";
                            $i++;
                        } else {
                            echo "Erreur : il y a plusieurs groupes d'adresses sur la meme adresse : ".$fetchListeCoords['idAdresse']." merci de contacter l'administrateur.<br>";
                        }
                    } else {
                        // plusieurs adresses dont les groupes d'adresses n'ont pas de coordonnees specifiques
                        // s'il y a plusieurs groupes d'adresses il faut proposer a l'utilisateur de choisir entre eux par le formulaire de recherche
                        $listeCoords[$i]['longitude'] = $fetchListeCoords['longitude'];
                        $listeCoords[$i]['latitude'] = $fetchListeCoords['latitude'];
                        $listeCoords[$i]['libelle'] = '';
                        $listeCoords[$i]['label'] = $infosAdressesTitres.$infosAdresses;
                        $listeCoords[$i]['idAdresse'] = $fetchListeCoords['idAdresse'];
                        if (isset($params['urlIcon']) && $params['urlIcon']!='') {
                            $listeCoords[$i]['urlIcon'] = $params['urlIcon'];
                        }
                        //$listeCoords[$i]['idEvenementGroupeAdresse'] = $fetchGA['idEvenement'];
                        if (isset($params['urlRedirectedToParent']) && $params['urlRedirectedToParent']==true) { // si on appel d'une iframe dans une iframe
                            $listeCoords[$i]['jsCodeOnClickMarker'] = "parent.parent.document.location.href='".$this->creerUrl('', 'adresseListe', array('recherche_groupesAdressesFromAdresse'=>$fetchListeCoords['idAdresse'],'displayAdresseIfNoCoordonneesGroupeAdresse'=>1))."';"; // ce lien va effectuer une recherche sur l'adresse renseignée en parametre et renvoie les groupes d'adresses ou aucune coordonnees de latitude et longitude ne sont liée au couple "groupe d'adresse-adresse" dans la table _adresseEvenement
                        } else {
                            $listeCoords[$i]['jsCodeOnClickMarker'] = "parent.document.location.href='".$this->creerUrl('', 'adresseListe', array('recherche_groupesAdressesFromAdresse'=>$fetchListeCoords['idAdresse'],'displayAdresseIfNoCoordonneesGroupeAdresse'=>1))."';";// ce lien va effectuer une recherche sur l'adresse renseignée en parametre et renvoie les groupes d'adresses ou aucune coordonnees de latitude et longitude ne sont liée au couple "groupe d'adresse-adresse" dans la table _adresseEvenement
                        }
                        $listeCoords[$i]['jsCodeOnMouseOverMarker'] = "currentLabel.show();";//"currentMarker.openInfoWindowHtml(\"<table width=150><tr><td><span style='font-size:9px;width:200px;'>$infosAdresses<br><a href='#' onclick=\\\"parent.document.location.href='".$this->creerUrl('','adresseDetail',array('archiIdAdresse'=>$fetchListeCoords['idAdresse']))."'\\\">Afficher</a></span></td></tr></table>\");";
                        $listeCoords[$i]['jsCodeOnMouseOutMarker'] = "currentLabel.hide();";//w = window.open(); for(i in currentMarker){w.document.writeln(i+' '+currentMarker[i]+'<br>')}  // setTimeout('currentMarker.closeInfoWindow()',1000);
                        $listeCoords[$i]['jsCodeMarker'] = "";
                        $i++;
                    }
                }
            }
            $indiceArrayId++;
        }

        return array('arrayConfigCoordonnees'=>$listeCoords);
    }
305396
protected function prepareParams(array $params)
	{
		$prepared = [];
		
		foreach($params as $k => $v)
		{
			if(is_array($v))
			{
				foreach(array_values($v) as $i => $val)
				{
					$prepared[sprintf('%s%u', $k, $i)] = $val;
				}
			}
			else
			{
				$prepared[(string)$k] = $v;
			}
		}
		
		return $prepared;
	}
440650
private function getParams(array $params)
    {
        $result = [];
        foreach ($params as $name => $item) {
            $value = $item['value'];
            if ('collection' === $item['type']) {
                $value = $this->getParams($value);
            }

            $result[$name] = new PropertyParameter($name, $value, $item['type']);
        }

        return $result;
    }
603064
public static function fromSuccess(array $params)
    {
        $matchResult = new self();
        $matchResult->type = 'success';
        $matchResult->params = $params;
        return $matchResult;
    }
159021
private function preParseParams(array $params)
    {
        if (!array_key_exists('fields', $params) || !is_array($params['fields'])) {
            return $params;
        }

        $fields = [];
        foreach ($params['fields'] as $index => $field) {
            if (!is_numeric($index)) {
                $fields[$index] = $field;
                continue;
            }

            $modifier = 1;
            /** @noinspection SubStrUsedAsArrayAccessInspection */
            $firstChar = substr($field, 0, 1);
            if ($firstChar === '+' || $firstChar === '-') {
                $modifier = $firstChar === '+' ? 1 : 0;
                $field = substr($field, 1);
            }
            $fields[$field] = $modifier;
        }
        $params['fields'] = $fields;

        return $params;
    }
494966
public function uri(array $params = null)
    {
        $defaults = $this->_defaults;

        if (isset($params['controller']))
        {
            $params['controller'] = strtolower($params['controller']);
        }
        if (isset($params['directory']))
        {
            $params['directory'] = strtolower($params['directory']);
        }

        /**
         * 匿名函数，用于循环替换路由参数
         *
         * @param  string  $portion  URI定义部分
         * @param  boolean $required 参数是否必须的
         * @return array 返回保存参数的数组
         * @throws RouteException
         */
        $compile = function ($portion, $required) use (&$compile, $defaults, $params)
        {
            $missing = [];

            $pattern = '#(?:' . Route::REGEX_KEY . '|' . Route::REGEX_GROUP . ')#';
            $result = preg_replace_callback($pattern, function ($matches) use (&$compile, $defaults, &$missing, $params, &$required)
            {
                if ('<' === $matches[0][0])
                {
                    $param = $matches[1];

                    if (isset($params[$param]))
                    {
                        $required = ($required || ! isset($defaults[$param]) || $params[$param] !== $defaults[$param]);
                        return $params[$param];
                    }

                    // 直接返回参数默认值
                    if (isset($defaults[$param]))
                    {
                        return $defaults[$param];
                    }

                    $missing[] = $param;
                }
                else
                {
                    $result = $compile($matches[2], false);

                    if ($result[1])
                    {
                        $required = true;
                        return $result[0];
                    }
                }

                return null;
            }, $portion);

            if ($required && $missing)
            {
                throw new RouteException('Required route parameter not passed: :param', [
                    ':param' => reset($missing),
                ]);
            }

            return [
                $result,
                $required,
            ];
        };

        $result = $compile($this->_uri, true);
        Base::getLog()->debug(__METHOD__ . ' get route compile result', [
            'identify' => $this->identify,
            'result'   => $result,
        ]);
        $uri = $result ? array_shift($result) : $result;

        // 过滤URI中的重复斜杆
        $uri = preg_replace('#//+#', '/', rtrim($uri, '/'));

        // 如果是外部链接
        if ($this->isExternal())
        {
            $host = $this->_defaults['host'];
            // 使用默认协议
            if (false === strpos($host, '://'))
            {
                $host = Route::$defaultProtocol . $host;
            }
            $uri = rtrim($host, '/') . '/' . $uri;
        }

        return $uri;
    }
1170074
public function getRealParams(array $params)
    {
        foreach ($params as $k => $p) {
            if (is_array($p)) {
                $params[$k] = $p[1];
            }
        }

        return $params;
    }