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); } } }