19 'upper' => FunctionUpper::class,
20 'lower' => FunctionLower::class,
21 'translit' => FunctionTranslit::class,
22 'concat' => FunctionConcat::class,
23 'limit' => FunctionLimit::class,
24 'contrast' => FunctionContrast::class,
25 'min' => FunctionMin::class,
26 'max' => FunctionMax::class,
27 'distinct' => FunctionDistinct::class,
28 'ucfirst' => FunctionUcfirst::class,
29 'ucwords' => FunctionUcwords::class,
41 public static function createInstance($functionName, $data =
null)
43 if (!is_string($functionName))
47 if (isset(self::$defaultFunctionMap[$functionName]))
50 $functionClass = self::$defaultFunctionMap[$functionName];
51 return new $functionClass($data);
53 elseif (isset(self::$functionMap[$functionName]))
56 $functionClass = self::$functionMap[$functionName];
57 return new $functionClass($data);
61 $event = new \Bitrix\Main\Event(
"iblock",
"OnTemplateGetFunctionClass", array($functionName));
63 if ($event->getResults())
65 foreach($event->getResults() as $evenResult)
67 if($evenResult->getType() == \
Bitrix\Main\EventResult::SUCCESS)
69 $functionClass = $evenResult->getParameters();
70 if (is_string($functionClass) && class_exists($functionClass))
72 self::$functionMap[$functionName] = $functionClass;
78 if (isset(self::$functionMap[$functionName]))
80 $functionClass = self::$functionMap[$functionName];
81 return new $functionClass($data);
114 public function onPrepareParameters(\
Bitrix\
Iblock\Template\
Entity\Base $entity, array $parameters)
116 $arguments = array();
118 foreach ($parameters as $parameter)
120 $arguments[] = $parameter->process($entity);
147 foreach ($parameters as $param)
149 if (is_array($param))
150 $result[] = implode(
" ", $param);
151 elseif ($param !=
"")
154 return implode(
" ", $result);
167 foreach ($parameters as $param)
169 if (is_array($param))
171 foreach ($param as $p)
174 elseif ($param !=
"")
247 && isset($this->data[
"replace_space"])
248 && $this->data[
"replace_space"] !=
""
251 $changeCase = isset($this->data[
""])? $this->data[
"change_case"]:
false;
252 $replaceChar = $this->data[
"replace_space"];
257 && isset($this->data[
"change_case"])
258 && $this->data[
"change_case"] !=
""
261 $changeCase = $this->data[
"change_case"];
267 "change_case" => $changeCase,
268 "replace_space" => $replaceChar,
269 "replace_other" => $replaceChar,
270 "delete_repeat_replace" =>
true,
293 $delimiter = array_pop($result);
295 return implode($delimiter, $result);
317 $limit = array_pop($result);
318 $delimiter = array_pop($result);
319 $text = implode(
" ", $result);
321 $result = preg_split(
"/([".preg_quote($delimiter,
"/").
"]+)/", $text);
322 return array_slice($result, 0, $limit);
344 $limit = array_pop($result);
345 $delimiter = array_pop($result);
346 $text = strip_tags(implode(
" ", $result));
349 $result = preg_split(
"/([".preg_quote($delimiter,
"/").
"]+)/", $text);
352 foreach ($result as $word)
354 if (mb_strlen($word) > 1)
357 $len = log(max(20, array_sum($words)));
358 foreach ($words as $word => $count)
360 $words[$word] = log($count + 1) / $len;
364 return array_keys(array_slice($words, 0, $limit));
387 foreach ($result as $value)
389 if (!isset($asFloat[$value]))
391 $floatFalue = doubleval(preg_replace(
"/[^0-9.]+/",
"", $value));
392 $asFloat[$value] = $floatFalue;
399 elseif (count($asFloat) == 1)
405 $min = min($asFloat);
406 return array_search($min, $asFloat);
430 foreach ($result as $value)
432 if (!isset($asFloat[$value]))
434 $floatFalue = doubleval(preg_replace(
"/[^0-9.]+/",
"", $value));
435 $asFloat[$value] = $floatFalue;
442 elseif (count($asFloat) == 1)
448 $max = max($asFloat);
449 return array_search($max, $asFloat);
473 $result[$value] = $value;
474 return array_values($result);
static $defaultFunctionMap
parametersToArray(array $parameters)
calculate(array $parameters)
parametersToString(array $parameters)
calculate(array $parameters)
calculate(array $parameters)
calculate(array $parameters)
calculate(array $parameters)
calculate(array $parameters)
calculate(array $parameters)
calculate(array $parameters)
calculate(array $parameters)
calculate(array $parameters)