function cf7bs_get_form_property($property, $form_id = 0)
{
    global $current_form_id, $current_form_properties;
    $current_form = $original_form = null;
    if (!$form_id) {
        $form_id = cf7bs_get_current_form_id();
        if (!$form_id) {
            return false;
        }
        $current_form = WPCF7_ContactForm::get_current();
    } else {
        $current_form = WPCF7_ContactForm::get_instance($form_id);
        $original_form = WPCF7_ContactForm::get_current();
        if (is_a($current_form, 'WPCF7_ContactForm') && is_callable(array($current_form, 'id')) && is_a($original_form, 'WPCF7_ContactForm') && is_callable(array($original_form, 'id'))) {
            if ($original_form->id() === $current_form->id()) {
                $original_form = null;
            }
        }
    }
    if ($current_form_id != $form_id) {
        $current_form_id = $form_id;
        $properties = cf7bs_get_default_form_properties();
        if (is_a($current_form, 'WPCF7_ContactForm') && is_callable(array($current_form, 'additional_setting'))) {
            foreach ($properties as $key => &$value) {
                $setting = $current_form->additional_setting($key);
                if (isset($setting[0])) {
                    $value = $setting[0];
                }
            }
            unset($key);
            unset($value);
        }
        $current_form_properties = apply_filters('cf7bs_form_' . $form_id . '_properties', $properties);
    }
    if (null !== $original_form) {
        if (is_a($original_form, 'WPCF7_ContactForm') && is_callable(array($original_form, 'id'))) {
            WPCF7_ContactForm::get_instance($original_form->id());
        }
    }
    if (isset($current_form_properties[$property])) {
        return $current_form_properties[$property];
    }
    return false;
}
function wpcf7_contact_form($id)
{
    return WPCF7_ContactForm::get_instance($id);
}
Example #3
0
 /**
  * Constructor for class
  *
  * @since 1.0.0
  */
 public function __construct()
 {
     // add admin page
     add_action('admin_menu', array($this, 'add_settings_pages'), 25);
     // save config
     add_action('wp_ajax_frmwks_save_config', array($this, 'save_config'));
     // exporter
     add_action('init', array($this, 'check_exporter'));
     // get forms list
     add_filter('formworks_get_forms', array($this, 'get_forms'));
     add_action('wp_ajax_frmwks_module_data', array($this, 'module_data_loader'));
     if (current_user_can('manage_options')) {
         add_action('wp_ajax_frmwks_rebuild_database', array($this, 'rebuild_database'));
         //add_action( 'wp_ajax_frmwks_reset_form_stats', array( $this, 'reset_form_stats') );
     }
     // create new
     add_action('wp_ajax_frmwks_create_formworks', array($this, 'create_new_formworks'));
     // delete
     add_action('wp_ajax_frmwks_delete_formworks', array($this, 'delete_formworks'));
     add_filter('formworks_stats_field_name', function ($field, $form_prefix, $form_id) {
         switch ($form_prefix) {
             case 'caldera':
                 if (false !== strpos($field, '[')) {
                     $field = strtok($field, '[');
                 }
                 // is CF
                 $form = \Caldera_Forms::get_form($form_id);
                 if (empty($form)) {
                     continue;
                 }
                 if (!empty($form['fields'][$field]['label'])) {
                     $field = $form['fields'][$field]['label'];
                 }
                 break;
             case 'gform':
                 //get gravity form
                 if (!class_exists('RGFormsModel')) {
                     continue;
                 }
                 $form_info = \RGFormsModel::get_form($form_id);
                 break;
             case 'ninja':
                 //get ninja form
                 if (!function_exists('Ninja_Forms')) {
                     continue;
                 }
                 $form_name = Ninja_Forms()->form($form_id)->get_setting('form_title');
                 $form_id = $form_id;
                 break;
             case 'cf7':
                 //get contact form 7
                 if (!class_exists('WPCF7_ContactForm')) {
                     continue;
                 }
                 $cf7form = \WPCF7_ContactForm::get_instance($form_id);
                 $form_name = $cf7form->title();
                 $form_id = $cf7form->id();
                 break;
             case 'frmid':
                 if (!class_exists('FrmForm')) {
                     continue;
                 }
                 $field_id = (int) strtok(str_replace('item_meta[', '', $field), ']');
                 $form_field = \FrmField::getOne($field_id);
                 $field = $form_field->name;
                 if (!empty($form_field->description) && $form_field->description != $form_field->name) {
                     $field .= ':' . $form_field->description;
                 }
                 break;
             case 'jp':
                 $form_post = get_post($form_id);
                 if (empty($form_post)) {
                     continue;
                 }
                 $field = ucwords(str_replace('g' . $form_id . '-', '', $field));
                 break;
             default:
                 //no idea what this is or the form plugin was disabled.
                 break;
         }
         return $field;
     }, 10, 3);
 }
