| 1 |
<?php |
| 2 |
/** |
| 3 |
* LoginPress Settings |
| 4 |
* |
| 5 |
* @since 1.0.9 |
| 6 |
*/ |
| 7 |
if ( ! class_exists( 'LoginPress_Settings' ) ): |
| 8 |
|
| 9 |
class LoginPress_Settings { |
| 10 |
|
| 11 |
private $settings_api; |
| 12 |
|
| 13 |
function __construct() { |
| 14 |
|
| 15 |
include_once( LOGINPRESS_ROOT_PATH . '/classes/class-loginpress-settings-api.php' ); |
| 16 |
$this->settings_api = new LoginPress_Settings_API; |
| 17 |
|
| 18 |
add_action( 'admin_init', array( $this, 'loginpress_setting_init' ) ); |
| 19 |
add_action( 'admin_menu', array( $this, 'loginpress_setting_menu' ) ); |
| 20 |
} |
| 21 |
|
| 22 |
function loginpress_setting_init() { |
| 23 |
|
| 24 |
//set the settings. |
| 25 |
$this->settings_api->set_sections( $this->get_settings_sections() ); |
| 26 |
$this->settings_api->set_fields( $this->get_settings_fields() ); |
| 27 |
|
| 28 |
//initialize settings. |
| 29 |
$this->settings_api->admin_init(); |
| 30 |
|
| 31 |
//reset settings. |
| 32 |
$this->load_default_settings(); |
| 33 |
} |
| 34 |
|
| 35 |
function load_default_settings() { |
| 36 |
|
| 37 |
$_loginpress_Setting = get_option( 'loginpress_setting' ); |
| 38 |
if ( isset( $_loginpress_Setting['reset_settings'] ) && 'on' == $_loginpress_Setting['reset_settings'] ) { |
| 39 |
|
| 40 |
$loginpress_last_reset = array( 'last_reset_on' => date('Y-m-d') ); |
| 41 |
update_option( 'loginpress_customization', $loginpress_last_reset ); |
| 42 |
update_option( 'customize_presets_settings', 'default1' ); |
| 43 |
$_loginpress_Setting['reset_settings'] = 'off'; |
| 44 |
update_option( 'loginpress_setting', $_loginpress_Setting ); |
| 45 |
add_action( 'admin_notices', array( $this, 'settings_reset_message' ) ); |
| 46 |
} |
| 47 |
} |
| 48 |
|
| 49 |
function settings_reset_message() { |
| 50 |
|
| 51 |
$class = 'notice notice-success'; |
| 52 |
$message = __( 'Default Settings Restored', 'loginpress' ); |
| 53 |
|
| 54 |
printf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message ); |
| 55 |
} |
| 56 |
|
| 57 |
function loginpress_setting_menu() { |
| 58 |
|
| 59 |
add_menu_page( __( 'LoginPress', 'loginpress' ), __( 'LoginPress', 'loginpress' ), 'manage_options', "loginpress-settings", array( $this, 'plugin_page' ), '', 50 ); |
| 60 |
|
| 61 |
add_submenu_page( 'loginpress-settings', __( 'Settings', 'loginpress' ), __( 'Settings', 'loginpress' ), 'manage_options', "loginpress-settings", array( $this, 'plugin_page' ) ); |
| 62 |
|
| 63 |
add_submenu_page( 'loginpress-settings', __( 'Customizer', 'loginpress' ), __( 'Customizer', 'loginpress' ), 'manage_options', "loginpress", '__return_null' ); |
| 64 |
|
| 65 |
add_submenu_page( 'loginpress-settings', __( 'Help', 'loginpress' ), __( 'Help', 'loginpress' ), 'manage_options', "loginpress-help", array( $this, 'loginpress_help_page' ) ); |
| 66 |
|
| 67 |
add_submenu_page( 'loginpress-settings', __( 'Import/Export LoginPress Settings', 'loginpress' ), __( 'Import / Export', 'loginpress' ), 'manage_options', "loginpress-import-export", array( $this, 'loginpress_import_export_page' ) ); |
| 68 |
|
| 69 |
add_submenu_page( 'loginpress-settings', __( 'Add-Ons', 'loginpress' ), __( 'Add-Ons', 'loginpress' ), 'manage_options', "loginpress-addons", array( $this, 'loginpress_addons_page' ) ); |
| 70 |
|
| 71 |
} |
| 72 |
|
| 73 |
function get_settings_sections() { |
| 74 |
|
| 75 |
$loginpress_general_tab = array( |
| 76 |
array( |
| 77 |
'id' => 'loginpress_setting', |
| 78 |
'title' => __( 'Settings', 'loginpress' ), |
| 79 |
'desc' => sprintf( __( 'Everything else is customizable through %1$sWordPress Customizer%2$s.', 'loginpress' ), '<a href="' . admin_url( 'admin.php?page=loginpress' ) . '">', '</a>' ), |
| 80 |
), |
| 81 |
); |
| 82 |
// if ( has_action( 'loginpress_pro_add_template' ) ) { |
| 83 |
// |
| 84 |
// $loginpress_license = |
| 85 |
// array( |
| 86 |
// 'id' => 'loginpress_license', |
| 87 |
// 'title' => __( 'License', 'loginpress' ), |
| 88 |
// 'desc' => __( 'License Description', 'loginpress' ), |
| 89 |
// ); |
| 90 |
// array_push( $loginpress_general_tab , $loginpress_license ); |
| 91 |
// } |
| 92 |
if ( ! has_action( 'loginpress_pro_add_template' ) ) { |
| 93 |
|
| 94 |
$loginpress_premium = |
| 95 |
array( |
| 96 |
'id' => 'loginpress_premium', |
| 97 |
'title' => __( 'Upgrade to Pro for More Features', 'loginpress' ) |
| 98 |
); |
| 99 |
|
| 100 |
array_push( $loginpress_general_tab , $loginpress_premium ); |
| 101 |
} |
| 102 |
|
| 103 |
$sections = apply_filters( 'loginpress_settings_tab', $loginpress_general_tab ); |
| 104 |
|
| 105 |
return $sections; |
| 106 |
} |
| 107 |
|
| 108 |
/** |
| 109 |
* Returns all the settings fields |
| 110 |
* |
| 111 |
* @return array settings fields |
| 112 |
*/ |
| 113 |
function get_settings_fields() { |
| 114 |
|
| 115 |
/** |
| 116 |
* [$_free_fields array of free fields] |
| 117 |
* @var array |
| 118 |
*/ |
| 119 |
$_free_fields = array( |
| 120 |
array( |
| 121 |
'name' => 'session_expiration', |
| 122 |
'label' => __( 'Session Expire', 'loginpress' ), |
| 123 |
'desc' => __( 'Set the session expiration time in minutes. e.g: 10', 'loginpress' ), //<br /> When you set the time, here you need to set the expiration cookies. for this, you just need to logout at least one time. After login again, it should be working fine.<br />For removing the session expiration just pass empty value in “Expiration” field and save it. Now clear the expiration cookies by logout at least one time. |
| 124 |
'placeholder' => __( '10', 'loginpress' ), |
| 125 |
'min' => 0, |
| 126 |
// 'max' => 100, |
| 127 |
'step' => '1', |
| 128 |
'type' => 'number', |
| 129 |
'default' => 'Title', |
| 130 |
'sanitize_callback' => 'intval' |
| 131 |
), |
| 132 |
// array( |
| 133 |
// 'name' => 'enable_privacy_policy', |
| 134 |
// 'label' => __( 'Enable Privacy Policy', 'loginpress' ), |
| 135 |
// 'desc' => __( 'Enable Privacy Policy checkbox on registration page.', 'loginpress' ), |
| 136 |
// 'type' => 'checkbox' |
| 137 |
// ), |
| 138 |
// array( |
| 139 |
// 'name' => 'privacy_policy', |
| 140 |
// 'label' => __( 'Privacy & Policy', 'loginpress' ), |
| 141 |
// 'desc' => __( 'Right down the privacy and policy description.', 'loginpress' ), |
| 142 |
// 'type' => 'wysiwyg', |
| 143 |
// 'default' => __( sprintf( __( '%1$sPrivacy Policy%2$s.', 'loginpress' ), '<a href="' . admin_url( 'admin.php?page=loginpress-settings' ) . '">', '</a>' ) ) |
| 144 |
// ), |
| 145 |
array( |
| 146 |
'name' => 'enable_reg_pass_field', |
| 147 |
'label' => __( 'Custom Password Fields', 'loginpress' ), |
| 148 |
'desc' => __( 'Enable custom password fields on registration form.', 'loginpress' ), |
| 149 |
'type' => 'checkbox' |
| 150 |
), |
| 151 |
array( |
| 152 |
'name' => 'login_order', |
| 153 |
'label' => __( 'Login Order', 'loginpress' ), |
| 154 |
'desc' => __( 'Enable users to login using their username and/or email address.', 'loginpress' ), |
| 155 |
'type' => 'radio', |
| 156 |
'default' => 'default', |
| 157 |
'options' => array( |
| 158 |
'default' => 'Both Username Or Email Address', |
| 159 |
'username' => 'Only Username', |
| 160 |
'email' => 'Only Email Address' |
| 161 |
) |
| 162 |
), |
| 163 |
// array( |
| 164 |
// 'name' => 'login_with_email', |
| 165 |
// 'label' => __( 'Login with Email', 'loginpress' ), |
| 166 |
// 'desc' => __( 'Force user to login with Email Only Instead Username.', 'loginpress' ), |
| 167 |
// 'type' => 'checkbox' |
| 168 |
// ), |
| 169 |
array( |
| 170 |
'name' => 'reset_settings', |
| 171 |
'label' => __( 'Reset Default Settings', 'loginpress' ), |
| 172 |
'desc' => __( 'Remove my custom settings.', 'loginpress' ), |
| 173 |
'type' => 'checkbox' |
| 174 |
), |
| 175 |
); |
| 176 |
|
| 177 |
// Hide Advertisement in version 1.1.3 |
| 178 |
// if ( ! has_action( 'loginpress_pro_add_template' ) ) { |
| 179 |
// array_unshift( $_free_fields , array( |
| 180 |
// 'name' => 'enable_repatcha_promo', |
| 181 |
// 'label' => __( 'Enable reCAPTCHA', 'loginpress' ), |
| 182 |
// 'desc' => __( 'Enable LoginPress reCaptcha', 'loginpress' ), |
| 183 |
// 'type' => 'checkbox' |
| 184 |
// ) ); |
| 185 |
// } |
| 186 |
|
| 187 |
$_settings_fields = apply_filters( 'loginpress_pro_settings', $_free_fields ); |
| 188 |
|
| 189 |
$settings_fields = array( 'loginpress_setting' => $_settings_fields ); |
| 190 |
|
| 191 |
$tab = apply_filters( 'loginpress_settings_fields', $settings_fields ); |
| 192 |
|
| 193 |
return $tab; |
| 194 |
} |
| 195 |
|
| 196 |
function plugin_page() { |
| 197 |
|
| 198 |
echo '<div class="wrap loginpress-admin-setting">'; |
| 199 |
echo '<h2 style="margin: 20px 0 20px 0;">'; |
| 200 |
esc_html_e( 'LoginPress - Rebranding your boring WordPress Login pages', 'loginpress' ); |
| 201 |
echo '</h2>'; |
| 202 |
|
| 203 |
$this->settings_api->show_navigation(); |
| 204 |
$this->settings_api->show_forms(); |
| 205 |
|
| 206 |
echo '</div>'; |
| 207 |
} |
| 208 |
|
| 209 |
/** |
| 210 |
* [loginpress_help_page callback function for sub-page Help] |
| 211 |
* @since 1.0.19 |
| 212 |
*/ |
| 213 |
function loginpress_help_page(){ |
| 214 |
|
| 215 |
include LOGINPRESS_DIR_PATH . 'classes/class-loginpress-log.php'; |
| 216 |
|
| 217 |
$html = '<div class="loginpress-help-page">'; |
| 218 |
$html .= '<h2>Help & Troubleshooting</h2>'; |
| 219 |
$html .= sprintf( __( 'Free support is available on the %1$s plugin support forums%2$s.', 'loginpress' ), '<a href="https://wordpress.org/support/plugin/loginpress" target="_blank">', '</a>' ); |
| 220 |
$html .="<br /><br />"; |
| 221 |
$html .= sprintf( __( 'For premium features, add-ons and priority email support, %1$s upgrade to pro%2$s.', 'loginpress' ), '<a href="https://wpbrigade.com/wordpress/plugins/loginpress-pro/?utm_source=loginpress-lite&utm_medium=help-page&utm_campaign=pro-upgrade" target="_blank">', '</a>' ); |
| 222 |
$html .="<br /><br />"; |
| 223 |
$html .= 'Found a bug or have a feature request? Please submit an issue <a href="https://wpbrigade.com/contact/" target="_blank">here</a>!'; |
| 224 |
$html .= '<pre><textarea rows="25" cols="75" readonly="readonly">'; |
| 225 |
$html .= LoginPress_Log_Info::get_sysinfo(); |
| 226 |
$html .= '</textarea></pre>'; |
| 227 |
$html .= '<input type="button" class="button loginpress-log-file" value="' . __( 'Download Log File', 'loginpress' ) . '"/>'; |
| 228 |
$html .= '<span class="log-file-sniper"><img src="'. admin_url( 'images/wpspin_light.gif' ) .'" /></span>'; |
| 229 |
$html .= '<span class="log-file-text">LoginPress Log File Downloaded Successfully!</span>'; |
| 230 |
$html .= '</div>'; |
| 231 |
echo $html; |
| 232 |
} |
| 233 |
|
| 234 |
/** |
| 235 |
* [loginpress_import_export_page callback function for sub-page Import / Export] |
| 236 |
* @since 1.0.19 |
| 237 |
*/ |
| 238 |
function loginpress_import_export_page(){ |
| 239 |
|
| 240 |
include LOGINPRESS_DIR_PATH . 'include/loginpress-import-export.php'; |
| 241 |
} |
| 242 |
|
| 243 |
/** |
| 244 |
* [loginpress_addons_page callback function for sub-page Add-ons] |
| 245 |
* @since 1.0.19 |
| 246 |
*/ |
| 247 |
function loginpress_addons_page() { |
| 248 |
|
| 249 |
include LOGINPRESS_DIR_PATH . 'classes/class-loginpress-addons.php'; |
| 250 |
} |
| 251 |
|
| 252 |
/** |
| 253 |
* Get all the pages |
| 254 |
* |
| 255 |
* @return array page names with key value pairs |
| 256 |
*/ |
| 257 |
function get_pages() { |
| 258 |
$pages = get_pages(); |
| 259 |
$pages_options = array(); |
| 260 |
if ( $pages ) { |
| 261 |
foreach ($pages as $page) { |
| 262 |
$pages_options[$page->ID] = $page->post_title; |
| 263 |
} |
| 264 |
} |
| 265 |
|
| 266 |
return $pages_options; |
| 267 |
} |
| 268 |
|
| 269 |
} |
| 270 |
endif; |
| 271 |
|