[+title+]
@@ -1460,7 +1602,7 @@ Users use the format that is convenient to them and we support both. Just call this method and don't care about it. ```php -//We can pass string in JSON format +// We can pass string in JSON format \DDTools\Tools\Objects::convertType([ 'object' => '{ "pagetitle": "Test title", @@ -1469,7 +1611,7 @@ Just call this method and don't care about it. 'type' => 'objectArray', ]); -//Or Query string +// Or Query string \DDTools\Tools\Objects::convertType([ 'object' => 'pagetitle=Test title&published=0', 'type' => 'objectArray', @@ -1532,7 +1674,7 @@ Returns: ```php \DDTools\Tools\Objects::convertType([ 'object' => "{ - //This is HJSON, not JSON, so we can use comments insides + // This is HJSON, not JSON, so we can use comments insides keys: and values can be specified without quotes, multilineValues: ''' @@ -1564,9 +1706,9 @@ stdClass::__set_state(array( \DDTools\Tools\Objects::convertType([ 'object' => [ 'data-name' => 'KINO', - //Will be converted to 1 + // Will be converted to 1 'data-is-active' => true, - //Will be converted to JSON array + // Will be converted to JSON array 'data-members' => [ 'Viktor Tsoi', 'Yuri Kasparyan', @@ -1697,10 +1839,10 @@ var_export( Returns: ```php -//The object expanded the source array +// The object expanded the source array array( 'name' => 'jokes', - //The array expanded the source object + // The array expanded the source object 'countries' => stdClass::__set_state( 'usa' => 'democracy', 'china' => 'democracy too', @@ -1775,6 +1917,57 @@ stdClass::__set_state(array( ``` +##### Extending only specific properties from subsequent objects (`$params->extendableProperties`) + +Sometimes you want to keep only the key ingredients, like avoiding the pineapple on your pizza. + +```php +var_export( + \DDTools\Tools\Objects::extend([ + 'objects' => [ + (object) [ + 'name' => 'Classic Italian Pizza', + 'toppings' => (object) [ + 'cheese' => 'mozzarella', + 'tomatoSauce' => true, + 'olive' => true, + ], + 'size' => 'medium', + ], + [ + // Not interested in extra toppings + 'toppings' => [ + 'pineapple' => true, + ], + 'size' => 'large', + 'price' => 15.99, + ], + ], + // Only keeping the price and size + 'extendableProperties' => [ + 'price', + 'size', + ], + ]) +); +``` + +Returns: + +```php +stdClass::__set_state(array( + 'name' => 'Classic Italian Pizza', + 'toppings' => stdClass::__set_state(array( + 'cheese' => 'mozzarella', + 'tomatoSauce' => true, + 'olive' => true, + )), + 'size' => 'large', + 'price' => 15.99, +)) +``` + + #### `\DDTools\Tools\Objects::unfold($params)` @@ -1873,15 +2066,15 @@ stdClass::__set_state(array ( ##### Cross-type unfolding (`$params->isCrossTypeEnabled` == `true`) ```php -//Array +// Array $data = [ - //Array + // Array 'bin1' => [ 'plastic' => 'plastic bottles', 'paper' => 'newspapers', 'glass' => 'glass bottles', ], - //Object + // Object 'bin2' => (object) [ 'organic' => 'food waste', 'paper' => 'cardboard boxes', @@ -2016,11 +2209,11 @@ Both calls return `'Floyd'`. Source object can be nested, and elements of all levels can be mix of objects and arrays. ```php -//For example let the first level be stdClass +// For example let the first level be stdClass $sourceObject = (object) [ - //Let the second level be an indexed array + // Let the second level be an indexed array 'PinkFloyd' => [ - //Let the third level be an associative array + // Let the third level be an associative array [ 'name' => 'Syd Barrett', 'role' => 'lead and rhythm guitars, vocals', @@ -2029,7 +2222,7 @@ $sourceObject = (object) [ 'name' => 'David Gilmour', 'role' => 'lead and rhythm guitars, vocals, bass, keyboards, synthesisers', ], - //Let Roger be a little bit special ;) + // Let Roger be a little bit special ;) (object) [ 'name' => 'Roger Waters', 'role' => 'bass, vocals, rhythm guitar, synthesisers', @@ -2297,7 +2490,7 @@ array( ```php $collection->getItems([ - //Spaces, tabs and line breaks are also allowed and do not matter + // Spaces, tabs and line breaks are also allowed and do not matter 'filter' => ' gender == female || nobelPeacePrize == 1 && isHuman == 0 @@ -2309,7 +2502,7 @@ Returns: ```php array( - //gender == female + // gender == female 0 => array( 'name' => 'Mary Teresa', 'isHuman' => 1, @@ -2317,7 +2510,7 @@ array( 'nobelPeacePrize' => 1, 'religion' => 'Catholicism', ), - //nobelPeacePrize == 1 && isHuman == 0 + // nobelPeacePrize == 1 && isHuman == 0 1 => array( 'name' => 'ICAN', 'isHuman' => 0, @@ -2497,13 +2690,13 @@ Returns: ```php array( 0 => stdClass::__set_state(array( - //Existing properties that absent in `$params->data` have remained as is + // Existing properties that absent in `$params->data` have remained as is 'name' => 'Mahatma Gandhi', 'isHuman' => 1, 'gender' => 'male', - //Given property values have overwritten the existing ones + // Given property values have overwritten the existing ones 'nobelPeacePrize' => 1, - //Non-existing properties have been created + // Non-existing properties have been created 'birthday' => '2 October 1869', )) ) @@ -2525,7 +2718,7 @@ Returns: ```php array( - //2 humans have been deleted, 1 have remained + // 2 humans have been deleted, 1 have remained 0 => stdClass::__set_state(array( 'name' => 'Tenzin Gyatso', 'isHuman' => 1, diff --git a/composer.json b/composer.json index b47e654..0396a73 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "dd/evolutioncms-libraries-ddtools", "type": "modxevo-library-ddtools", - "version": "0.63.0", + "version": "0.64.0", "description": "A library with various tools facilitating your work.", "keywords": [ "modx", diff --git a/modx.ddtools.class.php b/modx.ddtools.class.php index f4043ef..6159111 100644 --- a/modx.ddtools.class.php +++ b/modx.ddtools.class.php @@ -1,7 +1,7 @@ '', 'event_log' => '', 'manager_log' => '', 'manager_users' => '', 'system_eventnames' => '', 'system_settings' => '', - //Documents + // Documents 'site_content' => '', 'documentgroup_names' => '', 'document_groups' => '', - //Templates + // Templates 'site_templates' => '', - //Chunks + // Chunks 'site_htmlsnippets' => '', - //TVs + // TVs 'site_tmplvars' => '', 'site_tmplvar_access' => '', 'site_tmplvar_contentvalues' => '', 'site_tmplvar_templates' => '', - //Snippets + // Snippets 'site_snippets' => '', - //Plugins + // Plugins 'site_plugins' => '', 'site_plugin_events' => '', - //Modules + // Modules 'site_modules' => '', 'site_module_access' => '', 'site_module_depobj' => '', - //Users + // Users 'membergroup_access' => '', 'membergroup_names' => '', 'member_groups' => '', @@ -112,14 +112,14 @@ class ddTools { /** * __construct - * @version 1.0.5 (2024-08-02) + * @version 1.0.6 (2024-08-04) */ private function __construct(){ global $modx; self::$modx = $modx; - //Init full table names + // Init full table names foreach ( self::$tables as $tableAlias => @@ -128,7 +128,7 @@ private function __construct(){ self::$tables[$tableAlias] = self::$modx->getFullTableName($tableAlias); } - //We need to include required files if Composer is not used + // We need to include required files if Composer is not used if(!class_exists('\DDTools\Tools\Files')){ require_once( __DIR__ . @@ -175,11 +175,11 @@ public static function isEmpty($value = null): bool { /** * orderedParamsToNamed - * @version 1.1.6 (2019-06-22) + * @version 1.1.7 (2024-08-04) * * @desc Convert list of ordered parameters to named. Method is public, but be advised that this is beta-version! * - * @param $params {stdClass|arrayAssociative} — Parameters, the pass-by-name style is used. @required + * @param $params {stdClass|arrayAssociative} — The parameters object. @required * @param $params->paramsList {array} — Parameters in ordered list (func_get_args). @required * @param $params->paramsList[i] {mixed} — Parameter value. @required * @param $params->compliance {array} — The order of parameters. @required @@ -197,15 +197,15 @@ public static function orderedParamsToNamed($params){ 'backtraceArray' => [] ]; - //Перебираем массив соответствия + // Перебираем массив соответствия foreach ( $params->compliance as $index => $name ){ - //Если параметр задан + // Если параметр задан if (isset($params->paramsList[$index])){ - //Сохраним его + // Сохраним его $result[$name] = $params->paramsList[$index]; } @@ -213,7 +213,7 @@ public static function orderedParamsToNamed($params){ } $logData->backtraceArray = debug_backtrace(); - //Remove this method + // Remove this method array_shift($logData->backtraceArray); $caller = $logData->backtraceArray[0]; $caller = @@ -225,7 +225,7 @@ public static function orderedParamsToNamed($params){ $caller['function'] ; - //General info with code example + // General info with code example $logData->message = 'Deprecated ordered parameters.
Ordered list of parameters is no longer allowed, use the “pass-by-name” style.
' . '//Old style' .
@@ -254,7 +254,7 @@ public static function orderedParamsToNamed($params){
/**
* explodeAssoc
- * @version 1.1.6 (2020-06-07)
+ * @version 1.1.7 (2024-08-04)
*
* @desc Splits string on two separators in the associative array.
*
@@ -271,12 +271,12 @@ public static function explodeAssoc(
){
$result = [];
- //Если строка пустая, выкидываем сразу
+ // Если строка пустая, выкидываем сразу
if ($inputString == ''){
return $result;
}
- //Разбиваем по парам
+ // Разбиваем по парам
$inputString = explode(
$itemDelimiter,
$inputString
@@ -286,7 +286,7 @@ public static function explodeAssoc(
$inputString as
$item
){
- //Разбиваем на ключ-значение
+ // Разбиваем на ключ-значение
$item = explode(
$keyValDelimiter,
$item
@@ -304,7 +304,7 @@ public static function explodeAssoc(
/**
* sort2dArray
- * @version 1.3.1 (2024-08-02)
+ * @version 1.3.2 (2024-08-04)
*
* @desc Sorts 2-dimensional array by multiple columns (like in SQL) using Hoare's method, also referred to as quicksort. The sorting is stable.
*
@@ -322,7 +322,7 @@ public static function sort2dArray(
$sortDir = 1,
$i = 0
){
- //В качестве эталона получаем сортируемое значение (по первому условию сортировки) первого элемента
+ // В качестве эталона получаем сортируемое значение (по первому условию сортировки) первого элемента
$currentItem_comparisonValue = \DDTools\Tools\Objects::getPropValue([
'object' => array_values($array)[0],
'propName' => $sortBy[$i]
@@ -341,7 +341,7 @@ public static function sort2dArray(
$resultArrayRight = [];
$resultArrayCenter = [];
- //Перебираем массив
+ // Перебираем массив
foreach (
$array as
$arrayItemKey =>
@@ -352,12 +352,12 @@ public static function sort2dArray(
'propName' => $sortBy[$i]
]);
- //Если эталон и текущее значение — числа
+ // Если эталон и текущее значение — числа
if (
$isCurrentItemComparisonValueNumeric &&
is_numeric($arrayItem_comparisonValue)
){
- //Получаем нужную циферку
+ // Получаем нужную циферку
$cmpRes =
$arrayItem_comparisonValue == $currentItem_comparisonValue ?
0 :
@@ -367,22 +367,22 @@ public static function sort2dArray(
-1
)
;
- //Если они строки
+ // Если они строки
}else{
- //Сравниваем текущее значение со значением эталонного
+ // Сравниваем текущее значение со значением эталонного
$cmpRes = strcmp(
$arrayItem_comparisonValue,
$currentItem_comparisonValue
);
}
- //Если меньше эталона, отбрасываем в массив меньших
+ // Если меньше эталона, отбрасываем в массив меньших
if ($cmpRes * $sortDir < 0){
$resultArray = &$resultArrayLeft;
- //Если больше — в массив больших
+ // Если больше — в массив больших
}elseif ($cmpRes * $sortDir > 0){
$resultArray = &$resultArrayRight;
- //Если равно — в центральный
+ // Если равно — в центральный
}else{
$resultArray = &$resultArrayCenter;
}
@@ -394,7 +394,7 @@ public static function sort2dArray(
}
}
- //Массивы меньших и массивы больших прогоняем по тому же алгоритму (если в них что-то есть)
+ // Массивы меньших и массивы больших прогоняем по тому же алгоритму (если в них что-то есть)
$resultArrayLeft =
count($resultArrayLeft) > 1 ?
self::sort2dArray(
@@ -415,7 +415,7 @@ public static function sort2dArray(
) :
$resultArrayRight
;
- //Массив одинаковых прогоняем по следующему условию сортировки (если есть условие и есть что сортировать)
+ // Массив одинаковых прогоняем по следующему условию сортировки (если есть условие и есть что сортировать)
$resultArrayCenter =
(
count($resultArrayCenter) > 1 &&
@@ -430,7 +430,7 @@ public static function sort2dArray(
$resultArrayCenter
;
- //Склеиваем отсортированные меньшие, средние и большие
+ // Склеиваем отсортированные меньшие, средние и большие
return array_merge(
$resultArrayLeft,
$resultArrayCenter,
@@ -440,7 +440,7 @@ public static function sort2dArray(
/**
* parseFileNameVersion
- * @version 1.1.4 (2020-02-11)
+ * @version 1.1.5 (2024-08-04)
*
* @desc Parses a file path and gets its name, version & extension.
*
@@ -452,23 +452,23 @@ public static function sort2dArray(
* @return $result['extension'] {string} — File extension.
*/
public static function parseFileNameVersion($file){
- //Если сразу передали массив
+ // Если сразу передали массив
if (is_array($file)){
- //Просто запоминаем его
+ // Просто запоминаем его
$fileinfo = $file;
- //А также запоминаем строку
+ // А также запоминаем строку
$file =
$fileinfo['dirname'] .
'/' .
$fileinfo['basename']
;
- //Если передали строку
+ // Если передали строку
}else{
- //Получаем необходимые данные
+ // Получаем необходимые данные
$fileinfo = pathinfo($file);
}
- //Fail by default
+ // Fail by default
$result = [
'name' => strtolower($file),
'version' => '0',
@@ -478,14 +478,14 @@ public static function parseFileNameVersion($file){
$fileinfo['extension']
];
- //Try to get file version [0 — full name, 1 — script name, 2 — version, 3 — all chars after version]
+ // Try to get file version [0 — full name, 1 — script name, 2 — version, 3 — all chars after version]
preg_match(
'/(\D*?)-?(\d(?:\.\d+)*(?:-?[A-Za-z])*)(.*)/',
$fileinfo['basename'],
$match
);
- //If not fail
+ // If not fail
if (count($match) >= 4){
$result['name'] = strtolower($match[1]);
$result['version'] = strtolower($match[2]);
@@ -496,11 +496,11 @@ public static function parseFileNameVersion($file){
/**
* convertUrlToAbsolute
- * @version 1.0.1 (2024-08-02)
+ * @version 1.0.2 (2024-08-04)
*
* @desc Converts relative URLs to absolute.
*
- * @param $params {stdClass|arrayAssociative} — Parameters, the pass-by-name style is used. @required
+ * @param $params {stdClass|arrayAssociative} — The parameters object. @required
* @param $params->url {string} — Source URL. Can be set as relative with(out) host or absolute with(out) protocol: example.com/some/url, some/url, /some/url, //example.com/some/url, https://example.com/some/url. @required
* @param $params->host {string} — Host for the result URL. Default: $_SERVER['HTTP_HOST'].
* @param $params->scheme {string} — Scheme for the result URL. Default: 'https' || 'http' depending on $_SERVER['HTTPS'].
@@ -508,10 +508,10 @@ public static function parseFileNameVersion($file){
* @return {string}
*/
public static function convertUrlToAbsolute($params){
- //# Prepare params
+ // # Prepare params
$params = \DDTools\Tools\Objects::extend([
'objects' => [
- //Defaults
+ // Defaults
(object) [
'url' => '',
'host' => $_SERVER['HTTP_HOST'],
@@ -536,10 +536,10 @@ public static function convertUrlToAbsolute($params){
}
- //# Run
+ // # Run
$result = '';
- //E. g. '//example.com/some/url'
+ // E. g. '//example.com/some/url'
if (
substr(
$params->url,
@@ -553,7 +553,7 @@ public static function convertUrlToAbsolute($params){
':' .
$params->url
;
- //E. g. 'https://example.com/some/url'
+ // E. g. 'https://example.com/some/url'
}elseif (
!empty(parse_url(
$params->url,
@@ -561,7 +561,7 @@ public static function convertUrlToAbsolute($params){
))
){
$result = $params->url;
- //E. g. 'example.com/some/url'
+ // E. g. 'example.com/some/url'
}elseif (
strpos(
$params->url,
@@ -574,7 +574,7 @@ public static function convertUrlToAbsolute($params){
'://' .
$params->url
;
- //E. g. 'some/url', '/some/url'
+ // E. g. 'some/url', '/some/url'
}else{
$result =
$params->scheme .
@@ -629,7 +629,7 @@ public static function generateRandomString(
/**
* escapingForJS
- * @version 1.1.2 (2019-06-22)
+ * @version 1.1.3 (2024-08-04)
*
* @desc Escaping chars in string for JS.
*
@@ -638,13 +638,13 @@ public static function generateRandomString(
* @return {string}
*/
public static function escapeForJS($str){
- //Backslach escaping (see issue #1)
+ // Backslach escaping (see issue #1)
$str = str_replace(
'\\',
'\\\\',
$str
);
- //Line breaks
+ // Line breaks
$str = str_replace(
"\r\n",
' ',
@@ -660,7 +660,7 @@ public static function escapeForJS($str){
' ',
$str
);
- //Tabs
+ // Tabs
$str = str_replace(
chr(9),
' ',
@@ -671,7 +671,7 @@ public static function escapeForJS($str){
' ',
$str
);
- //MODX placeholders
+ // MODX placeholders
$str = str_replace(
'[+',
'\[\+',
@@ -682,7 +682,7 @@ public static function escapeForJS($str){
'\+\]',
$str
);
- //Quotes
+ // Quotes
$str = str_replace(
"'",
"\'",
@@ -699,11 +699,11 @@ public static function escapeForJS($str){
/**
* getPlaceholdersFromText
- * @version 1.0.2 (2020-02-11)
+ * @version 1.0.3 (2024-08-04)
*
* @desc Finds all placeholders' names and returns them as an array.
*
- * @param $params {stdClass|arrayAssociative} — Parameters, the pass-by-name style is used. @required
+ * @param $params {stdClass|arrayAssociative} — The parameters object. @required
* @param $params->text {string} — Source string. @required
* @param $params->placeholderPrefix {string} — Placeholders prefix. Default: '[+'.
* @param $params->placeholderSuffix {string} — Placeholders suffix. Default: '+]'.
@@ -711,7 +711,7 @@ public static function escapeForJS($str){
* @return {array}
*/
public static function getPlaceholdersFromText($params = []){
- //Defaults
+ // Defaults
$params = (object) array_merge(
[
'text' => '',
@@ -745,11 +745,11 @@ public static function getPlaceholdersFromText($params = []){
/**
* logEvent
- * @version 1.0.3 (2020-02-11)
+ * @version 1.0.4 (2024-08-04)
*
* @desc Add an alert message to the system event log with debug info (backtrace, snippet name, document id, etc).
*
- * @param $params {stdClass|arrayAssociative} — Parameters, the pass-by-name style is used. @required
+ * @param $params {stdClass|arrayAssociative} — The parameters object. @required
* @param $params->message {string} — Message to be logged. Default: ''.
* @param $params->source {string} — Source of the event (module, snippet name, etc). Default: $modx->currentSnippet || caller.
* @param $params->eventId {integer} — Event ID. Default: 1.
@@ -759,12 +759,12 @@ public static function getPlaceholdersFromText($params = []){
* @return {void}
*/
public static function logEvent($params){
- //Defaults
+ // Defaults
$params = (object) array_merge(
[
'message' => '',
'source' => '',
- //TODO: Why “1”, what does it mean?
+ // TODO: Why “1”, what does it mean?
'eventId' => 1,
'eventType' => 'warning',
// 'backtraceArray' => debug_backtrace(),
@@ -773,10 +773,10 @@ public static function logEvent($params){
);
- //Prepare backtrace and caller
+ // Prepare backtrace and caller
if (!isset($params->backtraceArray)){
$params->backtraceArray = debug_backtrace();
- //Remove this method
+ // Remove this method
array_shift($params->backtraceArray);
}
$caller = $params->backtraceArray[0];
@@ -792,7 +792,7 @@ public static function logEvent($params){
$debugInfo = [];
- //Add current document Id to debug info
+ // Add current document Id to debug info
if (!empty(self::$modx->documentIdentifier)){
$debugInfo[] =
'Document id: “' .
@@ -801,14 +801,14 @@ public static function logEvent($params){
;
}
- //Is the code being run in the snippet?
+ // Is the code being run in the snippet?
if (!empty(self::$modx->currentSnippet)){
- //Empty source
+ // Empty source
if ($params->source == ''){
- //Set as source
+ // Set as source
$params->source = self::$modx->currentSnippet;
}else{
- //Add to debug info
+ // Add to debug info
$debugInfo[] =
' Snippet: “' .
self::$modx->currentSnippet .
@@ -822,7 +822,7 @@ public static function logEvent($params){
}
- //Add debug info to the message
+ // Add debug info to the message
$params->message .= 'Debug info
';
if (!empty($debugInfo)){
@@ -836,27 +836,27 @@ public static function logEvent($params){
;
}
- //Add backtrace to message
+ // Add backtrace to message
$params->message .= self::$modx->get_backtrace($params->backtraceArray);
- //Prepare event type
+ // Prepare event type
switch (substr(
$params->eventType,
0,
1
)){
- //Information
+ // Information
case 'i':
$params->eventType = 1;
break;
- //Warning
+ // Warning
case 'w':
$params->eventType = 2;
break;
- //Error
+ // Error
case 'e':
$params->eventType = 3;
break;
@@ -873,18 +873,18 @@ public static function logEvent($params){
/**
* getTpl
- * @version 1.0 (2023-05-14)
+ * @version 1.0.1 (2024-08-04)
*
* @see README.md
*/
public static function getTpl($tpl = ''){
- //Cast the parameter to a string
+ // Cast the parameter to a string
$tpl = $tpl . '';
$result = $tpl;
if (!empty($tpl)){
- //$modx->getTpl('@CODE:') returns '@CODE:' O_o
+ // $modx->getTpl('@CODE:') returns '@CODE:' O_o
if (
substr(
$tpl,
@@ -907,7 +907,7 @@ public static function getTpl($tpl = ''){
/**
* parseText
- * @version 1.9.1 (2024-06-06)
+ * @version 1.9.2 (2024-08-04)
*
* @see README.md
*/
@@ -942,7 +942,7 @@ public static function parseText($params = []){
$result = static::parseSource($result);
}
- //It is needed only after static::parseSource because some snippets can create the new empty placeholders
+ // It is needed only after static::parseSource because some snippets can create the new empty placeholders
if ($params->removeEmptyPlaceholders){
$result = preg_replace(
'/(\[\+\S+?\+\])/m',
@@ -956,16 +956,16 @@ public static function parseText($params = []){
/**
* parseText_parepareParams
- * @version 1.0.2 (2024-08-02)
+ * @version 1.0.3 (2024-08-04)
*
- * @param $params {stdClass|arrayAssociative} — The object of parameters. See $this->parseText.
+ * @param $params {stdClass|arrayAssociative} — The parameters object. See $this->parseText.
*
* @return {string}
*/
private static function parseText_parepareParams($params = []): \stdClass {
- //For backward compatibility
+ // For backward compatibility
if (func_num_args() > 1){
- //Convert ordered list of params to named
+ // Convert ordered list of params to named
$params = self::orderedParamsToNamed([
'paramsList' => func_get_args(),
'compliance' => [
@@ -988,7 +988,7 @@ private static function parseText_parepareParams($params = []): \stdClass {
$params = \DDTools\Tools\Objects::extend([
'objects' => [
- //Defaults
+ // Defaults
(object) [
'text' => '',
'data' => null,
@@ -1006,9 +1006,9 @@ private static function parseText_parepareParams($params = []): \stdClass {
/**
* parseText_prepareData
- * @version 1.0.1 (2024-08-02)
+ * @version 1.0.2 (2024-08-04)
*
- * @param $params {stdClass|arrayAssociative} — The object of parameters. See $this->parseText.
+ * @param $params {stdClass|arrayAssociative} — The parameters object. See $this->parseText.
* @param $params->data {stdClass|array|string}
*
* @return {stdClass}
@@ -1018,7 +1018,7 @@ private static function parseText_prepareData($params = []): \stdClass {
$result = new \stdClass();
- //Arrays and objects are already ready to use
+ // Arrays and objects are already ready to use
if (
!is_object($params->data) &&
!is_array($params->data)
@@ -1038,7 +1038,7 @@ private static function parseText_prepareData($params = []): \stdClass {
is_object($value) ||
is_array($value)
){
- //Unfold for nested objects and arrays support (e. g. ['some' => ['a' => 'one', 'b' => 'two'] ] → '[+some.a+]', '[+some.b+]'; ['some' => ['one', 'two'] ] → '[+some.0+]', '[some.1]')
+ // Unfold for nested objects and arrays support (e. g. ['some' => ['a' => 'one', 'b' => 'two'] ] → '[+some.a+]', '[+some.b+]'; ['some' => ['one', 'two'] ] → '[+some.0+]', '[some.1]')
$unfoldedValue = \DDTools\Tools\Objects::unfold([
'object' => [
$key => $value
@@ -1054,7 +1054,7 @@ private static function parseText_prepareData($params = []): \stdClass {
$result->{$unfoldedValue_itemKey} = $unfoldedValue_itemValue;
}
- //Also add object value as JSON
+ // Also add object value as JSON
$value = \DDTools\Tools\Objects::convertType([
'object' => $value,
'type' => 'stringJsonAuto'
@@ -1069,9 +1069,9 @@ private static function parseText_prepareData($params = []): \stdClass {
/**
* parseText_parseItem
- * @version 1.1 (2024-06-06)
+ * @version 1.1.1 (2024-08-04)
*
- * @param $params {stdClass|arrayAssociative} — The object of parameters.
+ * @param $params {stdClass|arrayAssociative} — The parameters object.
* @param $params->text {string} — Source text.
* @param $params->placeholder {string} — Placeholder string, e. g. [+fullName+].
* @param $params->value {string} — Placeholder value.
@@ -1094,7 +1094,7 @@ private static function parseText_parseItem($params = []) :string {
/**
* parseSource
- * @version 1.1 (2018-12-24)
+ * @version 1.1.1 (2024-08-04)
*
* @desc Parse the source (run $modx->parseDocumentSource and $modx->rewriteUrls);
*
@@ -1103,7 +1103,7 @@ private static function parseText_parseItem($params = []) :string {
* @return {string}
*/
public static function parseSource($source){
- //Uncashed snippets must be evaled too
+ // Uncashed snippets must be evaled too
$source = strtr(
$source,
[
@@ -1117,11 +1117,11 @@ public static function parseSource($source){
/**
* clearCache
- * @version 1.1 (2020-02-11)
+ * @version 1.1.1 (2024-08-04)
*
* @desc Clears cache of required document(s) and their parents.
*
- * @param $params {stdClass|arrayAssociative} — Parameters, the pass-by-name style is used. @required
+ * @param $params {stdClass|arrayAssociative} — The parameters object. @required
* @param $params->docIds {arrayAssociative|stringCommaSeparated} — Document ID(s). @required
* @param $params->docIds[i] {integer} — Document ID. @required
* @param $params->clearParentsCache {boolean} — Is need to clear parents cache? Default: true.
@@ -1129,7 +1129,7 @@ public static function parseSource($source){
* @return {void}
*/
public static function clearCache($params){
- //Defaults
+ // Defaults
$params = (object) array_merge(
[
'clearParentsCache' => true,
@@ -1137,7 +1137,7 @@ public static function clearCache($params){
(array) $params
);
- //Comma separated strings support
+ // Comma separated strings support
if (!is_array($params->docIds)){
$params->docIds = explode(
',',
@@ -1157,14 +1157,14 @@ public static function clearCache($params){
$params->docIds as
$docId
){
- //$_GET cache
+ // $_GET cache
$cacheFiles = glob(
$cacheFilePrefix .
$docId .
'_*' .
$cacheFileSuffix
);
- //Without $_GET
+ // Without $_GET
$cacheFiles[] =
$cacheFilePrefix .
$docId .
@@ -1182,10 +1182,10 @@ public static function clearCache($params){
unlink($cacheFiles_item);
}
- //IF need to clear parents cache too
+ // IF need to clear parents cache too
if ($params->clearParentsCache){
self::clearCache([
- //Get all parents
+ // Get all parents
'docIds' => self::getDocumentParentIds([
'docId' => $docId
]),
@@ -1197,11 +1197,11 @@ public static function clearCache($params){
/**
* prepareDocData
- * @version 2.0.4 (2020-02-11)
+ * @version 2.0.5 (2024-08-04)
*
* @desc Prepare document data from single array of fields and TVs: separate them and get TV IDs if needed.
*
- * @param $params {stdClass|arrayAssociative} — Parameters, the pass-by-name style is used. @required
+ * @param $params {stdClass|arrayAssociative} — The parameters object. @required
* @param $params->data {stdClass|arrayAssociative} — Array of document fields (from table `site_content`) or TVs with values. @required
* @param $params->data->{$key} {mixed} — Field value (optional), when key is field name. The method use only keys, values just will be returned without changes. @required
* @param $params->tvAdditionalFieldsToGet {array} — Fields of TVs to get if needed (e. g. 'id', 'type'). Default: [].
@@ -1217,7 +1217,7 @@ public static function clearCache($params){
* @return $result->tvsAdditionalData[key][item] {string} — TV data.
*/
public static function prepareDocData($params){
- //Defaults
+ // Defaults
$params = (object) array_merge(
[
'tvAdditionalFieldsToGet' => []
@@ -1231,28 +1231,28 @@ public static function prepareDocData($params){
'tvsAdditionalData' => []
];
- //Перебираем поля, раскидываем на поля документа и TV
+ // Перебираем поля, раскидываем на поля документа и TV
foreach (
$params->data as
$data_itemFieldName =>
$data_itemFieldValue
){
- //Если это не поле документа
+ // Если это не поле документа
if (!in_array(
$data_itemFieldName,
self::$documentFields
)){
- //Запоминаем как TV`шку
+ // Запоминаем как TV`шку
$result->tvsData[$data_itemFieldName] = $data_itemFieldValue;
}else{
- //Save as document field
+ // Save as document field
$result->fieldsData[$data_itemFieldName] = $data_itemFieldValue;
}
}
if (
!empty($params->tvAdditionalFieldsToGet) &&
- //Если есть хоть одна TV
+ // Если есть хоть одна TV
count($result->tvsData) > 0
){
if (!in_array(
@@ -1262,9 +1262,9 @@ public static function prepareDocData($params){
$params->tvAdditionalFieldsToGet[] = 'name';
}
- //Получаем id всех необходимых TV
+ // Получаем id всех необходимых TV
$dbRes = self::$modx->db->select(
- //Fields
+ // Fields
(
'`' .
implode(
@@ -1273,9 +1273,9 @@ public static function prepareDocData($params){
) .
'`'
),
- //From
+ // From
self::$tables['site_tmplvars'],
- //Where
+ // Where
(
"`name` IN ('" .
implode(
@@ -1329,7 +1329,7 @@ private static function createDocument_prepareAlias($sourceString){
/**
* createDocument
- * @version 1.5.1 (2024-08-02)
+ * @version 1.5.2 (2024-08-04)
*
* @desc Create a new document.
*
@@ -1344,16 +1344,16 @@ public static function createDocument(
$docData = [],
$docGroups = false
){
- //Defaults
+ // Defaults
$docData = \DDTools\Tools\Objects::extend([
'objects' => [
(object) [
'pagetitle' => 'New resource',
- //Autotransliterate from pagetitle
+ // Autotransliterate from pagetitle
'alias' => '',
- //Если не передана дата создания документа, ставим текущую
+ // Если не передана дата создания документа, ставим текущую
'createdon' => time(),
- //Если не передано, кем документ создан, ставим 1
+ // Если не передано, кем документ создан, ставим 1
'createdby' => 1
],
$docData
@@ -1361,12 +1361,12 @@ public static function createDocument(
'overwriteWithEmpty' => false
]);
- //Если группы заданы, то это приватный документ
+ // Если группы заданы, то это приватный документ
if ($docGroups){
$docData->privatemgr = 1;
}
- //Если надо публиковать, поставим дату публикации текущей
+ // Если надо публиковать, поставим дату публикации текущей
if ($docData->published == 1){
$docData->pub_date = $docData->createdon;
}
@@ -1393,7 +1393,7 @@ public static function createDocument(
]
]);
- //Вставляем новый документ в базу, получаем id, если что-то пошло не так, выкидываем
+ // Вставляем новый документ в базу, получаем id, если что-то пошло не так, выкидываем
$docId = self::$modx->db->insert(
$docData->fieldsData,
self::$tables['site_content']
@@ -1403,58 +1403,58 @@ public static function createDocument(
return false;
}
- //Если есть хоть одна существующая TV
+ // Если есть хоть одна существующая TV
if (count($docData->tvsAdditionalData) > 0){
- //Перебираем массив TV с ID
+ // Перебираем массив TV с ID
foreach (
$docData->tvsAdditionalData as
$tvName =>
$tvData
){
if (
- //Если это дата
+ // Если это дата
$tvData['type'] == 'date' &&
- //И она задана как Unixtime
+ // И она задана как Unixtime
is_numeric($docData->tvsData[$tvName])
){
- //Приведём её к формату системы
+ // Приведём её к формату системы
$docData->tvsData[$tvName] = self::$modx->toDateFormat($docData->tvsData[$tvName]);
}
- //Добавляем значение TV в базу
+ // Добавляем значение TV в базу
self::$modx->db->insert(
- //Fields
+ // Fields
[
'value' => $docData->tvsData[$tvName],
'tmplvarid' => $tvData['id'],
'contentid' => $docId
],
- //Table
+ // Table
self::$tables['site_tmplvar_contentvalues']
);
}
}
- //Если заданы группы (и на всякий проверим ID)
+ // Если заданы группы (и на всякий проверим ID)
if ($docGroups){
- //Перебираем все группы
+ // Перебираем все группы
foreach (
$docGroups as
$docGroupId
){
self::$modx->db->insert(
- //Field
+ // Field
[
'document_group' => $docGroupId,
'document' => $docId
],
- //Table
+ // Table
self::$tables['document_groups']
);
}
}
- //Смотрим родителя нового документа, является ли он папкой и его псевдоним
+ // Смотрим родителя нового документа, является ли он папкой и его псевдоним
$docParent =
isset($docData->fieldsData['parent']) ?
$docData->fieldsData['parent'] :
@@ -1466,10 +1466,10 @@ public static function createDocument(
0
;
- //Пусть созданного документа
+ // Пусть созданного документа
$docPath = '';
- //Собираем путь в зависимости от пути родителя
+ // Собираем путь в зависимости от пути родителя
if(isset(self::$modx->aliasListing[$docParent]['path'])){
$docPath = self::$modx->aliasListing[$docParent]['path'];
@@ -1480,7 +1480,7 @@ public static function createDocument(
}
}
- //Добавляем в массивы documentMap и aliasListing информацию о новом документе
+ // Добавляем в массивы documentMap и aliasListing информацию о новом документе
self::$modx->documentMap[] = [$docParent => $docId];
self::$modx->aliasListing[$docId] = [
'id' => $docId,
@@ -1490,7 +1490,7 @@ public static function createDocument(
'isfolder' => $docIsFolder
];
- //Добавляем в documentListing
+ // Добавляем в documentListing
if(self::$modx->aliasListing[$docId]['path'] !== ''){
self::$modx->documentListing[
self::$modx->aliasListing[$docId]['path'] . '/' .
@@ -1507,7 +1507,7 @@ public static function createDocument(
/**
* updateDocument
- * @version 1.5.1 (2024-08-02)
+ * @version 1.5.2 (2024-08-04)
*
* @desc Update document(s). Cache of the updated docs and their parents will be cleared.
*
@@ -1524,7 +1524,7 @@ public static function updateDocument(
$docData = [],
$where = ''
){
- //Required parameters
+ // Required parameters
if (
$docId == 0 &&
trim($where) == ''
@@ -1534,11 +1534,11 @@ public static function updateDocument(
$docData = \DDTools\Tools\Objects::extend([
'objects' => [
- //Defaults
+ // Defaults
(object) [
- //Если не передана дата изменения документа, ставим текущую
+ // Если не передана дата изменения документа, ставим текущую
'editedon' => time(),
- //Если не передано, кем документ изменён, ставим 1
+ // Если не передано, кем документ изменён, ставим 1
'editedby' => 1
],
$docData
@@ -1552,7 +1552,7 @@ public static function updateDocument(
is_array($docId) &&
count($docId)
){
- //Обрабатываем массив id
+ // Обрабатываем массив id
$whereSql .=
'`id` IN ("' .
implode(
@@ -1565,11 +1565,11 @@ public static function updateDocument(
is_numeric($docId) &&
$docId != 0
){
- //Обрабатываем числовой id
+ // Обрабатываем числовой id
$whereSql .= '`id`="' . $docId . '"';
}
- //Добавляем дополнительное условие
+ // Добавляем дополнительное условие
if ($where != ''){
$whereSql .=
(
@@ -1581,7 +1581,7 @@ public static function updateDocument(
;
}
- //Получаем id документов для обновления
+ // Получаем id документов для обновления
$docIdsToUpdate_dbRes = self::$modx->db->select(
'id',
self::$tables['site_content'],
@@ -1602,7 +1602,7 @@ public static function updateDocument(
$docData->{$fieldName} = self::$modx->db->escape($fieldValue);
}
- //Разбиваем на поля документа и TV
+ // Разбиваем на поля документа и TV
$docData = self::prepareDocData([
'data' => $docData,
'tvAdditionalFieldsToGet' => [
@@ -1611,7 +1611,7 @@ public static function updateDocument(
]
]);
- //Обновляем информацию по документу
+ // Обновляем информацию по документу
if (count($docData->fieldsData) > 0){
self::$modx->db->update(
$docData->fieldsData,
@@ -1620,38 +1620,38 @@ public static function updateDocument(
);
}
- //Если есть хоть одна TV
+ // Если есть хоть одна TV
if (count($docData->tvsAdditionalData) > 0){
- //Обновляем TV всех найденых документов
+ // Обновляем TV всех найденых документов
foreach (
$docIdsToUpdate as
$docId
){
- //Перебираем массив существующих TV
+ // Перебираем массив существующих TV
foreach (
$docData->tvsAdditionalData as
$tvName =>
$tvData
){
if (
- //Если это дата
+ // Если это дата
$tvData['type'] == 'date' &&
- //И она задана как Unixtime
+ // И она задана как Unixtime
is_numeric($docData->tvsData[$tvName])
){
- //Приведём её к формату системы
+ // Приведём её к формату системы
$docData->tvsData[$tvName] = self::$modx->toDateFormat($docData->tvsData[$tvName]);
}
- //Пробуем обновить значение нужной TV
+ // Пробуем обновить значение нужной TV
self::$modx->db->update(
'`value` = "' . $docData->tvsData[$tvName] . '"',
self::$tables['site_tmplvar_contentvalues'],
'`tmplvarid` = ' . $tvData['id'] . ' AND `contentid` = ' . $docId
);
- //Проверяем сколько строк нашлось при обновлении
- //Если используется mysqli
+ // Проверяем сколько строк нашлось при обновлении
+ // Если используется mysqli
if(is_a(
self::$modx->db->conn,
'mysqli'
@@ -1662,7 +1662,7 @@ public static function updateDocument(
$updatedRows
);
}else{
- //Если self::$modx->db->conn не является экземпляром mysqli, то пробуем через устаревший mysql_info
+ // Если self::$modx->db->conn не является экземпляром mysqli, то пробуем через устаревший mysql_info
preg_match(
'/Rows matched: (\d+)/',
mysql_info(),
@@ -1670,9 +1670,9 @@ public static function updateDocument(
);
}
- //Если ничего не обновилось (не нашлось)
+ // Если ничего не обновилось (не нашлось)
if ($updatedRows[1] == 0){
- //Добавляем значение нужной TV в базу
+ // Добавляем значение нужной TV в базу
self::$modx->db->insert(
[
'value' => $docData->tvsData[$tvName],
@@ -1686,7 +1686,7 @@ public static function updateDocument(
}
}
- //Clear cache of updated docs
+ // Clear cache of updated docs
self::clearCache([
'docIds' => $docIdsToUpdate
]);
@@ -1694,13 +1694,13 @@ public static function updateDocument(
return true;
}
- //Нечего обновлять
+ // Нечего обновлять
return false;
}
/**
* getDocuments
- * @version 1.2.8 (2020-02-11)
+ * @version 1.2.9 (2024-08-04)
*
* @desc Returns required documents (documents fields).
*
@@ -1730,7 +1730,7 @@ public static function getDocuments(
$dir = 'ASC',
$limit = ''
){
- //Проверка на устаревшее значение $published
+ // Проверка на устаревшее значение $published
if($published === false){
$published = 'all';
@@ -1739,7 +1739,7 @@ public static function getDocuments(
]);
}
- //Проверка на устаревшее значение $deleted === false
+ // Проверка на устаревшее значение $deleted === false
if($deleted === false){
$deleted = 'all';
@@ -1815,14 +1815,14 @@ public static function getDocuments(
;
$result = self::$modx->db->select(
- //Fields
+ // Fields
'DISTINCT ' . $fields,
- //From
+ // From
self::$tables['site_content'] . ' sc
LEFT JOIN ' . self::$tables['document_groups'] . ' dg
ON dg.document = sc.id
',
- //Where
+ // Where
(
'(sc.id IN (' .
implode(
@@ -1837,13 +1837,13 @@ public static function getDocuments(
$where .
') GROUP BY sc.id'
),
- //Order
+ // Order
(
$sort ?
$sort . ' ' . $dir :
''
),
- //Limit
+ // Limit
$limit
);
@@ -1855,7 +1855,7 @@ public static function getDocuments(
/**
* getDocument
- * @version 1.1.6 (2018-06-17)
+ * @version 1.1.7 (2024-08-04)
*
* @desc Returns required data of a document (document fields).
*
@@ -1877,7 +1877,7 @@ public static function getDocument(
$published = 'all',
$deleted = 0
){
- //Проверка на устаревшее значение $published
+ // Проверка на устаревшее значение $published
if($published === false){
$published = 'all';
@@ -1886,7 +1886,7 @@ public static function getDocument(
]);
}
- //Проверка на устаревшее значение $deleted === false
+ // Проверка на устаревшее значение $deleted === false
if($deleted === false){
$deleted = 'all';
@@ -1919,7 +1919,7 @@ public static function getDocument(
/**
* getTemplateVars
- * @version 1.3.10 (2021-02-24)
+ * @version 1.3.11 (2024-08-04)
*
* @desc Returns the TV and fields array of a document.
*
@@ -1944,7 +1944,7 @@ public static function getTemplateVars(
$sort = 'rank',
$dir = 'ASC'
){
- //Проверка на устаревшее значение $published
+ // Проверка на устаревшее значение $published
if($published === false){
$published = 'all';
@@ -2034,26 +2034,26 @@ public static function getTemplateVars(
}
$rs = self::$modx->db->select(
- //Fields
+ // Fields
(
$fields .
', IF(tvc.value != "", tvc.value, tv.default_text) as value'
),
- //From
+ // From
self::$tables['site_tmplvars'] . ' tv
INNER JOIN ' . self::$tables['site_tmplvar_templates'] . ' tvtpl
ON tvtpl.tmplvarid = tv.id
LEFT JOIN ' . self::$tables['site_tmplvar_contentvalues'] . ' tvc
ON tvc.tmplvarid=tv.id AND tvc.contentid = "' . $docid . '"
',
- //Where
+ // Where
(
$query .
' AND tvtpl.templateid = "' .
$docRow['template'] .
'"'
),
- //Order
+ // Order
(
$sort ?
$sort . ' ' . $dir :
@@ -2094,7 +2094,7 @@ public static function getTemplateVars(
/**
* getTemplateVarOutput
- * @version 1.1.9 (2021-02-24)
+ * @version 1.1.10 (2024-08-04)
*
* @desc Returns the associative array of fields and TVs of a document.
*
@@ -2115,7 +2115,7 @@ public static function getTemplateVarOutput(
$published = 'all',
$sep = ''
){
- //Проверка на устаревшее значение $published
+ // Проверка на устаревшее значение $published
if($published === false){
$published = 'all';
@@ -2204,7 +2204,7 @@ public static function getTemplateVarOutput(
/**
* getDocumentChildren
- * @version 1.2.7 (2020-02-11)
+ * @version 1.2.8 (2024-08-04)
*
* @desc Returns the associative array of a document fields.
*
@@ -2234,7 +2234,7 @@ public static function getDocumentChildren(
$dir = 'ASC',
$limit = ''
){
- //Проверка на устаревшее значение $published
+ // Проверка на устаревшее значение $published
if($published === false){
$published = 'all';
@@ -2243,7 +2243,7 @@ public static function getDocumentChildren(
]);
}
- //Проверка на устаревшее значение $deleted === false
+ // Проверка на устаревшее значение $deleted === false
if($deleted === false){
$deleted = 'all';
@@ -2267,7 +2267,7 @@ public static function getDocumentChildren(
$where = 'AND ' . $where;
}
- // modify field names to use sc. table reference
+ // Modify field names to use sc. table reference
$fields =
'sc.' .
implode(
@@ -2299,7 +2299,7 @@ public static function getDocumentChildren(
)
;
- // get document groups for current user
+ // Get document groups for current user
if ($docgrp = self::$modx->getUserDocGroups()){
$docgrp = implode(
',',
@@ -2307,7 +2307,7 @@ public static function getDocumentChildren(
);
}
- // build query
+ // Build query
$access =
(
self::$modx->isFrontend() ?
@@ -2322,14 +2322,14 @@ public static function getDocumentChildren(
;
$result = self::$modx->db->select(
- //Fields
+ // Fields
'DISTINCT ' . $fields,
- //From
+ // From
self::$tables['site_content'] . ' sc
LEFT JOIN '.self::$tables['document_groups'] . ' dg
ON dg.document = sc.id
',
- //Where
+ // Where
(
'sc.parent = "' .
$parentid .
@@ -2343,13 +2343,13 @@ public static function getDocumentChildren(
$access .
') GROUP BY sc.id'
),
- //Order
+ // Order
(
$sort ?
$sort . ' ' . $dir :
''
),
- //Limit
+ // Limit
$limit
);
@@ -2360,7 +2360,7 @@ public static function getDocumentChildren(
/**
* getDocumentChildrenTVarOutput
- * @version 1.3.5 (2021-03-09)
+ * @version 1.3.6 (2024-08-04)
*
* @desc Get necessary children of document.
*
@@ -2390,7 +2390,7 @@ public static function getDocumentChildrenTVarOutput(
$where = '',
$resultKey = 'id'
){
- //Получаем всех детей
+ // Получаем всех детей
$docs = self::getDocumentChildren(
$parentid,
$published,
@@ -2401,7 +2401,7 @@ public static function getDocumentChildrenTVarOutput(
$sortDir
);
- //Если ничего не получили, выкидываем
+ // Если ничего не получили, выкидываем
if (!$docs){
return false;
}else{
@@ -2433,7 +2433,7 @@ public static function getDocumentChildrenTVarOutput(
}
}
- //Перебираем все документы
+ // Перебираем все документы
for (
$i = 0;
$i < count($docs);
@@ -2445,9 +2445,9 @@ public static function getDocumentChildrenTVarOutput(
$published
);
- //Если что-то есть
+ // Если что-то есть
if ($tvs){
- //Если нужно в качестве ключа использовать не индекс и такое поле есть
+ // Если нужно в качестве ключа использовать не индекс и такое поле есть
if (
$resultKey !== false &&
array_key_exists(
@@ -2455,14 +2455,14 @@ public static function getDocumentChildrenTVarOutput(
$tvs
)
){
- //Записываем результат с соответствующим ключом
+ // Записываем результат с соответствующим ключом
$result[$tvs[$resultKey]] = $tvs;
if ($unsetResultKey){
unset($result[$tvs[$resultKey]][$resultKey]);
}
}else{
- //Просто накидываем по индексу
+ // Просто накидываем по индексу
$result[] = $tvs;
}
}
@@ -2474,14 +2474,14 @@ public static function getDocumentChildrenTVarOutput(
/**
* regEmptyClientScript
- * @version 1.1.3 (2019-06-22)
+ * @version 1.1.4 (2024-08-04)
*
* @desc Adds a required JS-file into a required MODX inner list according to its version and name. The method is used to register the scripts, that has already been connected manually.
* Be advised that the method does not add script code, but register its name and version to avoid future connections with $modx->regClientScript and $modx->regClientStartupScript, and the script code will be deleted if the script had been connected with $modx->regClientScript or $modx->regClientStartupScript.
*
* @see ddRegJsCssLinks snippet (http://code.divandesign.ru/modx/ddregjscsslinks), предназначенный для «правильного» подключения js и css. Даже при «ручном» подключении сниппет регистрирует то, что подключил, используя данный метод.
*
- * @param $params {stdClass|arrayAssociative} — Parameters, the pass-by-name style is used. @required
+ * @param $params {stdClass|arrayAssociative} — The parameters object. @required
* @param $params->name {string} — Script name. @required
* @param $params->version {string} — Script version. Default: '0'.
* @param $params->startup {boolean} — Is the script connected in the ? Default: false.
@@ -2494,7 +2494,7 @@ public static function getDocumentChildrenTVarOutput(
* @return $result['pos'] {integer} — Ключ зарегистрированного скрипта в соответствующем внутреннем массиве MODX.
*/
public static function regEmptyClientScript($params = []){
- //Defaults
+ // Defaults
$params = (object) array_merge(
[
'name' => '',
@@ -2504,69 +2504,69 @@ public static function regEmptyClientScript($params = []){
(array) $params
);
- //Required params
+ // Required params
if (empty($params->name)){
return '';
}
- //Приведём имя к нижнему регистру (чтоб сравнивать потом проще было, ведь нам пофиг)
+ // Приведём имя к нижнему регистру (чтоб сравнивать потом проще было, ведь нам пофиг)
$name = strtolower($params->name);
- //Если версия не задана, будет нулевая (полезно дальше при сравнении version_compare)
+ // Если версия не задана, будет нулевая (полезно дальше при сравнении version_compare)
$version =
isset($params->version) ?
strtolower($params->version) :
'0'
;
- //Куда подключён скрипт: перед , или перед