| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981 |
- <?php
- namespace um\admin;
- // Exit if accessed directly.
- if ( ! defined( 'ABSPATH' ) ) {
- exit;
- }
- if ( ! class_exists( 'um\admin\Admin' ) ) {
- /**
- * Class Admin
- * @package um\admin
- */
- class Admin extends Admin_Functions {
- /**
- * @var string
- */
- public $templates_path;
- /**
- * @var array
- */
- public $role_meta;
- /**
- * @var array
- */
- public $restriction_term_meta;
- /**
- * @var array
- */
- public $member_directory_meta;
- /**
- * @var array
- */
- public $form_meta;
- /**
- * @var array
- */
- public $builder_input;
- /**
- * @var array
- */
- public $restriction_post_meta;
- /**
- * Admin constructor.
- */
- public function __construct() {
- parent::__construct();
- $this->templates_path = um_path . 'includes/admin/templates/';
- add_action( 'admin_init', array( &$this, 'admin_init' ), 0 );
- $prefix = is_network_admin() ? 'network_admin_' : '';
- add_filter( "{$prefix}plugin_action_links_" . um_plugin, array( &$this, 'plugin_links' ) );
- add_action( 'um_admin_do_action__user_cache', array( &$this, 'user_cache' ) );
- add_action( 'um_admin_do_action__purge_temp', array( &$this, 'purge_temp' ) );
- add_action( 'um_admin_do_action__manual_upgrades_request', array( &$this, 'manual_upgrades_request' ) );
- add_action( 'um_admin_do_action__duplicate_form', array( &$this, 'duplicate_form' ) );
- add_action( 'um_admin_do_action__um_hide_locale_notice', array( &$this, 'um_hide_notice' ) );
- add_action( 'um_admin_do_action__um_can_register_notice', array( &$this, 'um_hide_notice' ) );
- add_action( 'um_admin_do_action__um_hide_exif_notice', array( &$this, 'um_hide_notice' ) );
- add_action( 'um_admin_do_action__user_action', array( &$this, 'user_action' ) );
- add_action( 'um_admin_do_action__install_core_pages', array( &$this, 'install_core_pages' ) );
- add_filter( 'admin_body_class', array( &$this, 'admin_body_class' ), 999 );
- add_action( 'parent_file', array( &$this, 'parent_file' ), 9 );
- add_filter( 'gettext', array( &$this, 'gettext' ), 10, 4 );
- add_filter( 'post_updated_messages', array( &$this, 'post_updated_messages' ) );
- }
- function init_variables() {
- $this->role_meta = apply_filters(
- 'um_role_meta_map',
- array(
- '_um_priority' => array(
- 'sanitize' => 'int',
- ),
- '_um_can_access_wpadmin' => array(
- 'sanitize' => 'bool',
- ),
- '_um_can_not_see_adminbar' => array(
- 'sanitize' => 'bool',
- ),
- '_um_can_edit_everyone' => array(
- 'sanitize' => 'bool',
- ),
- '_um_can_edit_roles' => array(
- 'sanitize' => array( $this, 'sanitize_existed_role' ),
- ),
- '_um_can_delete_everyone' => array(
- 'sanitize' => 'bool',
- ),
- '_um_can_delete_roles' => array(
- 'sanitize' => array( $this, 'sanitize_existed_role' ),
- ),
- '_um_can_edit_profile' => array(
- 'sanitize' => 'bool',
- ),
- '_um_can_delete_profile' => array(
- 'sanitize' => 'bool',
- ),
- '_um_can_view_all' => array(
- 'sanitize' => 'bool',
- ),
- '_um_can_view_roles' => array(
- 'sanitize' => array( $this, 'sanitize_existed_role' ),
- ),
- '_um_can_make_private_profile' => array(
- 'sanitize' => 'bool',
- ),
- '_um_can_access_private_profile' => array(
- 'sanitize' => 'bool',
- ),
- '_um_profile_noindex' => array(
- 'sanitize' => array( $this, 'sanitize_profile_noindex' ),
- ),
- '_um_default_homepage' => array(
- 'sanitize' => 'bool',
- ),
- '_um_redirect_homepage' => array(
- 'sanitize' => 'url',
- ),
- '_um_status' => array(
- 'sanitize' => 'sanitize_array_key',
- 'default' => 'approved',
- 'array' => array( 'approved', 'checkmail', 'pending' ),
- ),
- '_um_auto_approve_act' => array(
- 'sanitize' => 'sanitize_array_key',
- 'default' => 'redirect_profile',
- 'array' => array( 'redirect_profile', 'redirect_url' ),
- ),
- '_um_auto_approve_url' => array(
- 'sanitize' => 'url',
- ),
- '_um_login_email_activate' => array(
- 'sanitize' => 'bool',
- ),
- '_um_checkmail_action' => array(
- 'sanitize' => 'sanitize_array_key',
- 'default' => 'show_message',
- 'array' => array( 'show_message', 'redirect_url' ),
- ),
- '_um_checkmail_message' => array(
- 'sanitize' => 'textarea',
- ),
- '_um_checkmail_url' => array(
- 'sanitize' => 'url',
- ),
- '_um_url_email_activate' => array(
- 'sanitize' => 'url',
- ),
- '_um_pending_action' => array(
- 'sanitize' => 'sanitize_array_key',
- 'default' => 'show_message',
- 'array' => array( 'show_message', 'redirect_url' ),
- ),
- '_um_pending_message' => array(
- 'sanitize' => 'textarea',
- ),
- '_um_pending_url' => array(
- 'sanitize' => 'url',
- ),
- '_um_after_login' => array(
- 'sanitize' => 'sanitize_array_key',
- 'default' => 'redirect_profile',
- 'array' => array( 'redirect_profile', 'redirect_url', 'refresh', 'redirect_admin' ),
- ),
- '_um_login_redirect_url' => array(
- 'sanitize' => 'url',
- ),
- '_um_after_logout' => array(
- 'sanitize' => 'sanitize_array_key',
- 'default' => 'redirect_home',
- 'array' => array( 'redirect_home', 'redirect_url' ),
- ),
- '_um_logout_redirect_url' => array(
- 'sanitize' => 'url',
- ),
- '_um_after_delete' => array(
- 'sanitize' => 'sanitize_array_key',
- 'default' => 'redirect_home',
- 'array' => array( 'redirect_home', 'redirect_url' ),
- ),
- '_um_delete_redirect_url' => array(
- 'sanitize' => 'url',
- ),
- 'wp_capabilities' => array(
- 'sanitize' => array( $this, 'sanitize_wp_capabilities' ),
- ),
- )
- );
- $this->restriction_post_meta = apply_filters(
- 'um_restriction_post_meta_map',
- array(
- '_um_custom_access_settings' => array(
- 'sanitize' => 'bool',
- ),
- '_um_accessible' => array(
- 'sanitize' => 'int',
- ),
- '_um_access_roles' => array(
- 'sanitize' => array( $this, 'sanitize_restriction_existed_role' ),
- ),
- '_um_noaccess_action' => array(
- 'sanitize' => 'int',
- ),
- '_um_restrict_by_custom_message' => array(
- 'sanitize' => 'int',
- ),
- '_um_restrict_custom_message' => array(
- 'sanitize' => 'wp_kses',
- ),
- '_um_access_redirect' => array(
- 'sanitize' => 'int',
- ),
- '_um_access_redirect_url' => array(
- 'sanitize' => 'url',
- ),
- '_um_access_hide_from_queries' => array(
- 'sanitize' => 'bool',
- ),
- )
- );
- $this->restriction_term_meta = apply_filters(
- 'um_restriction_term_meta_map',
- array(
- '_um_custom_access_settings' => array(
- 'sanitize' => 'bool',
- ),
- '_um_accessible' => array(
- 'sanitize' => 'int',
- ),
- '_um_access_roles' => array(
- 'sanitize' => array( $this, 'sanitize_restriction_existed_role' ),
- ),
- '_um_noaccess_action' => array(
- 'sanitize' => 'int',
- ),
- '_um_restrict_by_custom_message' => array(
- 'sanitize' => 'int',
- ),
- '_um_restrict_custom_message' => array(
- 'sanitize' => 'wp_kses',
- ),
- '_um_access_redirect' => array(
- 'sanitize' => 'int',
- ),
- '_um_access_redirect_url' => array(
- 'sanitize' => 'url',
- ),
- '_um_access_hide_from_queries' => array(
- 'sanitize' => 'bool',
- ),
- )
- );
- $this->member_directory_meta = apply_filters(
- 'um_member_directory_meta_map',
- array(
- '_um_directory_template' => array(
- 'sanitize' => 'text',
- ),
- '_um_mode' => array(
- 'sanitize' => 'key',
- ),
- '_um_view_types' => array(
- 'sanitize' => array( $this, 'sanitize_md_view_types' ),
- ),
- '_um_default_view' => array(
- 'sanitize' => 'key',
- ),
- '_um_roles' => array(
- 'sanitize' => array( $this, 'sanitize_restriction_existed_role' ),
- ),
- '_um_has_profile_photo' => array(
- 'sanitize' => 'bool',
- ),
- '_um_show_these_users' => array(
- 'sanitize' => 'textarea',
- ),
- '_um_exclude_these_users' => array(
- 'sanitize' => 'textarea',
- ),
- '_um_must_search' => array(
- 'sanitize' => 'bool',
- ),
- '_um_max_users' => array(
- 'sanitize' => 'absint',
- ),
- '_um_profiles_per_page' => array(
- 'sanitize' => 'absint',
- ),
- '_um_profiles_per_page_mobile' => array(
- 'sanitize' => 'absint',
- ),
- '_um_directory_header' => array(
- 'sanitize' => 'text',
- ),
- '_um_directory_header_single' => array(
- 'sanitize' => 'text',
- ),
- '_um_directory_no_users' => array(
- 'sanitize' => 'text',
- ),
- '_um_profile_photo' => array(
- 'sanitize' => 'bool',
- ),
- '_um_cover_photos' => array(
- 'sanitize' => 'bool',
- ),
- '_um_show_name' => array(
- 'sanitize' => 'bool',
- ),
- '_um_show_tagline' => array(
- 'sanitize' => 'bool',
- ),
- '_um_tagline_fields' => array(
- 'sanitize' => array( $this, 'sanitize_user_field' ),
- ),
- '_um_show_userinfo' => array(
- 'sanitize' => 'bool',
- ),
- '_um_reveal_fields' => array(
- 'sanitize' => array( $this, 'sanitize_user_field' ),
- ),
- '_um_show_social' => array(
- 'sanitize' => 'bool',
- ),
- '_um_userinfo_animate' => array(
- 'sanitize' => 'bool',
- ),
- '_um_search' => array(
- 'sanitize' => 'bool',
- ),
- '_um_roles_can_search' => array(
- 'sanitize' => array( $this, 'sanitize_restriction_existed_role' ),
- ),
- '_um_filters' => array(
- 'sanitize' => 'bool',
- ),
- '_um_roles_can_filter' => array(
- 'sanitize' => array( $this, 'sanitize_restriction_existed_role' ),
- ),
- '_um_search_fields' => array(
- 'sanitize' => array( $this, 'sanitize_filter_fields' ),
- ),
- '_um_filters_expanded' => array(
- 'sanitize' => 'bool',
- ),
- '_um_filters_is_collapsible' => array(
- 'sanitize' => 'bool',
- ),
- '_um_search_filters' => array(
- 'sanitize' => array( $this, 'sanitize_filter_fields' ),
- ),
- '_um_sortby' => array(
- 'sanitize' => 'text',
- ),
- '_um_sortby_custom' => array(
- 'sanitize' => 'text',
- ),
- '_um_sortby_custom_label' => array(
- 'sanitize' => 'text',
- ),
- '_um_enable_sorting' => array(
- 'sanitize' => 'bool',
- ),
- '_um_sorting_fields' => array(
- 'sanitize' => array( $this, 'sanitize_md_sorting_fields' ),
- ),
- )
- );
- $this->form_meta = apply_filters(
- 'um_form_meta_map',
- array(
- '_um_mode' => array(
- 'sanitize' => 'key',
- ),
- '_um_register_use_gdpr' => array(
- 'sanitize' => 'bool',
- ),
- '_um_register_use_gdpr_content_id' => array(
- 'sanitize' => 'absint',
- ),
- '_um_register_use_gdpr_toggle_show' => array(
- 'sanitize' => 'text',
- ),
- '_um_register_use_gdpr_toggle_hide' => array(
- 'sanitize' => 'text',
- ),
- '_um_register_use_gdpr_agreement' => array(
- 'sanitize' => 'text',
- ),
- '_um_register_use_gdpr_error_text' => array(
- 'sanitize' => 'text',
- ),
- '_um_register_use_custom_settings' => array(
- 'sanitize' => 'bool',
- ),
- '_um_register_role' => array(
- 'sanitize' => 'key',
- ),
- '_um_register_template' => array(
- 'sanitize' => 'text',
- ),
- '_um_register_max_width' => array(
- 'sanitize' => 'text',
- ),
- '_um_register_icons' => array(
- 'sanitize' => 'key',
- ),
- '_um_register_primary_btn_word' => array(
- 'sanitize' => 'text',
- ),
- '_um_register_secondary_btn' => array(
- 'sanitize' => 'bool',
- ),
- '_um_register_secondary_btn_word' => array(
- 'sanitize' => 'text',
- ),
- '_um_login_after_login' => array(
- 'sanitize' => 'key',
- ),
- '_um_login_redirect_url' => array(
- 'sanitize' => 'url',
- ),
- '_um_login_use_custom_settings' => array(
- 'sanitize' => 'bool',
- ),
- '_um_login_template' => array(
- 'sanitize' => 'text',
- ),
- '_um_login_max_width' => array(
- 'sanitize' => 'text',
- ),
- '_um_login_icons' => array(
- 'sanitize' => 'key',
- ),
- '_um_login_primary_btn_word' => array(
- 'sanitize' => 'text',
- ),
- '_um_login_secondary_btn' => array(
- 'sanitize' => 'bool',
- ),
- '_um_login_secondary_btn_word' => array(
- 'sanitize' => 'text',
- ),
- '_um_login_forgot_pass_link' => array(
- 'sanitize' => 'bool',
- ),
- '_um_login_show_rememberme' => array(
- 'sanitize' => 'bool',
- ),
- '_um_profile_metafields' => array(
- 'sanitize' => array( $this, 'sanitize_user_field' ),
- ),
- '_um_profile_use_custom_settings' => array(
- 'sanitize' => 'bool',
- ),
- '_um_profile_role' => array(
- 'sanitize' => array( $this, 'sanitize_existed_role' ),
- ),
- '_um_profile_template' => array(
- 'sanitize' => 'text',
- ),
- '_um_profile_max_width' => array(
- 'sanitize' => 'text',
- ),
- '_um_profile_area_max_width' => array(
- 'sanitize' => 'text',
- ),
- '_um_profile_icons' => array(
- 'sanitize' => 'key',
- ),
- '_um_profile_primary_btn_word' => array(
- 'sanitize' => 'text',
- ),
- '_um_profile_secondary_btn' => array(
- 'sanitize' => 'bool',
- ),
- '_um_profile_secondary_btn_word' => array(
- 'sanitize' => 'text',
- ),
- '_um_profile_cover_enabled' => array(
- 'sanitize' => 'bool',
- ),
- '_um_profile_coversize' => array(
- 'sanitize' => 'absint',
- ),
- '_um_profile_cover_ratio' => array(
- 'sanitize' => 'text',
- ),
- '_um_profile_disable_photo_upload' => array(
- 'sanitize' => 'bool',
- ),
- '_um_profile_photosize' => array(
- 'sanitize' => array( $this, 'sanitize_photosize' ),
- ),
- '_um_profile_photo_required' => array(
- 'sanitize' => 'bool',
- ),
- '_um_profile_show_name' => array(
- 'sanitize' => 'bool',
- ),
- '_um_profile_show_social_links' => array(
- 'sanitize' => 'bool',
- ),
- '_um_profile_show_bio' => array(
- 'sanitize' => 'bool',
- ),
- )
- );
- $this->builder_input = apply_filters(
- 'um_builder_input_map',
- array(
- '_in_row' => array(
- 'sanitize' => 'key',
- ),
- '_in_sub_row' => array(
- 'sanitize' => 'absint',
- ),
- '_in_column' => array(
- 'sanitize' => 'absint',
- ),
- '_in_group' => array(
- 'sanitize' => 'absint',
- ),
- '_visibility' => array(
- 'sanitize' => 'key',
- ),
- '_conditional_action' => array(
- 'sanitize' => 'key',
- ),
- '_conditional_action1' => array(
- 'sanitize' => 'key',
- ),
- '_conditional_action2' => array(
- 'sanitize' => 'key',
- ),
- '_conditional_action3' => array(
- 'sanitize' => 'key',
- ),
- '_conditional_action4' => array(
- 'sanitize' => 'key',
- ),
- '_conditional_field' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_field1' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_field2' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_field3' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_field4' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_operator' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_operator1' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_operator2' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_operator3' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_operator4' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_value' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_value1' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_value2' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_value3' => array(
- 'sanitize' => 'text',
- ),
- '_conditional_value4' => array(
- 'sanitize' => 'text',
- ),
- '_validate' => array(
- 'sanitize' => 'key',
- ),
- '_custom_validate' => array(
- 'sanitize' => 'text',
- ),
- '_icon' => array(
- 'sanitize' => 'key',
- ),
- '_css_class' => array(
- 'sanitize' => 'text',
- ),
- '_width' => array(
- 'sanitize' => 'absint',
- ),
- '_divider_text' => array(
- 'sanitize' => 'text',
- ),
- '_padding' => array(
- 'sanitize' => 'text',
- ),
- '_margin' => array(
- 'sanitize' => 'text',
- ),
- '_border' => array(
- 'sanitize' => 'text',
- ),
- '_borderstyle' => array(
- 'sanitize' => 'key',
- ),
- '_borderradius' => array(
- 'sanitize' => 'text',
- ),
- '_bordercolor' => array(
- 'sanitize' => 'text',
- ),
- '_heading' => array(
- 'sanitize' => 'bool',
- ),
- '_heading_text' => array(
- 'sanitize' => 'text',
- ),
- '_background' => array(
- 'sanitize' => 'text',
- ),
- '_heading_background_color' => array(
- 'sanitize' => 'text',
- ),
- '_heading_text_color' => array(
- 'sanitize' => 'text',
- ),
- '_text_color' => array(
- 'sanitize' => 'text',
- ),
- '_icon_color' => array(
- 'sanitize' => 'text',
- ),
- '_color' => array(
- 'sanitize' => 'text',
- ),
- '_url_text' => array(
- 'sanitize' => 'text',
- ),
- '_url_target' => array(
- 'sanitize' => 'key',
- ),
- '_url_rel' => array(
- 'sanitize' => 'key',
- ),
- '_force_good_pass' => array(
- 'sanitize' => 'bool',
- ),
- '_force_confirm_pass' => array(
- 'sanitize' => 'bool',
- ),
- '_style' => array(
- 'sanitize' => 'key',
- ),
- '_intervals' => array(
- 'sanitize' => 'absint',
- ),
- '_format' => array(
- 'sanitize' => 'text',
- ),
- '_format_custom' => array(
- 'sanitize' => 'text',
- ),
- '_pretty_format' => array(
- 'sanitize' => 'bool',
- ),
- '_disabled_weekdays' => array(
- 'sanitize' => 'absint',
- ),
- '_years' => array(
- 'sanitize' => 'absint',
- ),
- '_years_x' => array(
- 'sanitize' => 'key',
- ),
- '_range_start' => array(
- 'sanitize' => 'text',
- ),
- '_range_end' => array(
- 'sanitize' => 'text',
- ),
- '_range' => array(
- 'sanitize' => 'key',
- ),
- '_content' => array(
- 'sanitize' => 'textarea',
- ),
- '_crop' => array(
- 'sanitize' => 'int',
- ),
- '_allowed_types' => array(
- 'sanitize' => 'key',
- ),
- '_upload_text' => array(
- 'sanitize' => 'text',
- ),
- '_upload_help_text' => array(
- 'sanitize' => 'text',
- ),
- '_button_text' => array(
- 'sanitize' => 'text',
- ),
- '_max_size' => array(
- 'sanitize' => 'absint',
- ),
- '_height' => array(
- 'sanitize' => 'text',
- ),
- '_spacing' => array(
- 'sanitize' => 'text',
- ),
- '_is_multi' => array(
- 'sanitize' => 'bool',
- ),
- '_max_selections' => array(
- 'sanitize' => 'absint',
- ),
- '_min_selections' => array(
- 'sanitize' => 'absint',
- ),
- '_max_entries' => array(
- 'sanitize' => 'absint',
- ),
- '_max_words' => array(
- 'sanitize' => 'absint',
- ),
- '_min' => array(
- 'sanitize' => 'empty_int',
- ),
- '_max' => array(
- 'sanitize' => 'empty_int',
- ),
- '_min_chars' => array(
- 'sanitize' => 'absint',
- ),
- '_max_chars' => array(
- 'sanitize' => 'absint',
- ),
- '_html' => array(
- 'sanitize' => 'bool',
- ),
- '_options' => array(
- 'sanitize' => 'textarea',
- ),
- '_title' => array(
- 'sanitize' => 'text',
- ),
- '_id' => array(
- 'sanitize' => 'text',
- ),
- '_metakey' => array(
- 'sanitize' => 'text',
- ),
- '_help' => array(
- 'sanitize' => 'text',
- ),
- '_default' => array(
- 'sanitize' => 'text',
- ),
- '_label' => array(
- 'sanitize' => 'text',
- ),
- '_label_confirm_pass' => array(
- 'sanitize' => 'text',
- ),
- '_placeholder' => array(
- 'sanitize' => 'text',
- ),
- '_public' => array(
- 'sanitize' => 'text',
- ),
- '_roles' => array(
- 'sanitize' => array( $this, 'sanitize_existed_role' ),
- ),
- '_required' => array(
- 'sanitize' => 'bool',
- ),
- '_editable' => array(
- 'sanitize' => 'bool',
- ),
- '_number' => array(
- 'sanitize' => 'absint',
- ),
- '_custom_dropdown_options_source' => array(
- 'sanitize' => 'text',
- ),
- '_parent_dropdown_relationship' => array(
- 'sanitize' => 'text',
- ),
- )
- );
- }
- /**
- * @param array|string $value
- *
- * @return array|string
- */
- public function sanitize_md_sorting_fields( $value ) {
- $filter_fields = array_merge( UM()->member_directory()->sort_fields, array( 'other' => __( 'Other (Custom Field)', 'ultimate-member' ) ) );
- $filter_fields = array_keys( $filter_fields );
- if ( '' !== $value ) {
- $value = array_filter(
- $value,
- function( $v, $k ) use ( $filter_fields ) {
- if ( 'other_data' === $k ) {
- return true;
- } else {
- return in_array( sanitize_text_field( $v ), $filter_fields, true );
- }
- },
- ARRAY_FILTER_USE_BOTH
- );
- $value = array_map(
- function( $item ) {
- if ( is_array( $item ) ) {
- if ( isset( $item['meta_key'] ) ) {
- $item['meta_key'] = sanitize_text_field( $item['meta_key'] );
- }
- if ( isset( $item['label'] ) ) {
- $item['label'] = sanitize_text_field( $item['label'] );
- }
- return $item;
- } else {
- return sanitize_text_field( $item );
- }
- },
- $value
- );
- }
- return $value;
- }
- /**
- * @param array|string $value
- *
- * @return array|string
- */
- public function sanitize_filter_fields( $value ) {
- $filter_fields = array_keys( UM()->member_directory()->filter_fields );
- if ( '' !== $value ) {
- $value = array_filter(
- $value,
- function( $v, $k ) use ( $filter_fields ) {
- return in_array( sanitize_text_field( $v ), $filter_fields, true );
- },
- ARRAY_FILTER_USE_BOTH
- );
- $value = array_map( 'sanitize_text_field', $value );
- }
- return $value;
- }
- /**
- * @param array|string $value
- *
- * @return array|string
- */
- public function sanitize_user_field( $value ) {
- $user_fields = array_keys( UM()->builtin()->all_user_fields() );
- if ( '' !== $value ) {
- $value = array_filter(
- $value,
- function( $v, $k ) use ( $user_fields ) {
- return in_array( sanitize_text_field( $v ), $user_fields, true );
- },
- ARRAY_FILTER_USE_BOTH
- );
- $value = array_map( 'sanitize_text_field', $value );
- }
- return $value;
- }
- /**
- * @param array|string $value
- *
- * @return array|string
- */
- public function sanitize_md_view_types( $value ) {
- $view_types = array_map(
- function ( $item ) {
- return $item['title'];
- },
- UM()->member_directory()->view_types
- );
- $view_types = array_keys( $view_types );
- if ( '' !== $value ) {
- $value = array_filter(
- $value,
- function( $v, $k ) use ( $view_types ) {
- return in_array( sanitize_key( $k ), $view_types, true ) && 1 === (int) $v;
- },
- ARRAY_FILTER_USE_BOTH
- );
- $value = array_map( 'sanitize_key', $value );
- }
- return $value;
- }
- /**
- * @param array|string $value
- *
- * @return array|string
- */
- public function sanitize_photosize( $value ) {
- $sizes = UM()->files()->get_profile_photo_size( 'photo_thumb_sizes' );
- $sizes = array_keys( $sizes );
- if ( '' !== $value ) {
- $value = in_array( absint( $value ), $sizes, true ) ? absint( $value ) : '';
- }
- return $value;
- }
- /**
- * @param array|string $value
- *
- * @return array|string
- */
- public function sanitize_cover_photosize( $value ) {
- $sizes = UM()->files()->get_profile_photo_size( 'cover_thumb_sizes' );
- $sizes = array_keys( $sizes );
- if ( '' !== $value ) {
- $value = in_array( absint( $value ), $sizes, true ) ? absint( $value ) : '';
- }
- return $value;
- }
- /**
- * @param array|string $value
- *
- * @return array|string
- */
- public function sanitize_restriction_existed_role( $value ) {
- $all_roles = array_keys( UM()->roles()->get_roles() );
- if ( '' !== $value ) {
- $value = array_filter(
- $value,
- function( $v, $k ) use ( $all_roles ) {
- return in_array( sanitize_key( $k ), $all_roles, true ) && 1 === (int) $v;
- },
- ARRAY_FILTER_USE_BOTH
- );
- $value = array_map( 'sanitize_key', $value );
- }
- return $value;
- }
- /**
- * @param array|string $value
- *
- * @return array|string
- */
- public function sanitize_existed_role( $value ) {
- $all_roles = array_keys( UM()->roles()->get_roles() );
- if ( '' !== $value ) {
- $value = array_filter(
- $value,
- function( $v, $k ) use ( $all_roles ) {
- return in_array( sanitize_key( $v ), $all_roles, true );
- },
- ARRAY_FILTER_USE_BOTH
- );
- $value = array_map( 'sanitize_key', $value );
- }
- return $value;
- }
- /**
- * @param array|string $value
- *
- * @return array|string
- */
- public function sanitize_tabs_privacy( $value ) {
- $all_privacy = array_keys( UM()->profile()->tabs_privacy() );
- if ( '' !== $value ) {
- $value = in_array( absint( $value ), $all_privacy, true ) ? absint( $value ) : '';
- }
- return $value;
- }
- /**
- * @param $value
- *
- * @return bool|string
- */
- public function sanitize_profile_noindex( $value ) {
- $value = '' !== $value ? (bool) $value : $value;
- return $value;
- }
- /**
- * @param $value
- *
- * @return array
- */
- public function sanitize_wp_capabilities( $value ) {
- $value = array_map( 'boolval', array_filter( $value ) );
- return $value;
- }
- /**
- * Sanitize role meta fields when wp-admin form has been submitted
- *
- * @param array $data
- *
- * @return array
- */
- public function sanitize_role_meta( $data ) {
- $sanitized = array();
- foreach ( $data as $k => $v ) {
- if ( ! array_key_exists( $k, $this->role_meta ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( ! array_key_exists( 'sanitize', $this->role_meta[ $k ] ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( is_callable( $this->role_meta[ $k ]['sanitize'], true, $callable_name ) ) {
- add_filter( 'um_role_meta_sanitize_' . $k, $this->role_meta[ $k ]['sanitize'], 10, 1 );
- }
- switch ( $this->role_meta[ $k ]['sanitize'] ) {
- default:
- $sanitized[ $k ] = apply_filters( 'um_role_meta_sanitize_' . $k, $data[ $k ] );
- break;
- case 'int':
- $sanitized[ $k ] = (int) $v;
- break;
- case 'bool':
- $sanitized[ $k ] = (bool) $v;
- break;
- case 'url':
- $sanitized[ $k ] = esc_url_raw( $v );
- break;
- case 'textarea':
- $sanitized[ $k ] = sanitize_textarea_field( $v );
- break;
- case 'sanitize_array_key':
- if ( ! array_key_exists( 'default', $this->role_meta[ $k ] ) || ! array_key_exists( 'array', $this->role_meta[ $k ] ) ) {
- continue 2;
- }
- $sanitized[ $k ] = ! in_array( sanitize_key( $v ), $this->role_meta[ $k ]['array'], true ) ? $this->role_meta[ $k ]['default'] : sanitize_key( $v );
- break;
- }
- }
- $data = $sanitized;
- $data = apply_filters( 'um_save_role_meta_sanitize', $data );
- return $data;
- }
- /**
- * Sanitize post restriction meta fields when wp-admin form has been submitted
- *
- * @param array $data
- *
- * @return array
- */
- public function sanitize_post_restriction_meta( $data ) {
- $sanitized = array();
- foreach ( $data as $k => $v ) {
- if ( ! array_key_exists( $k, $this->restriction_post_meta ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( ! array_key_exists( 'sanitize', $this->restriction_post_meta[ $k ] ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( is_callable( $this->restriction_post_meta[ $k ]['sanitize'], true, $callable_name ) ) {
- add_filter( 'um_restriction_post_meta_sanitize_' . $k, $this->restriction_post_meta[ $k ]['sanitize'], 10, 1 );
- }
- switch ( $this->restriction_post_meta[ $k ]['sanitize'] ) {
- default:
- $sanitized[ $k ] = apply_filters( 'um_restriction_post_meta_sanitize_' . $k, $data[ $k ] );
- break;
- case 'int':
- $sanitized[ $k ] = (int) $v;
- break;
- case 'bool':
- $sanitized[ $k ] = (bool) $v;
- break;
- case 'url':
- $sanitized[ $k ] = esc_url_raw( $v );
- break;
- case 'textarea':
- $sanitized[ $k ] = sanitize_textarea_field( $v );
- break;
- case 'wp_kses':
- $sanitized[ $k ] = wp_kses_post( $v );
- break;
- }
- }
- $data = $sanitized;
- $data = apply_filters( 'um_save_restriction_post_meta_sanitize', $data );
- return $data;
- }
- /**
- * Sanitize term restriction meta fields when wp-admin form has been submitted
- *
- * @param array $data
- *
- * @return array
- */
- public function sanitize_term_restriction_meta( $data ) {
- $sanitized = array();
- foreach ( $data as $k => $v ) {
- if ( ! array_key_exists( $k, $this->restriction_term_meta ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( ! array_key_exists( 'sanitize', $this->restriction_term_meta[ $k ] ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( is_callable( $this->restriction_term_meta[ $k ]['sanitize'], true, $callable_name ) ) {
- add_filter( 'um_restriction_term_meta_sanitize_' . $k, $this->restriction_term_meta[ $k ]['sanitize'], 10, 1 );
- }
- switch ( $this->restriction_term_meta[ $k ]['sanitize'] ) {
- default:
- $sanitized[ $k ] = apply_filters( 'um_restriction_term_meta_sanitize_' . $k, $data[ $k ] );
- break;
- case 'int':
- $sanitized[ $k ] = (int) $v;
- break;
- case 'bool':
- $sanitized[ $k ] = (bool) $v;
- break;
- case 'url':
- $sanitized[ $k ] = esc_url_raw( $v );
- break;
- case 'textarea':
- $sanitized[ $k ] = sanitize_textarea_field( $v );
- break;
- case 'wp_kses':
- $sanitized[ $k ] = wp_kses_post( $v );
- break;
- }
- }
- $data = $sanitized;
- $data = apply_filters( 'um_save_restriction_term_meta_sanitize', $data );
- return $data;
- }
- /**
- * Sanitize member directory meta when wp-admin form has been submitted
- *
- * @todo checking all sanitize types
- *
- * @param array $data
- *
- * @return array
- */
- public function sanitize_member_directory_meta( $data ) {
- $sanitized = array();
- foreach ( $data as $k => $v ) {
- if ( ! array_key_exists( $k, $this->member_directory_meta ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( ! array_key_exists( 'sanitize', $this->member_directory_meta[ $k ] ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( is_callable( $this->member_directory_meta[ $k ]['sanitize'], true, $callable_name ) ) {
- add_filter( 'um_member_directory_meta_sanitize_' . $k, $this->member_directory_meta[ $k ]['sanitize'], 10, 1 );
- }
- switch ( $this->member_directory_meta[ $k ]['sanitize'] ) {
- default:
- $sanitized[ $k ] = apply_filters( 'um_member_directory_meta_sanitize_' . $k, $data[ $k ] );
- break;
- case 'int':
- $sanitized[ $k ] = (int) $v;
- break;
- case 'bool':
- $sanitized[ $k ] = (bool) $v;
- break;
- case 'url':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'esc_url_raw', $v );
- } else {
- $sanitized[ $k ] = esc_url_raw( $v );
- }
- break;
- case 'text':
- $sanitized[ $k ] = sanitize_text_field( $v );
- break;
- case 'textarea':
- $sanitized[ $k ] = sanitize_textarea_field( $v );
- break;
- case 'key':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'sanitize_key', $v );
- } else {
- $sanitized[ $k ] = sanitize_key( $v );
- }
- break;
- case 'absint':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'absint', $v );
- } else {
- $sanitized[ $k ] = absint( $v );
- }
- break;
- }
- }
- $data = $sanitized;
- $data = apply_filters( 'um_save_member_directory_meta_sanitize', $data );
- return $data;
- }
- /**
- * Sanitize builder field meta when wp-admin form has been submitted
- *
- * @todo checking all sanitize types
- *
- * @param array $data
- *
- * @return array
- */
- public function sanitize_builder_field_meta( $data ) {
- $sanitized = array();
- foreach ( $data as $k => $v ) {
- if ( ! array_key_exists( $k, $this->builder_input ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( ! array_key_exists( 'sanitize', $this->builder_input[ $k ] ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( is_callable( $this->builder_input[ $k ]['sanitize'], true, $callable_name ) ) {
- add_filter( 'um_builder_input_sanitize_' . $k, $this->builder_input[ $k ]['sanitize'], 10, 1 );
- }
- switch ( $this->builder_input[ $k ]['sanitize'] ) {
- default:
- $sanitized[ $k ] = apply_filters( 'um_builder_input_sanitize_' . $k, $data[ $k ] );
- break;
- case 'int':
- $sanitized[ $k ] = (int) $v;
- break;
- case 'empty_int':
- $sanitized[ $k ] = ( '' !== $v ) ? (int) $v : '';
- break;
- case 'bool':
- $sanitized[ $k ] = (bool) $v;
- break;
- case 'url':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'esc_url_raw', $v );
- } else {
- $sanitized[ $k ] = esc_url_raw( $v );
- }
- break;
- case 'text':
- $sanitized[ $k ] = sanitize_text_field( $v );
- break;
- case 'textarea':
- $sanitized[ $k ] = sanitize_textarea_field( $v );
- break;
- case 'wp_kses':
- $sanitized[ $k ] = wp_kses_post( $v );
- break;
- case 'key':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'sanitize_key', $v );
- } else {
- $sanitized[ $k ] = sanitize_key( $v );
- }
- break;
- case 'absint':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'absint', $v );
- } else {
- $sanitized[ $k ] = absint( $v );
- }
- break;
- case 'empty_absint':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'absint', $v );
- } else {
- $sanitized[ $k ] = ( '' !== $v ) ? absint( $v ) : '';
- }
- break;
- }
- }
- $data = $sanitized;
- $data = apply_filters( 'um_save_builder_input_sanitize', $data );
- return $data;
- }
- /**
- * Sanitize form meta when wp-admin form has been submitted
- *
- * @todo checking all sanitize types
- *
- * @param array $data
- *
- * @return array
- */
- public function sanitize_form_meta( $data ) {
- $sanitized = array();
- foreach ( $data as $k => $v ) {
- if ( ! array_key_exists( $k, $this->form_meta ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( ! array_key_exists( 'sanitize', $this->form_meta[ $k ] ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( is_callable( $this->form_meta[ $k ]['sanitize'], true, $callable_name ) ) {
- add_filter( 'um_form_meta_sanitize_' . $k, $this->form_meta[ $k ]['sanitize'], 10, 1 );
- }
- switch ( $this->form_meta[ $k ]['sanitize'] ) {
- default:
- $sanitized[ $k ] = apply_filters( 'um_form_meta_sanitize_' . $k, $data[ $k ] );
- break;
- case 'int':
- $sanitized[ $k ] = (int) $v;
- break;
- case 'bool':
- $sanitized[ $k ] = (bool) $v;
- break;
- case 'url':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'esc_url_raw', $v );
- } else {
- $sanitized[ $k ] = esc_url_raw( $v );
- }
- break;
- case 'text':
- $sanitized[ $k ] = sanitize_text_field( $v );
- break;
- case 'textarea':
- $sanitized[ $k ] = sanitize_textarea_field( $v );
- break;
- case 'key':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'sanitize_key', $v );
- } else {
- $sanitized[ $k ] = sanitize_key( $v );
- }
- break;
- case 'absint':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'absint', $v );
- } else {
- $sanitized[ $k ] = absint( $v );
- }
- break;
- }
- }
- $data = $sanitized;
- $data = apply_filters( 'um_save_form_meta_sanitize', $data );
- return $data;
- }
- /**
- * Sanitize options when wp-admin form has been submitted
- *
- * @todo checking all sanitize types
- *
- * @param array $data
- *
- * @return array
- */
- public function sanitize_options( $data ) {
- $sanitized = array();
- foreach ( $data as $k => $v ) {
- if ( ! array_key_exists( $k, UM()->admin_settings()->settings_map ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( ! array_key_exists( 'sanitize', UM()->admin_settings()->settings_map[ $k ] ) ) {
- // @todo remove since 2.2.x and leave only continue
- $sanitized[ $k ] = $v;
- continue;
- }
- if ( is_callable( UM()->admin_settings()->settings_map[ $k ]['sanitize'], true, $callable_name ) ) {
- add_filter( 'um_settings_sanitize_' . $k, UM()->admin_settings()->settings_map[ $k ]['sanitize'], 10, 1 );
- }
- switch ( UM()->admin_settings()->settings_map[ $k ]['sanitize'] ) {
- default:
- $sanitized[ $k ] = apply_filters( 'um_settings_sanitize_' . $k, $v );
- break;
- case 'int':
- $sanitized[ $k ] = (int) $v;
- break;
- case 'absint':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'absint', $v );
- } else {
- $sanitized[ $k ] = absint( $v );
- }
- break;
- case 'key':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'sanitize_key', $v );
- } else {
- $sanitized[ $k ] = sanitize_key( $v );
- }
- break;
- case 'bool':
- $sanitized[ $k ] = (bool) $v;
- break;
- case 'url':
- if ( is_array( $v ) ) {
- $sanitized[ $k ] = array_map( 'esc_url_raw', $v );
- } else {
- $sanitized[ $k ] = esc_url_raw( $v );
- }
- break;
- case 'wp_kses':
- $sanitized[ $k ] = wp_kses_post( $v );
- break;
- case 'textarea':
- $sanitized[ $k ] = sanitize_textarea_field( $v );
- break;
- case 'text':
- $sanitized[ $k ] = sanitize_text_field( $v );
- break;
- }
- }
- $data = $sanitized;
- $data = apply_filters( 'um_save_settings_sanitize', $data );
- return $data;
- }
- /**
- * Adds class to our admin pages
- *
- * @param $classes
- *
- * @return string
- */
- public function admin_body_class( $classes ) {
- if ( $this->is_um_screen() ) {
- return "$classes um-admin";
- }
- return $classes;
- }
- /**
- *
- */
- public function manual_upgrades_request() {
- if ( ! is_admin() || ! current_user_can( 'manage_options' ) ) {
- die();
- }
- $last_request = get_option( 'um_last_manual_upgrades_request', false );
- if ( empty( $last_request ) || time() > $last_request + DAY_IN_SECONDS ) {
- if ( is_multisite() ) {
- $blogs_ids = get_sites();
- foreach( $blogs_ids as $b ) {
- switch_to_blog( $b->blog_id );
- wp_clean_update_cache();
- UM()->plugin_updater()->um_checklicenses();
- update_option( 'um_last_manual_upgrades_request', time() );
- restore_current_blog();
- }
- } else {
- wp_clean_update_cache();
- UM()->plugin_updater()->um_checklicenses();
- update_option( 'um_last_manual_upgrades_request', time() );
- }
- $url = add_query_arg( array( 'page' => 'ultimatemember', 'update' => 'got_updates' ), admin_url( 'admin.php' ) );
- } else {
- $url = add_query_arg( array( 'page' => 'ultimatemember', 'update' => 'often_updates' ), admin_url( 'admin.php' ) );
- }
- exit( wp_redirect( $url ) );
- }
- /**
- * Core pages installation
- */
- function install_core_pages() {
- if ( ! is_admin() ) {
- die();
- }
- UM()->setup()->install_default_pages();
- //check empty pages in settings
- $empty_pages = array();
- $pages = UM()->config()->permalinks;
- if ( $pages && is_array( $pages ) ) {
- foreach ( $pages as $slug => $page_id ) {
- $page = get_post( $page_id );
- if ( ! isset( $page->ID ) && in_array( $slug, array_keys( UM()->config()->core_pages ) ) ) {
- $empty_pages[] = $slug;
- }
- }
- }
- //if there aren't empty pages - then hide pages notice
- if ( empty( $empty_pages ) ) {
- $hidden_notices = get_option( 'um_hidden_admin_notices', array() );
- $hidden_notices[] = 'wrong_pages';
- update_option( 'um_hidden_admin_notices', $hidden_notices );
- }
- $url = add_query_arg( array( 'page' => 'um_options' ), admin_url( 'admin.php' ) );
- exit( wp_redirect( $url ) );
- }
- /**
- * Clear all users cache
- *
- * @param $action
- */
- function user_cache( $action ) {
- global $wpdb;
- if ( ! is_admin() || ! current_user_can( 'manage_options' ) ) {
- die();
- }
- $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'um_cache_userdata_%'" );
- $url = add_query_arg( array( 'page' => 'ultimatemember', 'update' => 'cleared_cache' ), admin_url( 'admin.php' ) );
- exit( wp_redirect( $url ) );
- }
- /**
- * Purge temp uploads dir
- * @param $action
- */
- function purge_temp( $action ) {
- if ( ! is_admin() || ! current_user_can( 'manage_options' ) ) {
- die();
- }
- UM()->files()->remove_dir( UM()->files()->upload_temp );
- $url = add_query_arg( array( 'page' => 'ultimatemember', 'update' => 'purged_temp' ), admin_url( 'admin.php' ) );
- exit( wp_redirect( $url ) );
- }
- /**
- * Duplicate form
- *
- * @param $action
- */
- function duplicate_form( $action ) {
- if ( ! is_admin() || ! current_user_can('manage_options') ) {
- die();
- }
- if ( ! isset( $_REQUEST['post_id'] ) || ! is_numeric( $_REQUEST['post_id'] ) ) {
- die();
- }
- $post_id = absint( $_REQUEST['post_id'] );
- $n = array(
- 'post_type' => 'um_form',
- 'post_title' => sprintf( __( 'Duplicate of %s', 'ultimate-member' ), get_the_title( $post_id ) ),
- 'post_status' => 'publish',
- 'post_author' => get_current_user_id(),
- );
- $n_id = wp_insert_post( $n );
- $n_fields = get_post_custom( $post_id );
- foreach ( $n_fields as $key => $value ) {
- if ( $key == '_um_custom_fields' ) {
- $the_value = unserialize( $value[0] );
- } else {
- $the_value = $value[0];
- }
- update_post_meta( $n_id, $key, $the_value );
- }
- delete_post_meta( $n_id, '_um_core' );
- $url = admin_url( 'edit.php?post_type=um_form' );
- $url = add_query_arg( 'update', 'form_duplicated', $url );
- exit( wp_redirect( $url ) );
- }
- /**
- * Action to hide notices in admin
- *
- * @param $action
- */
- function um_hide_notice( $action ) {
- if ( ! is_admin() || ! current_user_can( 'manage_options' ) ) {
- die();
- }
- update_option( $action, 1 );
- exit( wp_redirect( remove_query_arg( 'um_adm_action' ) ) );
- }
- /**
- * Various user actions
- *
- * @param $action
- */
- function user_action( $action ) {
- if ( ! is_admin() || ! current_user_can( 'edit_users' ) ) {
- die();
- }
- if ( ! isset( $_REQUEST['sub'] ) ) {
- die();
- }
- if ( ! isset( $_REQUEST['user_id'] ) ) {
- die();
- }
- um_fetch_user( absint( $_REQUEST['user_id'] ) );
- $subaction = sanitize_key( $_REQUEST['sub'] );
- /**
- * UM hook
- *
- * @type action
- * @title um_admin_user_action_hook
- * @description Action on bulk user subaction
- * @input_vars
- * [{"var":"$subaction","type":"string","desc":"Bulk Subaction"}]
- * @change_log
- * ["Since: 2.0"]
- * @usage add_action( 'um_admin_user_action_hook', 'function_name', 10, 1 );
- * @example
- * <?php
- * add_action( 'um_admin_user_action_hook', 'my_admin_user_action', 10, 1 );
- * function my_admin_user_action( $subaction ) {
- * // your code here
- * }
- * ?>
- */
- do_action( 'um_admin_user_action_hook', $subaction );
- /**
- * UM hook
- *
- * @type action
- * @title um_admin_user_action_{$subaction}_hook
- * @description Action on bulk user subaction
- * @change_log
- * ["Since: 2.0"]
- * @usage add_action( 'um_admin_user_action_{$subaction}_hook', 'function_name', 10 );
- * @example
- * <?php
- * add_action( 'um_admin_user_action_{$subaction}_hook', 'my_admin_user_action', 10 );
- * function my_admin_user_action() {
- * // your code here
- * }
- * ?>
- */
- do_action( "um_admin_user_action_{$subaction}_hook" );
- um_reset_user();
- wp_redirect( add_query_arg( 'update', 'user_updated', admin_url( '?page=ultimatemember' ) ) );
- exit;
- }
- /**
- * Add any custom links to plugin page
- *
- * @param array $links
- *
- * @return array
- */
- function plugin_links( $links ) {
- $more_links[] = '<a href="http://docs.ultimatemember.com/">' . __( 'Docs', 'ultimate-member' ) . '</a>';
- $more_links[] = '<a href="'.admin_url().'admin.php?page=um_options">' . __( 'Settings', 'ultimate-member' ) . '</a>';
- $links = $more_links + $links;
- return $links;
- }
- /**
- * Init admin action/filters + request handlers
- */
- function admin_init() {
- $this->init_variables();
- if ( is_admin() && current_user_can( 'manage_options' ) && ! empty( $_REQUEST['um_adm_action'] ) ) {
- $action = sanitize_key( $_REQUEST['um_adm_action'] );
- /**
- * UM hook
- *
- * @type action
- * @title um_admin_do_action__
- * @description Make some action on custom admin action
- * @input_vars
- * [{"var":"$action","type":"string","desc":"Admin Action"}]
- * @change_log
- * ["Since: 2.0"]
- * @usage add_action( 'um_admin_do_action__', 'function_name', 10, 1 );
- * @example
- * <?php
- * add_action( 'um_admin_do_action__', 'my_admin_do_action', 10, 1 );
- * function my_admin_do_action( $action ) {
- * // your code here
- * }
- * ?>
- */
- do_action( 'um_admin_do_action__', $action );
- /**
- * UM hook
- *
- * @type action
- * @title um_admin_do_action__{$action}
- * @description Make some action on custom admin $action
- * @input_vars
- * [{"var":"$action","type":"string","desc":"Admin Action"}]
- * @change_log
- * ["Since: 2.0"]
- * @usage add_action( 'um_admin_do_action__{$action}', 'function_name', 10, 1 );
- * @example
- * <?php
- * add_action( 'um_admin_do_action__{$action}', 'my_admin_do_action', 10, 1 );
- * function my_admin_do_action( $action ) {
- * // your code here
- * }
- * ?>
- */
- do_action( "um_admin_do_action__{$action}", $action );
- }
- }
- /**
- * Updated post messages
- *
- * @param array $messages
- *
- * @return array
- */
- function post_updated_messages( $messages ) {
- global $post_ID;
- $post_type = get_post_type( $post_ID );
- if ( $post_type == 'um_form' ) {
- $messages['um_form'] = array(
- 0 => '',
- 1 => __( 'Form updated.', 'ultimate-member' ),
- 2 => __( 'Custom field updated.', 'ultimate-member' ),
- 3 => __( 'Custom field deleted.', 'ultimate-member' ),
- 4 => __( 'Form updated.', 'ultimate-member' ),
- 5 => isset( $_GET['revision'] ) ? __( 'Form restored to revision.', 'ultimate-member' ) : false,
- 6 => __( 'Form created.', 'ultimate-member' ),
- 7 => __( 'Form saved.', 'ultimate-member' ),
- 8 => __( 'Form submitted.', 'ultimate-member' ),
- 9 => __( 'Form scheduled.', 'ultimate-member' ),
- 10 => __( 'Form draft updated.', 'ultimate-member' ),
- );
- }
- return $messages;
- }
- /**
- * Gettext filters
- *
- * @param $translation
- * @param $text
- * @param $domain
- *
- * @return string
- */
- function gettext( $translation, $text, $domain ) {
- global $post;
- if ( isset( $post->post_type ) && $this->is_plugin_post_type() ) {
- $translations = get_translations_for_domain( $domain );
- if ( $text == 'Publish' ) {
- return $translations->translate( 'Create' );
- } elseif ( $text == 'Move to Trash' ) {
- return $translations->translate( 'Delete' );
- }
- }
- return $translation;
- }
- /**
- * Fix parent file for correct highlighting
- *
- * @param $parent_file
- *
- * @return string
- */
- function parent_file( $parent_file ) {
- global $current_screen;
- $screen_id = $current_screen->id;
- if ( strstr( $screen_id, 'um_' ) ) {
- $parent_file = 'ultimatemember';
- }
- return $parent_file;
- }
- /**
- * @since 2.0
- *
- * @return core\Admin_Notices()
- */
- function notices() {
- if ( empty( UM()->classes['admin_notices'] ) ) {
- UM()->classes['admin_notices'] = new core\Admin_Notices();
- }
- return UM()->classes['admin_notices'];
- }
- }
- }
|