| 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' ), |
| 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 |
if ( ! has_action( 'loginpress_pro_add_template' ) ) { |
| 178 |
array_unshift( $_free_fields , array( |
| 179 |
'name' => 'enable_repatcha_promo', |
| 180 |
'label' => __( 'Enable reCAPTCHA', 'loginpress' ), |
| 181 |
'desc' => __( 'Enable LoginPress reCaptcha', 'loginpress' ), |
| 182 |
'type' => 'checkbox' |
| 183 |
) ); |
| 184 |
} |
| 185 |
|
| 186 |
$_settings_fields = apply_filters( 'loginpress_pro_settings', $_free_fields ); |
| 187 |
|
| 188 |
$settings_fields = array( 'loginpress_setting' => $_settings_fields ); |
| 189 |
|
| 190 |
$tab = apply_filters( 'loginpress_settings_fields', $settings_fields ); |
| 191 |
|
| 192 |
return $tab; |
| 193 |
} |
| 194 |
|
| 195 |
function plugin_page() { |
| 196 |
|
| 197 |
echo '<div class="wrap loginpress-admin-setting">'; |
| 198 |
echo '<h2 style="margin: 20px 0 20px 0;">'; |
| 199 |
esc_html_e( 'LoginPress - Rebranding your boring WordPress Login pages', 'loginpress' ); |
| 200 |
echo '</h2>'; |
| 201 |
|
| 202 |
$this->settings_api->show_navigation(); |
| 203 |
$this->settings_api->show_forms(); |
| 204 |
|
| 205 |
echo '</div>'; |
| 206 |
} |
| 207 |
|
| 208 |
/** |
| 209 |
* [loginpress_help_page callback function for sub-page Help] |
| 210 |
* @since 1.0.19 |
| 211 |
*/ |
| 212 |
function loginpress_help_page(){ |
| 213 |
|
| 214 |
include LOGINPRESS_DIR_PATH . 'classes/class-loginpress-log.php'; |
| 215 |
|
| 216 |
$html = '<div class="loginpress-help-page">'; |
| 217 |
$html .= '<h2>Help & Troubleshooting</h2>'; |
| 218 |
$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>' ); |
| 219 |
$html .="<br /><br />"; |
| 220 |
$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>' ); |
| 221 |
$html .="<br /><br />"; |
| 222 |
$html .= 'Found a bug or have a feature request? Please submit an issue <a href="https://wpbrigade.com/contact/" target="_blank">here</a>!'; |
| 223 |
$html .= '<pre><textarea rows="25" cols="75" readonly="readonly">'; |
| 224 |
$html .= LoginPress_Log_Info::get_sysinfo(); |
| 225 |
$html .= '</textarea></pre>'; |
| 226 |
$html .= '<input type="button" class="button loginpress-log-file" value="' . __( 'Download Log File', 'loginpress' ) . '"/>'; |
| 227 |
$html .= '<span class="log-file-sniper"><img src="'. admin_url( 'images/wpspin_light.gif' ) .'" /></span>'; |
| 228 |
$html .= '<span class="log-file-text">LoginPress Log File Downloaded Successfully!</span>'; |
| 229 |
$html .= '</div>'; |
| 230 |
echo $html; |
| 231 |
} |
| 232 |
|
| 233 |
/** |
| 234 |
* [loginpress_import_export_page callback function for sub-page Import / Export] |
| 235 |
* @since 1.0.19 |
| 236 |
*/ |
| 237 |
function loginpress_import_export_page(){ |
| 238 |
|
| 239 |
include LOGINPRESS_DIR_PATH . 'include/loginpress-import-export.php'; |
| 240 |
} |
| 241 |
|
| 242 |
/** |
| 243 |
* [loginpress_addons_page callback function for sub-page Add-ons] |
| 244 |
* @since 1.0.19 |
| 245 |
*/ |
| 246 |
function loginpress_addons_page() { |
| 247 |
|
| 248 |
include LOGINPRESS_DIR_PATH . 'classes/class-loginpress-addons.php'; |
| 249 |
} |
| 250 |
|
| 251 |
/** |
| 252 |
* Get all the pages |
| 253 |
* |
| 254 |
* @return array page names with key value pairs |
| 255 |
*/ |
| 256 |
function get_pages() { |
| 257 |
$pages = get_pages(); |
| 258 |
$pages_options = array(); |
| 259 |
if ( $pages ) { |
| 260 |
foreach ($pages as $page) { |
| 261 |
$pages_options[$page->ID] = $page->post_title; |
| 262 |
} |
| 263 |
} |
| 264 |
|
| 265 |
return $pages_options; |
| 266 |
} |
| 267 |
|
| 268 |
} |
| 269 |
endif; |
| 270 |
|