public function unsubscribeFromRecord(ServiceBase $api, array $args) { $this->requireArgs($args, array('module', 'record')); $bean = BeanFactory::retrieveBean($args['module'], $args['record']); if (empty($bean)) { throw new SugarApiExceptionNotFound('Could not find parent record ' . $args['record'] . ' in module ' . $args['module']); } if (!$bean->ACLAccess('view')) { $moduleName = null; if (isset($args['module'])) { $failed_module_strings = return_module_language($GLOBALS['current_language'], $args['module']); $moduleName = $failed_module_strings['LBL_MODULE_NAME']; } $args = null; if (!empty($moduleName)) { $args = array('moduleName' => $moduleName); } throw new SugarApiExceptionNotAuthorized('EXCEPTION_SUBSCRIBE_MODULE_NOT_AUTHORIZED', $args); } return Subscription::unsubscribeUserFromRecord($api->user, $bean); }
/** * Associates the user to the activity, if it is a delete activity or the user can access the record. Otherwise, the * the user's subscription to the record is removed. * * We allow the user to see the activity on home and list views if the user has access to the bean. * * @param SugarBean $bean * @param User $user * @param bool $isADeleteActivity */ protected function handleUserToBeanRelationship(SugarBean $bean, User $user, $isADeleteActivity = false) { if ($isADeleteActivity || $bean->checkUserAccess($user)) { $fields = $this->getChangedFieldsForUser($user, $bean); $this->activities_users->add($user, array('fields' => json_encode($fields))); } else { Subscription::unsubscribeUserFromRecord($user, $bean); } }