function wpcf7_load_contact_form_admin()
{
    global $plugin_page;
    $action = wpcf7_current_action();
    if ('save' == $action) {
        $id = $_POST['post_ID'];
        check_admin_referer('wpcf7-save-contact-form_' . $id);
        if (!current_user_can('wpcf7_edit_contact_form', $id)) {
            wp_die(__('You are not allowed to edit this item.', 'contact-form-7'));
        }
        $id = wpcf7_save_contact_form($id);
        $query = array('message' => -1 == $_POST['post_ID'] ? 'created' : 'saved', 'post' => $id, 'active-tab' => isset($_POST['active-tab']) ? (int) $_POST['active-tab'] : 0);
        $redirect_to = add_query_arg($query, menu_page_url('wpcf7', false));
        wp_safe_redirect($redirect_to);
        exit;
    }
    if ('copy' == $action) {
        $id = empty($_POST['post_ID']) ? absint($_REQUEST['post']) : absint($_POST['post_ID']);
        check_admin_referer('wpcf7-copy-contact-form_' . $id);
        if (!current_user_can('wpcf7_edit_contact_form', $id)) {
            wp_die(__('You are not allowed to edit this item.', 'contact-form-7'));
        }
        $query = array();
        if ($contact_form = wpcf7_contact_form($id)) {
            $new_contact_form = $contact_form->copy();
            $new_contact_form->save();
            $query['post'] = $new_contact_form->id();
            $query['message'] = 'created';
        }
        $redirect_to = add_query_arg($query, menu_page_url('wpcf7', false));
        wp_safe_redirect($redirect_to);
        exit;
    }
    if ('delete' == $action) {
        if (!empty($_POST['post_ID'])) {
            check_admin_referer('wpcf7-delete-contact-form_' . $_POST['post_ID']);
        } elseif (!is_array($_REQUEST['post'])) {
            check_admin_referer('wpcf7-delete-contact-form_' . $_REQUEST['post']);
        } else {
            check_admin_referer('bulk-posts');
        }
        $posts = empty($_POST['post_ID']) ? (array) $_REQUEST['post'] : (array) $_POST['post_ID'];
        $deleted = 0;
        foreach ($posts as $post) {
            $post = WPCF7_ContactForm::get_instance($post);
            if (empty($post)) {
                continue;
            }
            if (!current_user_can('wpcf7_delete_contact_form', $post->id())) {
                wp_die(__('You are not allowed to delete this item.', 'contact-form-7'));
            }
            if (!$post->delete()) {
                wp_die(__('Error in deleting.', 'contact-form-7'));
            }
            $deleted += 1;
        }
        $query = array();
        if (!empty($deleted)) {
            $query['message'] = 'deleted';
        }
        $redirect_to = add_query_arg($query, menu_page_url('wpcf7', false));
        wp_safe_redirect($redirect_to);
        exit;
    }
    $_GET['post'] = isset($_GET['post']) ? $_GET['post'] : '';
    $post = null;
    if ('wpcf7-new' == $plugin_page && isset($_GET['locale'])) {
        $post = WPCF7_ContactForm::get_template(array('locale' => $_GET['locale']));
    } elseif (!empty($_GET['post'])) {
        $post = WPCF7_ContactForm::get_instance($_GET['post']);
    }
    $current_screen = get_current_screen();
    $help_tabs = new WPCF7_Help_Tabs($current_screen);
    if ($post && current_user_can('wpcf7_edit_contact_form', $post->id())) {
        $help_tabs->set_help_tabs('edit');
    } else {
        if ('wpcf7-new' == $plugin_page) {
            $help_tabs->set_help_tabs('add_new');
        } else {
            $help_tabs->set_help_tabs('list');
            if (!class_exists('WPCF7_Contact_Form_List_Table')) {
                require_once WPCF7_PLUGIN_DIR . '/admin/includes/class-contact-forms-list-table.php';
            }
            add_filter('manage_' . $current_screen->id . '_columns', array('WPCF7_Contact_Form_List_Table', 'define_columns'));
            add_screen_option('per_page', array('default' => 20, 'option' => 'cfseven_contact_forms_per_page'));
        }
    }
}