343 lines
8.2 KiB
PHP
343 lines
8.2 KiB
PHP
<?php
|
|
|
|
/*
|
|
* it means someone outside wp is accessing the file, in this case kill it.
|
|
*/
|
|
if (!defined('ABSPATH')) {
|
|
die('You can not access this file!');
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
* SECOND TRY : MODIFY THE ID OF THE FIELDS
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
* version 3 :
|
|
*
|
|
* trying with a filter on wp_get_current_user()
|
|
* used by form builder to retrieve the user before using get_metadat()
|
|
* -> the filter is not called in most cases, if user is instance of WP_USER
|
|
*/
|
|
//function filter_user_id_CIPF($id) {
|
|
// PLGNTLS_class::debug_infos();
|
|
// error_log("-in filter_user_id_CIPF, id : " . $id); // this is not output
|
|
// return 117;
|
|
//}
|
|
//function add_filter_for_user_id_CIPF($wp) {
|
|
// PLGNTLS_class::debug_infos();
|
|
// error_log("-in add_filter_for_user_id_CIPF"); // this is output
|
|
// add_filter('determine_current_user', 'filter_user_id_CIPF', 10, 1);
|
|
//}
|
|
//add_shortcode('cipf_change_meta_id', 'add_filter_for_user_id_CIPF');
|
|
////add_action('wp', 'add_filter_for_user_id_CIPF');
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
* version 2 :
|
|
*
|
|
* adding a filter on the page to alter the id used by the get_metadata function
|
|
* because it seems it is the function used by formBuilder to retrieve the fields
|
|
* -> in divi-for-builder/includes/modules/FormField/FormField.php line 5319 : $user_metadata = get_user_meta( $current_user->ID, '', true );
|
|
* -> in wp-includes/meta.php line 635
|
|
*
|
|
* somehow it makes the function get_user_metadata returns nothing
|
|
*
|
|
*/
|
|
//function filter_user_id_CIPF($null, $object_id, $meta_key, $single, $meta_type ) {
|
|
// PLGNTLS_class::debug_infos();
|
|
// error_log("---");
|
|
// error_log("-object_id");
|
|
// error_log(json_encode($object_id));
|
|
// error_log("-meta_key");
|
|
// error_log(json_encode($meta_key));
|
|
// error_log("-single");
|
|
// error_log(json_encode($single));
|
|
// error_log("-meta_type");
|
|
// error_log(json_encode($meta_type));
|
|
//
|
|
// $object_id = 117;
|
|
//
|
|
// /*
|
|
// * I just copied the code of wordpress :
|
|
// * i'm not sure there is a better way
|
|
// *
|
|
// */
|
|
// $meta_cache = wp_cache_get( $object_id, $meta_type . '_meta' );
|
|
//
|
|
// if ( ! $meta_cache ) {
|
|
// $meta_cache = update_meta_cache( $meta_type, array( $object_id ) );
|
|
// if ( isset( $meta_cache[ $object_id ] ) ) {
|
|
// $meta_cache = $meta_cache[ $object_id ];
|
|
// } else {
|
|
// $meta_cache = null;
|
|
// }
|
|
// }
|
|
//
|
|
// if ( ! $meta_key ) {
|
|
// return $meta_cache;
|
|
// }
|
|
//
|
|
// if ( isset( $meta_cache[ $meta_key ] ) ) {
|
|
// if ( $single ) {
|
|
// return maybe_unserialize( $meta_cache[ $meta_key ][0] );
|
|
// } else {
|
|
// return array_map( 'maybe_unserialize', $meta_cache[ $meta_key ] );
|
|
// }
|
|
// }
|
|
// /*
|
|
// * FIN copy
|
|
// */
|
|
//}
|
|
//function add_filter_for_user_id_CIPF($wp) {
|
|
// PLGNTLS_class::debug_infos();
|
|
// add_filter('get_user_metadata', 'filter_user_id_CIPF', 10, 5);
|
|
//}
|
|
//add_action('wp', 'add_filter_for_user_id_CIPF');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
* version 1:
|
|
*
|
|
* adding a shortcode to change the behavior of acf retrieval mechanism
|
|
* by changing the filter acf/pre_load_post_id that find the id acf will use
|
|
* for all the functions like get_field(), get_field_object(), etc
|
|
* it works, but formBuilder don't use acf functions :p
|
|
*
|
|
* [cipf_choose_acf_id] -> nothing happens
|
|
* [cipf_choose_acf_id logged_in] -> the next acf ids will be of the logged-in user
|
|
* [cipf_choose_acf_id post_creator] -> the next acf ids will be of the creator of the post
|
|
* (for the moment, only for author page)
|
|
* [cipf_choose_acf_id off] -> stop the use of specials ids
|
|
*
|
|
*/
|
|
//function test_acf_CIPF($acf_id, $id) {
|
|
// PLGNTLS_class::debug_infos();
|
|
// error_log("acf_id: " . $acf_id . ", id : " . $id);
|
|
// if ($id === null) {
|
|
// return null;
|
|
// }
|
|
// return 'user_'.$id;
|
|
//}
|
|
//
|
|
//function choose_acf_id_CIPF($options) {
|
|
// PLGNTLS_class::debug_infos();
|
|
//
|
|
// $option = reset($options);
|
|
// if (!is_string($option)) {
|
|
// return;
|
|
// }
|
|
//
|
|
// if ($option === 'logged_in') {
|
|
// $id = get_current_user_id();
|
|
// }
|
|
// else if ($option === 'post_creator') {
|
|
// $id = get_queried_object_id();
|
|
// }
|
|
// else if ($option === 'off') {
|
|
// $id = null;
|
|
// }
|
|
// else
|
|
// return;
|
|
//
|
|
// /*
|
|
// * this filter is called by acf to find the id to use
|
|
// * with functions like get_field()
|
|
// *
|
|
// */
|
|
// add_filter('acf/pre_load_post_id', function($null, $acf_id) use ($id) {
|
|
// return test_acf_CIPF($acf_id, $id);
|
|
// }, 10, 2);
|
|
//}
|
|
//add_shortcode('cipf_choose_acf_id', 'choose_acf_id_CIPF');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
* ABANDONNED
|
|
*
|
|
* FIRST TRY : HANDLE THE FORM SUBMIT
|
|
*
|
|
* not always simple to get the id of the author
|
|
* anyway it does not help to show the acf values on form
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
* custom action in php on custom form submission
|
|
* custom forms are not processed by divi form builder
|
|
* so they don't change between hooks before and after process
|
|
*
|
|
*/
|
|
//function admin_validate_prof_CIPF($data) {
|
|
// PLGNTLS_class::debug_infos();
|
|
// $acf_prof_is_activ = PLGNTLS_class::ACF_PROF_IS_ACTIV;
|
|
//
|
|
// if (empty($data))
|
|
// redirection_profil_CIPF();
|
|
//
|
|
// error_log("---");
|
|
// error_log("data");
|
|
// error_log(json_encode($data));
|
|
//
|
|
// if (!isset($data[$acf_prof_is_activ['_name']]))
|
|
// redirection_profil_CIPF();
|
|
//
|
|
// $is_activ = $data[$acf_prof_is_activ['_name']];
|
|
// error_log("is_activ");
|
|
// error_log($is_activ);
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
* version 4 :
|
|
* calling the action to validate from the url path and/or query
|
|
*
|
|
*/
|
|
//function url_custom_form_admin_validate_prof_CIPF() {
|
|
// PLGNTLS_class::debug_infos();
|
|
// $slug_admin_validate_prof = PLGNTLS_class::SLUG_ADMIN_VALIDATE_PROF;
|
|
//
|
|
// if (!isset($_GET['q']))
|
|
// return;
|
|
//
|
|
// /*
|
|
// * check the request /path/
|
|
// * for url : https://url.com/path/to/file/?query=value
|
|
// * -> $_GET: {"q":"/path/to/file/","query":"value"}
|
|
// *
|
|
// */
|
|
// $get_path = trim($_GET['q'], '/');
|
|
// if ($get_path !== $slug_admin_validate_prof)
|
|
// return;
|
|
//
|
|
// admin_validate_prof_CIPF($_POST);
|
|
//}
|
|
//add_action('init', 'url_custom_form_admin_validate_prof_CIPF');
|
|
|
|
|
|
|
|
|
|
/*
|
|
* version 3 :
|
|
* calling the action to validate from the FormBuilder hook
|
|
*
|
|
*/
|
|
//function custom_form_admin_validate_prof_CIPF($form_id, $post_array, $form_type) {
|
|
// PLGNTLS_class::debug_infos();
|
|
// $admin_validate_prof_field = PLGNTLS_class::ADMIN_VALIDATE_PROF_FIELD;
|
|
//
|
|
// if ($form_type !== 'custom')
|
|
// return;
|
|
//
|
|
// $field_id = $post_array['field_id'];
|
|
// $contains_id = in_array($admin_validate_prof_field, $field_id);
|
|
// if ($contains_id === false)
|
|
// return;
|
|
//
|
|
// admin_validate_prof_CIPF($post_array);
|
|
//}
|
|
//add_action('df_before_process', 'custom_form_admin_validate_prof_CIPF', 10, 3);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
* version 2 : ABANDONNED
|
|
* tried to receive the form in ajax from front with wp REST API
|
|
* but I cannot verify if the user is logged in
|
|
* so it does not work
|
|
*
|
|
*/
|
|
//function admin_validate_prof_form_CIPF($request) {
|
|
// PLGNTLS_class::debug_infos();
|
|
// $slug_page_redirection = PLGNTLS_class::SLUG_PAGE_REDIRECTION;
|
|
//
|
|
// error_log("-----");
|
|
// error_log("inside admin_validate_prof_form_CIPF");
|
|
// error_log("request");
|
|
// error_log(json_encode($request));
|
|
// error_log("_POST");
|
|
// error_log(json_encode($_POST));
|
|
// // _POST : {"field_title":["\u00c9tat du compte"],"field_name":["compte-actif"],"field_id":["cipf_admin_activate_prof"],"form_key":"40781-1","unique_id":"91eed9aa-2b92-4da7-a0b4-e94f24515223","form_type":"custom","divi-form-submit":"yes","form_id":"","form_type_confirm":""}
|
|
//
|
|
// // Set up nocache headers before redirecting : https://developer.wordpress.org/reference/functions/wp_safe_redirect/#user-contributed-notes
|
|
// nocache_headers();
|
|
// $redirect_url = home_url() . '/' . $slug_page_redirection;
|
|
// wp_redirect($redirect_url, 301);
|
|
// exit;
|
|
//}
|
|
//function endpoint_form_admin_activate_prof_CIPF() {
|
|
// PLGNTLS_class::debug_infos();
|
|
// $base_rest_route = PLGNTLS_class::URL_BASE_REST_ROUTE;
|
|
//
|
|
// register_rest_route($base_rest_route, '/admin_prof_activate_form', array(
|
|
// 'methods' => 'POST',
|
|
// 'callback' => 'admin_validate_prof_form_CIPF',
|
|
// ));
|
|
//};
|
|
//add_action('rest_api_init', 'endpoint_form_admin_activate_prof_CIPF');
|
|
|
|
|
|
|
|
|
|
/*
|
|
* version 1 : ABANDONNED
|
|
* enqueue script that should prevent the form to submit, but does not work
|
|
*
|
|
*/
|
|
//function admin_validate_prof_prevent_CIPF() {
|
|
// PLGNTLS_class::debug_infos();
|
|
// $handle = 'admin_prevent_submit';
|
|
// $url = PLGNTLS_class::root_url() . 'js/admin_prevent_submit.js';
|
|
// $dependencies = array();
|
|
// $version = null;
|
|
// $defer = true;
|
|
// wp_enqueue_script($handle, $url, $dependencies, $version, $defer);
|
|
//}
|
|
//add_action('wp_enqueue_scripts', 'admin_validate_prof_prevent_CIPF');
|
|
|
|
|
|
|
|
|
|
|
|
?>
|