/** * @param array $params Input params. * @param int $n Offset. * @param \CRestServer $server Rest server instance. * @return bool * @throws \Exception */ public static function addActivity($params, $n, $server) { self::checkAdminPermissions(); $params = self::prepareActivityData($params); self::validateActivity($params, $server); $params['APP_ID'] = $server->getAppId(); $params['INTERNAL_CODE'] = self::generateInternalCode($params); $params['APP_NAME'] = self::getAppName($params['APP_ID']); $iterator = RestActivityTable::getList(array('select' => array('ID'), 'filter' => array('=INTERNAL_CODE' => $params['INTERNAL_CODE']))); $result = $iterator->fetch(); if ($result) { throw new RestException('Activity already installed!', self::ERROR_ACTIVITY_ALREADY_INSTALLED); } $params['AUTH_USER_ID'] = isset($params['AUTH_USER_ID']) ? (int) $params['AUTH_USER_ID'] : 0; $result = RestActivityTable::add($params); if ($result->getErrors()) { throw new RestException('Activity save error!', self::ERROR_ACTIVITY_ADD_FAILURE); } return true; }