$errors[] = Loc::getMessage('SSEN_INVALID_TASK_ID_FOR') . ' ' . $groupName; } } // add or update status if (!$errors) { // update status, delete translations and group tasks if (!$isNew) { $result = StatusTable::update($statusId, $status); if ($result->isSuccess()) { StatusLangTable::deleteByStatus($statusId); StatusGroupTaskTable::deleteByStatus($statusId); } else { $errors = $result->getErrorMessages(); } } else { $result = StatusTable::add($status); if ($result->isSuccess()) { $statusId = $status['ID']; } else { $errors = $result->getErrorMessages(); } } } // add translations and group tasks, redirect if (!$errors) { foreach ($translations as $data) { StatusLangTable::add($data); } foreach ($groupTasks as $data) { StatusGroupTaskTable::add($data); }
/** * <p>Метод добавляет новый статус заказа с параметрами из массива arFields. Метод динамичный.</p> * * * @param array $arFields Ассоциативный массив параметров нового статуса. Ключами в * массиве являются названия параметров статуса, а значениями - * соответствующие значения.<br> Допустимые ключи: <ul> <li> <b>ID</b> - код * статуса (обязательный), состоит из одной буквы;</li> <li> <b>SORT</b> - * индекс сортировки;</li> <li> <b>LANG</b> - массив ассоциативных массивов * языкозависимых параметров статуса с ключами: <ul> <li> <b>LID</b> - * язык;</li> <li> <b>NAME</b> - название статуса на этом языке;</li> <li> <b>DESCRIPTION</b> * - описание статуса;</li> </ul> </li> <li> <b>PERMS</b> - массив ассоциативных * массивов прав на доступ к изменению заказа в данном статусе с * ключами: <ul> <li> <b>GROUP_ID</b> - группа пользователей;</li> <li> <b>PERM_TYPE</b> - тип * доступа (S - разрешен перевод заказа в данный статус, M - разрешено * изменение заказа в данном статусе).</li> </ul> </li> </ul> * * @return string <p>Возвращается код добавленного статуса или <i>false</i> в случае * ошибки.</p> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalestatus/csalestatus__add.c7ce74b1.php * @author Bitrix */ public static function Add($arFields) { if (!self::CheckFields('ADD', $arFields)) { return false; } $statusId = $arFields['ID']; foreach (GetModuleEvents("sale", "OnBeforeStatusAdd", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($statusId, &$arFields)) === false) { return false; } } StatusTable::add(array_intersect_key($arFields, self::$statusFields)); if (isset($arFields['LANG']) && is_array($arFields['LANG']) && !empty($arFields['LANG'])) { self::addLanguagesBy($statusId, $arFields['LANG']); } if (isset($arFields['PERMS']) && is_array($arFields['PERMS']) && !empty($arFields['PERMS'])) { self::addTasksBy($statusId, $arFields['PERMS']); } foreach (GetModuleEvents("sale", "OnStatusAdd", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($statusId, $arFields)); } return $statusId; }
static function install(array $data) { if (!($statusId = $data['ID']) || !is_string($statusId)) { throw new SystemException('invalid status ID', 0, __FILE__, __LINE__); } if ($languages = $data['LANG']) { unset($data['LANG']); if (!is_array($languages)) { throw new SystemException('invalid status LANG', 0, __FILE__, __LINE__); } } $data['TYPE'] = static::TYPE; // install status if it is not installed if (!StatusTable::getById($statusId)->fetch()) { StatusTable::add($data); } // install status languages if they are not installed if ($languages) { $installedLanguages = array(); $result = StatusLangTable::getList(array('select' => array('LID'), 'filter' => array('=STATUS_ID' => $statusId))); while ($row = $result->fetch()) { $installedLanguages[$row['LID']] = true; } foreach ($languages as $language) { if (!is_array($language)) { throw new SystemException('invalid status language', 0, __FILE__, __LINE__); } if (!$installedLanguages[$language['LID']]) { $language['STATUS_ID'] = $statusId; StatusLangTable::add($language); } } } }