protected function processUnsubscribeFromListAction() { $actionAttributes = $this->action->getActionAttributes(); if (count($actionAttributes) > 1 || !isset($actionAttributes['marketingList']) || !$this->triggeredModel instanceof Contact) { throw new NotSupportedException(); } $marketingListId = $actionAttributes['marketingList']->value; $members = MarketingListMember::getByMarketingListIdContactIdAndUnsubscribed($marketingListId, (int) $this->triggeredModel->id, false); if ($members !== false) { $member = $members[0]; $member->unsubscribed = true; if (!$member->unrestrictedSave()) { throw new FailedToSaveModelException(); } } else { try { //Does the marketing list still exist MarketingList::getById((int) $marketingListId); } catch (NotFoundException $e) { $this->logAndNotifyOnMissingMarketingListModel(ActionForWorkflowForm::TYPE_UNSUBSCRIBE_FROM_LIST); } } }
/** * @param ActionForWorkflowForm $action * @param RedBeanModel $model * @param User $triggeredByUser * @param RedBeanModel $triggeredModel */ protected static function processActionAttributesForActionAfterSave(ActionForWorkflowForm $action, RedBeanModel $model, User $triggeredByUser, RedBeanModel $triggeredModel) { foreach ($action->getActionAttributes() as $attribute => $actionAttribute) { if (!$actionAttribute->resolveValueBeforeSave() && $actionAttribute->shouldSetValue) { if (null === ($relation = ActionForWorkflowForm::resolveFirstRelationName($attribute))) { $resolvedModel = $model; $resolvedAttribute = ActionForWorkflowForm::resolveRealAttributeName($attribute); } else { $resolvedModel = $model->{$relation}; $resolvedAttribute = ActionForWorkflowForm::resolveRealAttributeName($attribute); } $adapter = new WorkflowActionProcessingModelAdapter($resolvedModel, $triggeredByUser, $triggeredModel); $actionAttribute->resolveValueAndSetToModel($adapter, $resolvedAttribute); } } }