| @@ -1,6 +1,5 @@ | ||
| 1 | 1 | <?php |
| 2 | - | |
| 3 | 2 | /** |
| 4 | 3 | * The public-facing functionality of the plugin. |
| 5 | 4 | * |
| 6 | 5 | * @link http://wpgeodirectory.com |
| @@ -21,179 +20,106 @@ | ||
| 21 | 20 | * @author GeoDirectory Team <info@wpgeodirectory.com> |
| 22 | 21 | */ |
| 23 | 22 | class UsersWP_Public { |
| 24 | 23 | |
| 25 | - | |
| 26 | - /** | |
| 27 | - * Register the stylesheets for the public-facing side of the site. | |
| 28 | - * | |
| 29 | - * @since 1.0.0 | |
| 30 | - */ | |
| 31 | - public function enqueue_styles() { | |
| 24 | + /** | |
| 25 | + * Register the stylesheets for the public-facing side of the site. | |
| 26 | + * | |
| 27 | + * @since 1.0.0 | |
| 28 | + */ | |
| 29 | + public function enqueue_styles() { | |
| 30 | + // Scripts if user on own profile page. | |
| 31 | + if ( is_uwp_current_user_profile_page() ) { | |
| 32 | + // Include only profile pages | |
| 33 | + wp_enqueue_style( 'jcrop' ); | |
| 32 | 34 | |
| 33 | - /** | |
| 34 | - * An instance of this class should be passed to the run() function | |
| 35 | - * defined in UsersWP_Loader as all of the hooks are defined | |
| 36 | - * in that particular class. | |
| 37 | - * | |
| 38 | - * The UsersWP_Loader will then create the relationship | |
| 39 | - * between the defined hooks and the functions defined in this | |
| 40 | - * class. | |
| 41 | - */ | |
| 42 | - if (is_uwp_page()) { | |
| 43 | - // include only in uwp pages | |
| 44 | - wp_register_style('jquery-ui', plugin_dir_url(dirname(__FILE__)) . 'public/assets/css/jquery-ui.css'); | |
| 45 | - wp_enqueue_style( 'jquery-ui' ); | |
| 46 | - } | |
| 35 | + if ( is_user_logged_in() ) { | |
| 36 | + wp_enqueue_media(); | |
| 37 | + } | |
| 38 | + } | |
| 47 | 39 | |
| 48 | - if (is_uwp_current_user_profile_page()) { | |
| 49 | - // include only profile pages | |
| 50 | - wp_enqueue_style( 'jcrop' ); | |
| 40 | + wp_register_style( 'jquery-ui', USERSWP_PLUGIN_URL . 'assets/css/jquery-ui.css' ); | |
| 51 | 41 | |
| 52 | - if (is_user_logged_in()) { | |
| 53 | - wp_enqueue_media(); | |
| 54 | - } | |
| 55 | - } | |
| 42 | + // maybe add bootstrap | |
| 43 | + if ( empty( uwp_get_option("design_style", "bootstrap" ) ) ) { | |
| 44 | + wp_enqueue_style( USERSWP_NAME, USERSWP_PLUGIN_URL . 'assets/css/users-wp.css', array(), USERSWP_VERSION, 'all' ); | |
| 45 | + wp_register_style( 'uwp-authorbox', USERSWP_PLUGIN_URL . 'assets/css/authorbox.css', array(), USERSWP_VERSION, 'all' ); | |
| 46 | + } else { | |
| 47 | + //@todo this is not actually being used yet, enable when if it is. | |
| 48 | + //wp_enqueue_style( "uwp", USERSWP_PLUGIN_URL . 'assets/css/bootstrap/uwp.css', array(), USERSWP_VERSION, 'all' ); | |
| 49 | + } | |
| 50 | + } | |
| 56 | 51 | |
| 57 | - $enable_timepicker_in_register = false; | |
| 58 | - $enable_timepicker_in_account = false; | |
| 52 | + /** | |
| 53 | + * Register the JavaScript for the public-facing side of the site. | |
| 54 | + * | |
| 55 | + * @since 1.0.0 | |
| 56 | + */ | |
| 57 | + public function enqueue_scripts() { | |
| 58 | + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; | |
| 59 | + $in_footer = apply_filters( 'uwp_enqueue_scripts_in_footer', false ); | |
| 59 | 60 | |
| 60 | - $enable_chosen_in_register = false; | |
| 61 | - $enable_chosen_in_account = false; | |
| 61 | + // Core UWP JS | |
| 62 | + wp_enqueue_script( USERSWP_NAME, USERSWP_PLUGIN_URL . 'assets/js/users-wp' . $suffix . '.js', array( 'jquery' ), USERSWP_VERSION, $in_footer ); | |
| 62 | 63 | |
| 63 | - if (is_uwp_register_page() || is_uwp_account_page()) { | |
| 64 | - if (is_uwp_register_page()) { | |
| 65 | - $fields = get_register_form_fields(); | |
| 66 | - } else { | |
| 67 | - // account page | |
| 68 | - $fields = get_account_form_fields(); | |
| 69 | - } | |
| 70 | - if (!empty($fields)) { | |
| 71 | - foreach ($fields as $field) { | |
| 72 | - if ($field->field_type == 'time') { | |
| 73 | - $enable_timepicker_in_register = true; | |
| 74 | - } | |
| 64 | + // localize | |
| 65 | + $uwp_localize_data = uwp_get_localize_data(); | |
| 66 | + wp_localize_script( USERSWP_NAME, 'uwp_localize_data', $uwp_localize_data ); | |
| 75 | 67 | |
| 76 | - if ($field->field_type == 'multiselect') { | |
| 77 | - $enable_chosen_in_register = true; | |
| 78 | - } | |
| 79 | - } | |
| 80 | - } | |
| 81 | - } | |
| 82 | - | |
| 68 | + wp_register_script( "uwp_timepicker", USERSWP_PLUGIN_URL . 'assets/js/jquery.ui.timepicker.min.js', array( 'jquery', 'jquery-ui-datepicker', 'jquery-ui-core' ), USERSWP_VERSION, true ); | |
| 83 | 69 | |
| 84 | - if ($enable_timepicker_in_register || $enable_timepicker_in_account) { | |
| 85 | - // time fields available only in register and account pages | |
| 86 | - wp_enqueue_style( "uwp_timepicker_css", plugin_dir_url( __FILE__ ) . 'assets/css/jquery.ui.timepicker.css', array(), null, 'all' ); | |
| 87 | - } | |
| 70 | + $enable_timepicker_fields = false; | |
| 71 | + $enable_country_fields = false; | |
| 72 | + $fields = $this->get_all_form_fields(); | |
| 88 | 73 | |
| 74 | + if ( ! empty( $fields ) ) { | |
| 75 | + foreach ( $fields as $field ) { | |
| 76 | + if ( isset( $field->field_type ) && ( $field->field_type == 'time' || $field->field_type == 'datepicker' ) ) { | |
| 77 | + $enable_timepicker_fields = true; | |
| 78 | + } | |
| 89 | 79 | |
| 90 | - if ($enable_chosen_in_register || $enable_chosen_in_account) { | |
| 91 | - // chosen fields (multiselect) available only in register and account pages | |
| 92 | - wp_enqueue_style( "uwp_chosen_css", plugin_dir_url( __FILE__ ) . 'assets/css/chosen.css', array(), null, 'all' ); | |
| 93 | - } | |
| 80 | + if ( isset($field->field_type_key ) && ( $field->field_type_key == 'uwp_country' || $field->field_type_key == 'country' ) ) { | |
| 81 | + $enable_country_fields = true; | |
| 82 | + } | |
| 83 | + } | |
| 84 | + } | |
| 94 | 85 | |
| 86 | + if ( $enable_timepicker_fields ) { | |
| 87 | + wp_enqueue_style( 'jquery-ui' ); | |
| 88 | + wp_enqueue_script( "uwp_timepicker" ); | |
| 89 | + } | |
| 95 | 90 | |
| 96 | - if (is_uwp_page()) { | |
| 97 | - // include only in uwp pages | |
| 98 | - uwp_load_font_awesome(); | |
| 99 | - } | |
| 100 | - | |
| 101 | - wp_enqueue_style( USERSWP_NAME, plugin_dir_url( __FILE__ ) . 'assets/css/users-wp.css', array(), null, 'all' ); | |
| 102 | - //widget styles for all pages | |
| 103 | - wp_enqueue_style( "uwp_widget_css", plugin_dir_url( __FILE__ ) . 'assets/css/widgets.css', array(), null, 'all' ); | |
| 104 | - | |
| 91 | + if ( $enable_country_fields ) { | |
| 92 | + //@todo lets find a better solution for this and put it in AUI, maybe SVG files? | |
| 93 | + wp_enqueue_style( "uwp-country-select", USERSWP_PLUGIN_URL . 'assets/css/countryselect.css', array(), USERSWP_VERSION, 'all' ); | |
| 94 | + wp_enqueue_script( "country-select", USERSWP_PLUGIN_URL . 'assets/js/countrySelect' . $suffix . '.js', array( 'jquery' ), USERSWP_VERSION, $in_footer ); | |
| 95 | + $country_data = uwp_get_country_data(); | |
| 96 | + wp_localize_script( 'country-select', 'uwp_country_data', $country_data ); | |
| 97 | + } | |
| 105 | 98 | } |
| 106 | 99 | |
| 107 | - /** | |
| 108 | - * Register the JavaScript for the public-facing side of the site. | |
| 109 | - * | |
| 110 | - * @since 1.0.0 | |
| 111 | - */ | |
| 112 | - public function enqueue_scripts() { | |
| 100 | + function get_all_form_fields( $htmlvar_name = '' ) { | |
| 101 | + global $wpdb; | |
| 113 | 102 | |
| 114 | - /** | |
| 115 | - * An instance of this class should be passed to the run() function | |
| 116 | - * defined in UsersWP_Loader as all of the hooks are defined | |
| 117 | - * in that particular class. | |
| 118 | - * | |
| 119 | - * The UsersWP_Loader will then create the relationship | |
| 120 | - * between the defined hooks and the functions defined in this | |
| 121 | - * class. | |
| 122 | - */ | |
| 123 | - if (is_uwp_page()) { | |
| 124 | - // include only in uwp pages | |
| 125 | - wp_enqueue_script( 'jquery-ui-core', array( 'jquery' ) ); | |
| 126 | - } | |
| 103 | + $table_name = uwp_get_table_prefix() . 'uwp_form_fields'; | |
| 104 | + $register_forms = uwp_get_option( 'multiple_registration_forms' ); | |
| 105 | + $custom_fields = array(); | |
| 127 | 106 | |
| 128 | - if (is_uwp_current_user_profile_page()) { | |
| 129 | - // include only profile pages | |
| 130 | - wp_enqueue_script( 'jcrop', array( 'jquery' ) ); | |
| 131 | - } | |
| 132 | - | |
| 133 | - $enable_timepicker_in_register = false; | |
| 134 | - $enable_timepicker_in_account = false; | |
| 107 | + if ( ! empty( $register_forms ) && is_array( $register_forms ) ) { | |
| 108 | + $form_ids = array(); | |
| 135 | 109 | |
| 136 | - $enable_datepicker_in_register = false; | |
| 137 | - $enable_datepicker_in_account = false; | |
| 110 | + foreach ( $register_forms as $key => $register_form ) { | |
| 111 | + $form_ids[] = (int) $register_form['id']; | |
| 112 | + } | |
| 138 | 113 | |
| 139 | - $enable_chosen_in_register = false; | |
| 140 | - $enable_chosen_in_account = false; | |
| 141 | - | |
| 142 | - if (is_uwp_register_page() || is_uwp_account_page()) { | |
| 143 | - if (is_uwp_register_page()) { | |
| 144 | - $fields = get_register_form_fields(); | |
| 145 | - } else { | |
| 146 | - // account page | |
| 147 | - $fields = get_account_form_fields(); | |
| 148 | - } | |
| 149 | - | |
| 150 | - if (!empty($fields)) { | |
| 151 | - foreach ($fields as $field) { | |
| 152 | - if ($field->field_type == 'time') { | |
| 153 | - $enable_timepicker_in_register = true; | |
| 154 | - } | |
| 114 | + if ( ! empty( $form_ids ) && count( $form_ids ) > 0 ) { | |
| 115 | + $form_ids_placeholder = array_fill( 0, count( $form_ids ), '%d' ); | |
| 116 | + $form_ids_placeholder = implode( ', ', $form_ids_placeholder ); | |
| 117 | + $query = $wpdb->prepare( "SELECT id,field_type,field_type_key FROM " . $table_name . " WHERE form_type = 'account' AND form_id IN (" . $form_ids_placeholder . ") AND (field_type = 'time' OR field_type = 'datepicker' OR field_type_key = 'uwp_country' OR field_type_key = 'country') ORDER BY sort_order ASC", $form_ids ); | |
| 118 | + $custom_fields = $wpdb->get_results( $query ); | |
| 119 | + } | |
| 120 | + } | |
| 155 | 121 | |
| 156 | - if ($field->field_type == 'datepicker') { | |
| 157 | - $enable_datepicker_in_register = true; | |
| 158 | - } | |
| 159 | - | |
| 160 | - if ($field->field_type == 'multiselect') { | |
| 161 | - $enable_chosen_in_register = true; | |
| 162 | - } | |
| 163 | - } | |
| 164 | - } | |
| 165 | - } | |
| 166 | - | |
| 167 | - if ($enable_timepicker_in_register || $enable_timepicker_in_account) { | |
| 168 | - // time fields available only in register and account pages | |
| 169 | - wp_enqueue_script( "uwp_timepicker", plugin_dir_url( __FILE__ ) . 'assets/js/jquery.ui.timepicker.min.js', array( 'jquery', 'jquery-ui-datepicker', 'jquery-ui-core' ), null, false ); | |
| 170 | - } | |
| 171 | - | |
| 172 | - | |
| 173 | - if ($enable_datepicker_in_register || $enable_datepicker_in_account) { | |
| 174 | - // date fields available only in register and account pages | |
| 175 | - wp_enqueue_script( 'jquery-ui-datepicker', array( 'jquery' ) ); | |
| 176 | - } | |
| 177 | - | |
| 178 | - if (is_uwp_profile_page() ) { | |
| 179 | - wp_enqueue_script( 'jquery-ui-progressbar', array( 'jquery' ) ); | |
| 180 | - } | |
| 181 | - | |
| 182 | - if ($enable_chosen_in_register || $enable_chosen_in_account) { | |
| 183 | - // chosen fields (multiselect) available only in register and account pages | |
| 184 | - wp_dequeue_script('chosen'); | |
| 185 | - wp_enqueue_script( "uwp_chosen", plugin_dir_url( __FILE__ ) . 'assets/js/chosen.jquery.js', array( 'jquery' ), null, false ); | |
| 186 | - } | |
| 187 | - | |
| 188 | - // include only in uwp pages | |
| 189 | - wp_enqueue_script( USERSWP_NAME, plugin_dir_url( __FILE__ ) . 'assets/js/users-wp.min.js', array( 'jquery' ), null, false ); | |
| 190 | - | |
| 191 | - //load CountrySelect | |
| 192 | - wp_enqueue_script( "country-select", plugin_dir_url(dirname(__FILE__)) . 'public/assets/js/countrySelect.min.js', array( 'jquery' ), null, false ); | |
| 193 | - | |
| 194 | - $country_data = uwp_get_country_data(); | |
| 195 | - wp_localize_script(USERSWP_NAME, 'uwp_country_data', $country_data); | |
| 196 | - | |
| 197 | - } | |
| 122 | + return $custom_fields; | |
| 123 | + } | |
| 198 | 124 | |
| 199 | 125 | } |