/** * @return array */ public function getUserGroups() { if ($this->groups) { return $this->groups; } $ids = $this->user->GetUserGroupArray(); $res = array(); $dbRes = \CGroup::GetList($by = null, $order = null, array('ID' => implode('|', $ids))); while ($item = $dbRes->Fetch()) { $res[] = $item['STRING_ID']; } $this->groups = array_filter($res); return $this->groups; }
public static function getEdit(Order $order, \CUser $user, $showCancel, $showSaveButton) { $data = self::prepareData($order); if ($showCancel) { $bUserCanCancelOrder = \CSaleOrder::CanUserCancelOrder($order->getId(), $user->GetUserGroupArray(), $user->GetID()); } else { $bUserCanCancelOrder = false; } $result = ' <table border="0" cellspacing="0" cellpadding="0" width="100%" class="adm-detail-content-table edit-table"> <tbody> <tr> <td class="adm-detail-content-cell-l" width="40%">' . Loc::getMessage("SALE_ORDER_STATUS_CREATED") . ':</td> <td class="adm-detail-content-cell-r"> <div>' . $data["DATE_INSERT"] . ' <a href="/bitrix/admin/user_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $data["CREATOR_USER_ID"] . '">' . htmlspecialcharsbx($data["CREATOR_USER_NAME"]) . '</a> </div> </td> </tr> <tr> <td class="adm-detail-content-cell-l">' . Loc::getMessage("SALE_ORDER_STATUS_LAST_MODIF") . ':</td> <td class="adm-detail-content-cell-r"><div>' . $data["DATE_UPDATE"] . '</div></td> </tr> <tr> <td class="adm-detail-content-cell-l">' . Loc::getMessage("SALE_ORDER_STATUS_SITE") . ':</td> <td class="adm-detail-content-cell-r"><div>' . htmlspecialcharsbx(\Bitrix\Sale\Helpers\Admin\OrderEdit::getSiteName($order->getSiteId())) . '</div></td> </tr>'; if (strlen($data['SOURCE_NAME']) > 0) { $result .= '<tr>' . '<td class="adm-detail-content-cell-l">' . Loc::getMessage("SALE_ORDER_STATUS_SOURCE") . ':</td>' . '<td class="adm-detail-content-cell-r">' . $data['SOURCE_NAME'] . '</td>' . '</tr>'; } $result .= '<tr> <td class="adm-detail-content-cell-l">' . Loc::getMessage("SALE_ORDER_STATUS") . ':</td> <td class="adm-detail-content-cell-r">' . \Bitrix\Sale\Helpers\Admin\OrderEdit::makeSelectHtml("STATUS_ID", self::getStatusesList($user->GetID(), $data["STATUS_ID"]), $data["STATUS_ID"], false, array("class" => "adm-bus-select", "id" => "STATUS_ID")); if ($showSaveButton) { $result .= ' <span id="save_status_button" class="adm-btn" onclick="BX.Sale.Admin.OrderEditPage.onSaveStatusButton(\'' . $order->getId() . '\',\'STATUS_ID\');"> ' . Loc::getMessage("SALE_ORDER_STATUS_SAVE") . ' </span>'; } $result .= '</td> </tr>'; if ($showCancel && $bUserCanCancelOrder) { $result .= self::getCancelBlockHtml($order, $data); } $result .= '</tbody> </table> '; return $result; }
function countTrueEvents($arConditions) { //echo "<pre>";print_r($arConditions);echo "</pre>"; foreach ($arConditions as $child) { if (strlen($child["CLASS_ID"]) > 0 && !empty($child["DATA"])) { switch ($child["CLASS_ID"]) { case 'CondUserName': if (CFoodclubEventCompare::compareString($this->_fields["NAME"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case 'CondUserLastName': if (CFoodclubEventCompare::compareString($this->_fields["LAST_NAME"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case 'CondUserEmail': if (CFoodclubEventCompare::compareString($this->_fields["EMAIL"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case 'CondPersonalPhoto': $user = self::getUserFields(); if (CFoodclubEventCompare::compare($user["PERSONAL_PHOTO"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case 'CondUserWorkWWW': if (CFoodclubEventCompare::compareString($this->_fields["WORK_WWW"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBTags": if (CFoodclubEventCompare::compare($this->_fields["TAGS"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBModifiedBy": if (CFoodclubEventCompare::compare($this->_fields["MODIFIED_BY"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondUserDateRegister": $user = self::getUserFields(); if ($user["DATE_REGISTER"]) { if (CFoodclubEventCompare::compareDates($user["DATE_REGISTER"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } } break; case "CondUserLADate": $user = self::getUserFields(); if ($user["LAST_ACTIVITY_DATE"]) { if (CFoodclubEventCompare::compareDates($user["LAST_ACTIVITY_DATE"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } } break; case "CondIBTimestampX": $date = isset($this->_fields["TIMESTAMP_X"]) ? $this->_fields["TIMESTAMP_X"] : $this->_fields["~TIMESTAMP_X"]; if (CFoodclubEventCompare::compareDates($date, $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBCreatedBy": if (CFoodclubEventCompare::compare($this->_fields["CREATED_BY"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBDateCreate": $date = isset($this->_fields["DATE_CREATE"]) ? $this->_fields["DATE_CREATE"] : $this->_fields["~DATE_CREATE"]; if (CFoodclubEventCompare::compareDates($date, $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBDetailText": if (CFoodclubEventCompare::compare($this->_fields["DETAIL_TEXT"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBPreviewText": if (CFoodclubEventCompare::compare($this->_fields["PREVIEW_TEXT"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBSort": if (CFoodclubEventCompare::compare($this->_fields["SORT"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBDateActiveTo": if (CFoodclubEventCompare::compareDates($this->_fields["ACTIVE_TO"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBDateActiveFrom": if (CFoodclubEventCompare::compareDates($this->_fields["ACTIVE_FROM"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBActive": if (CFoodclubEventCompare::compare($this->_fields["ACTIVE"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBName": if (CFoodclubEventCompare::compare($this->_fields["NAME"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBXmlID": if (CFoodclubEventCompare::compare($this->_fields["XML_ID"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBCode": if (CFoodclubEventCompare::compare($this->_fields["CODE"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondGroup": //Проверяем группу условий if (CFoodclubEventUtils::recursive_array_search("CondQuantityValue", $child["CHILDREN"]) !== false) { //check child event elements with property value if (self::checkQuantityCond($child)) { self::increas(); } } else { //check child event elements if (self::checkChildCond($child)) { self::increas(); } } break; case "CondUserGroup": //Проверяем группу пользователя if (CFoodclubEventCompare::compareArrayValue(CUser::GetUserGroupArray(), $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBElement": if (CFoodclubEventCompare::compare($this->_fields["ID"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBSection": //Проверяем группу пользователя if (CFoodclubEventCompare::compare($this->_fields["SECTION_ID"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondIBIBlock": //Проверяем группу пользователя if (CFoodclubEventCompare::compare($this->_fields["IBLOCK_ID"], $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; case "CondUser": //Проверяем пользователя if (CFoodclubEventCompare::compare(CUser::GetID(), $child["DATA"]["logic"], $child["DATA"]["value"])) { self::increas(); } break; } } } }
<?php $module_id = "devtm.begateway"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/{$module_id}/include.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/{$module_id}/prolog.php"; use Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); $gr = explode("|", \Bitrix\Main\Config\Option::get($module_id, "group_ids")); $in = array_intersect($gr, CUser::GetUserGroupArray()); $has_access = false; if (!empty($in)) { $has_access = true; } \Bitrix\Main\Loader::includeModule("sale"); \Bitrix\Main\Config\Option::set("main", "~sale_converted_15", "N"); //Костыль из - за совместимости битрикс с ядром D7 try { $ID = (int) $ID; if ($ID <= 0) { throw new Exception(Loc::getMessage("DEVTM_BEGATEWAY_NOT_CORRECT_ID")); } $ps_id = (int) \Bitrix\Main\Config\Option::get($module_id, "payment_system_id"); if ($ps_id <= 0) { throw new Exception(Loc::getMessage("DEVTM_BEGATEWAY_PS_NOT_FOUND")); } $order = CSaleOrder::GetList(array("ID" => "ASC"), array("ID" => $ID, "PAY_SYSTEM_ID" => $ps_id), false, false, array("ID", "USER_ID", "PS_STATUS_DESCRIPTION", "PRICE", "CURRENCY"))->Fetch(); if ($order["ID"] <= 0) { throw new Exception(Loc::getMessage("DEVTM_BEGATEWAY_ORDER_NOT_FOUND")); } if (strlen($order["PS_STATUS_DESCRIPTION"]) <= 0) {
{ $dbGroup = CGroup::GetList(($by="c_sort"), ($order="asc"), array("ACTIVE" => "Y")); while($arGroup = $dbGroup->Fetch()) { $arResult["GROUPS_CAN_EDIT"][$arGroup["ID"]] = $arGroup; $arGroupsCanEditID[] = $arGroup["ID"]; } } elseif($USER->CanDoOperation('edit_subordinate_users')) { if (array_key_exists("SONET_SUBORD_GROUPS_BY_USER_ID", $GLOBALS) && array_key_exists($GLOBALS["USER"]->GetID(), $GLOBALS["SONET_SUBORD_GROUPS_BY_USER_ID"])) $arUserSubordinateGroups = $GLOBALS["SONET_SUBORD_GROUPS_BY_USER_ID"][$GLOBALS["USER"]->GetID()]; else { $arUserSubordinateGroups = Array(2); $arUserGroups_u = CUser::GetUserGroupArray(); for ($j = 0,$len = count($arUserGroups_u); $j < $len; $j++) { $arSubordinateGroups = CGroup::GetSubordinateGroups($arUserGroups_u[$j]); $arUserSubordinateGroups = array_merge($arUserSubordinateGroups, $arSubordinateGroups); } $arUserSubordinateGroups = array_unique($arUserSubordinateGroups); if (!array_key_exists("SONET_SUBORD_GROUPS_BY_USER_ID", $GLOBALS)) $GLOBALS["SONET_SUBORD_GROUPS_BY_USER_ID"] = array(); $GLOBALS["SONET_SUBORD_GROUPS_BY_USER_ID"][$GLOBALS["USER"]->GetID()] = $arUserSubordinateGroups; } $arGroupsCanEditID = $arUserSubordinateGroups;
function checkUserGroup($user_group_array = array(), $logic, $value) { if (empty($user_group_array)) { $user_group_array = CUser::GetUserGroupArray(); } switch ($logic) { case 'Equal': return in_array($value, $user_group_array) ? true : false; break; default: return !in_array($value, $user_group_array) ? true : false; break; } }