예제 #1
0
파일: Sms.php 프로젝트: stopsopa/utils
 protected function _setupMultiple(&$post)
 {
     preg_match_all('#\\[%(\\d+)%\\]#', $post['message'], $m);
     if (count($m[0])) {
         $max = 0;
         foreach ($m[1] as $k) {
             ++$max;
             if ($max > 4) {
                 $this->_throw('Dozwolone są tylko 4 argumenty');
             }
             if ($k != $max) {
                 $this->_throw('Utrzymuj kolejność parametrach, zaczynając od 1, obecna kolejność to: ' . print_r($m[1], true));
             }
         }
         $params = [];
         $i = 0;
         foreach ($m[1] as $k) {
             $k = "param{$k}";
             $params[$k] = $i++;
         }
         if (count($params)) {
             // są parametry
             $pcount = count($this->phones);
             $scount = count($params);
             foreach ($params as $p => &$ii) {
                 $tt = [];
                 $i = 0;
                 foreach ($this->params as &$par) {
                     $pc = count($par);
                     if ($pc != $scount) {
                         $this->_throw("Liczba parametrów ({$pc}) w zestawie nr '{$i}' jest inna niż liczba zanczników w templatece ({$scount})");
                     }
                     if (UtilArray::isAssoc($par)) {
                         if (!isset($par[$p])) {
                             $this->_throw("Brak parametru '{$p}' w zestawie parametrów w elemencie {$i}");
                         }
                         $tt[] = $par[$p];
                     } else {
                         $tt[] = $par[$ii];
                     }
                     ++$i;
                 }
                 $c = count($tt);
                 if ($c != $pcount) {
                     $this->_throw("Liczba wartości w zestawie parametrów ({$c}) '{$p}' nie jest równa ilości odbiorców ({$pcount})");
                 }
                 $params[$p] = Urlizer::unaccent(implode('|', $tt));
             }
             $post = array_merge($post, $params);
         }
     }
 }