Exemple #1
0
 public function get_this_field_value_entry_list($value, $form_id, $field_id, $entry)
 {
     $form = GFAPI::get_form($form_id);
     $field = GFFormsmodel::get_field($form, $field_id);
     if ($this->is_this_field_type($field)) {
         $value = $this->get_value_entry_list($value, $form_id, $field_id, $entry);
     }
     return $value;
 }
        public function results_page($form_id, $page_title, $gf_page, $gf_view)
        {
            if (empty($form_id)) {
                $forms = RGFormsModel::get_forms();
                if (!empty($forms)) {
                    $form_id = $forms[0]->id;
                }
            }
            $form = GFFormsModel::get_form_meta($form_id);
            $form = apply_filters("gform_form_pre_results_{$form_id}", apply_filters("gform_form_pre_results", $form));
            // set up filter vars
            $start_date = rgget("start");
            $end_date = rgget("end");
            $all_fields = $form["fields"];
            // set up filters
            $fields = $all_fields;
            $exclude_types = array("rank", "page");
            for ($i = 0; $i < count($all_fields); $i++) {
                $field_type = GFFormsmodel::get_input_type($all_fields[$i]);
                if (in_array($field_type, $exclude_types)) {
                    unset($fields[$i]);
                }
            }
            $fields = array_values($fields);
            $field_filters = array();
            foreach ($fields as $field) {
                $operators = array();
                $field_type = GFFormsmodel::get_input_type($field);
                $operators[] = "is";
                if ($field_type != "checkbox") {
                    $operators[] = "isnot";
                }
                $field_filter = array();
                $key = $field["id"];
                if ($field_type == "likert" && rgar($field, "gsurveyLikertEnableMultipleRows")) {
                    $field_filter["key"] = $key;
                    $field_filter["type"] = "group";
                    $field_filter["text"] = rgar($field, "label");
                    $sub_filters = array();
                    $rows = rgar($field, "gsurveyLikertRows");
                    foreach ($rows as $row) {
                        $sub_filter = array();
                        $sub_filter["key"] = $key . "|" . rgar($row, "value");
                        $sub_filter["text"] = rgar($row, "text");
                        $sub_filter["type"] = "field";
                        $sub_filter["preventMultiple"] = false;
                        $sub_filter["operators"] = $operators;
                        $sub_filter["values"] = $field["choices"];
                        $sub_filters[] = $sub_filter;
                    }
                    $field_filter["filters"] = $sub_filters;
                } else {
                    $field_filter["key"] = $key;
                    $field_filter["type"] = "field";
                    $field_filter["preventMultiple"] = false;
                    $field_filter["text"] = rgar($field, "label");
                    if (isset($field["choices"])) {
                        $field_filter["values"] = $field["choices"];
                    } else {
                        $operators[] = "contains";
                    }
                    $field_filter["operators"] = $operators;
                }
                $field_filters[] = $field_filter;
            }
            $entry_meta_filters = self::get_entry_meta_filters($form_id);
            $field_filters = array_merge($field_filters, $entry_meta_filters);
            $field_filters = apply_filters("gform_filters_pre_results", $field_filters, $form);
            $field_filters = array_values($field_filters);
            // reset the numeric keys in case some filters have been unset
            ?>
            <script type="text/javascript">
                var gresultsFields = <?php 
            echo json_encode($all_fields);
            ?>
;
                var gresultsFilters = <?php 
            echo json_encode($field_filters);
            ?>
;
            </script>

            <link rel="stylesheet"
                  href="<?php 
            echo GFCommon::get_base_url();
            ?>
/css/admin.css?ver=<?php 
            echo GFCommon::$version;
            ?>
"
                  type="text/css"/>
            <div class="wrap gforms_edit_form <?php 
            echo GFCommon::get_browser_class();
            ?>
">

                <div class="icon32" id="gravity-entry-icon"><br></div>

                <h2><?php 
            echo empty($form_id) ? $page_title : $page_title . " : " . esc_html($form["title"]);
            ?>
</h2>

                <?php 
            RGForms::top_toolbar();
            ?>
                <?php 
            if (false === empty($all_fields)) {
                ?>
                    <div class="gresults-filter-loading" style="display:none;float:left;margin-right:5px;">
                        <img style="vertical-align:middle;"
                             src="<?php 
                echo GFCommon::get_base_url();
                ?>
/images/spinner.gif"
                             alt="loading..."/>&nbsp;
                        <a href="javascript:void(0);" onclick="javascript:gresultsAjaxRequest.abort()">Cancel</a>
                    </div>
                    <div id="poststuff" class="metabox-holder has-right-sidebar">
                        <div id="gresults-results-wrapper">
                            <div id="gresults-results">&nbsp;
                            </div>
                        </div>

                        <div id="gresults-results-filter" class="postbox">
                            <h3 style="cursor: default;"><?php 
                _e("Results Filters", "gravityforms");
                ?>
</h3>

                            <div id="gresults-results-filter-content">
                                <form id="gresults-results-filter-form" action="" method="GET">
                                    <input type="hidden" id="gresults-page-slug" name="page"
                                           value="<?php 
                echo esc_attr($gf_page);
                ?>
">
                                    <input type="hidden" id="gresults-view-slug" name="view"
                                           value="<?php 
                echo esc_attr($gf_view);
                ?>
">
                                    <input type="hidden" id="gresults-form-id" name="id"
                                           value="<?php 
                echo esc_attr($form_id);
                ?>
">
                                    <div class='gresults-results-filter-section-label'>
                                        <?php 
                _e("Filters", "gravityforms");
                ?>
                                        &nbsp;<?php 
                gform_tooltip("gresults_filters", "tooltip_bottomleft");
                ?>
</div>
                                    <div id="gresults-results-field-filters-container">
                                        <div id="gresults-results-field-filters">
                                            <!-- placeholder populated by js -->
                                        </div>
                                    </div>
                                    <div class='gresults-results-filter-section-label'>
                                        <?php 
                _e("Date Range", "gravityforms");
                ?>
                                        &nbsp;<?php 
                gform_tooltip("gresults_date_range", "tooltip_left");
                ?>
                                    </div>
                                    <div style="width:90px; float:left; ">

                                        <label
                                            for="gresults-results-filter-date-start"><?php 
                _e("Start", "gravityforms");
                ?>
</label>
                                        <input type="text" id="gresults-results-filter-date-start" name="start"
                                               style="width:80px"
                                               class="gresults-datepicker"
                                               value="<?php 
                echo $start_date;
                ?>
"/>
                                    </div>
                                    <div style="width:90px; float:left; ">
                                        <label
                                            for="gresults-results-filter-date-end"><?php 
                _e("End", "gravityforms");
                ?>
</label>
                                        <input type="text" id="gresults-results-filter-date-end" name="end"
                                               style="width:80px"
                                               class="gresults-datepicker"
                                               value="<?php 
                echo $end_date;
                ?>
"/>
                                    </div>
                                    <br style="clear:both"/>

                                    <div id="gresults-results-filter-buttons">
                                        <input type="submit" id="gresults-results-filter-submit-button"
                                               class="button button-primary button-large" value="Apply filters">
                                        <input type="button" id="gresults-results-filter-clear-button"
                                               class="button button-secondary button-large" value="Clear"
                                               onclick="gresults.clearFilterForm();">

                                        <div class="gresults-filter-loading"
                                             style="display:none; float:right; margin-top:5px;">
                                            <img
                                                src="<?php 
                echo GFCommon::get_base_url();
                ?>
/images/spinner.gif"
                                                alt="loading..."/>
                                        </div>
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
                <?php 
            } else {
                _e("This form does not have any fields that can be used for results", "gravityforms");
            }
            ?>
            </div>


        <?php 
        }
 public static function get_field_filter_settings($form)
 {
     $all_fields = $form['fields'];
     // set up filters
     $fields = $all_fields;
     $exclude_types = array('rank', 'page', 'html');
     $operators_by_input_type = array('default' => array('is', 'isnot', '>', '<'), 'name' => array('is', 'isnot', '>', '<', 'contains'), 'address' => array('is', 'isnot', '>', '<', 'contains'), 'text' => array('is', 'isnot', '>', '<', 'contains'), 'textarea' => array('is', 'isnot', '>', '<', 'contains'), 'checkbox' => array('is'), 'multiselect' => array('contains'), 'number' => array('is', 'isnot', '>', '<'), 'select' => array('is', 'isnot', '>', '<'), 'likert' => array('is', 'isnot'), 'list' => array('contains'));
     for ($i = 0; $i < count($all_fields); $i++) {
         $input_type = GFFormsmodel::get_input_type($all_fields[$i]);
         if (in_array($input_type, $exclude_types)) {
             unset($fields[$i]);
         }
     }
     $fields = array_values($fields);
     $field_filters = array(array('key' => '0', 'text' => esc_html__('Any form field', 'gravityforms'), 'operators' => array('contains', 'is'), 'preventMultiple' => false));
     foreach ($fields as $field) {
         $input_type = GFFormsModel::get_input_type($field);
         $operators = isset($operators_by_input_type[$input_type]) ? $operators_by_input_type[$input_type] : $operators_by_input_type['default'];
         if ($field->type == 'product' && in_array($input_type, array('radio', 'select'))) {
             $operators = array('is');
         } elseif (!isset($field->choices) && !in_array('contains', $operators)) {
             $operators[] = 'contains';
         }
         $field_filter = array();
         $key = $field->id;
         if ($input_type == 'likert' && $field->gsurveyLikertEnableMultipleRows) {
             // multi-row likert fields
             $field_filter['key'] = $key;
             $field_filter['group'] = true;
             $field_filter['text'] = GFFormsModel::get_label($field);
             $sub_filters = array();
             $rows = $field->gsurveyLikertRows;
             foreach ($rows as $row) {
                 $sub_filter = array();
                 $sub_filter['key'] = $key . '|' . rgar($row, 'value');
                 $sub_filter['text'] = rgar($row, 'text');
                 $sub_filter['type'] = 'field';
                 $sub_filter['preventMultiple'] = false;
                 $sub_filter['operators'] = $operators;
                 $sub_filter['values'] = $field->choices;
                 $sub_filters[] = $sub_filter;
             }
             $field_filter['filters'] = $sub_filters;
         } elseif ($input_type == 'name' && $field->nameFormat == '' || $input_type == 'address') {
             // standard two input name field
             $field_filter['key'] = $key;
             $field_filter['group'] = true;
             $field_filter['text'] = GFFormsModel::get_label($field);
             $sub_filters = array();
             $inputs = $field->inputs;
             foreach ($inputs as $input) {
                 $sub_filter = array();
                 $sub_filter['key'] = rgar($input, 'id');
                 $sub_filter['text'] = rgar($input, 'label');
                 $sub_filter['preventMultiple'] = false;
                 $sub_filter['operators'] = $operators;
                 $sub_filters[] = $sub_filter;
             }
             $field_filter['filters'] = $sub_filters;
         } elseif ($input_type == 'date') {
             $field_filter['key'] = $key;
             $field_filter['preventMultiple'] = false;
             $field_filter['text'] = GFFormsModel::get_label($field);
             $field_filter['operators'] = $operators;
             $field_filter['placeholder'] = esc_html__('yyyy-mm-dd', 'gravityforms');
             $field_filter['cssClass'] = 'datepicker ymd_dash';
         } else {
             $field_filter['key'] = $key;
             $field_filter['preventMultiple'] = false;
             $field_filter['text'] = GFFormsModel::get_label($field);
             $field_filter['operators'] = $operators;
             if (isset($field->choices)) {
                 $field_filter['values'] = $field->choices;
             }
         }
         $field_filters[] = $field_filter;
     }
     $form_id = $form['id'];
     $entry_meta_filters = self::get_entry_meta_filter_settings($form_id);
     $field_filters = array_merge($field_filters, $entry_meta_filters);
     $field_filters = array_values($field_filters);
     // reset the numeric keys in case some filters have been unset
     $info_filters = self::get_entry_info_filter_settings();
     $field_filters = array_merge($field_filters, $info_filters);
     $field_filters = array_values($field_filters);
     return $field_filters;
 }
 public static function get_field_filter_settings($form)
 {
     $all_fields = $form["fields"];
     // set up filters
     $fields = $all_fields;
     $exclude_types = array("rank", "page", "html");
     $operators_by_field_type = array("default" => array("is", "isnot", ">", "<"), "checkbox" => array("is"), "multiselect" => array("contains"), "number" => array("is", "isnot", ">", "<"), "likert" => array("is", "isnot"), "list" => array("contains"));
     for ($i = 0; $i < count($all_fields); $i++) {
         $field_type = GFFormsmodel::get_input_type($all_fields[$i]);
         if (in_array($field_type, $exclude_types)) {
             unset($fields[$i]);
         }
     }
     $fields = array_values($fields);
     $field_filters = array(array("key" => "0", "text" => __("Any form field", "gravityforms"), "operators" => array("contains", "is")));
     foreach ($fields as $field) {
         $field_type = GFFormsModel::get_input_type($field);
         $operators = isset($operators_by_field_type[$field_type]) ? $operators_by_field_type[$field_type] : $operators_by_field_type["default"];
         if (!isset($field["choices"]) && !in_array("contains", $operators)) {
             $operators[] = "contains";
         }
         $field_filter = array();
         $key = $field["id"];
         if ($field_type == "likert" && rgar($field, "gsurveyLikertEnableMultipleRows")) {
             // multi-row likert fields
             $field_filter["key"] = $key;
             $field_filter["group"] = true;
             $field_filter["text"] = GFFormsModel::get_label($field);
             $sub_filters = array();
             $rows = rgar($field, "gsurveyLikertRows");
             foreach ($rows as $row) {
                 $sub_filter = array();
                 $sub_filter["key"] = $key . "|" . rgar($row, "value");
                 $sub_filter["text"] = rgar($row, "text");
                 $sub_filter["type"] = "field";
                 $sub_filter["preventMultiple"] = false;
                 $sub_filter["operators"] = $operators;
                 $sub_filter["values"] = $field["choices"];
                 $sub_filters[] = $sub_filter;
             }
             $field_filter["filters"] = $sub_filters;
         } elseif ($field_type == "name" && rgar($field, "nameFormat") == "" || $field_type == "address") {
             // standard two input name field
             $field_filter["key"] = $key;
             $field_filter["group"] = true;
             $field_filter["text"] = GFFormsModel::get_label($field);
             $sub_filters = array();
             $inputs = rgar($field, "inputs");
             foreach ($inputs as $input) {
                 $sub_filter = array();
                 $sub_filter["key"] = rgar($input, "id");
                 $sub_filter["text"] = rgar($input, "label");
                 $sub_filter["preventMultiple"] = false;
                 $sub_filter["operators"] = $operators;
                 $sub_filters[] = $sub_filter;
             }
             $field_filter["filters"] = $sub_filters;
         } else {
             $field_filter["key"] = $key;
             $field_filter["preventMultiple"] = false;
             $field_filter["text"] = GFFormsModel::get_label($field);
             $field_filter["operators"] = $operators;
             if (isset($field["choices"])) {
                 $field_filter["values"] = $field["choices"];
             }
         }
         $field_filters[] = $field_filter;
     }
     $form_id = $form["id"];
     $entry_meta_filters = self::get_entry_meta_filter_settings($form_id);
     $field_filters = array_merge($field_filters, $entry_meta_filters);
     $field_filters = array_values($field_filters);
     // reset the numeric keys in case some filters have been unset
     $info_filters = self::get_entry_info_filter_settings();
     $field_filters = array_merge($field_filters, $info_filters);
     $field_filters = array_values($field_filters);
     return $field_filters;
 }