{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":98465828,"defaultBranch":"master","name":"hipot.framework","ownerLogin":"hipot-studio","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-07-26T21:05:30.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/158217516?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1501103131.0","currentOid":""},"activityList":{"items":[{"before":"a8da786f319c00be048c02d1b99d13767ac8b68a","after":"46d5e873b3c7f55708a23ceee0e7ddd2994d22cc","ref":"refs/heads/master","pushedAt":"2024-08-09T15:10:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Now IblockAbstractLayer has numeric property ID in phpDocs.\n\nintroduced a new method in EventHelper.php for setting property values efficiently.\n\nAdded `secondsToTimeString` and `timeToIso8601Duration` functions in DateTimeUtils.php for better time conversion (it's need to rewrite, todos)\n\nAdd methods to clean unused basket properties on events\n\nIntegrated two event handlers in `handlers_add.php` to trigger the cleanup of unused basket properties upon adding an item to the basket and upon saving an order. Also, implemented the `deleteUnUsedBasketProps` method in `Sale.php` to execute the actual deletion in the database.","shortMessageHtmlLink":"Now IblockAbstractLayer has numeric property ID in phpDocs."}},{"before":"9bf4bec418dc6997b35bff397e19c8e3314823e4","after":"a8da786f319c00be048c02d1b99d13767ac8b68a","ref":"refs/heads/master","pushedAt":"2024-07-20T00:00:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"ViewModel 2.0\n\nBitrix drop highloadblock 24.0 and we respond it's with a new version of ViewModel's -\nhere is no names with Table suffixes. Now used Model-suffix:\n\nex. HiBlock -> HiBlockTable (ViewModel 1.0) -> HiBlockModel (ViewModel 2.0)","shortMessageHtmlLink":"ViewModel 2.0"}},{"before":"af05a0d07ee8d9de3fb2c8c60f1ce1dc40ebabb8","after":"9bf4bec418dc6997b35bff397e19c8e3314823e4","ref":"refs/heads/master","pushedAt":"2024-07-18T16:38:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"iblock 24.0: no more $el->LAST_ERROR","shortMessageHtmlLink":"iblock 24.0: no more $el->LAST_ERROR"}},{"before":"bd2fa0d471d2a1a7f8c1f75d8ca46df5052ae020","after":"af05a0d07ee8d9de3fb2c8c60f1ce1dc40ebabb8","ref":"refs/heads/master","pushedAt":"2024-07-18T15:35:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Add functionality to create user-d0 in handlers_add.php\n\nIn handlers_add.php, code to establish user-d0 to work in agents has been added. This addition allows $USER to be assigned the value of BitrixEngine::getCurrentUserD0() when $USER is null.","shortMessageHtmlLink":"Add functionality to create user-d0 in handlers_add.php"}},{"before":"3c0272540737c2a5f98661257d34f9801f94dbb2","after":"bd2fa0d471d2a1a7f8c1f75d8ca46df5052ae020","ref":"refs/heads/master","pushedAt":"2024-07-13T16:18:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Update string sanitization in StringUtils\n\nIn the StringUtils class, we've made improvements to how we sanitize strings. Specifically, we've modified the tidy repairString method properties to focus on the 'show-body-only' aspect. This change ensures a more efficient string cleanup process.","shortMessageHtmlLink":"Update string sanitization in StringUtils"}},{"before":"318e01fd8f33feb781874f35d6f908be24a7b72f","after":"3c0272540737c2a5f98661257d34f9801f94dbb2","ref":"refs/heads/master","pushedAt":"2024-07-10T22:13:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Update constants, optimize event handling and refactor utilities\n\n- Implemented caching on CONTENT_MANAGER_GID constant and Utilized 'Hipot\\BitrixUtils\\PhpCacher' for caching enhancements\n- Enhanced event handling by optimizing CSS and JavaScript on specific conditions\n- Refactored StringUtils, ContextUtils, DateTimeUtils, ComponentUtils, and UserFieldUtils\n- The utilities are moved into a Helper sub-namespace for clearer structure\n- StringUtils: Used Json::encode instead of \\CUtil::PhpToJSObject for better handling of site JavaScript configurations\n- Optimized CSS and JavaScript handling from page events when 'sources' are present in the request\n- Renamed and relocated miscellaneous utility classes to maintain project structure","shortMessageHtmlLink":"Update constants, optimize event handling and refactor utilities"}},{"before":"b24a1a10fcb7b8e4c4cc0e7af7fd30be1d094895","after":"318e01fd8f33feb781874f35d6f908be24a7b72f","ref":"refs/heads/master","pushedAt":"2024-07-06T16:57:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Update Recaptcha3 and StringUtils classes\n\n- Recaptcha3 class: Added async attribute to script tag for loading Recaptcha api. Accommodated for scenarios where grecaptcha may be undefined or grecaptcha.execute may not exist during initial website load.\n- StringUtils class: Extend list of allowed HTML tags in getClearHtmlValue method to include 'strong'. Apply tidy repairs if tidy class exists.","shortMessageHtmlLink":"Update Recaptcha3 and StringUtils classes"}},{"before":"0344edc1231101dcb05da651f7f69fc82da4c75a","after":"b24a1a10fcb7b8e4c4cc0e7af7fd30be1d094895","ref":"refs/heads/master","pushedAt":"2024-07-05T18:27:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Added a new method `orderHasPayedInHistory` in `SaleUtils` to check if an order has been paid in its historical changes.","shortMessageHtmlLink":"Added a new method orderHasPayedInHistory in SaleUtils to check i…"}},{"before":"f79ca18c57c4575e912c5571b6207f75b181f689","after":"0344edc1231101dcb05da651f7f69fc82da4c75a","ref":"refs/heads/master","pushedAt":"2024-07-03T15:52:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Update iblock.menu_ext component and description\n\n- Added `SerializableClosure` class to component\n- Updated functionality to allow modification of items through `MODIFY_ITEM` parameter\n- Updated parameters in description file\n- Various formatting improvements for better code readability\n- Updated component version and copyright year","shortMessageHtmlLink":"Update iblock.menu_ext component and description"}},{"before":"bb8fbad5181ea91fa96f49dfaabf17d8cba8264b","after":"f79ca18c57c4575e912c5571b6207f75b181f689","ref":"refs/heads/master","pushedAt":"2024-06-26T22:15:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Add 'use_lock' option and SessionLocalStorageManager in BitrixEngine\n\n- Added 'use_lock' to the options array in '.settings_extra.php'\n- Included instance of SessionLocalStorageManager in the BitrixEngine class constructor parameters\n\nThese changes enable locking mechanism in the cache system and add session local storage management through Bitrix's SessionLocalStorageManager class.","shortMessageHtmlLink":"Add 'use_lock' option and SessionLocalStorageManager in BitrixEngine"}},{"before":"1b72f0d679aec98d91c500aaeac9c69def2a6d93","after":"bb8fbad5181ea91fa96f49dfaabf17d8cba8264b","ref":"refs/heads/master","pushedAt":"2024-06-18T14:37:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"\"Added BitrixEngine service and improved code readability\"\n\n- Integrated BitrixEngine service in various classes for improved functionality.\n- Refactored some pieces of code for better readability.\n- Removed unnecessary global variables in setComponentEdit method.\n- Fixed the wrong class usage in 'SELECT_CHAINS' check.\n- Updated the selectElementsByFilterArray method return type hint for better clarity.\n- Added addComponentPanelButtons method to add buttons to a Bitrix component panel.\n- Added checks for user authorization and show include areas in component parameters.","shortMessageHtmlLink":"\"Added BitrixEngine service and improved code readability\""}},{"before":"4dceddb38b7de57cabaf19275b76c69e0fd28308","after":"1b72f0d679aec98d91c500aaeac9c69def2a6d93","ref":"refs/heads/master","pushedAt":"2024-06-16T22:12:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Add new classes and trait for Bitrix agent utility\n\n- Introduce `AgentHelper.php` class which consists of utility methods related to the Bitrix agent such as creating agent names and converting arguments to string.\n- Include `AgentTask.php`, a class that allows building and adding new agents to the Bitrix queue.\n- Add `AgentTrait.php` trait designed to help any class to work as an agent within the Bitrix scheme.\n- These enhancements improve the handling of Bitrix agents by providing specific tools, including methods for scheduling tasks, managing agent attributes, and ensuring agent operation.\n\nthx to Nota.media with console-jedi","shortMessageHtmlLink":"Add new classes and trait for Bitrix agent utility"}},{"before":"e6f2c372b6a72109bd4921e44331613ad9397bcd","after":"4dceddb38b7de57cabaf19275b76c69e0fd28308","ref":"refs/heads/master","pushedAt":"2024-06-13T19:14:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Update ReCAPTCHA service and security settings\n\n- Changed the CONFIG_FILE and OK_IPS_FILE paths in ReCAPTCHA service class.\n- Extended the areas of the site protected by ReCAPTCHA.\n- Added a customized reCAPTCHA badge to the site's footer.\n- Refined the IP address blocking mechanism by further structuring the addToSecurityStopList function, and changing the intervalDayCheck from 1 to 2.\n- Improved the accuracy of the area locking mechanism.\n- Added a function to add IP addresses to the security stop list.","shortMessageHtmlLink":"Update ReCAPTCHA service and security settings"}},{"before":"fa5cb48f2524be47d67ed52671e23aee4c32e313","after":"e6f2c372b6a72109bd4921e44331613ad9397bcd","ref":"refs/heads/master","pushedAt":"2024-06-12T15:34:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Add user-defined fields to IblockGenerateSxem class\n- These user-defined fields are now being written to the `fileGenerate` file.\n\nTool is used to find FIELD_NAME's UF-fields concrete SITE_NAME with concrete ENTITY_ID:\n__UfFieldsList_#SITE_NAME#::#ENTITY_ID#__#FIELD_NAME#\n\nexamples:\n__UfFieldsList_BX_LAST::USER___| <-- HINTS ALL UF_FILEDS RELAED ENTITY USER\n__UfFieldsList_BX_LAST::USER___UF_DEPARTMENT | See UF-field NAME: UF_DEPARTMENT\n\n__UfFieldsList_BX_LAST::BLOG_POST___ | <-- HINTS ALL UF_FILEDS RELAED ENTITY BLOG_POST\n__UfFieldsList_BX_LAST::BLOG_POST___UF_CATEGORY_CODE | See UF-field code: UF_CATEGORY_CODE","shortMessageHtmlLink":"Add user-defined fields to IblockGenerateSxem class"}},{"before":"f152fa4bbfdd7d9b6c0c4ca0fb87e04c4b5a669f","after":"fa5cb48f2524be47d67ed52671e23aee4c32e313","ref":"refs/heads/master","pushedAt":"2024-06-12T14:55:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Add EntityHelper class and update usage in other classes\n\n- Added a new class `EntityHelper` under the `Hipot\\Model` namespace.\n- Updated `Iblock.php` to replace pseudoModel class instantiation with `EntityHelper`.\n- Implemented `getRowField` method in EntityHelper to get the value of a specific field from a row.\n- Updated `Recaptcha3.php` to use `getRowField` from `EntityHelper` to get 'IPRULE_ID'.\n- Expanded `EO_Utils.php` to include the `getRowField` method stub and docstring.","shortMessageHtmlLink":"Add EntityHelper class and update usage in other classes"}},{"before":"fe05b1dc03408b22bc921e147432d677c28dc83f","after":"f152fa4bbfdd7d9b6c0c4ca0fb87e04c4b5a669f","ref":"refs/heads/master","pushedAt":"2024-06-11T18:08:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Update PHP version requirement in README\n\n- Updated the required PHP version from 8.0+ to 8.1+ in both README.md and hipot.framework2/README.md","shortMessageHtmlLink":"Update PHP version requirement in README"}},{"before":"655f89b9ace733f6596b8b4d203641e25c08923b","after":"fe05b1dc03408b22bc921e147432d677c28dc83f","ref":"refs/heads/master","pushedAt":"2024-06-10T16:57:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Refactor Recaptcha3 blocking logic and modify FfmpegExec to add debug option\n\n- Modified blocking of Recaptcha3 ips by reorganizing condition checks for improved clarity.\n- Updated the Loader logic to exit if the 'security' method is not available.\n- Modified the logic for updating security rules for blocked IPs to include counter for multiple rule invocation.\n- Modified CLI command execution logic in FfmpegExec to include a debug output in case the IS_DEBUG property is set to true.\n- Added file size check to ensure the resized file is greater than 1mb.","shortMessageHtmlLink":"Refactor Recaptcha3 blocking logic and modify FfmpegExec to add debug…"}},{"before":"e593ccfb190d9d4b1f983635080fabb6e7bf7b8c","after":"655f89b9ace733f6596b8b4d203641e25c08923b","ref":"refs/heads/master","pushedAt":"2024-05-23T21:48:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Update image handling and asset management logic\n\nChanges include:\n\n- Updated the `Img` class in version 5.0 to add additional methods, properties and to refactor existing methods for image transformation.\nnew usage:\n\t// in component template:\n\tuse Hipot\\Utils\\Img as hiImg;\n\t$imgResizer = hiImg::getInstance([\n\t\t'tag' => basename(__DIR__),\n\t\t'decodeToFormat' => 'webp',\n\t\t'saveAlpha' => false\n\t]);\n\t$arResult['SEO_IMAGE'] = $imgResizer->doResize($arResult['DETAIL_PICTURE'][\"ID\"], 1000, null, hiImg::M_PROPORTIONAL, true);\n\n\t$imgResizer->setJpgQuality(75);\n\t$arResult[\"PRELOAD_IMAGE\"] = $imgResizer->doResize($arResult['DETAIL_PICTURE'][\"ID\"], 345, null, hiImg::M_PROPORTIONAL, true);\n\n\t$imgResizer->setJpgQuality(0); // set default quality\n\t$imgResizer->setTagInternal( basename(__DIR__) );\n\t$imgResizer->setDecodeToFormat('webp');\n\t$arResult[\"DETAIL_PICTURE\"] = $imgResizer->doResize($arResult['DETAIL_PICTURE'][\"ID\"], 750, null, hiImg::M_PROPORTIONAL, true);\n\n\t// old deprecated way still works, per resize need one oneResizeParams-calls\n\thiImg::oneResizeParams([\n\t\t'tag' => basename(__DIR__) . '_icon_benefits',\n\t\t'decodeToFormat' => 'webp'\n\t]);\n\thiImg::setTag( basename(__DIR__) . '_icon_benefits' );\n\t$ico['PREVIEW_PICTURE_IMG'] = hiImg::resize($ico['PREVIEW_PICTURE'], 60, 60, Img::M_FULL_S, true, static function (hiImg $me) {\n\t\t$me->getProcessEngine()->sharpen(12);\n\t});\n\n- Added lib to serialization of Closure in PHP project.\n- Updated the AssetsContainer class to include the filename in the output CSS.\n\nThis commit enhances the existing image management functionality and makes it more flexible and powerful. It improves usability and sets a foundation for further improvements in the future.","shortMessageHtmlLink":"Update image handling and asset management logic"}},{"before":"fe91b60b4f436c0c5dd8a95522c3b9d3978628f2","after":"e593ccfb190d9d4b1f983635080fabb6e7bf7b8c","ref":"refs/heads/master","pushedAt":"2024-05-22T13:02:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Added new methods to BitrixEngine class\n\n- Added `getCurrentUserD0` method to retrieve the current user from the global $USER variable\n- Added `getAppD0` method to retrieve the main application object from the global $APPLICATION variable","shortMessageHtmlLink":"Added new methods to BitrixEngine class"}},{"before":"87963bc6a8330a00f31028ec55a3cdea829117df","after":"fe91b60b4f436c0c5dd8a95522c3b9d3978628f2","ref":"refs/heads/master","pushedAt":"2024-05-15T23:52:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Refactor and update JavaScript code in the app\n\n- Refactored and updated JavaScript code for jQuery.center.js, lib.js and main_checker_script.js\n- Updated the plugins' versioning.\n- Replaced deprecated functions with new ones.\n- Introduced improvements to avoid memory leaks.\n- Updated $(selector).bind() to $(selector).on() and $(selector).unbind() to $(selector).off(), as bind() and unbind() have been deprecated in the newer versions of jQuery.\n- Used let and const instead of var for variable declaration.\n- Improved code readability and performance.\n- Fixed some code typos and comments.\n- Simplified some conditional statements.\n- Corrected formatting and styling for consistency.","shortMessageHtmlLink":"Refactor and update JavaScript code in the app"}},{"before":"2575f95f119037083e2a871fb49fecc520cf8ecf","after":"87963bc6a8330a00f31028ec55a3cdea829117df","ref":"refs/heads/master","pushedAt":"2024-05-15T14:56:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Refactor JavaScript function documentation and logic\n\n- Rewrite function descriptions, params, and returns to align with standard practices.\n- Add ajax support for file sending and error handling in `getResultFromUrl` function.\n- Use native string trimming method in `trim` function.\n- Refactor the `imgPreloader` function to use let instead of var for variable declaration.\n- Add `downloadFile` function for client-side file downloading.","shortMessageHtmlLink":"Refactor JavaScript function documentation and logic"}},{"before":"5e28e126c2625be260d9c32ea029c37f15f3427a","after":"2575f95f119037083e2a871fb49fecc520cf8ecf","ref":"refs/heads/master","pushedAt":"2024-05-14T21:03:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Add function to get payment system service by order\n\nThe function 'getPaySystemServiceByOrder' has been added to the 'Sale' class. This function retrieves the payment system service for a given order, returning these as an array. The necessary exceptions for possible errors have been provided as well. Further error handling may be necessary depending on the context in which this function is used.","shortMessageHtmlLink":"Add function to get payment system service by order"}},{"before":"10bab5d49aef82747da4c7c17f8cb9300a4a0559","after":"5e28e126c2625be260d9c32ea029c37f15f3427a","ref":"refs/heads/master","pushedAt":"2024-05-13T19:24:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Abstract Iblock Elements Layer has next update.\n\n- Now is may use only generator to see props and its codes. Use - copy only GenerateSxem-namespace and iblock_layer_model.php init-script\n- If no LINK_IBLOCK_ID in property set, use base iblock class - IblockElementItem","shortMessageHtmlLink":"Abstract Iblock Elements Layer has next update."}},{"before":"6e41949cf9b0cf5bb1cc11d72b17b04b941d424b","after":"10bab5d49aef82747da4c7c17f8cb9300a4a0559","ref":"refs/heads/master","pushedAt":"2024-05-11T16:27:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Abstract Iblock Elements Layer has next update.\n\nNow autocomplete is more powerful.\n\n- Add config constants: ABSTRACT_LAYER_SELECT_CHAINS_DEPTH, ABSTRACT_LAYER_ANNOTATIONS_FILE\n- Update annotation generator - now it has iblock codes (ex. when code is \"ClothesOffers\" then helper is \\__IblockElementItem_BX_LAST_ClothesOffers_3)\n- Updated several classes in the library including Types\\ObjectArItem add Container\\Traversable to iterate properties (ex. foreach $ibItem->PROPERTIES)\n- Now 'PROPERTIES'-key is Container\n\nSmall example to use library:\n\n\td(\\CFile::FormatSize(memory_get_usage(true)));\n\n\t$resultChains = hiIblockElemLinkedChains::getList(\n\t\t['ID' => 'ASC'],\n\t\t['IBLOCK_ID' => 3, '>=ID' => 232],\n\t\tfalse, ['nTopCount' => 1],\n\t\t['ID', 'NAME', 'TIMESTAMP_X', 'ACTIVE', 'PROPERTY_CML2_LINK', 'PROPERTY_CML2_LINK.PROPERTY_NEWPRODUCT']\n\t);\n\n\t// see iblock 3 properties to use in getList:\n\tforeach ($resultChains as $ibItem) {\n\t\t/* @var $ibItem \\__IblockElementItem_BX_LAST_ClothesOffers_3 */\n\n\t\t// link element params\n\t\td($ibItem->PROPERTIES->CML2_LINK->CHAIN->PROPERTIES->MANUFACTURER->NAME);\n\t\t// link element params via getList\n\t\td($ibItem->PROPERTY_CML2_LINK_PROPERTY_NEWPRODUCT_ENUM_ID);\n\t\t// file params\n\t\t$f = $ibItem->PROPERTIES->MORE_PHOTO[0]->FILE_PARAMS->SRC;\n\t\t// has functional of Container\n\t\td($ibItem->PROPERTIES->count(), $ibItem->PROPERTIES->CML2_LINK->CHAIN->toArray());\n\n\t\t// standard element fields\n\t\td($ibItem->ID . '::' . $ibItem->NAME . '::');\n\n\t\t// iterator to main good props\n\t\tforeach ($ibItem->PROPERTIES->CML2_LINK->CHAIN->PROPERTIES as $propCode => $prop) {\n\n\t\t\t$getPropValue = static function ($prop) {\n\t\t\t\tif ($prop->isFile()) {\n\t\t\t\t\t/** @var IblockElementItemPropertyValueFile $prop */\n\t\t\t\t\t$value = $prop->FILE_PARAMS->SRC;\n\t\t\t\t} else if ($prop->isLinkElem()) {\n\t\t\t\t\t/** @var IblockElementItemPropertyValueLinkElem $prop */\n\t\t\t\t\t$value = $prop->CHAIN->NAME;\n\t\t\t\t} else {\n\t\t\t\t\t$value = $prop->VALUE;\n\t\t\t\t}\n\t\t\t\treturn $value;\n\t\t\t};\n\n\t\t\t/** @var IblockElementItemPropertyValue | IblockElementItemPropertyValue[] $prop */\n\n\t\t\t// multiple props - is array of objects\n\t\t\tif (is_array($prop)) {\n\t\t\t\t$values = [];\n\t\t\t\tforeach ($prop as $propValue) {\n\t\t\t\t\t/** @var IblockElementItemPropertyValue $propValue */\n\t\t\t\t\t$values[] = $getPropValue($propValue);\n\t\t\t\t}\n\t\t\t\t$value = implode(', ', $values);\n\t\t\t} else {\n\t\t\t\t$value = $getPropValue($prop);\n\t\t\t}\n\t\t\td($propCode . ' --> ' . $value);\n\t\t}\n\t}\n\tdd(\\CFile::FormatSize(memory_get_usage(true)));","shortMessageHtmlLink":"Abstract Iblock Elements Layer has next update."}},{"before":"f0a33b7622d92786b18f9a8953566360f41cf5b7","after":"6e41949cf9b0cf5bb1cc11d72b17b04b941d424b","ref":"refs/heads/master","pushedAt":"2024-05-09T19:39:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Abstract Iblock Elements Layer still alive!\n\nRefactor and clean up Hipot library classes:\n\n- Updated several classes in the library including Types\\ObjectArItem, Container, and various IbAbstractLayer types.\n- Add new types Hipot\\Types\\Collection\n- Clarified documentation and removed unnecessary comments in base types of Abstract Iblock Elements Layer.\n- Improved handling of empty and ignored fields for value assignment (performance of Abstract Iblock Elements Layer).\n- Made minor changes to ensure consistent code format.","shortMessageHtmlLink":"Abstract Iblock Elements Layer still alive!"}},{"before":"01111d96acd6f24a6ef78503b1d2c1426cb9f188","after":"f0a33b7622d92786b18f9a8953566360f41cf5b7","ref":"refs/heads/master","pushedAt":"2024-05-09T08:49:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Update ReCaptcha functionality and BitrixEngine structure\n\n- Adjusted protection score limit in reCAPTCHA from 0.5 to 0.6\n- Added separate array ONLY_CHECK_BAD_TRAFIC_COUNTRIES to handle countries with bad traffic\n- Optimized sendRequestToCaptchaServer and getCountryByIp functions for better handling of user IPs\n- Enhanced the structure of BitrixEngine class by adding Request type definition in constructor\n- Changed the interval of day check from 2 to 1 in reCAPTCHA\n- Several minor optimizations and improvements in code readability.","shortMessageHtmlLink":"Update ReCaptcha functionality and BitrixEngine structure"}},{"before":"a70731b2ca81db7e7e048a605a47f09db2b5854a","after":"01111d96acd6f24a6ef78503b1d2c1426cb9f188","ref":"refs/heads/master","pushedAt":"2024-04-27T13:28:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Update event handling and enhance sitemap generation\n\n- Added condition in `handlers_add.php` to disable page process events if `DISABLE_PAGE_EVENTS` is defined as true.\n- Overhauled `sitemap.php` to improve performance and optimize the sitemap generation process. Optimizations include identifying session as virtual and read-only, removing unnecessary checks, and streamlining the `MakeCombineSiteMap` function.","shortMessageHtmlLink":"Update event handling and enhance sitemap generation"}},{"before":"a426cbd8ed2e8abd6c9dadbe307e598d666ed016","after":"a70731b2ca81db7e7e048a605a47f09db2b5854a","ref":"refs/heads/master","pushedAt":"2024-04-25T18:55:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Update schema generation in the 'iblock_layer_model' and optimize query in Recaptcha3\n\n- Code refactor for the 'iblock_layer_model' files adjusting the directory and filenames for schema generation in two places\nmain is /local/php_interface/hipot_annotations.php\n- Schema generation method in IblockGenerateSxemManager has been renamed and updated for better clarity\n- Updated class imports in the 'IblockGenerateSxem' files.\n- Fixed an issue in the Recaptcha3 where the method getCountryByIp was not properly handling null IP values, which might have impacted the reliability of the IP checks. The return value of getCountryByIp is also cast to string now.\n- Optimized the database query in the Recaptcha3 module for better performance.\n- Updated documentation in PhpCacher.php\n- Git ignore file sequence has been adjusted while adding '_unsorted' to the ignore list.","shortMessageHtmlLink":"Update schema generation in the 'iblock_layer_model' and optimize que…"}},{"before":"97b57ba34380f47046a3fca56c2dd042ae6c0a3a","after":"a426cbd8ed2e8abd6c9dadbe307e598d666ed016","ref":"refs/heads/master","pushedAt":"2024-04-22T16:52:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Refactor code for readability and efficiency\n\nAdjusted spacing in several lines for consistency and cleaner code. Simplified the 'isEmpty()' function to return a boolean directly. This makes the code more readable and slightly more efficient by removing unnecessary if and else condition. This refactoring change was propagated across multiple files.","shortMessageHtmlLink":"Refactor code for readability and efficiency"}},{"before":"01ce6b7027f72f5e4aca3df488f14d356b8dfe37","after":"97b57ba34380f47046a3fca56c2dd042ae6c0a3a","ref":"refs/heads/master","pushedAt":"2024-04-22T16:43:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hipot","name":"Valery Cheban","path":"/hipot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2675569?s=80&v=4"},"commit":{"message":"Add input value change trigger in lib.js\n\nAdded a new jQuery function 'triggerValueChange' in lib.js that triggers a change event when the value of an input field changes. This is specifically designed to track changes to hidden input fields.\n- This function will help in catching any changes made to input fields, even if they are hidden.\n- A use case for this include changes in session ID values, where tracking changes can provide useful insights and control over user sessions.","shortMessageHtmlLink":"Add input value change trigger in lib.js"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0wOVQxNToxMDo1MC4wMDAwMDBazwAAAASWZFkb","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0wOVQxNToxMDo1MC4wMDAwMDBazwAAAASWZFkb","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNC0yMlQxNjo0MzoxNS4wMDAwMDBazwAAAAQ3PDfL"}},"title":"Activity · hipot-studio/hipot.framework"}