2014-12-15 22:38:07 +02:00
< ? php
class UM_Setup {
function __construct () {
add_action ( 'init' , array ( & $this , 'install_default_forms' ), 9 );
add_action ( 'init' , array ( & $this , 'install_default_roles' ), 9 );
add_action ( 'init' , array ( & $this , 'install_posts_roles' ), 9 );
$this -> core_forms = array (
'register' ,
'login' ,
'profile' ,
);
$this -> core_directories = array (
'members' ,
);
$this -> core_pages = array (
'user' => array ( 'title' => 'User' ),
'login' => array ( 'title' => 'Login' ),
'register' => array ( 'title' => 'Register' ),
'members' => array ( 'title' => 'Members' ),
'logout' => array ( 'title' => 'Logout' ),
'account' => array ( 'title' => 'Account' ),
2014-12-21 19:08:18 +02:00
'password-reset' => array ( 'title' => 'Password Reset' ),
2014-12-15 22:38:07 +02:00
);
$this -> core_directory_meta [ 'members' ] = array (
'_um_template' => 'members' ,
'_um_mode' => 'directory' ,
'_um_has_profile_photo' => 0 ,
'_um_show_stats' => 0 ,
'_um_show_social' => 0 ,
'_um_show_userinfo' => 0 ,
'_um_show_tagline' => 0 ,
'_um_search' => 0 ,
'_um_userinfo_animate' => '1' ,
'_um_directory_header' => __ ( '{total_users} Members' , 'ultimatemember' ),
'_um_directory_no_users' => __ ( 'We are sorry. We cannot find any users who match your search criteria.' , 'ultimatemember' ),
'_um_sortby' => 'user_registered_desc' ,
'_um_profile_photo' => '1' ,
'_um_cover_photos' => '1' ,
'_um_show_name' => '1' ,
'_um_profiles_per_page' => '12' ,
'_um_core' => 'members' ,
);
$this -> core_global_meta_all = array (
'_um_primary_btn_color' ,
'_um_primary_btn_hover' ,
'_um_primary_btn_text' ,
'_um_secondary_btn_color' ,
'_um_secondary_btn_hover' ,
'_um_secondary_btn_text' ,
'_um_form_border' ,
'_um_form_bg_color' ,
'_um_form_placeholder' ,
'_um_form_icon_color' ,
'_um_form_field_label' ,
'_um_form_text_color' ,
'_um_active_color' ,
'_um_help_tip_color' ,
'_um_secondary_color' ,
);
$this -> core_form_meta_all = array (
'_um_help_tip_color' => '#ccc' ,
'_um_active_color' => '#3ba1da' ,
'_um_secondary_color' => '#44b0ec' ,
'_um_form_text_color' => '#666' ,
'_um_form_field_label' => '#888' ,
'_um_form_icon_color' => '#aaa' ,
'_um_form_bg_color' => '#fff' ,
'_um_form_placeholder' => '#aaa' ,
'_um_form_border' => '2px solid #ddd' ,
'_um_primary_btn_color' => '#3ba1da' ,
'_um_primary_btn_hover' => '#44b0ec' ,
'_um_primary_btn_text' => '#fff' ,
'_um_secondary_btn_color' => '#eee' ,
'_um_secondary_btn_hover' => '#e5e5e5' ,
'_um_secondary_btn_text' => '#666' ,
2014-12-29 15:51:55 +02:00
'_um_profile_show_bio' => 1 ,
2014-12-15 22:38:07 +02:00
'_um_profile_role' => '0' ,
'_um_profile_template' => 'profile' ,
'_um_profile_max_width' => '1000px' ,
'_um_profile_align' => 'center' ,
'_um_profile_icons' => 'field' ,
'_um_profile_cover_enabled' => 1 ,
'_um_profile_cover_ratio' => '2.7:1' ,
'_um_profile_photosize' => '190px' ,
'_um_profile_photocorner' => '1' ,
2014-12-16 21:57:13 +02:00
'_um_profile_header_bg' => '' ,
2014-12-15 22:38:07 +02:00
'_um_profile_header_text' => '#999' ,
'_um_profile_header_link_color' => '#555' ,
'_um_profile_header_link_hcolor' => '#444' ,
'_um_profile_header_icon_color' => '#aaa' ,
'_um_profile_header_icon_hcolor' => '#3ba1da' ,
'_um_profile_primary_btn_word' => 'Update Profile' ,
'_um_profile_primary_btn_color' => '#3ba1da' ,
'_um_profile_primary_btn_hover' => '#44b0ec' ,
'_um_profile_primary_btn_text' => '#fff' ,
'_um_profile_secondary_btn' => '1' ,
'_um_profile_secondary_btn_word' => 'Cancel' ,
'_um_profile_secondary_btn_color' => '#eee' ,
'_um_profile_secondary_btn_hover' => '#e5e5e5' ,
'_um_profile_secondary_btn_text' => '#666' ,
2014-12-16 21:57:13 +02:00
'_um_profile_main_bg' => '' ,
2014-12-15 22:38:07 +02:00
'_um_register_role' => '0' ,
'_um_register_template' => 'register' ,
'_um_register_max_width' => '450px' ,
'_um_register_align' => 'center' ,
'_um_register_icons' => 'field' ,
'_um_register_primary_btn_word' => 'Register' ,
'_um_register_primary_btn_color' => '#3ba1da' ,
'_um_register_primary_btn_hover' => '#44b0ec' ,
'_um_register_primary_btn_text' => '#fff' ,
'_um_register_secondary_btn' => '1' ,
'_um_register_secondary_btn_word' => 'Login' ,
'_um_register_secondary_btn_color' => '#eee' ,
'_um_register_secondary_btn_hover' => '#e5e5e5' ,
'_um_register_secondary_btn_text' => '#666' ,
'_um_login_template' => 'login' ,
'_um_login_max_width' => '450px' ,
'_um_login_align' => 'center' ,
'_um_login_icons' => 'field' ,
'_um_login_primary_btn_word' => 'Login' ,
'_um_login_primary_btn_color' => '#3ba1da' ,
'_um_login_primary_btn_hover' => '#44b0ec' ,
'_um_login_primary_btn_text' => '#fff' ,
'_um_login_secondary_btn' => '1' ,
'_um_login_secondary_btn_word' => 'Register' ,
'_um_login_secondary_btn_color' => '#eee' ,
'_um_login_secondary_btn_hover' => '#e5e5e5' ,
'_um_login_secondary_btn_text' => '#666' ,
2014-12-19 00:42:23 +02:00
'_um_directory_template' => 'members' ,
2014-12-15 22:38:07 +02:00
'_um_directory_header' => __ ( '{total_users} Members' , 'ultimatemember' ),
'_um_directory_no_users' => __ ( 'We are sorry. We cannot find any users who match your search criteria.' , 'ultimatemember' ),
);
$this -> core_form_meta_all = apply_filters ( 'um_core_form_meta_all' , $this -> core_form_meta_all );
$this -> core_form_meta [ 'register' ] = array (
'_um_custom_fields' => 'a:6:{s:10:"user_login";a:15:{s:5:"title";s:8:"Username";s:7:"metakey";s:10:"user_login";s:4:"type";s:4:"text";s:5:"label";s:8:"Username";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";i:0;s:8:"validate";s:15:"unique_username";s:9:"min_chars";i:3;s:9:"max_chars";i:24;s:8:"position";s:1:"1";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:10:"user_email";a:13:{s:5:"title";s:14:"E-mail Address";s:7:"metakey";s:10:"user_email";s:4:"type";s:4:"text";s:5:"label";s:14:"E-mail Address";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";i:1;s:8:"validate";s:12:"unique_email";s:8:"position";s:1:"4";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:13:"user_password";a:16:{s:5:"title";s:8:"Password";s:7:"metakey";s:13:"user_password";s:4:"type";s:8:"password";s:5:"label";s:8:"Password";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";i:1;s:9:"min_chars";i:8;s:9:"max_chars";i:30;s:15:"force_good_pass";i:1;s:18:"force_confirm_pass";i:1;s:8:"position";s:1:"5";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:10:"first_name";a:12:{s:5:"title";s:10:"First Name";s:7:"metakey";s:10:"first_name";s:4:"type";s:4:"text";s:5:"label";s:10:"First Name";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";i:1;s:8:"position";s:1:"2";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"last_name";a:12:{s:5:"title";s:9:"Last Name";s:7:"metakey";s:9:"last_name";s:4:"type";s:4:"text";s:5:"label";s:9:"Last Name";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";i:1;s:8:"position";s:1:"3";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}' ,
'_um_mode' => 'register' ,
'_um_core' => 'register' ,
'_um_register_use_globals' => 1 ,
);
$this -> core_form_meta [ 'login' ] = array (
'_um_custom_fields' => 'a:3:{s:8:"username";a:13:{s:5:"title";s:18:"Username or E-mail";s:7:"metakey";s:8:"username";s:4:"type";s:4:"text";s:5:"label";s:18:"Username or E-mail";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";i:0;s:8:"validate";s:24:"unique_username_or_email";s:8:"position";s:1:"1";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:13:"user_password";a:16:{s:5:"title";s:8:"Password";s:7:"metakey";s:13:"user_password";s:4:"type";s:8:"password";s:5:"label";s:8:"Password";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";i:1;s:9:"min_chars";i:8;s:9:"max_chars";i:30;s:15:"force_good_pass";i:1;s:18:"force_confirm_pass";i:1;s:8:"position";s:1:"2";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}' ,
'_um_mode' => 'login' ,
'_um_core' => 'login' ,
'_um_login_use_globals' => 1 ,
);
$this -> core_form_meta [ 'profile' ] = array (
'_um_custom_fields' => 'a:1:{s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}' ,
'_um_mode' => 'profile' ,
'_um_core' => 'profile' ,
'_um_profile_use_globals' => 1 ,
);
// admin permissions
$this -> perms = array (
'core' => 'admin' ,
'can_access_wpadmin' => 1 ,
'can_edit_everyone' => 1 ,
'can_edit_roles' => 1 ,
'can_delete_everyone' => 1 ,
'can_delete_roles' => 1 ,
'can_edit_profile' => 1 ,
'can_upload_pics' => 1 ,
'can_upload_files' => 1 ,
'can_delete_profile' => 1 ,
'can_view_all' => 1 ,
'can_make_private_profile' => 1 ,
'can_access_private_profile' => 1 ,
'default_homepage' => 1 ,
'status' => 'approved' ,
'auto_approve_act' => 'redirect_profile' ,
2014-12-22 23:34:05 +02:00
'after_login' => 'redirect_admin' ,
2014-12-15 22:38:07 +02:00
'after_logout' => 'redirect_home' ,
);
// non-admin permissions
$this -> nonadmin_perms = array (
'core' => 'member' ,
'can_access_wpadmin' => 0 ,
'can_edit_everyone' => 0 ,
'can_edit_roles' => 0 ,
'can_delete_everyone' => 0 ,
'can_delete_roles' => 0 ,
'can_make_private_profile' => 0 ,
'can_access_private_profile' => 0 ,
2014-12-22 23:34:05 +02:00
'after_login' => 'redirect_profile' ,
2014-12-15 22:38:07 +02:00
);
}
/***
*** @Get default permissions
***/
function get_initial_permissions ( $role ) {
if ( $role == 'admin' ) {
$perms = $this -> perms ;
return $perms ;
} else {
$perms = $this -> perms ;
$perms = array_merge ( $this -> perms , $this -> nonadmin_perms );
return $perms ;
}
}
/***
*** @Default Forms
***/
function install_default_forms (){
global $wpdb , $ultimatemember ;
if ( current_user_can ( 'manage_options' ) && um_user ( 'ID' ) && ! get_option ( 'um_is_installed' ) ) {
update_option ( 'um_is_installed' , 1 );
// Install Core Forms
foreach ( $this -> core_forms as $id ) {
/**
If page does not exist
Create it
**/
$page_exists = $ultimatemember -> query -> find_post_id ( 'um_form' , '_um_core' , $id );
if ( ! $page_exists ) {
if ( $id == 'register' ) {
$title = 'Default Registration' ;
} else if ( $id == 'login' ) {
$title = 'Default Login' ;
} else {
$title = 'Default Profile' ;
}
$form = array (
'post_type' => 'um_form' ,
'post_title' => $title ,
'post_status' => 'publish' ,
'post_author' => um_user ( 'ID' ),
);
$form_id = wp_insert_post ( $form );
foreach ( $this -> core_form_meta [ $id ] as $key => $value ) {
if ( $key == '_um_custom_fields' ) {
$array = unserialize ( $value );
update_post_meta ( $form_id , $key , $array );
} else {
update_post_meta ( $form_id , $key , $value );
}
}
$this -> setup_shortcode [ $id ] = '[ultimatemember form_id=' . $form_id . ']' ;
$core_forms [ $form_id ] = $form_id ;
}
/** DONE **/
}
if ( isset ( $core_forms ) ) update_option ( 'um_core_forms' , $core_forms );
// Install Core Directories
foreach ( $this -> core_directories as $id ) {
/**
If page does not exist
Create it
**/
$page_exists = $ultimatemember -> query -> find_post_id ( 'um_directory' , '_um_core' , $id );
if ( ! $page_exists ) {
$title = 'Members' ;
$form = array (
'post_type' => 'um_directory' ,
'post_title' => $title ,
'post_status' => 'publish' ,
'post_author' => um_user ( 'ID' ),
);
$form_id = wp_insert_post ( $form );
foreach ( $this -> core_directory_meta [ $id ] as $key => $value ) {
if ( $key == '_um_custom_fields' ) {
$array = unserialize ( $value );
update_post_meta ( $form_id , $key , $array );
} else {
update_post_meta ( $form_id , $key , $value );
}
}
$this -> setup_shortcode [ $id ] = '[ultimatemember form_id=' . $form_id . ']' ;
$core_directories [ $form_id ] = $form_id ;
}
/** DONE **/
}
if ( isset ( $core_directories ) ) update_option ( 'um_core_directories' , $core_directories );
// Install Core Pages
foreach ( $this -> core_pages as $slug => $array ) {
/**
If page does not exist
Create it
**/
$page_exists = $ultimatemember -> query -> find_post_id ( 'page' , '_um_core' , $slug );
if ( ! $page_exists ) {
if ( $slug == 'logout' ) {
$content = '' ;
} else if ( $slug == 'account' ) {
$content = '[ultimatemember_account]' ;
2014-12-21 19:08:18 +02:00
} else if ( $slug == 'password-reset' ) {
$content = '[ultimatemember_password]' ;
2014-12-15 22:38:07 +02:00
} else if ( $slug == 'user' ){
$content = $this -> setup_shortcode [ 'profile' ];
} else {
$content = $this -> setup_shortcode [ $slug ];
}
$user_page = array (
'post_title' => $array [ 'title' ],
'post_content' => $content ,
'post_name' => $slug ,
'post_type' => 'page' ,
'post_status' => 'publish' ,
'post_author' => um_user ( 'ID' ),
);
$post_id = wp_insert_post ( $user_page );
update_post_meta ( $post_id , '_um_core' , $slug );
$core_pages [ $slug ] = $post_id ;
}
/** DONE **/
}
if ( isset ( $core_pages ) ) update_option ( 'um_core_pages' , $core_pages );
}
}
/***
*** @First setup of core roles
***/
function install_default_roles (){
if ( ! get_option ( 'um_first_setup_roles' ) ) {
update_option ( 'um_first_setup_roles' , 1 );
$users = get_users ( array ( 'fields' => 'ID' ) );
foreach ( $users as $id ) {
if ( ! is_super_admin ( $id ) ) {
update_user_meta ( $id , 'role' , 'member' );
} else {
update_user_meta ( $id , 'role' , 'admin' );
}
}
}
}
/***
*** @Build default roles
***/
function install_posts_roles (){
global $wpdb , $ultimatemember ;
$admin = $ultimatemember -> query -> find_post_id ( 'um_role' , '_um_core' , 'admin' );
if ( ! $admin && current_user_can ( 'manage_options' ) && um_user ( 'ID' ) ){
$admin_role = array (
'post_title' => 'Admin' ,
'post_name' => 'admin' ,
'post_type' => 'um_role' ,
'post_status' => 'publish' ,
'post_author' => um_user ( 'ID' ),
);
$post_id = wp_insert_post ( $admin_role );
foreach ( $this -> get_initial_permissions ( 'admin' ) as $key => $value ) update_post_meta ( $post_id , " _um_ " . $key , $value );
}
$member = $ultimatemember -> query -> find_post_id ( 'um_role' , '_um_core' , 'member' );
if ( ! $member && current_user_can ( 'manage_options' ) && um_user ( 'ID' ) ){
$member_role = array (
'post_title' => 'Member' ,
'post_name' => 'member' ,
'post_type' => 'um_role' ,
'post_status' => 'publish' ,
'post_author' => um_user ( 'ID' ),
);
$post_id = wp_insert_post ( $member_role );
foreach ( $this -> get_initial_permissions ( 'member' ) as $key => $value ) update_post_meta ( $post_id , " _um_ " . $key , $value );
}
}
}