Example #1
0
/**
 * processCCPCformData - Vérifie et traite les données retournées par le formulaire 
 *
 * @category : eval_ccpc_functions
 * @param array $formData Array contenant les données à traiter
 * @param array $evaluationData Array contenant les informations relatives à l'évaluation
 * @return array Array contenant les informations de formData après qu'elles aient été traités et les erreurs rencontrés lors de l'execution de la fonction
 * 
 * @Author Ali Bellamine
 *
 * Contenu de l'array retourné :<br>
 *	['erreur'][] => (array) Array contenant les erreurs<br>
 *	[nom du champs dans la base de donnée] => valeur fournie par l'utilisateur
 */
function processCCPCformData($formData, $evaluationData)
{
    global $db;
    $formResult = array();
    $erreur = array();
    // On parcours le fichier XML
    if (is_file(PLUGIN_PATH . 'formulaire.xml')) {
        if ($form = simplexml_load_file(PLUGIN_PATH . 'formulaire.xml')) {
            foreach ($form->categorie as $categorie) {
                foreach ($categorie->input as $input) {
                    if ($input['type'] == 'select') {
                        $allowedValue[] = array();
                        foreach ($input->option as $option) {
                            $allowedValue[] = $option['value'];
                        }
                        if (isset($formData[(string) $input['name']]) && in_array($formData[(string) $input['name']], $allowedValue)) {
                            $formResult[(string) $input['nomBDD']] = $formData[(string) $input['name']];
                        } else {
                            if (isset($input['required']) && $input['required'] == 1) {
                                $erreur['LANG_ERROR_CCPC_INCOMPLETEFORM'] = true;
                            } else {
                                $formResult[(string) $input['nomBDD']] = '';
                            }
                        }
                    } else {
                        if ($input['type'] == 'checkbox') {
                            foreach ($input->checkbox as $checkbox) {
                                if (isset($formData[(string) $input['name']]) && in_array((string) $checkbox["value"], $formData[(string) $input['name']])) {
                                    $formResult[(string) $checkbox['nomBDD']] = 1;
                                } else {
                                    $formResult[(string) $checkbox['nomBDD']] = 0;
                                }
                            }
                        } else {
                            if ($input['type'] == 'radio') {
                                $allowedValue[] = array();
                                foreach ($input->radio as $radio) {
                                    $allowedValue[] = $radio['value'];
                                }
                                if (isset($formData[(string) $input['name']]) && in_array($formData[(string) $input['name']], $allowedValue)) {
                                    $formResult[(string) $input['nomBDD']] = $formData[(string) $input['name']];
                                } else {
                                    if (isset($input['required']) && $input['required'] == 1) {
                                        $erreur['LANG_ERROR_CCPC_INCOMPLETEFORM'] = true;
                                    } else {
                                        $formResult[(string) $input['nomBDD']] = '';
                                    }
                                }
                            } else {
                                if ($input['type'] == 'text') {
                                    foreach ($input->text as $text) {
                                        if (isset($text['required']) && $text['required'] == 1 && (!isset($formData[(string) $text['name']]) || $formData[(string) $text['name']] == '')) {
                                            $erreur['LANG_ERROR_CCPC_INCOMPLETEFORM'] = true;
                                        } else {
                                            if (isset($formData[(string) $text['name']])) {
                                                $formResult[(string) $text['nomBDD']] = htmLawed($formData[(string) $text['name']]);
                                            } else {
                                                $formResult[(string) $text['nomBDD']] = '';
                                            }
                                        }
                                    }
                                } else {
                                    if ($input['type'] == 'textarea') {
                                        if (isset($input['required']) && $input['required'] == 1 && (!isset($formData[(string) $input['name']]) || $formData[(string) $input['name']] == '')) {
                                            $erreur['LANG_ERROR_CCPC_INCOMPLETEFORM'] = true;
                                        } else {
                                            if (isset($formData[(string) $input['name']])) {
                                                $formResult[(string) $input['nomBDD']] = htmLawed($formData[(string) $input['name']]);
                                            } else {
                                                $formResult[(string) $input['nomBDD']] = '';
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    /**
    		Récupération des données non incluses dans le formulaire (promotion, nb d'externe, service, etc...)
    	**/
    if (count($erreur) == 0) {
        $nonEvaluationData = eval_ccpc_getNoFormData($evaluationData, $erreur);
        /*
        	On récupère la liste des services déjà évalués
        */
        if (getEvaluationRegisterData() != '') {
            $evaluateService = unserialize(getEvaluationRegisterData());
        } else {
            $evaluateService = array();
        }
        /*
        	On retire les services déjà évalués de la liste des services à évaluer
        */
        foreach ($evaluateService as $service) {
            if (isset($nonEvaluationData['data'][$service])) {
                unset($nonEvaluationData['data'][$service]);
            }
        }
        // On récupère les données qui ne sont pas d'évaluation
        if (isset($nonEvaluationData['data']) && count($nonEvaluationData['data']) > 0) {
            if (isset($formData['service']) && isset($nonEvaluationData['data'][$formData['service']])) {
                $formResult = array_merge($formResult, $nonEvaluationData['data'][$formData['service']]);
                // On récupère les données d'évaluation
            } else {
                $erreur['LANG_ERROR_CCPC_INCOMPLETEFORM'] = true;
            }
        }
        // On récupère les erreurs
        if (isset($nonEvaluationData['erreur']) && count($nonEvaluationData['erreur']) > 0) {
            if (isset($formData['service']) && isset($nonEvaluationData['erreur'][$formData['service']])) {
                $erreur = array_merge($erreur, $nonEvaluationData['erreur'][$formData['service']]);
                // On récupère les données d'évaluation
            }
        }
    }
    $formResult['erreur'] = $erreur;
    return $formResult;
}
Example #2
0
if (isset($_POST) && count($_POST) > 0) {
    $formData = processCCPCformData($_POST, $evaluationData);
    $erreur = $formData['erreur'];
    // On interdit les administrateurs connectés au nom d'un utilisateur de répondre au formulaire
    if ($isLogedAs) {
        $erreur['LANG_FORM_CCPC_LOGINAS_SUBMITFORBIDDEN'] = TRUE;
    }
    unset($formData['erreur']);
    /*
    	En l'absence d'erreur dans le traitement des données --> on lance l'enregistrement dans la base de donnée
    */
    if (count($erreur) == 0) {
        if (registerCCPCformData($formData)) {
            // Le formulaire a été correcterment enregistré --> on enregistre cela dans les réglages du service
            if (isSerialized(getEvaluationRegisterData())) {
                $evaluateServiceTemp = unserialize(getEvaluationRegisterData());
            } else {
                $evaluateServiceTemp = array();
            }
            if (!in_array($formData['service'], $evaluateServiceTemp)) {
                $evaluateServiceTemp[] = $formData['service'];
                setEvaluationRegisterData(serialize($evaluateServiceTemp));
                header('Location: ' . ROOT . CURRENT_FILE . '?' . http_build_query($_GET));
            }
        } else {
            // Une erreur s'est déroulé lors de l'enregistrement
            $erreur['LANG_ERROR_CCPC_UNKNOWN'] = true;
        }
    }
}
/**