示例#1
0
 function ajaxUpdateForms()
 {
     global $userMeta;
     //$userMeta->dump($_REQUEST);die();
     $userMeta->verifyAdminNonce('formEditor');
     $parse = parse_url($_SERVER['HTTP_REFERER']);
     parse_str($parse['query'], $query);
     if (empty($query['action'])) {
         echo 'Something went wrong!';
         die;
     }
     if (!empty($_POST['form_key'])) {
         $formKey = $_POST['form_key'];
     } else {
         echo 'Form name is required.';
         die;
     }
     $forms = $userMeta->getData('forms');
     $formBuilder = new umFormBuilder();
     if ('edit' == $query['action']) {
         if (empty($query['form']) || empty($_POST['form_key'])) {
             echo 'Something went wrong!';
             die;
         }
         if ($query['form'] != $_POST['form_key']) {
             if (isset($forms[$_POST['form_key']])) {
                 echo 'Form: "' . $_POST['form_key'] . '" already exists!';
                 die;
             }
             unset($forms[$query['form']]);
             $query['form'] = $_POST['form_key'];
             $formBuilder->redirect_to = $parse['scheme'] . '://' . $parse['host'] . $parse['path'] . '?' . http_build_query($query);
         }
     } elseif ('new' == $query['action']) {
         if (isset($forms[$_POST['form_key']])) {
             echo 'Form: "' . $_POST['form_key'] . '" already exists!';
             die;
         }
         $query['form'] = $_POST['form_key'];
         $query['action'] = 'edit';
         $formBuilder->redirect_to = $parse['scheme'] . '://' . $parse['host'] . $parse['path'] . '?' . http_build_query($query);
     }
     $fields = $formBuilder->getAllFields();
     $form = $_POST;
     $form = stripslashes_deep($_POST);
     //$form = $userMeta->arrayRemoveEmptyValue( $_POST );
     $formFields = isset($form['fields']) ? $form['fields'] : array();
     $formFields = $formBuilder->sanitizeFieldsIDs($formFields);
     foreach ($formFields as $id => $field) {
         if (is_array($field)) {
             foreach ($field as $key => $val) {
                 // Process shared fields
                 if (isset($fields[$id][$key])) {
                     if ($fields[$id][$key] == $val) {
                         unset($formFields[$id][$key]);
                     }
                 } else {
                     if (empty($val)) {
                         unset($formFields[$id][$key]);
                     }
                 }
             }
         }
         if (!empty($field['make_field_shared']) && !isset($fields[$id])) {
             unset($formFields[$id]['make_field_shared']);
             $fields[$id] = $formFields[$id];
             $formFields[$id] = array();
             $triggerFieldsUpdate = true;
         }
     }
     $form['fields'] = $formFields;
     $form = $userMeta->removeAdditional($form);
     $forms[$formKey] = $form;
     $forms = apply_filters('user_meta_pre_configuration_update', $forms, 'forms_editor');
     $userMeta->updateData('forms', $forms);
     //$userMeta->dump($fields);
     if (!empty($triggerFieldsUpdate)) {
         $userMeta->updateData('fields', $fields);
         if (empty($formBuilder->redirect_to)) {
             $formBuilder->redirect_to = $parse['scheme'] . '://' . $parse['host'] . $parse['path'] . '?' . $parse['query'];
         }
     }
     $formBuilder->setMaxFieldID();
     if (!empty($formBuilder->redirect_to)) {
         echo json_encode(array('redirect_to' => $formBuilder->redirect_to));
         die;
     }
     echo 1;
     die;
 }