/** * @param object $model * @param attay $explicitReadWriteModelPermissions */ protected function afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions) { assert('$model instanceof Product'); $postData = PostUtil::getData(); if (isset($postData[$this->productCategoryFormName])) { $this->peopleAddedAsProductCategories = ProductCategoriesUtil::resolveProductHasManyProductCategoriesFromPost($model, $postData[$this->productCategoryFormName]); } }
/** * @param RedBeanModel $model * @param array $explicitReadWriteModelPermissions */ protected function afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions) { assert('$model instanceof SavedCalendar'); $postData = PostUtil::getData(); $wizardFormClassName = ReportToWizardFormAdapter::getFormClassNameByType(Report::TYPE_ROWS_AND_COLUMNS); if (isset($postData[$wizardFormClassName])) { CalendarUtil::populateFiltersDataInModel($model, $postData[$wizardFormClassName]); } }
/** * Override to handle incoming conversation participant information * (non-PHPdoc) * @see ModelHasRelatedItemsZurmoControllerUtil::afterSetAttributesDuringSave() */ protected function afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions) { assert('$model instanceof Conversation'); assert('$explicitReadWriteModelPermissions instanceof ExplicitReadWriteModelPermissions'); parent::afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions); $postData = PostUtil::getData(); if (isset($postData[$this->conversationParticipantFormName])) { $this->peopleAddedAsConversationParticipants = ConversationParticipantsUtil::resolveConversationHasManyParticipantsFromPost($model, $postData[$this->conversationParticipantFormName], $explicitReadWriteModelPermissions); } }
/** * @param object $model * @param attay $explicitReadWriteModelPermissions */ protected function afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions) { assert('$model instanceof Project'); $postData = PostUtil::getData(); if (isset($postData['ProjectAccountsForm'])) { $this->projectAccounts = self::resolveProjectManyManyAccountsFromPost($model, $postData['ProjectAccountsForm']); $this->projectContacts = self::resolveProjectManyManyContactsFromPost($model, $postData['ProjectContactsForm']); $this->projectOpportunities = self::resolveProjectManyManyOpportunitiesFromPost($model, $postData['ProjectOpportunitiesForm']); } }
protected function actionInlineEditValidate($model) { $postData = PostUtil::getData(); $postFormData = ArrayUtil::getArrayValue($postData, get_class($model)); $sanitizedPostData = PostUtil::sanitizePostByDesignerTypeForSavingModel($model, $postFormData); $model->setAttributes($sanitizedPostData); $model->validate(); $errorData = ZurmoActiveForm::makeErrorsDataAndResolveForOwnedModelAttributes($model); echo CJSON::encode($errorData); Yii::app()->end(0, false); }
/** * Override to process the note as a social item when needed. * (non-PHPdoc) * @see ZurmoBaseController::actionAfterSuccessfulModelSave() */ protected function actionAfterSuccessfulModelSave($model, $modelToStringValue, $redirectUrlParams = null) { assert('$model instanceof Note'); if (ArrayUtil::getArrayValue(PostUtil::getData(), 'postToProfile')) { $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::makeBySecurableItem($model); $socialItem = new SocialItem(); $socialItem->note = $model; $saved = $socialItem->save(); if (!$saved) { throw new FailedToSaveModelException(); } ExplicitReadWriteModelPermissionsUtil::resolveExplicitReadWriteModelPermissions($socialItem, $explicitReadWriteModelPermissions); } parent::actionAfterSuccessfulModelSave($model, $modelToStringValue, $redirectUrlParams); }
public function actionConfigurationEdit() { $breadCrumbLinks = array(Zurmo::t('MarketingModule', 'Marketing Configuration')); $form = MarketingConfigurationFormAdapter::makeFormFromMarketingConfiguration(); $postData = PostUtil::getData(); $postVariableName = get_class($form); if (isset($postData[$postVariableName])) { $form->setAttributes($postData[$postVariableName]); if ($form->validate()) { MarketingConfigurationFormAdapter::setConfigurationFromForm($form); Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'Marketing configuration saved successfully.')); $this->redirect(Yii::app()->createUrl('configuration/default/index')); } } $editView = new MarketingConfigurationEditAndDetailsView('Edit', $this->getId(), $this->getModule()->getId(), $form); $editView->setCssClasses(array('AdministrativeArea')); $view = new ZurmoConfigurationPageView(ZurmoDefaultAdminViewUtil::makeViewWithBreadcrumbsForCurrentUser($this, $editView, $breadCrumbLinks, 'SettingsBreadCrumbView')); echo $view->render(); }
public function actionSave($builtType) { $postData = PostUtil::getData(); $emailTemplate = null; $this->resolveEmailTemplateByPostData($postData, $emailTemplate, $builtType); $emailTemplateToWizardFormAdapter = new EmailTemplateToWizardFormAdapter($emailTemplate); $model = $emailTemplateToWizardFormAdapter->makeFormByBuiltType(); if (isset($postData['ajax']) && $postData['ajax'] === 'edit-form') { $this->actionValidate($postData, $model); } $unmuteScoring = false; if ($emailTemplate->isBuilderTemplate() && ($emailTemplate->isDraft || !isset($emailTemplate->isDraft))) { Yii::app()->gameHelper->muteScoringModelsOnSave(); $unmuteScoring = true; } $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::resolveByPostDataAndModelThenMake($postData[get_class($model)], $emailTemplate); if ($emailTemplate->save()) { if ($unmuteScoring) { Yii::app()->gameHelper->unmuteScoringModelsOnSave(); } if ($explicitReadWriteModelPermissions != null) { ExplicitReadWriteModelPermissionsUtil::resolveExplicitReadWriteModelPermissions($emailTemplate, $explicitReadWriteModelPermissions); } $modelClassName = $emailTemplate->modelClassName; $moduleClassName = $modelClassName::getModuleClassName(); echo CJSON::encode(array('id' => $emailTemplate->id, 'redirectToList' => false, 'moduleClassName' => $moduleClassName)); Yii::app()->end(0, false); } else { throw new FailedToSaveModelException(); } }
public function actionApplyRuntimeFilters($id) { $postData = PostUtil::getData(); $savedReport = SavedReport::getById((int) $id); ControllerSecurityUtil::resolveCanCurrentUserAccessModule($savedReport->moduleClassName); ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($savedReport); $report = SavedReportToReportAdapter::makeReportBySavedReport($savedReport); $wizardFormClassName = ReportToWizardFormAdapter::getFormClassNameByType($report->getType()); if (!isset($postData[$wizardFormClassName])) { throw new NotSupportedException(); } DataToReportUtil::resolveFilters($postData[$wizardFormClassName], $report, true); if (isset($postData['ajax']) && $postData['ajax'] == 'edit-form') { $adapter = new ReportToWizardFormAdapter($report); $reportWizardForm = $adapter->makeFormByType(); $reportWizardForm->setScenario(reportWizardForm::FILTERS_VALIDATION_SCENARIO); if (!$reportWizardForm->validate()) { $errorData = array(); foreach ($reportWizardForm->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($reportWizardForm, $attribute)] = $errors; } echo CJSON::encode($errorData); Yii::app()->end(0, false); } } $filtersData = ArrayUtil::getArrayValue($postData[$wizardFormClassName], ComponentForReportForm::TYPE_FILTERS); $sanitizedFiltersData = DataToReportUtil::sanitizeFiltersData($report->getModuleClassName(), $report->getType(), $filtersData); $stickyData = array(ComponentForReportForm::TYPE_FILTERS => $sanitizedFiltersData); StickyReportUtil::setDataByKeyAndData($report->getId(), $stickyData); }
public function actionSaveOrder() { $savedWorkflowData = ArrayUtil::getArrayValue(PostUtil::getData(), 'SavedWorkflow'); if ($savedWorkflowData != null && isset($savedWorkflowData['savedWorkflowIds']) && count($savedWorkflowData['savedWorkflowIds']) > 0) { $order = 1; foreach ($savedWorkflowData['savedWorkflowIds'] as $savedWorkflowId) { $savedWorkflow = SavedWorkflow::getById((int) $savedWorkflowId); $savedWorkflow->order = $order; $saved = $savedWorkflow->save(); if (!$saved) { throw new FailedToSaveModelException(); } $order++; } $message = Zurmo::t('WorkflowsModule', 'Order saved successfully.'); echo CJSON::encode(array('message' => $message, 'type' => 'message')); } else { echo CJSON::encode(array('message' => Zurmo::t('Core', 'There was an error processing your request'), 'type' => 'error')); } Yii::app()->end(0, false); }
public function actionCreateEmailMessage($toAddress = null, $relatedId = null, $relatedModelClassName = null) { $postData = PostUtil::getData(); $getData = GetUtil::getData(); $personOrAccount = self::resolvePersonOrAccountFromGet($relatedId, $relatedModelClassName); $emailMessage = new EmailMessage(); $emailMessageForm = new CreateEmailMessageForm($emailMessage); $emailMessageForm->setScenario('createNonDraft'); $postVariableName = get_class($emailMessageForm); if ($toAddress == null && $personOrAccount != null && $personOrAccount->primaryEmail->emailAddress != null) { $toAddress = $personOrAccount->primaryEmail->emailAddress; } if (isset($postData[$postVariableName])) { EmailMessageUtil::resolveEmailMessageFromPostData($postData, $emailMessageForm, Yii::app()->user->userModel); $this->actionValidateCreateEmailMessage($postData, $emailMessageForm); $this->attemptToSaveModelFromPost($emailMessageForm, null, false); ZurmoControllerUtil::updatePermissionsWithDefaultForModelByCurrentUser($emailMessageForm->getModel()); Yii::app()->jobQueue->add('ProcessOutboundEmail'); } else { EmailMessageUtil::resolveSignatureToEmailMessage($emailMessage, Yii::app()->user->userModel); EmailMessageUtil::resolvePersonOrAccountToEmailMessage($emailMessage, Yii::app()->user->userModel, $toAddress, $relatedId, $relatedModelClassName); $createEmailMessageModalEditView = new CreateEmailMessageModalEditView($this->getId(), $this->getModule()->getId(), $emailMessageForm); $view = new ModalView($this, $createEmailMessageModalEditView); Yii::app()->getClientScript()->setToAjaxMode(); echo $view->render(); } }
protected static function resolvePostDataByMassActionId($actionId, $modelClassName = null) { // TODO: @Shoaibi/@Jason: Low: Candidate for MassActionController if (MassActionUtil::isMassEditLikeAction($actionId)) { PostUtil::sanitizePostForSavingMassEdit($modelClassName); } return PostUtil::getData(); }
/** * Override to handle report filters * @param SavedCalendar | ModelForm $model * @param string $postVariableName * @throws NotSupportedException(); */ protected function attemptToValidateAjaxFromPost($model, $postVariableName) { if (isset($_POST['ajax']) && $_POST['ajax'] == 'edit-form') { $postData = PostUtil::getData(); $readyToUsePostData = ExplicitReadWriteModelPermissionsUtil::removeIfExistsFromPostData($_POST[$postVariableName]); $sanitizedPostdata = PostUtil::sanitizePostByDesignerTypeForSavingModel($model, $readyToUsePostData); $sanitizedOwnerPostData = PostUtil::sanitizePostDataToJustHavingElementForSavingModel($sanitizedPostdata, 'owner'); $sanitizedPostDataWithoutOwner = PostUtil::removeElementFromPostDataForSavingModel($sanitizedPostdata, 'owner'); $model->setAttributes($sanitizedPostDataWithoutOwner); if ($model->validate()) { $modelToStringValue = strval($model); if ($sanitizedOwnerPostData != null) { $model->setAttributes($sanitizedOwnerPostData); } if ($model instanceof OwnedSecurableItem) { $model->validate(array('owner')); } } $wizardFormClassName = ReportToWizardFormAdapter::getFormClassNameByType(Report::TYPE_ROWS_AND_COLUMNS); if (!isset($postData[$wizardFormClassName])) { throw new NotSupportedException(); } $report = SavedCalendarToReportAdapter::makeReportBySavedCalendar($model); DataToReportUtil::resolveFiltersStructure($postData[$wizardFormClassName], $report); DataToReportUtil::resolveFilters($postData[$wizardFormClassName], $report); //This would do the filter and filter structure validation $reportToWizardFormAdapter = new ReportToWizardFormAdapter($report); $reportForm = $reportToWizardFormAdapter->makeFormByType(); $postData['validationScenario'] = $wizardFormClassName::FILTERS_VALIDATION_SCENARIO; $filtersErrorData = ReportUtil::validateReportWizardForm($postData, $reportForm); $errorData = ZurmoActiveForm::makeErrorsDataAndResolveForOwnedModelAttributes($model); $errorData = array_merge($errorData, $filtersErrorData); echo CJSON::encode($errorData); Yii::app()->end(0, false); } }
public function actionUpdateParticipants($id) { $postData = PostUtil::getData(); if (isset($postData['ConversationParticipantsForm'])) { $conversation = Conversation::getById((int) $id); $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::makeBySecurableItem($conversation); $currentUserWasParticipant = ConversationParticipantsUtil::isUserAParticipant($conversation, Yii::app()->user->userModel); $peopleAdded = ConversationParticipantsUtil::resolveConversationHasManyParticipantsFromPost($conversation, $postData['ConversationParticipantsForm'], $explicitReadWriteModelPermissions); ConversationParticipantsUtil::resolveEmailInvitesByPeople($conversation, $peopleAdded); $saved = $conversation->save(); if ($saved) { $success = ExplicitReadWriteModelPermissionsUtil::resolveExplicitReadWriteModelPermissions($conversation, $explicitReadWriteModelPermissions); $currentUserIsParticipant = ConversationParticipantsUtil::isCurrentUserAParticipant($conversation); if ($currentUserWasParticipant && !$currentUserIsParticipant) { echo 'redirectToList'; } } else { throw new FailedToSaveModelException(); } } }
protected static function resolvePostDataByMassActionId($actionId, $modelClassName = null) { if (strpos($actionId, 'massEdit') === 0) { PostUtil::sanitizePostForSavingMassEdit($modelClassName); } return PostUtil::getData(); }