From 4751cc82f3c983cd83f382a9246c431df0527246 Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Wed, 12 Feb 2014 11:27:42 +0600 Subject: [PATCH 01/11] =?UTF-8?q?*=20The=20=E2=80=9CddTools::sort2dArray?= =?UTF-8?q?=E2=80=9D=20method=20is=20used=20for=20sorting=20instead=20of?= =?UTF-8?q?=20the=20local=20function.=20*=20Be=20advised!=20The=20snippet?= =?UTF-8?q?=20is=20now=20using=20the=20modx.ddTools=200.11=20library!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ddGetMultipleField.php | 69 +++--------------------------------------- 1 file changed, 5 insertions(+), 64 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index a6ef9f1..50f03cb 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -6,7 +6,7 @@ * A snippet for separated by delimiters data output. * The fields formed by the mm_ddMultipleFields widget values ooutput gets more convinient with the snippet. * - * @uses The library modx.ddTools 0.10. + * @uses The library modx.ddTools 0.11. * @uses The snippet ddGetDocumentField 2.4 might be used if field getting is required. * @uses The snippet ddTypograph 1.4.3 (if typographing is required). * @@ -41,6 +41,9 @@ * http://www.DivanDesign.biz */ +//Подключаем modx.ddTools +require_once $modx->config['base_path'].'assets/snippets/ddTools/modx.ddtools.class.php'; + //Если задано имя поля, которое необходимо получить if (isset($getField)){ $field = $modx->runSnippet('ddGetDocumentField', array( @@ -165,67 +168,8 @@ }else if ($sortDir == 'REVERSE'){ $res = array_reverse($res); }else{ - if(!function_exists('ddMasHoarSort')){ - /** - * ddMasHoarSort - * @version 1.1 (2013-07-11) - * - * @desc Функция сортировки многомерного массива по методу Хоара (по нескольким полям одновременно). - * - * @param $arr {array} - Исходный массив. @required - * @param $key {array} - Массив ключей. @required - * @param $direct {1; -1} - Направление сортировки. @required - * @param $i {integer} - Счётчик (внутренняя переменная для рекурсии). По умолчанию: 0. - * - * @return {array} - */ - function ddMasHoarSort($arr, $key, $direct, $i = 0){ - //В качестве эталона получаем сортируемое значение (по первому условию сортировки) первого элемента - $tek = $arr[0][$key[$i]]; - $tekIsNumeric = is_numeric($tek); - - $masLeft = array(); - $masRight = array(); - $masCent = array(); - - //Перебираем массив - foreach ($arr as $val){ - //Если эталон и текущее значение — числа - if ($tekIsNumeric && is_numeric($val[$key[$i]])){ - //Получаем нужную циферку - $cmpRes = ($val[$key[$i]] == $tek) ? 0 : (($val[$key[$i]] > $tek) ? 1 : -1); - //Если они строки - }else{ - //Сравниваем текущее значение со значением эталонного - $cmpRes = strcmp($val[$key[$i]], $tek); - } - - //Если меньше эталона, отбрасываем в массив меньших - if ($cmpRes * $direct < 0){ - $masLeft[] = $val; - //Если больше - в массив больших - }else if ($cmpRes * $direct > 0){ - $masRight[] = $val; - //Если раво - в центральный - }else{ - $masCent[] = $val; - } - } - - //Массивы меньших и массивы больших прогоняем по тому же алгоритму (если в них что-то есть) - $masLeft = (count($masLeft) > 1) ? ddMasHoarSort($masLeft, $key, $direct, $i) : $masLeft; - $masRight = (count($masRight) > 1) ? ddMasHoarSort($masRight, $key, $direct, $i) : $masRight; - //Массив одинаковых прогоняем по следующему условию сортировки (если есть условие и есть что сортировать) - $masCent = ((count($masCent) > 1) && $key[$i + 1]) ? ddMasHoarSort($masCent, $key, $direct, $i + 1) : $masCent; - - //Склеиваем отсортированные меньшие, средние и большие - return array_merge($masLeft, $masCent, $masRight); - } - } - //Сортируем результаты - $sortDir = ($sortDir == 'ASC') ? 1 : -1; - $res = ddMasHoarSort($res, explode(',', $sortBy), $sortDir); + $res = ddTools::sort2dArray($res, explode(',', $sortBy), ($sortDir == 'ASC') ? 1 : -1); } } @@ -335,9 +279,6 @@ function ddMasHoarSort($arr, $key, $direct, $i = 0){ //Если оборачивающий шаблон задан (и вывод не в массив), парсим его if (isset($tplWrap)){ - //Подключаем modx.ddTools - require_once $modx->config['base_path'].'assets/snippets/ddTools/modx.ddtools.class.php'; - $resTemp = array(); //Элемент массива 'wrapper' должен находиться самым первым, иначе дополнительные переданные плэйсхолдеры в тексте не найдутся! From 9a3ed569f0497124ab442a8a2cafeee4adcc0269 Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Wed, 12 Feb 2014 16:20:45 +0600 Subject: [PATCH 02/11] =?UTF-8?q?*=20The=20=E2=80=9CddTools::getTemplateVa?= =?UTF-8?q?rOutput=E2=80=9D=20method=20is=20used=20for=20getting=20field?= =?UTF-8?q?=20value=20instead=20of=20the=20=E2=80=9CddGetDocumentField?= =?UTF-8?q?=E2=80=9D=20snippet.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ddGetMultipleField.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index 50f03cb..a37931e 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -7,7 +7,6 @@ * The fields formed by the mm_ddMultipleFields widget values ooutput gets more convinient with the snippet. * * @uses The library modx.ddTools 0.11. - * @uses The snippet ddGetDocumentField 2.4 might be used if field getting is required. * @uses The snippet ddTypograph 1.4.3 (if typographing is required). * * @param $field {separated string} - String contains values with delimeters. @required @@ -46,10 +45,8 @@ //Если задано имя поля, которое необходимо получить if (isset($getField)){ - $field = $modx->runSnippet('ddGetDocumentField', array( - 'id' => $getId, - 'field' => $getField - )); + $field = ddTools::getTemplateVarOutput(array($getField), $getId); + $field = $field[$getField]; } //Если задано значение поля From aa54ec875729e40969d095304ce47bf21f4b12b4 Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Tue, 25 Feb 2014 18:04:35 +0600 Subject: [PATCH 03/11] =?UTF-8?q?*=20Correction=20is=20no=20longer=20perfo?= =?UTF-8?q?rmed=20to=20the=20final=20result=20but=20to=20values=20individu?= =?UTF-8?q?ally.=20*=20=E2=80=9C$typographing=E2=80=9D=20now=20takes=20a?= =?UTF-8?q?=20comma-separated=20list=20of=20column=20indexes=20specifying?= =?UTF-8?q?=20the=20columns=20to=20correct.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ddGetMultipleField.php | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index a37931e..ba7dad6 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -24,7 +24,7 @@ * @param $glueX {string} - Output data columns delimiter. Default: ''. * @param $removeEmptyRows {0; 1} - Rmoving empty rows status. Default: 1. * @param $removeEmptyCols {0; 1} - Rmoving empty columns status. Default: 1. - * @param $typographing {0; 1} - Typographing status. Default: 0. + * @param $typographing {comma separated string} - The comma separated indexes of the columns which values have to be corrected (indexes start at 0). If unset, there will be no correction. Default: —. * @param $urlencode {0; 1} - URL encoding status. Default: 0. * @param $format {'JSON'; 'array'; 'html'} - Format being returned. Default: 'html'. * @param $tplY {string: chunkName} - Row output template (the format parameter must be empty). Available placeholders: [+row_number+] (returns row number starting from 1), [+total+] (the number of all rows), [+resultTotal+] (the number of outputted rows), [+val0+],[+val1+],…. Default: ''. @@ -97,7 +97,6 @@ $glueX = isset($glueX) ? $glueX : ''; $removeEmptyRows = (isset($removeEmptyRows) && $removeEmptyRows == '0') ? false : true; $removeEmptyCols = (isset($removeEmptyCols) && $removeEmptyCols == '0') ? false : true; - $typographing = (isset($typographing) && $typographing == '1') ? true : false; $urlencode = (isset($urlencode) && $urlencode == '1') ? true : false; $format = isset($format) ? strtolower($format) : 'html'; $tplX = isset($tplX) ? explode(',', $tplX) : false; @@ -188,6 +187,22 @@ $modx->setPlaceholder($totalPlaceholder, $resultTotal); } + //Если нужно типографировать + if (isset($typographing)){ + $typographing = explode(',', $typographing); + + //Придётся ещё раз перебрать результат + foreach ($res as $key => $val){ + //Перебираем колонки, заданные для типографирования + foreach ($typographing as $v){ + //Если такая колонка существует, типографируем + if (isset($res[$key][$v])){ + $res[$key][$v] = $modx->runSnippet('ddTypograph', array('text' => $res[$key][$v])); + } + } + } + } + //Если вывод в массив if ($format == 'array'){ $result = $res; @@ -299,10 +314,6 @@ $result = $modx->parseChunk($tplWrap, $resTemp, '[+','+]'); } - //Если нужно типографировать - if ($typographing){ - $result = $modx->runSnippet('ddTypograph', array('text' => $result)); - } //Если нужно URL-кодировать строку if ($urlencode){ $result = rawurlencode($result); From f13dabe3497ed78c8381a54b5031b6e27ba00a75 Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Wed, 26 Feb 2014 14:51:30 +0600 Subject: [PATCH 04/11] =?UTF-8?q?*=20The=20parameter=20=E2=80=9C$resultToP?= =?UTF-8?q?laceholder=E2=80=9D=20now=20takes=20a=20placeholder=20name=20in?= =?UTF-8?q?stead=20of=20a=20boolean=20value.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ddGetMultipleField.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index ba7dad6..d0d1627 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -32,7 +32,7 @@ * @param $tplWrap {string: chunkName} - Wrapper template. Available placeholders: [+wrapper+], [+total+] (the number of all rows), [+resultTotal+] (the number of outputted rows). Default: ''. * @param $placeholders {separated string} - Additional data which has to be transferred (available only in tplWrap!). Format: string separated by '::' betweeb key-value pair and '||' between pairs. Default: ''. * @param $totalPlaceholder {string} - The name of an external placeholder to output the total number of rows into. The total number does not return if the parameter is empty. Default: ''. - * @param $resultToPlaceholder {0; 1} - Add the obtained result to the placeholder 'ddGetMultipleField' instead of return. Default: 0. + * @param $resultToPlaceholder {string} - The name of the global MODX placeholder that holds the snippet result. The result will be returned in a regular manner if the parameter is empty. Default: ''. * * @link http://code.divandesign.biz/modx/ddgetmultiplefield/2.18 * @@ -100,7 +100,6 @@ $urlencode = (isset($urlencode) && $urlencode == '1') ? true : false; $format = isset($format) ? strtolower($format) : 'html'; $tplX = isset($tplX) ? explode(',', $tplX) : false; - $resultToPlaceholder = (isset($resultToPlaceholder) && $resultToPlaceholder == '1') ? true : false; //Разбиваем на строки $res = $splYisRegexp ? preg_split($splY, $field) : explode($splY, $field); @@ -322,8 +321,8 @@ } //Если надо, выводим в плэйсхолдер - if ($resultToPlaceholder){ - $modx->setPlaceholder('ddGetMultipleField', $result); + if (isset($resultToPlaceholder)){ + $modx->setPlaceholder($resultToPlaceholder, $result); }else{ return $result; } From 1123fe0fe87c0b5b085a488e9f2dc8b5f5fb3151 Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Thu, 27 Feb 2014 10:10:19 +0600 Subject: [PATCH 05/11] =?UTF-8?q?*=20The=20following=20parameters=20have?= =?UTF-8?q?=20been=20renamed,=20also=20their=20description=20and=20order?= =?UTF-8?q?=20were=20changed:=20=09*=20=E2=80=9C$field=E2=80=9D=20=D0=B2?= =?UTF-8?q?=20=E2=80=9C$string=E2=80=9D.=20=09*=20=E2=80=9C$getField?= =?UTF-8?q?=E2=80=9D=20=D0=B2=20=E2=80=9C$docField=E2=80=9D.=20=09*=20?= =?UTF-8?q?=E2=80=9C$getId=E2=80=9D=20=D0=B2=20=E2=80=9C$docId=E2=80=9D.?= =?UTF-8?q?=20=09*=20=E2=80=9C$splY=E2=80=9D=20=D0=B2=20=E2=80=9C$rowDelim?= =?UTF-8?q?iter=E2=80=9D.=20=09*=20=E2=80=9C$splX=E2=80=9D=20=D0=B2=20?= =?UTF-8?q?=E2=80=9C$colDelimiter=E2=80=9D.=20=09*=20=E2=80=9C$num?= =?UTF-8?q?=E2=80=9D=20=D0=B2=20=E2=80=9C$startRow=E2=80=9D.=20=09*=20?= =?UTF-8?q?=E2=80=9C$count=E2=80=9D=20=D0=B2=20=E2=80=9C$totalRows?= =?UTF-8?q?=E2=80=9D.=20=09*=20=E2=80=9C$colNum=E2=80=9D=20=D0=B2=20?= =?UTF-8?q?=E2=80=9C$columns=E2=80=9D.=20=09*=20=E2=80=9C$vals=E2=80=9D=20?= =?UTF-8?q?=D0=B2=20=E2=80=9C$filter=E2=80=9D.=20=09*=20=E2=80=9C$typograp?= =?UTF-8?q?hing=E2=80=9D=20=D0=B2=20=E2=80=9C$typography=E2=80=9D.=20=09*?= =?UTF-8?q?=20=E2=80=9C$format=E2=80=9D=20=D0=B2=20=E2=80=9C$outputFormat?= =?UTF-8?q?=E2=80=9D.=20=09*=20=E2=80=9C$glueY=E2=80=9D=20=D0=B2=20?= =?UTF-8?q?=E2=80=9C$rowGlue=E2=80=9D.=20=09*=20=E2=80=9C$glueX=E2=80=9D?= =?UTF-8?q?=20=D0=B2=20=E2=80=9C$colGlue=E2=80=9D.=20=09*=20=E2=80=9C$tplY?= =?UTF-8?q?=E2=80=9D=20=D0=B2=20=E2=80=9C$rowTpl=E2=80=9D.=20=09*=20?= =?UTF-8?q?=E2=80=9C$tplX=E2=80=9D=20=D0=B2=20=E2=80=9C$colTpl=E2=80=9D.?= =?UTF-8?q?=20=09*=20=E2=80=9C$tplWrap=E2=80=9D=20=D0=B2=20=E2=80=9C$outer?= =?UTF-8?q?Tpl=E2=80=9D.=20=09*=20=E2=80=9C$totalPlaceholder=E2=80=9D=20?= =?UTF-8?q?=D0=B2=20=E2=80=9C$totalRowsToPlaceholder=E2=80=9D.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ddGetMultipleField.php | 170 ++++++++++++++++++++--------------------- 1 file changed, 85 insertions(+), 85 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index d0d1627..c43a026 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -1,5 +1,5 @@ config['base_path'].'assets/snippets/ddTools/modx.ddtools.class.php'; //Если задано имя поля, которое необходимо получить -if (isset($getField)){ - $field = ddTools::getTemplateVarOutput(array($getField), $getId); - $field = $field[$getField]; +if (isset($docField)){ + $string = ddTools::getTemplateVarOutput(array($docField), $docId); + $string = $string[$docField]; } //Если задано значение поля -if (isset($field) && $field != ""){ - $splY = isset($splY) ? $splY : '||'; - $splX = isset($splX) ? $splX : '::'; +if (isset($string) && $string != ""){ + $rowDelimiter = isset($rowDelimiter) ? $rowDelimiter : '||'; + $colDelimiter = isset($colDelimiter) ? $colDelimiter : '::'; //Являются ли разделители регулярками - $splYisRegexp = (filter_var($splY, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/^\/.*\/[a-z]*$/'))) !== false) ? true : false; - $splXisRegexp = (filter_var($splX, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/^\/.*\/[a-z]*$/'))) !== false) ? true : false; - $num = (!isset($num) || !is_numeric($num)) ? '0' : $num; + $splYisRegexp = (filter_var($rowDelimiter, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/^\/.*\/[a-z]*$/'))) !== false) ? true : false; + $splXisRegexp = (filter_var($colDelimiter, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/^\/.*\/[a-z]*$/'))) !== false) ? true : false; + $startRow = (!isset($startRow) || !is_numeric($startRow)) ? '0' : $startRow; //Если заданы условия фильтрации - if (!empty($vals)){ + if (!empty($filter)){ //Разбиваем по условиям - $temp = explode('||', $vals); + $temp = explode('||', $filter); - $vals = array(); + $filter = array(); foreach ($temp as $val){ //Разбиваем по колонке/значению @@ -76,45 +76,45 @@ } //Если ни одно правило для этой колонки ещй не задано - if (!isset($vals[$val[0]])){ - $vals[$val[0]] = array(); + if (!isset($filter[$val[0]])){ + $filter[$val[0]] = array(); } //Добавляем правило для соответствующей колонки - $vals[$val[0]][] = $val[1]; + $filter[$val[0]][] = $val[1]; } }else{ - $vals = false; + $filter = false; } - $count = (!isset($count) || !is_numeric($count)) ? 'all' : $count; - $colNum = isset($colNum) ? explode(',', $colNum) : 'all'; + $totalRows = (!isset($totalRows) || !is_numeric($totalRows)) ? 'all' : $totalRows; + $columns = isset($columns) ? explode(',', $columns) : 'all'; //Хитро-мудро для array_intersect_key - if (is_array($colNum)) $colNum = array_combine($colNum, $colNum); + if (is_array($columns)) $columns = array_combine($columns, $columns); $sortDir = isset($sortDir) ? strtoupper($sortDir) : false; $sortBy = isset($sortBy) ? $sortBy : '0'; - $glueY = isset($glueY) ? $glueY : ''; - $glueX = isset($glueX) ? $glueX : ''; + $rowGlue = isset($rowGlue) ? $rowGlue : ''; + $colGlue = isset($colGlue) ? $colGlue : ''; $removeEmptyRows = (isset($removeEmptyRows) && $removeEmptyRows == '0') ? false : true; $removeEmptyCols = (isset($removeEmptyCols) && $removeEmptyCols == '0') ? false : true; $urlencode = (isset($urlencode) && $urlencode == '1') ? true : false; - $format = isset($format) ? strtolower($format) : 'html'; - $tplX = isset($tplX) ? explode(',', $tplX) : false; + $outputFormat = isset($outputFormat) ? strtolower($outputFormat) : 'html'; + $colTpl = isset($colTpl) ? explode(',', $colTpl) : false; //Разбиваем на строки - $res = $splYisRegexp ? preg_split($splY, $field) : explode($splY, $field); + $res = $splYisRegexp ? preg_split($rowDelimiter, $string) : explode($rowDelimiter, $string); //Общее количество строк $total = count($res); //Перебираем строки, разбиваем на колонки foreach ($res as $key => $val){ - $res[$key] = $splXisRegexp ? preg_split($splX, $val) : explode($splX, $val); + $res[$key] = $splXisRegexp ? preg_split($colDelimiter, $val) : explode($colDelimiter, $val); //Если необходимо получить какие-то конкретные значения - if ($vals){ + if ($filter){ //Перебираем колонки для фильтрации - foreach ($vals as $col_k => $col_v){ + foreach ($filter as $col_k => $col_v){ //Если текущего значения в списке нет, сносим нафиг if (!in_array($res[$key][$col_k], $col_v)){ unset($res[$key]); @@ -125,9 +125,9 @@ } //Если нужно получить какую-то конкретную колонку (также проверяем на то, что строка вообще существует, т.к. она могла быть уже удалена ранее) - if ($colNum != 'all' && isset($res[$key])){ + if ($columns != 'all' && isset($res[$key])){ //Выбираем только необходимые колонки + Сбрасываем ключи массива - $res[$key] = array_values(array_intersect_key($res[$key], $colNum)); + $res[$key] = array_values(array_intersect_key($res[$key], $columns)); } //Если нужно удалять пустые строки (также проверяем на то, что строка вообще существует, т.к. она могла быть уже удалена ранее) @@ -141,13 +141,13 @@ $res = array_values($res); //Если шаблоны колонок заданы, но их не хватает - if ($tplX){ - if (($temp = count($res[0]) - count($tplX)) > 0){ + if ($colTpl){ + if (($temp = count($res[0]) - count($colTpl)) > 0){ //Дозабьём недостающие последним - $tplX = array_merge($tplX, array_fill($temp - 1, $temp, $tplX[count($tplX) - 1])); + $colTpl = array_merge($colTpl, array_fill($temp - 1, $temp, $colTpl[count($colTpl) - 1])); } - $tplX = str_replace('null', '', $tplX); + $colTpl = str_replace('null', '', $colTpl); } $result = ''; @@ -169,31 +169,31 @@ } //Обрабатываем слишком большой индекс - if (!$res[$num]) $num = count($res) - 1; + if (!$res[$startRow]) $startRow = count($res) - 1; //Если нужны все элементы - if ($count == 'all'){ - $res = array_slice($res, $num); + if ($totalRows == 'all'){ + $res = array_slice($res, $startRow); }else{ - $res = array_slice($res, $num, $count); + $res = array_slice($res, $startRow, $totalRows); } //Общее количество возвращаемых строк $resultTotal = count($res); //Плэйсхолдер с общим количеством - if (isset($totalPlaceholder) && strlen(trim($totalPlaceholder)) != ''){ - $modx->setPlaceholder($totalPlaceholder, $resultTotal); + if (isset($totalRowsToPlaceholder) && strlen(trim($totalRowsToPlaceholder)) != ''){ + $modx->setPlaceholder($totalRowsToPlaceholder, $resultTotal); } //Если нужно типографировать - if (isset($typographing)){ - $typographing = explode(',', $typographing); + if (isset($typography)){ + $typography = explode(',', $typography); //Придётся ещё раз перебрать результат foreach ($res as $key => $val){ //Перебираем колонки, заданные для типографирования - foreach ($typographing as $v){ + foreach ($typography as $v){ //Если такая колонка существует, типографируем if (isset($res[$key][$v])){ $res[$key][$v] = $modx->runSnippet('ddTypograph', array('text' => $res[$key][$v])); @@ -203,22 +203,22 @@ } //Если вывод в массив - if ($format == 'array'){ + if ($outputFormat == 'array'){ $result = $res; }else{ $resTemp = array(); //Если вывод просто в формате html - if ($format == 'html'){ + if ($outputFormat == 'html'){ /*//Если вывод в формате изображения - if ($format == 'img'){ + if ($outputFormat == 'img'){ foreach ($res as $key => $val) $res[$key] = ''.$val['val0'].''; //Если вывод в формате ссылки - }else if ($format == 'link'){ + }else if ($outputFormat == 'link'){ foreach ($res as $key => $val) $res[$key] = ''.$val['val0'].''; //Если вывод по шаблону }else */ - if (isset($tplY)){ + if (isset($rowTpl)){ //Перебираем строки foreach ($res as $key => $val){ $resTemp[$key] = array(); @@ -229,8 +229,8 @@ $resTemp[$key]['val'.$k] = ''; }else{ //Если есть шаблоны значений колонок - if ($tplX && strlen($tplX[$k])){ - $resTemp[$key]['val'.$k] = $modx->parseChunk($tplX[$k], array('val' => $v), '[+', '+]'); + if ($colTpl && strlen($colTpl[$k])){ + $resTemp[$key]['val'.$k] = $modx->parseChunk($colTpl[$k], array('val' => $v), '[+', '+]'); }else{ $resTemp[$key]['val'.$k] = $v; } @@ -241,28 +241,28 @@ //И общее количество элементов $resTemp[$key]['total'] = $total; $resTemp[$key]['resultTotal'] = $resultTotal; - $resTemp[$key] = $modx->parseChunk($tplY, $resTemp[$key], '[+', '+]'); + $resTemp[$key] = $modx->parseChunk($rowTpl, $resTemp[$key], '[+', '+]'); } }else{ foreach ($res as $key => $val){ //Если есть шаблоны значений колонок - if ($tplX){ + if ($colTpl){ foreach ($val as $k => $v){ if ($removeEmptyCols && !strlen($v)){ unset($val[$k]); }else{ - if ($tplX && strlen($tplX[$k])) - $val[$k] = $modx->parseChunk($tplX[$k], array('val' => $v), '[+', '+]'); + if ($colTpl && strlen($colTpl[$k])) + $val[$k] = $modx->parseChunk($colTpl[$k], array('val' => $v), '[+', '+]'); } } } - $resTemp[$key] = implode($glueX, $val); + $resTemp[$key] = implode($colGlue, $val); } } - $result = implode($glueY, $resTemp); + $result = implode($rowGlue, $resTemp); //Если вывод в формате JSON - }else if ($format == 'json'){ + }else if ($outputFormat == 'json'){ //Добавляем 'val' к названиям колонок /* foreach ($res as $key => $val){ $res[$key] = array(); @@ -273,13 +273,13 @@ $resTemp = $res; //Если нужно выводить только одну колонку - if ($colNum != 'all' && count($colNum) == 1){ + if ($columns != 'all' && count($columns) == 1){ $resTemp = array_map('implode', $resTemp); } //Если нужно получить какой-то конкретный элемент, а не все - if ($count == '1'){ - $result = json_encode($resTemp[$num]); + if ($totalRows == '1'){ + $result = json_encode($resTemp[$startRow]); }else{ $result = json_encode($resTemp); } @@ -289,7 +289,7 @@ } //Если оборачивающий шаблон задан (и вывод не в массив), парсим его - if (isset($tplWrap)){ + if (isset($outerTpl)){ $resTemp = array(); //Элемент массива 'wrapper' должен находиться самым первым, иначе дополнительные переданные плэйсхолдеры в тексте не найдутся! @@ -310,7 +310,7 @@ $resTemp['total'] = $total; $resTemp['resultTotal'] = $resultTotal; - $result = $modx->parseChunk($tplWrap, $resTemp, '[+','+]'); + $result = $modx->parseChunk($outerTpl, $resTemp, '[+','+]'); } //Если нужно URL-кодировать строку From bf7be4dc166a5e1f4fbe929618d3994b4d411698 Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Thu, 27 Feb 2014 11:31:11 +0600 Subject: [PATCH 06/11] * Minor code style and other changes. --- ddGetMultipleField.php | 65 ++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index c43a026..a88fe3e 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -50,16 +50,18 @@ } //Если задано значение поля -if (isset($string) && $string != ""){ - $rowDelimiter = isset($rowDelimiter) ? $rowDelimiter : '||'; - $colDelimiter = isset($colDelimiter) ? $colDelimiter : '::'; +if (isset($string) && strlen($string) > 0){ + if (!isset($rowDelimiter)){$rowDelimiter = '||';} + if (!isset($colDelimiter)){$colDelimiter = '::';} + //Являются ли разделители регулярками - $splYisRegexp = (filter_var($rowDelimiter, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/^\/.*\/[a-z]*$/'))) !== false) ? true : false; - $splXisRegexp = (filter_var($colDelimiter, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/^\/.*\/[a-z]*$/'))) !== false) ? true : false; - $startRow = (!isset($startRow) || !is_numeric($startRow)) ? '0' : $startRow; + $rowDelimiterIsRegexp = (filter_var($rowDelimiter, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/^\/.*\/[a-z]*$/'))) !== false) ? true : false; + $colDelimiterIsRegexp = (filter_var($colDelimiter, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/^\/.*\/[a-z]*$/'))) !== false) ? true : false; + + if (!isset($startRow) || !is_numeric($startRow)){$startRow = '0';} //Если заданы условия фильтрации - if (!empty($filter)){ + if (isset($filter)){ //Разбиваем по условиям $temp = explode('||', $filter); @@ -69,7 +71,7 @@ //Разбиваем по колонке/значению $val = explode('::', $val); - //Если указали просто значение (значит, это нулевая колонка) + //Если указали просто значение (значит, это нулевая колонка) TODO: Удалить через пару версий. if (count($val) < 2){ $val[1] = $val[0]; $val[0] = '0'; @@ -87,14 +89,14 @@ $filter = false; } - $totalRows = (!isset($totalRows) || !is_numeric($totalRows)) ? 'all' : $totalRows; + if (!isset($totalRows) || !is_numeric($totalRows)){$totalRows = 'all';} $columns = isset($columns) ? explode(',', $columns) : 'all'; //Хитро-мудро для array_intersect_key - if (is_array($columns)) $columns = array_combine($columns, $columns); + if (is_array($columns)){$columns = array_combine($columns, $columns);} $sortDir = isset($sortDir) ? strtoupper($sortDir) : false; - $sortBy = isset($sortBy) ? $sortBy : '0'; - $rowGlue = isset($rowGlue) ? $rowGlue : ''; - $colGlue = isset($colGlue) ? $colGlue : ''; + if (!isset($sortBy)){$sortBy = '0';} + if (!isset($rowGlue)){$rowGlue = '';} + if (!isset($colGlue)){$colGlue = '';} $removeEmptyRows = (isset($removeEmptyRows) && $removeEmptyRows == '0') ? false : true; $removeEmptyCols = (isset($removeEmptyCols) && $removeEmptyCols == '0') ? false : true; $urlencode = (isset($urlencode) && $urlencode == '1') ? true : false; @@ -102,21 +104,21 @@ $colTpl = isset($colTpl) ? explode(',', $colTpl) : false; //Разбиваем на строки - $res = $splYisRegexp ? preg_split($rowDelimiter, $string) : explode($rowDelimiter, $string); - + $res = $rowDelimiterIsRegexp ? preg_split($rowDelimiter, $string) : explode($rowDelimiter, $string); + //Общее количество строк $total = count($res); //Перебираем строки, разбиваем на колонки foreach ($res as $key => $val){ - $res[$key] = $splXisRegexp ? preg_split($colDelimiter, $val) : explode($colDelimiter, $val); + $res[$key] = $colDelimiterIsRegexp ? preg_split($colDelimiter, $val) : explode($colDelimiter, $val); //Если необходимо получить какие-то конкретные значения - if ($filter){ + if ($filter !== false){ //Перебираем колонки для фильтрации - foreach ($filter as $col_k => $col_v){ + foreach ($filter as $k => $v){ //Если текущего значения в списке нет, сносим нафиг - if (!in_array($res[$key][$col_k], $col_v)){ + if (!in_array($res[$key][$k], $v)){ unset($res[$key]); //Уходим (строку уже снесли, больше ничего не важно) break; @@ -133,7 +135,7 @@ //Если нужно удалять пустые строки (также проверяем на то, что строка вообще существует, т.к. она могла быть уже удалена ранее) if ($removeEmptyRows && isset($res[$key])){ //Если строка пустая, удаляем - if (strlen(implode('', $res[$key])) == 0) unset($res[$key]); + if (strlen(implode('', $res[$key])) == 0){unset($res[$key]);} } } @@ -141,7 +143,7 @@ $res = array_values($res); //Если шаблоны колонок заданы, но их не хватает - if ($colTpl){ + if ($colTpl !== false){ if (($temp = count($res[0]) - count($colTpl)) > 0){ //Дозабьём недостающие последним $colTpl = array_merge($colTpl, array_fill($temp - 1, $temp, $colTpl[count($colTpl) - 1])); @@ -151,11 +153,11 @@ } $result = ''; - + //Если что-то есть (могло ничего не остаться после удаления пустых и/или получения по значениям) if (count($res) > 0){ //Если надо сортировать - if ($sortDir){ + if ($sortDir !== false){ //Если надо в случайном порядке - шафлим if ($sortDir == 'RAND'){ shuffle($res); @@ -169,7 +171,7 @@ } //Обрабатываем слишком большой индекс - if (!$res[$startRow]) $startRow = count($res) - 1; + if (!isset($res[$startRow])){$startRow = count($res) - 1;} //Если нужны все элементы if ($totalRows == 'all'){ @@ -182,7 +184,7 @@ $resultTotal = count($res); //Плэйсхолдер с общим количеством - if (isset($totalRowsToPlaceholder) && strlen(trim($totalRowsToPlaceholder)) != ''){ + if (isset($totalRowsToPlaceholder)){ $modx->setPlaceholder($totalRowsToPlaceholder, $resultTotal); } @@ -222,6 +224,7 @@ //Перебираем строки foreach ($res as $key => $val){ $resTemp[$key] = array(); + //Перебираем колонки foreach ($val as $k => $v){ //Если нужно удалять пустые значения @@ -229,13 +232,14 @@ $resTemp[$key]['val'.$k] = ''; }else{ //Если есть шаблоны значений колонок - if ($colTpl && strlen($colTpl[$k])){ + if ($colTpl !== false && strlen($colTpl[$k]) > 0){ $resTemp[$key]['val'.$k] = $modx->parseChunk($colTpl[$k], array('val' => $v), '[+', '+]'); }else{ $resTemp[$key]['val'.$k] = $v; } } } + //Запишем номер строки $resTemp[$key]['row_number'] = $key + 1; //И общее количество элементов @@ -246,13 +250,12 @@ }else{ foreach ($res as $key => $val){ //Если есть шаблоны значений колонок - if ($colTpl){ + if ($colTpl !== false){ foreach ($val as $k => $v){ if ($removeEmptyCols && !strlen($v)){ unset($val[$k]); - }else{ - if ($colTpl && strlen($colTpl[$k])) - $val[$k] = $modx->parseChunk($colTpl[$k], array('val' => $v), '[+', '+]'); + }else if (strlen($colTpl[$k]) > 0){ + $val[$k] = $modx->parseChunk($colTpl[$k], array('val' => $v), '[+', '+]'); } } } @@ -312,7 +315,7 @@ $resTemp['resultTotal'] = $resultTotal; $result = $modx->parseChunk($outerTpl, $resTemp, '[+','+]'); } - + //Если нужно URL-кодировать строку if ($urlencode){ $result = rawurlencode($result); From 9d1a4a3561bbe17f0e108249fc0edd8a27044812 Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Thu, 27 Feb 2014 11:42:57 +0600 Subject: [PATCH 07/11] =?UTF-8?q?*=20The=20placeholder=20=E2=80=9C[+row=5F?= =?UTF-8?q?number+]=E2=80=9D=20has=20been=20renamed=20as=20=E2=80=9C[+rowN?= =?UTF-8?q?umber+]=E2=80=9D=20in=20the=20=E2=80=9CrowTpl=E2=80=9D=20chunk.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ddGetMultipleField.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index a88fe3e..1c3f790 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -26,7 +26,7 @@ * @param $outputFormat {'html'; 'JSON'; 'array'} - Result output format. Default: 'html'. * @param $rowGlue {string} - The string that combines rows while rendering. It can be used along with “rowTpl”. Default: ''. * @param $colGlue {string} - The string that combines columns while rendering. It can be used along with “colTpl”, but not with “rowTpl” for obvious reasons. Default: ''. - * @param $rowTpl {string: chunkName} - The template for row rendering (“outputFormat” has to be == 'html'). Available placeholders: [+row_number+] (index of current row, starts at 1), [+total+] (total number of rows), [+resultTotal+] (total number of returned rows), [+val0+],[+val1+],… (column values). Default: ''. + * @param $rowTpl {string: chunkName} - The template for row rendering (“outputFormat” has to be == 'html'). Available placeholders: [+rowNumber+] (index of current row, starts at 1), [+total+] (total number of rows), [+resultTotal+] (total number of returned rows), [+val0+],[+val1+],… (column values). Default: ''. * @param $colTpl {comma separated string: chunkName; 'null'} - The comma-separated list of templates for column rendering (“outputFormat” has to be == 'html'). If the number of templates is lesser than the number of columns then the last passed template will be used to render the rest of the columns. 'null' specifies rendering without a template. Available placeholder: [+val+]. Default: ''. * @param $outerTpl {string: chunkName} - Wrapper template (“outputFormat” has to be != 'array'). Available placeholders: [+wrapper+], [+total+] (total number or rows), [+resultTotal+] (total number of returned rows). Default: ''. * @param $placeholders {separated string} - Additional data has to be passed into “outerTpl”. Syntax: string separated with '::' between key and value and '||' between key-value pairs. Default: ''. @@ -241,7 +241,7 @@ } //Запишем номер строки - $resTemp[$key]['row_number'] = $key + 1; + $resTemp[$key]['rowNumber'] = $key + 1; //И общее количество элементов $resTemp[$key]['total'] = $total; $resTemp[$key]['resultTotal'] = $resultTotal; From e47ebe934450cb6731b25ab201d17339a6b451cf Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Thu, 27 Feb 2014 15:42:11 +0600 Subject: [PATCH 08/11] =?UTF-8?q?*=20The=20placeholders=20of=20the=20form?= =?UTF-8?q?=20=E2=80=9C[+rowY.valX+]=E2=80=9D=20have=20been=20renamed=20as?= =?UTF-8?q?=20=E2=80=9C[+rowY.colX+]=E2=80=9D=20in=20=E2=80=9CouterTpl?= =?UTF-8?q?=E2=80=9D=20chunk.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ddGetMultipleField.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index 1c3f790..8ce2056 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -28,7 +28,7 @@ * @param $colGlue {string} - The string that combines columns while rendering. It can be used along with “colTpl”, but not with “rowTpl” for obvious reasons. Default: ''. * @param $rowTpl {string: chunkName} - The template for row rendering (“outputFormat” has to be == 'html'). Available placeholders: [+rowNumber+] (index of current row, starts at 1), [+total+] (total number of rows), [+resultTotal+] (total number of returned rows), [+val0+],[+val1+],… (column values). Default: ''. * @param $colTpl {comma separated string: chunkName; 'null'} - The comma-separated list of templates for column rendering (“outputFormat” has to be == 'html'). If the number of templates is lesser than the number of columns then the last passed template will be used to render the rest of the columns. 'null' specifies rendering without a template. Available placeholder: [+val+]. Default: ''. - * @param $outerTpl {string: chunkName} - Wrapper template (“outputFormat” has to be != 'array'). Available placeholders: [+wrapper+], [+total+] (total number or rows), [+resultTotal+] (total number of returned rows). Default: ''. + * @param $outerTpl {string: chunkName} - Wrapper template (“outputFormat” has to be != 'array'). Available placeholders: [+wrapper+], [+total+] (total number of rows), [+resultTotal+] (total number of returned rows), [+rowY.colX+] (“Y” — row number, “X” — column number). Default: ''. * @param $placeholders {separated string} - Additional data has to be passed into “outerTpl”. Syntax: string separated with '::' between key and value and '||' between key-value pairs. Default: ''. * @param $urlencode {0; 1} - Is it required to URL encode the result? “outputFormat” has to be != 'array'. URL encoding is used according to RFC 3986. Default: 0. * @param $totalRowsToPlaceholder {string} - The name of the global MODX placeholder that holds the total number of rows. The placeholder won't be set if “totalRowsToPlaceholder” is empty. Default: ''. @@ -303,7 +303,7 @@ //Добавляем 'row' и 'val' к ключам foreach ($res as $key => $val){ - $resTemp[preg_replace('/(\d)\.(\d)/', 'row$1.val$2', $key)] = $val; + $resTemp[preg_replace('/(\d)\.(\d)/', 'row$1.col$2', $key)] = $val; } //Если есть дополнительные данные From 59973fb9b9504a06ab6c8abaa460cad99d50c5b1 Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Thu, 27 Feb 2014 21:16:59 +0600 Subject: [PATCH 09/11] =?UTF-8?q?*=20The=20placeholders=20of=20the=20form?= =?UTF-8?q?=20=E2=80=9C[+valX+]=E2=80=9D=20have=20been=20renamed=20as=20?= =?UTF-8?q?=E2=80=9C[+colX+]=E2=80=9D=20in=20the=20=E2=80=9CrowTpl?= =?UTF-8?q?=E2=80=9D=20chunk.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ddGetMultipleField.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index 8ce2056..8e0cc97 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -26,7 +26,7 @@ * @param $outputFormat {'html'; 'JSON'; 'array'} - Result output format. Default: 'html'. * @param $rowGlue {string} - The string that combines rows while rendering. It can be used along with “rowTpl”. Default: ''. * @param $colGlue {string} - The string that combines columns while rendering. It can be used along with “colTpl”, but not with “rowTpl” for obvious reasons. Default: ''. - * @param $rowTpl {string: chunkName} - The template for row rendering (“outputFormat” has to be == 'html'). Available placeholders: [+rowNumber+] (index of current row, starts at 1), [+total+] (total number of rows), [+resultTotal+] (total number of returned rows), [+val0+],[+val1+],… (column values). Default: ''. + * @param $rowTpl {string: chunkName} - The template for row rendering (“outputFormat” has to be == 'html'). Available placeholders: [+rowNumber+] (index of current row, starts at 1), [+total+] (total number of rows), [+resultTotal+] (total number of returned rows), [+col0+],[+col1+],… (column values). Default: ''. * @param $colTpl {comma separated string: chunkName; 'null'} - The comma-separated list of templates for column rendering (“outputFormat” has to be == 'html'). If the number of templates is lesser than the number of columns then the last passed template will be used to render the rest of the columns. 'null' specifies rendering without a template. Available placeholder: [+val+]. Default: ''. * @param $outerTpl {string: chunkName} - Wrapper template (“outputFormat” has to be != 'array'). Available placeholders: [+wrapper+], [+total+] (total number of rows), [+resultTotal+] (total number of returned rows), [+rowY.colX+] (“Y” — row number, “X” — column number). Default: ''. * @param $placeholders {separated string} - Additional data has to be passed into “outerTpl”. Syntax: string separated with '::' between key and value and '||' between key-value pairs. Default: ''. @@ -229,13 +229,13 @@ foreach ($val as $k => $v){ //Если нужно удалять пустые значения if ($removeEmptyCols && !strlen($v)){ - $resTemp[$key]['val'.$k] = ''; + $resTemp[$key]['col'.$k] = ''; }else{ //Если есть шаблоны значений колонок if ($colTpl !== false && strlen($colTpl[$k]) > 0){ - $resTemp[$key]['val'.$k] = $modx->parseChunk($colTpl[$k], array('val' => $v), '[+', '+]'); + $resTemp[$key]['col'.$k] = $modx->parseChunk($colTpl[$k], array('val' => $v), '[+', '+]'); }else{ - $resTemp[$key]['val'.$k] = $v; + $resTemp[$key]['col'.$k] = $v; } } } From 13d3e68e2a2aa11905ba3b298f78b180eb242757 Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Thu, 27 Feb 2014 21:19:03 +0600 Subject: [PATCH 10/11] =?UTF-8?q?*=20The=20placeholder=20=E2=80=9C[+wrappe?= =?UTF-8?q?r+]=E2=80=9D=20has=20been=20renamed=20as=20=E2=80=9C[+result+]?= =?UTF-8?q?=E2=80=9D=20in=20the=20=E2=80=9CouterTpl=E2=80=9D=20chunk.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ddGetMultipleField.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index 8e0cc97..6c40884 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -28,7 +28,7 @@ * @param $colGlue {string} - The string that combines columns while rendering. It can be used along with “colTpl”, but not with “rowTpl” for obvious reasons. Default: ''. * @param $rowTpl {string: chunkName} - The template for row rendering (“outputFormat” has to be == 'html'). Available placeholders: [+rowNumber+] (index of current row, starts at 1), [+total+] (total number of rows), [+resultTotal+] (total number of returned rows), [+col0+],[+col1+],… (column values). Default: ''. * @param $colTpl {comma separated string: chunkName; 'null'} - The comma-separated list of templates for column rendering (“outputFormat” has to be == 'html'). If the number of templates is lesser than the number of columns then the last passed template will be used to render the rest of the columns. 'null' specifies rendering without a template. Available placeholder: [+val+]. Default: ''. - * @param $outerTpl {string: chunkName} - Wrapper template (“outputFormat” has to be != 'array'). Available placeholders: [+wrapper+], [+total+] (total number of rows), [+resultTotal+] (total number of returned rows), [+rowY.colX+] (“Y” — row number, “X” — column number). Default: ''. + * @param $outerTpl {string: chunkName} - Wrapper template (“outputFormat” has to be != 'array'). Available placeholders: [+result+], [+total+] (total number of rows), [+resultTotal+] (total number of returned rows), [+rowY.colX+] (“Y” — row number, “X” — column number). Default: ''. * @param $placeholders {separated string} - Additional data has to be passed into “outerTpl”. Syntax: string separated with '::' between key and value and '||' between key-value pairs. Default: ''. * @param $urlencode {0; 1} - Is it required to URL encode the result? “outputFormat” has to be != 'array'. URL encoding is used according to RFC 3986. Default: 0. * @param $totalRowsToPlaceholder {string} - The name of the global MODX placeholder that holds the total number of rows. The placeholder won't be set if “totalRowsToPlaceholder” is empty. Default: ''. @@ -295,8 +295,8 @@ if (isset($outerTpl)){ $resTemp = array(); - //Элемент массива 'wrapper' должен находиться самым первым, иначе дополнительные переданные плэйсхолдеры в тексте не найдутся! - $resTemp['wrapper'] = $result; + //Элемент массива 'result' должен находиться самым первым, иначе дополнительные переданные плэйсхолдеры в тексте не найдутся! + $resTemp['result'] = $result; //Преобразуем результат в одномерный массив $res = ddTools::unfoldArray($res); From 935df77e285c17311a22cb4c47070e15b19b804d Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Sun, 2 Mar 2014 13:34:47 +0600 Subject: [PATCH 11/11] Prerelease 3.0b --- ddGetMultipleField.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ddGetMultipleField.php b/ddGetMultipleField.php index 6c40884..d447e0d 100644 --- a/ddGetMultipleField.php +++ b/ddGetMultipleField.php @@ -1,7 +1,7 @@