/** * @param eZHTTPTool $http * @param $base * @param eZWorkflowEvent $workflowEvent * @param $validation * * @return bool|int */ function validateHTTPInput($http, $base, $workflowEvent, &$validation) { $returnState = eZInputValidator::STATE_ACCEPTED; $reason = array(); if (!$http->hasSessionVariable('BrowseParameters')) { // No validation when deleting to avoid blocking deletion of invalid items if ($http->hasPostVariable('DeleteApproveUserIDArray_' . $workflowEvent->attribute('id')) || $http->hasPostVariable('DeleteApproveGroupIDArray_' . $workflowEvent->attribute('id'))) { return eZInputValidator::STATE_ACCEPTED; } // check approve-users $approversIDs = array_unique($this->attributeDecoder($workflowEvent, 'approve_users')); if (is_array($approversIDs) and count($approversIDs) > 0) { $returnState = eZApproveType::validateUserIDList($approversIDs, $reason); } else { $returnState = false; } if ($returnState != eZInputValidator::STATE_INVALID) { // check approve-groups $userGroupIDList = array_unique($this->attributeDecoder($workflowEvent, 'approve_groups')); if (is_array($userGroupIDList) and count($userGroupIDList) > 0) { $returnState = eZApproveType::validateGroupIDList($userGroupIDList, $reason); } else { if ($returnState === false) { // if no one user or user-group was passed as approvers $returnState = eZInputValidator::STATE_INVALID; $reason['text'] = "There must be passed at least one valid user or user group who approves content for the event."; } } // check excluded-users /* if ( $returnState != eZInputValidator::STATE_INVALID ) { // TODO: // .... } */ // check excluded-groups if ($returnState != eZInputValidator::STATE_INVALID) { $userGroupIDList = array_unique($this->attributeDecoder($workflowEvent, 'selected_usergroups')); if (is_array($userGroupIDList) and count($userGroupIDList) > 0) { $returnState = eZApproveType::validateGroupIDList($userGroupIDList, $reason); } } } } else { $browseParameters = $http->sessionVariable('BrowseParameters'); if (isset($browseParameters['custom_action_data'])) { $customData = $browseParameters['custom_action_data']; if (isset($customData['event_id']) and $customData['event_id'] == $workflowEvent->attribute('id')) { if (!$http->hasPostVariable('BrowseCancelButton') and $http->hasPostVariable('SelectedObjectIDArray')) { $objectIDArray = $http->postVariable('SelectedObjectIDArray'); if (is_array($objectIDArray) and count($objectIDArray) > 0) { switch ($customData['browse_action']) { case "AddApproveUsers": $returnState = eZApproveType::validateUserIDList($objectIDArray, $reason); break; case 'AddApproveGroups': case 'AddExcludeUser': $returnState = eZApproveType::validateGroupIDList($objectIDArray, $reason); break; case 'AddExcludedGroups': // TODO: // ..... break; } } } } } } if ($returnState == eZInputValidator::STATE_INVALID) { $validation['processed'] = true; $validation['events'][] = array('id' => $workflowEvent->attribute('id'), 'placement' => $workflowEvent->attribute('placement'), 'workflow_type' => &$this, 'reason' => $reason); } return $returnState; }
/** * Redirects the user * * @param eZHTTPTool $http * @param eZModule $module * @return mixed */ function redirect($http, $module) { $http->removeSessionVariable('NGConnectAuthResult'); $http->removeSessionVariable('NGConnectForceRedirect'); if ($http->hasSessionVariable('NGConnectLastAccessURI')) { return $module->redirectTo($http->sessionVariable('NGConnectLastAccessURI')); } else { return $module->redirectTo('/'); } }