mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-06-05 15:09:37 +09:00
Merge pull request #1164 from ultimatemember/feature/template_versioning
Template versioning
This commit is contained in:
@@ -7,6 +7,14 @@
|
||||
"minimum-stability": "stable",
|
||||
"prefer-stable": true,
|
||||
"require": {
|
||||
"ext-mbstring": "*",
|
||||
"ext-json": "*",
|
||||
"ext-dom": "*",
|
||||
"ext-exif": "*",
|
||||
"ext-gd": "*",
|
||||
"ext-fileinfo": "*",
|
||||
"ext-curl": "*",
|
||||
"ext-iconv": "*",
|
||||
"woocommerce/action-scheduler": "3.2.1"
|
||||
},
|
||||
"require-dev": {
|
||||
|
||||
@@ -46,6 +46,20 @@
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wp-list-table.templates .column-core_version {
|
||||
width: 100px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wp-list-table.templates .column-theme_version {
|
||||
width: 100px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wp-list-table.templates .column-status {
|
||||
width: 260px;
|
||||
}
|
||||
|
||||
th.column-email.column-primary {
|
||||
padding-left: 48px;
|
||||
}
|
||||
@@ -213,6 +227,16 @@ th.column-email.column-primary {
|
||||
.um-small-field {
|
||||
width:50%;
|
||||
}
|
||||
|
||||
.wp-list-table.templates .column-core_version {
|
||||
width: auto;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.wp-list-table.templates .column-theme_version {
|
||||
width: auto;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -243,4 +267,4 @@ th.column-email.column-primary {
|
||||
.um_setting_ajax_button_response.complete {
|
||||
color:darkgreen;
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,6 +80,7 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
|
||||
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__check_templates_version', array( &$this, 'check_templates_version' ) );
|
||||
|
||||
add_action( 'um_admin_do_action__install_core_pages', array( &$this, 'install_core_pages' ) );
|
||||
|
||||
@@ -1868,6 +1869,36 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Manual check templates versions
|
||||
*
|
||||
* @param $action
|
||||
*/
|
||||
public function check_templates_version( $action ) {
|
||||
$templates = UM()->admin_settings()->get_override_templates( true );
|
||||
$out_date = false;
|
||||
|
||||
foreach ( $templates as $template ) {
|
||||
if ( 0 === $template['status_code'] ) {
|
||||
$out_date = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( false === $out_date ) {
|
||||
delete_option( 'um_override_templates_outdated' );
|
||||
}
|
||||
|
||||
$url = add_query_arg(
|
||||
array(
|
||||
'page' => 'um_options',
|
||||
'tab' => 'override_templates',
|
||||
),
|
||||
admin_url( 'admin.php' )
|
||||
);
|
||||
wp_safe_redirect( $url );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add any custom links to plugin page
|
||||
|
||||
@@ -52,6 +52,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
|
||||
|
||||
$this->extensions_page();
|
||||
|
||||
$this->template_version();
|
||||
|
||||
// removed for now to avoid the bad reviews
|
||||
//$this->reviews_notice();
|
||||
|
||||
@@ -714,6 +716,37 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check Templates Versions notice
|
||||
*/
|
||||
public function template_version() {
|
||||
if ( true === get_option( 'um_override_templates_outdated' ) ) {
|
||||
$link = admin_url( 'admin.php?page=um_options&tab=override_templates' );
|
||||
ob_start();
|
||||
?>
|
||||
|
||||
<p>
|
||||
<?php
|
||||
// translators: %s override templates page link.
|
||||
echo wp_kses( sprintf( __( 'Your templates are out of date. Please visit <a href="%s">override templates status page</a> and update templates.', 'ultimate-member' ), $link ), UM()->get_allowed_html( 'admin_notice' ) );
|
||||
?>
|
||||
</p>
|
||||
|
||||
<?php
|
||||
$message = ob_get_clean();
|
||||
UM()->admin()->notices()->add_notice(
|
||||
'um_override_templates_notice',
|
||||
array(
|
||||
'class' => 'error',
|
||||
'message' => $message,
|
||||
'dismissible' => false,
|
||||
),
|
||||
10
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function dismiss_notice() {
|
||||
UM()->admin()->check_ajax_nonce();
|
||||
|
||||
|
||||
@@ -64,10 +64,12 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
|
||||
add_filter( 'um_settings_section_install_info__content', array( $this, 'settings_install_info_tab' ), 10, 2 );
|
||||
|
||||
//custom content for override templates tab
|
||||
add_action( 'plugins_loaded', array( $this, 'um_check_template_version' ), 10 );
|
||||
add_filter( 'um_settings_section_override_templates__content', array( $this, 'settings_override_templates_tab' ), 10, 2 );
|
||||
|
||||
add_filter( 'um_settings_structure', array( $this, 'sorting_licenses_options' ), 9999, 1 );
|
||||
|
||||
|
||||
//save handlers
|
||||
add_action( 'admin_init', array( $this, 'save_settings_handler' ), 10 );
|
||||
|
||||
@@ -75,10 +77,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
add_action( 'um_settings_before_save', array( $this, 'check_permalinks_changes' ) );
|
||||
add_action( 'um_settings_save', array( $this, 'on_settings_save' ) );
|
||||
|
||||
|
||||
add_filter( 'um_change_settings_before_save', array( $this, 'save_email_templates' ) );
|
||||
|
||||
|
||||
//save licenses options
|
||||
add_action( 'um_settings_before_save', array( $this, 'before_licenses_save' ) );
|
||||
add_action( 'um_settings_save', array( $this, 'licenses_save' ) );
|
||||
@@ -1839,6 +1839,14 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
),
|
||||
),
|
||||
),
|
||||
'override_templates' => array(
|
||||
'title' => __( 'Override templates', 'ultimate-member' ),
|
||||
'fields' => array(
|
||||
array(
|
||||
'type' => 'override_templates',
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1966,7 +1974,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
*/
|
||||
do_action( "um_settings_page_before_" . $current_tab . "_" . $current_subtab . "_content" );
|
||||
|
||||
if ( in_array( $current_tab, apply_filters('um_settings_custom_tabs', array( 'licenses', 'install_info' ) ) ) || in_array( $current_subtab, apply_filters( 'um_settings_custom_subtabs', array(), $current_tab ) ) ) {
|
||||
if ( in_array( $current_tab, apply_filters('um_settings_custom_tabs', array( 'licenses', 'install_info', 'override_templates' ) ) ) || in_array( $current_subtab, apply_filters( 'um_settings_custom_subtabs', array(), $current_tab ) ) ) {
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
@@ -3007,6 +3015,186 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
return $section;
|
||||
}
|
||||
|
||||
/**
|
||||
* Periodically checking the versions of templates.
|
||||
*
|
||||
* @since 2.6.1
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function um_check_template_version() {
|
||||
$um_check_version = get_transient( 'um_check_template_versions' );
|
||||
if ( false === $um_check_version ) {
|
||||
$this->get_override_templates();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* HTML for Settings > Override Templates tab.
|
||||
* @return void
|
||||
*/
|
||||
public function settings_override_templates_tab() {
|
||||
$um_check_version = get_transient( 'um_check_template_versions' );
|
||||
?>
|
||||
|
||||
<p class="description" style="margin: 20px 0 0 0;">
|
||||
<a href="<?php echo esc_url( add_query_arg( 'um_adm_action', 'check_templates_version' ) ); ?>" class="button" style="margin-right: 10px;">
|
||||
<?php esc_html_e( 'Re-check templates', 'ultimate-member' ); ?>
|
||||
</a>
|
||||
<?php
|
||||
if ( false !== $um_check_version ) {
|
||||
// translators: %s: Last checking templates time.
|
||||
echo esc_html( sprintf( __( 'Last update: %s. You could re-check changes manually.', 'ultimate-member' ), wp_date( get_option( 'date_format', 'Y-m-d' ) . ' ' . get_option( 'time_format', 'H:i:s' ), $um_check_version ) ) );
|
||||
} else {
|
||||
esc_html_e( 'Templates haven\'t check yet. You could check changes manually.', 'ultimate-member' );
|
||||
}
|
||||
?>
|
||||
</p>
|
||||
<p class="description" style="margin: 20px 0 0 0;">
|
||||
<?php
|
||||
/** @noinspection HtmlUnknownTarget */
|
||||
// translators: %s: Link to the docs article.
|
||||
echo wp_kses( sprintf( __( 'You may get more details about overriding templates <a href="%s" target="_blank">here</a>.', 'ultimate-member' ), 'https://docs.ultimatemember.com/article/1516-templates-map' ), UM()->get_allowed_html( 'admin_notice' ) );
|
||||
?>
|
||||
</p>
|
||||
|
||||
<?php
|
||||
include_once um_path . 'includes/admin/core/list-tables/version-template-list-table.php';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $get_list boolean
|
||||
*
|
||||
* @return array|void
|
||||
*/
|
||||
public function get_override_templates( $get_list = false ) {
|
||||
$outdated_files = array();
|
||||
$scan_files = $this->scan_template_files( um_path . '/templates/' );
|
||||
$scan_files = apply_filters( 'um_override_templates_scan_files', $scan_files );
|
||||
$out_date = false;
|
||||
|
||||
set_transient( 'um_check_template_versions', time(), 12 * HOUR_IN_SECONDS );
|
||||
|
||||
foreach ( $scan_files as $key => $file ) {
|
||||
if ( ! str_contains( $file, 'email/' ) ) {
|
||||
$located = apply_filters( 'um_override_templates_get_template_path', array(), $file );
|
||||
|
||||
if ( ! empty( $located ) ) {
|
||||
$theme_file = $located['theme'];
|
||||
} elseif ( file_exists( get_stylesheet_directory() . '/ultimate-member/templates/' . $file ) ) {
|
||||
$theme_file = get_stylesheet_directory() . '/ultimate-member/templates/' . $file;
|
||||
} else {
|
||||
$theme_file = false;
|
||||
}
|
||||
if ( ! empty( $theme_file ) ) {
|
||||
$core_file = $file;
|
||||
|
||||
if ( ! empty( $located ) ) {
|
||||
$core_path = $located['core'];
|
||||
} else {
|
||||
$core_path = um_path . '/templates/' . $core_file;
|
||||
}
|
||||
$core_version = $this->get_file_version( $core_path );
|
||||
$theme_version = $this->get_file_version( $theme_file );
|
||||
|
||||
$status = esc_html__( 'Theme version up to date', 'ultimate-member' );
|
||||
$status_code = 1;
|
||||
if ( version_compare( $theme_version, $core_version, '<' ) ) {
|
||||
$status = esc_html__( 'Theme version is out of date', 'ultimate-member' );
|
||||
$status_code = 0;
|
||||
}
|
||||
if ( '' === $theme_version ) {
|
||||
$status = esc_html__( 'Theme version is empty', 'ultimate-member' );
|
||||
$status_code = 0;
|
||||
}
|
||||
if ( 0 === $status_code ) {
|
||||
$out_date = true;
|
||||
update_option( 'um_override_templates_outdated', true );
|
||||
}
|
||||
$outdated_files[] = array(
|
||||
'core_version' => $core_version,
|
||||
'theme_version' => $theme_version,
|
||||
'core_file' => stristr( um_path . 'templates/' . $core_file, 'wp-content' ),
|
||||
'theme_file' => stristr( $theme_file, 'wp-content' ),
|
||||
'status' => $status,
|
||||
'status_code' => $status_code,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( false === $out_date ) {
|
||||
delete_option( 'um_override_templates_outdated' );
|
||||
}
|
||||
update_option( 'um_template_statuses', $outdated_files );
|
||||
if ( true === $get_list ) {
|
||||
return $outdated_files;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Scan the template files.
|
||||
*
|
||||
* @param string $template_path Path to the template directory.
|
||||
* @return array
|
||||
*/
|
||||
public static function scan_template_files( $template_path ) {
|
||||
$files = @scandir( $template_path ); // @codingStandardsIgnoreLine.
|
||||
$result = array();
|
||||
|
||||
if ( ! empty( $files ) ) {
|
||||
|
||||
foreach ( $files as $value ) {
|
||||
|
||||
if ( ! in_array( $value, array( '.', '..' ), true ) ) {
|
||||
|
||||
if ( is_dir( $template_path . DIRECTORY_SEPARATOR . $value ) ) {
|
||||
$sub_files = self::scan_template_files( $template_path . DIRECTORY_SEPARATOR . $value );
|
||||
foreach ( $sub_files as $sub_file ) {
|
||||
$result[] = $value . DIRECTORY_SEPARATOR . $sub_file;
|
||||
}
|
||||
} else {
|
||||
$result[] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $file string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_file_version( $file ) {
|
||||
// Avoid notices if file does not exist.
|
||||
if ( ! file_exists( $file ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
// We don't need to write to the file, so just open for reading.
|
||||
$fp = fopen( $file, 'r' ); // @codingStandardsIgnoreLine.
|
||||
|
||||
// Pull only the first 8kiB of the file in.
|
||||
$file_data = fread( $fp, 8192 ); // @codingStandardsIgnoreLine.
|
||||
|
||||
// PHP will close file handle, but we are good citizens.
|
||||
fclose( $fp ); // @codingStandardsIgnoreLine.
|
||||
|
||||
// Make sure we catch CR-only line endings.
|
||||
$file_data = str_replace( "\r", "\n", $file_data );
|
||||
$version = '';
|
||||
|
||||
if ( preg_match( '/^[ \t\/*#@]*' . preg_quote( '@version', '/' ) . '(.*)$/mi', $file_data, $match ) && $match[1] ) {
|
||||
$version = _cleanup_header_comment( $match[1] );
|
||||
}
|
||||
|
||||
return $version;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $html
|
||||
|
||||
@@ -0,0 +1,215 @@
|
||||
<?php
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Class UM_Versions_List_Table
|
||||
*/
|
||||
class UM_Versions_List_Table extends WP_List_Table {
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $no_items_message = '';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $columns = array();
|
||||
|
||||
/**
|
||||
* UM_Versions_List_Table constructor.
|
||||
*
|
||||
* @param array $args
|
||||
*/
|
||||
public function __construct( $args = array() ) {
|
||||
$args = wp_parse_args(
|
||||
$args,
|
||||
array(
|
||||
'singular' => __( 'item', 'ultimate-member' ),
|
||||
'plural' => __( 'items', 'ultimate-member' ),
|
||||
'ajax' => false,
|
||||
)
|
||||
);
|
||||
|
||||
$this->no_items_message = $args['plural'] . ' ' . __( 'not found.', 'ultimate-member' );
|
||||
|
||||
parent::__construct( $args );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param callable $name
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function __call( $name, $arguments ) {
|
||||
return call_user_func_array( array( $this, $name ), $arguments );
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function prepare_items() {
|
||||
$screen = $this->screen;
|
||||
|
||||
$columns = $this->get_columns();
|
||||
$sortable = $this->get_sortable_columns();
|
||||
$this->_column_headers = array( $columns, array(), $sortable );
|
||||
|
||||
$templates = get_option( 'um_template_statuses', array() );
|
||||
$templates = is_array( $templates ) ? $templates : array();
|
||||
|
||||
@uasort(
|
||||
$templates,
|
||||
function ( $a, $b ) {
|
||||
if ( strtolower( $a['status_code'] ) === strtolower( $b['status_code'] ) ) {
|
||||
return 0;
|
||||
}
|
||||
return ( strtolower( $a['status_code'] ) < strtolower( $b['status_code'] ) ) ? -1 : 1;
|
||||
}
|
||||
);
|
||||
|
||||
$per_page = $this->get_items_per_page( str_replace( '-', '_', $screen->id . '_per_page' ), 999 );
|
||||
$paged = $this->get_pagenum();
|
||||
|
||||
$this->items = array_slice( $templates, ( $paged - 1 ) * $per_page, $per_page );
|
||||
|
||||
$this->set_pagination_args(
|
||||
array(
|
||||
'total_items' => count( $templates ),
|
||||
'per_page' => $per_page,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object $item
|
||||
* @param string $column_name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function column_default( $item, $column_name ) {
|
||||
if ( isset( $item[ $column_name ] ) ) {
|
||||
return $item[ $column_name ];
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function no_items() {
|
||||
echo $this->no_items_message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $args
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function set_columns( $args = array() ) {
|
||||
$this->columns = $args;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function get_columns() {
|
||||
return $this->columns;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $item
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function column_template( $item ) {
|
||||
$output = esc_html__( 'Core path - ', 'ultimate-member' );
|
||||
$output .= $item['core_file'] . '<br>';
|
||||
$output .= esc_html__( 'Theme path - ', 'ultimate-member' );
|
||||
$output .= $item['theme_file'];
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $item
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function column_core_version( $item ) {
|
||||
return $item['core_version'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $item
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function column_theme_version( $item ) {
|
||||
return $item['theme_version'] ? $item['theme_version'] : '-';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $item
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function column_status( $item ) {
|
||||
$icon = 1 === $item['status_code'] ? 'um-notification-is-active dashicons-yes' : 'dashicons-no-alt';
|
||||
return $item['status'] . ' <span class="dashicons um-notification-status ' . esc_attr( $icon ) . '"></span>';
|
||||
}
|
||||
}
|
||||
|
||||
$list_table = new UM_Versions_List_Table(
|
||||
array(
|
||||
'singular' => __( 'Template', 'ultimate-member' ),
|
||||
'plural' => __( 'Templates', 'ultimate-member' ),
|
||||
'ajax' => false,
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
* @type filter
|
||||
* @title um_versions_templates_columns
|
||||
* @description Version Templates List Table columns
|
||||
* @input_vars
|
||||
* [{"var":"$columns","type":"array","desc":"Columns"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage add_filter( 'um_versions_templates_columns', 'function_name', 10, 1 );
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_versions_templates_columns', 'um_versions_templates_columns', 10, 1 );
|
||||
* function um_versions_templates_columns( $columns ) {
|
||||
* // your code here
|
||||
* $columns['my-custom-column'] = 'My Custom Column';
|
||||
* return $columns;
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
$columns = apply_filters(
|
||||
'um_versions_templates_columns',
|
||||
array(
|
||||
'template' => __( 'Template', 'ultimate-member' ),
|
||||
'core_version' => __( 'Core version', 'ultimate-member' ),
|
||||
'theme_version' => __( 'Theme version', 'ultimate-member' ),
|
||||
'status' => __( 'Status', 'ultimate-member' ),
|
||||
)
|
||||
);
|
||||
|
||||
$list_table->set_columns( $columns );
|
||||
$list_table->prepare_items();
|
||||
?>
|
||||
|
||||
<form action="" method="get" name="um-settings-template-versions" id="um-settings-template-versions">
|
||||
<input type="hidden" name="page" value="um_options" />
|
||||
<input type="hidden" name="tab" value="override_templates" />
|
||||
<?php $list_table->display(); ?>
|
||||
</form>
|
||||
@@ -449,7 +449,7 @@ if ( ! class_exists( 'um\Config' ) ) {
|
||||
'If you did not make this change and believe your {site_name} account has been compromised, please contact us at the following email address: {admin_email}<br /><br />' .
|
||||
'Thanks,<br />' .
|
||||
'{site_name}',
|
||||
'description' => __('Whether to send the user an email when he request to reset password (Recommended, please keep on)','ultimate-member'),
|
||||
'description' => __('Whether to send the user an email when he requests to reset password (Recommended, please keep on)','ultimate-member'),
|
||||
'recipient' => 'user',
|
||||
'default_active' => true
|
||||
),
|
||||
|
||||
@@ -31,6 +31,11 @@ if ( ! class_exists( 'um\core\Profile' ) ) {
|
||||
*/
|
||||
var $active_tab;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $active_subnav = null;
|
||||
|
||||
|
||||
/**
|
||||
* Profile constructor.
|
||||
|
||||
@@ -66,7 +66,7 @@ function um_dynamic_user_profile_title( $title, $id = '' ) {
|
||||
return $title;
|
||||
}
|
||||
|
||||
return ( strlen( $title ) !== mb_strlen( $title ) ) ? $title : utf8_encode( $title );
|
||||
return ( strlen( $title ) !== mb_strlen( $title ) ) ? $title : mb_convert_encoding( $title, 'UTF-8' );
|
||||
}
|
||||
add_filter( 'the_title', 'um_dynamic_user_profile_title', 100000, 2 );
|
||||
|
||||
|
||||
+26
-26
@@ -2,10 +2,10 @@
|
||||
Author URI: https://ultimatemember.com/
|
||||
Plugin URI: https://ultimatemember.com/
|
||||
Contributors: ultimatemember, champsupertramp, nsinelnikov
|
||||
Donate link:
|
||||
Donate link:
|
||||
Tags: community, member, membership, user-profile, user-registration
|
||||
Requires PHP: 5.6
|
||||
Requires at least: 5.0
|
||||
Requires at least: 5.3
|
||||
Tested up to: 6.2
|
||||
Stable tag: 2.6.0
|
||||
License: GNU Version 2 or Any Later Version
|
||||
@@ -119,7 +119,7 @@ No, we have built Ultimate Member to be extremely easy to use and does not requi
|
||||
|
||||
= Is Ultimate Member mobile responsive? =
|
||||
|
||||
Yes. Ultimate Member is designed to adapt nicely to any screen resolution. It includes specific designs for phones, tablets and desktops.
|
||||
Yes. Ultimate Member is designed to adapt nicely to any screen resolution. It includes specific designs for phones, tablets and desktops.
|
||||
|
||||
= Is Ultimate Member multi-site compatible? =
|
||||
|
||||
@@ -131,7 +131,7 @@ Yes. Ultimate Member will work with any properly coded theme. However, some them
|
||||
|
||||
= Does the plugin work with caching plugins? =
|
||||
|
||||
The plugin works with popular caching plugins by automatically excluding Ultimate Member pages from being cached. This ensures other visitors to a page will not see the private information of another user. However, if you add features of Ultimate Member to other pages you have to exclude those pages from being cached through your cache plugin settings panel.
|
||||
The plugin works with popular caching plugins by automatically excluding Ultimate Member pages from being cached. This ensures other visitors to a page will not see the private information of another user. However, if you add features of Ultimate Member to other pages you have to exclude those pages from being cached through your cache plugin settings panel.
|
||||
|
||||
= Does Ultimate Member restrict access to wp-login.php when the plugin is active? =
|
||||
|
||||
@@ -1494,7 +1494,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
- Add class for member tagline in directory grid `um-member-tagline-<field key>`
|
||||
- Add recaptcha support and submit button id
|
||||
- Update extensions page layout
|
||||
|
||||
|
||||
* Bugfixes:
|
||||
- Fix Conditional Logic fields
|
||||
- Fix required field with specific roles in privacy
|
||||
@@ -1510,7 +1510,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* Enhancements:
|
||||
- Update readme.txt
|
||||
|
||||
|
||||
|
||||
= 1.3.85: June 19, 2017 =
|
||||
|
||||
@@ -1540,12 +1540,12 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* Fix png image upload with transparency
|
||||
* Fix extra slashes in form edit view when invalid input fields occur
|
||||
* Remove notices
|
||||
|
||||
|
||||
|
||||
|
||||
= 1.3.84: April 18, 2017 =
|
||||
|
||||
* Enhancements:
|
||||
* Adds new action hooks before and after WP_User_Query.
|
||||
* Adds new action hooks before and after WP_User_Query.
|
||||
* `um_user_before_query`
|
||||
* `um_user_after_query`
|
||||
* Adds a dismiss link in locale / language translation notices
|
||||
@@ -1561,7 +1561,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* Bugfixes
|
||||
* Fix image url cache filter
|
||||
* Fix PHP 7.1+ compatibility issues
|
||||
* Fix PHP 7.1+ compatibility issues
|
||||
* Fix UTF8 encoding in form fields
|
||||
* Fix hide member directory option.
|
||||
* Fix conditional logic fields.
|
||||
@@ -1576,7 +1576,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* Enhancements:
|
||||
* Adds user avatar's alternate text. The default text is set to `display_name`
|
||||
* Adds new filter hook to modif the user avatar's alternate text.
|
||||
* Adds new filter hook to modif the user avatar's alternate text.
|
||||
* `um_avatar_image_alternate_text`
|
||||
* Set gravatar for newly registered users
|
||||
* Adds Tag archive page access settings
|
||||
@@ -1674,11 +1674,11 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* Bugfixes:
|
||||
* Fix 'Invalid user ID' on profile update
|
||||
|
||||
|
||||
= 1.3.74: November 29, 2016 =
|
||||
|
||||
* Enhancements:
|
||||
* Improves clear users cache.
|
||||
* Improves clear users cache.
|
||||
* Removes user id from redirect URL on registration process for pending review and email activation statuses.
|
||||
|
||||
* Bugfixes:
|
||||
@@ -1723,10 +1723,10 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* Enhancements:
|
||||
* Improves the bulk filters, actions and redirection in `User Screens`
|
||||
* Adds new access options to disallow access on homepage and category pages.
|
||||
* Adds new access options to disallow access on homepage and category pages.
|
||||
* Adds Textarea to show in profile tagline on Member Directory
|
||||
* Adds a filter hook `um_allow_frontend_image_uploads` to allow profile and cover photo uploads on front-end pages.
|
||||
* Adds new filter hooks to modify image field data on upload:
|
||||
* Adds new filter hooks to modify image field data on upload:
|
||||
* `um_image_handle_global__option`
|
||||
* `um_image_handle_{$field}__option`
|
||||
* Adds a new filter hook to modify the redirection of non logged in users who visit the parent user page.
|
||||
@@ -1745,7 +1745,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* Fixes a typo in Password Reset Email option's description
|
||||
* Fixes a bug where conditional fields 'equals to' validation on registration process
|
||||
* Fixes a bug to disable the query with hiding account on member directory
|
||||
* Fixes a bug to retrieve specific number of members
|
||||
* Fixes a bug to retrieve specific number of members
|
||||
* Fixes a bug to retrieve all members with `get_members` new parameter `number`
|
||||
* Fixes a typo in Welcome Email template.
|
||||
* Fixes a bug where login form redirection is set to `wp-admin/admin-ajax.php` instead of the current page when loaded via ajax.
|
||||
@@ -1754,20 +1754,20 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* Fixes a bug where non-logged in users are not able to access the profile page when `Global Site Access` is set to `Site accessible to Logged In Users`.
|
||||
* Fixes a bug to modify the login redirection url especially when DOING_AJAX is defined.
|
||||
* Fixes a bug to retrieve correct community roles per site in a Multisite Network setup.
|
||||
|
||||
|
||||
= 1.3.71: September 12, 2016 =
|
||||
|
||||
* Enhancements:
|
||||
* Enhancements:
|
||||
* Adds a new filter hook to modify the `cover photo` uri.
|
||||
* `um_user_cover_photo_uri__filter`
|
||||
* Bugfixes:
|
||||
* Fixes a bug to allow users change their password in account form
|
||||
* Fixes a bug to allow role validation and assigning of roles to users on registration process
|
||||
* Fixes a bug to allow role validation and assigning of roles to users on registration process
|
||||
* Fixes a bug to avoid blank admin footer text all around WordPress
|
||||
|
||||
= 1.3.70: September 09, 2016 =
|
||||
|
||||
* Enhancements:
|
||||
* Enhancements:
|
||||
* Adds a new filter hook to modify the profile `cover photo` uri.
|
||||
* `um_user_cover_photo_uri__filter`
|
||||
* Bugfixes:
|
||||
@@ -1783,10 +1783,10 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* This improves the performance when loading profiles in directories. It generates profile slug on Profile Update ( front and back-end ), Registration Process and viewing the Users in the back-end.
|
||||
* Adds new filter hook `um_activate_url` to modify the account activation url.
|
||||
* Adds new filter hooks to modify first and last name cases
|
||||
* `um_user_first_name_case`
|
||||
* `um_user_first_name_case`
|
||||
* `um_user_last_name_case`
|
||||
* Adds new filter hooks to modify nonces of image and file uploads
|
||||
* `um_file_upload_nonce`
|
||||
* `um_file_upload_nonce`
|
||||
* `um_image_upload_nonce`
|
||||
* Improves search member filters and keyword sensitivity
|
||||
* Improves generation of profile slugs
|
||||
@@ -1913,13 +1913,13 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* Fixed: select fields with accented characters
|
||||
* Fixed: select fields with accented text values
|
||||
* Fixed: select fields in overlay
|
||||
* Fixed: admin front-end access restriction
|
||||
* Fixed: admin front-end access restriction
|
||||
* Fixed: pages query
|
||||
|
||||
= 1.3.54: June 02, 2016 =
|
||||
* Fixed: remove quick edit from Built-in roles row actions
|
||||
* Fixed: remove notices
|
||||
* Fixed: dropdown/select fields
|
||||
* Fixed: dropdown/select fields
|
||||
* Fixed: upload file extension's case sensitive issue
|
||||
* Fixed: reset and change password
|
||||
|
||||
@@ -1954,7 +1954,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* Added: option to force display name to be capitlized
|
||||
* Fixed: remove notices
|
||||
* Fixed: redirect url on login
|
||||
* Fixed: optimize query and object caching
|
||||
* Fixed: optimize query and object caching
|
||||
* Fixed: profile photo as required field
|
||||
* Fixed: admin access in front-end login
|
||||
* Fixed: typos in tooltips
|
||||
@@ -2442,7 +2442,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* New: user profiles are cached to speed up load time
|
||||
* New: emoji support added to bio / user descriptions
|
||||
* Fixed: issues with bio field HTML
|
||||
* Fixed: issues with bio field HTML
|
||||
* Fixed: WP-admin PHP warning
|
||||
* Fixed: bug with localization of en_US.po file
|
||||
|
||||
|
||||
+25
-9
@@ -1,11 +1,27 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the account page
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/account.php
|
||||
*
|
||||
* Page: "Account"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
|
||||
|
||||
<div class="um-form">
|
||||
|
||||
|
||||
<form method="post" action="">
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* UM hook
|
||||
@@ -46,7 +62,7 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="um-account-side uimob340-hide uimob500-hide">
|
||||
|
||||
<div class="um-account-meta radius-<?php echo esc_attr( UM()->options()->get( 'profile_photocorner' ) ); ?>">
|
||||
@@ -118,9 +134,9 @@
|
||||
} ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="um-account-main" data-current_tab="<?php echo esc_attr( UM()->account()->current_tab ); ?>">
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* UM hook
|
||||
@@ -164,11 +180,11 @@
|
||||
|
||||
<?php }
|
||||
} ?>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="um-clear"></div>
|
||||
</form>
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* UM hook
|
||||
@@ -191,4 +207,4 @@
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,37 +1,47 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Approved Email".
|
||||
* Whether to send the user an email when his account is approved.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/approved_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Thank you for signing up!<span style="display: block;">Your account is now approved.</span></div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{login_url}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Login to our site</a></div>
|
||||
|
||||
|
||||
<div style="padding: 0 0 15px 0;">
|
||||
|
||||
|
||||
<div style="background: #eee;color: #444;padding: 12px 15px; border-radius: 3px;font-weight: bold;font-size: 16px;">Account Information</div>
|
||||
|
||||
|
||||
<div style="padding: 10px 15px 0 15px;color: #333;"><span style="color:#999">Your account e-mail:</span> <span style="font-weight:bold">{email}</span></div>
|
||||
<div style="padding: 10px 15px 0 15px;color: #333;"><span style="color:#999">Your account username:</span> <span style="font-weight:bold">{username}</span></div>
|
||||
<div style="padding: 10px 15px 0 15px;color: #333;"><span style="color:#999">Set your password:</span> <span style="font-weight:bold"><a href="{password_reset_link}" style="color: #3ba1da;text-decoration: none;">{password_reset_link}</a></span></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,28 +1,40 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Updated Email".
|
||||
* Whether to send the user an email when he updated their account.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/changedaccount_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">You recently updated your account.</div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{user_account_link}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Go to your Account</a></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">If you did not make this change and believe your account has been compromised, please <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none;">contact us</a> ASAP.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,28 +1,39 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Password Changed Email".
|
||||
* Whether to send the user an email when he requests to reset password (Recommended, please keep on).
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/changedpw_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">You recently changed the password associated with your account.</div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{user_account_link}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Go to your Account</a></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">If you did not make this change and believe your account has been compromised, please <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none;">contact us</a> ASAP.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,28 +1,39 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Activation Email".
|
||||
* Whether to send the user an email when his account needs e-mail activation.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/checkmail_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Thank you for signing up!<span style="display: block;">Please click the following link to activate your account.</span></div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{account_activation_link}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Activate your Account</a></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">Need help? <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none;">contact us</a> today.</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,26 +1,38 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Deleted Email".
|
||||
* Whether to send the user an email when his account is deleted.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/deletion_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Your account has been deleted.<span style="display: block;">All your personal details and any uploads have been permanently removed.</span></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">If your account has been deleted by accident please <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none">contact us</a>.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,26 +1,37 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Deactivated Email".
|
||||
* Whether to send the user an email when his account is deactivated.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/inactive_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Your account is now deactivated.</div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">If you want your account to be re-activated, please <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none">contact us</a>.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,25 +1,35 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Deletion Notification".
|
||||
* Whether to receive notification when an account is deleted.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/notification_deletion.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">{display_name} has just deleted their {site_name} account.</span></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,34 +1,45 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "New User Notification".
|
||||
* Whether to receive notification when a new user account is created.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/notification_new_user.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">{display_name} has just created an account on {site_name}.</span></div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;">To view their profile click here: <a href="{user_profile_link}" style="color: #3ba1da;text-decoration: none;">{user_profile_link}</a></div>
|
||||
|
||||
|
||||
<div style="padding: 0 0 15px 0;">
|
||||
|
||||
|
||||
<div style="background: #eee;color: #444;padding: 12px 15px; border-radius: 3px;font-weight: bold;font-size: 16px;">Here is the submitted registration form:<br /><br />
|
||||
{submitted_registration}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,34 +1,45 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Needs Review Notification".
|
||||
* Whether to receive notification when an account needs admin review.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/notification_review.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">{display_name} has just applied for membership to {site_name} and is waiting to be reviewed.</span></div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;">To review this member please click the following link: <a href="{user_profile_link}" style="color: #3ba1da;text-decoration: none;">{user_profile_link}</a></div>
|
||||
|
||||
|
||||
<div style="padding: 0 0 15px 0;">
|
||||
|
||||
|
||||
<div style="background: #eee;color: #444;padding: 12px 15px; border-radius: 3px;font-weight: bold;font-size: 16px;">Here is the submitted registration form:<br /><br />
|
||||
{submitted_registration}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,27 +1,38 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Your account is pending review".
|
||||
* Whether to send the user an email when his account needs admin review.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/pending_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Thank you for signing up!<span style="display: block;">Your account has to be manually reviewed.</span></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">Please allow us some time to process your request and review your information.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,26 +1,37 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Rejected Email".
|
||||
* Whether to send the user an email when his account is rejected.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/rejected_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Your registration request has been rejected.</div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">Please feel free to apply at a future date or <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none">contact us</a> If you want your information to be reviewed again.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,28 +1,39 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Password Reset Email".
|
||||
* Whether to send an email when users changed their password.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/resetpw_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">We received a request to reset the password for your account. If you made this request, click the link below to change your password:</div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{password_reset_link}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Reset your password</a></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">If you didn't make this request, ignore this email or <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none;">report it to us</a>.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,29 +1,40 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Welcome Email".
|
||||
* Whether to send the user an email when his account is automatically approved.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/welcome_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Thank you for signing up!<span style="display: block;">Your account is now active.</span></div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{login_url}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Login to our site</a></div>
|
||||
|
||||
|
||||
<div style="padding:20px;">If you have any problems, please contact us at <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none">{admin_email}</a></div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the GDPR checkbox in register form
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/gdpr-register.php
|
||||
*
|
||||
* Page: "Register"
|
||||
* Call: function display_option()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var object $um_content_query
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
<!-- This file should primarily consist of HTML with a little bit of PHP. -->
|
||||
<div class="um-field um-field-type_terms_conditions" data-key="use_terms_conditions_agreement" style="display:block;padding:0;">
|
||||
@@ -48,4 +62,4 @@
|
||||
|
||||
<div class="um-clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,21 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the login only content, locked message
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/login-to-view.php
|
||||
*
|
||||
* Call: function um_loggedin()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $lock_text
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um-locked-content">
|
||||
|
||||
<div class="um-locked-content-msg"><?php echo htmlspecialchars_decode( $lock_text ); ?></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+18
-2
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the login form
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/login.php
|
||||
*
|
||||
* Page: "Login"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
|
||||
|
||||
@@ -137,4 +153,4 @@
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+23
-7
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the logout
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/logout.php
|
||||
*
|
||||
* Page: "Logout"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode, $args ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
|
||||
|
||||
@@ -11,9 +27,9 @@
|
||||
<?php echo get_avatar( um_user( 'ID' ), 80 ) ?>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div><strong><?php echo esc_html( um_user( 'display_name' ) ); ?></strong></div>
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* UM hook
|
||||
@@ -35,11 +51,11 @@
|
||||
* ?>
|
||||
*/
|
||||
do_action( 'um_logout_after_user_welcome', $args ); ?>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="um-misc-ul">
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* UM hook
|
||||
@@ -61,7 +77,7 @@
|
||||
* ?>
|
||||
*/
|
||||
do_action( 'um_logout_user_links', $args ); ?>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,27 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the members directory grid
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/members-grid.php
|
||||
*
|
||||
* Page: "Members"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var array $args
|
||||
* @var bool $cover_photos
|
||||
* @var bool $profile_photo
|
||||
* @var bool $show_name
|
||||
* @var bool $show_tagline
|
||||
* @var bool $show_userinfo
|
||||
* @var bool $userinfo_animate
|
||||
* @var bool $show_social
|
||||
* @var array $reveal_fields
|
||||
* @var string $no_users
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$unique_hash = substr( md5( $args['form_id'] ), 10, 5 ); ?>
|
||||
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the members directory header JS-template
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/members-header.php
|
||||
*
|
||||
* Page: "Members"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
<script type="text/template" id="tmpl-um-members-header">
|
||||
@@ -13,4 +25,4 @@
|
||||
</div>
|
||||
|
||||
<div class="um-clear"></div>
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -1,4 +1,25 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the members directory list
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/members-list.php
|
||||
*
|
||||
* Page: "Members"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var array $args
|
||||
* @var bool $cover_photos
|
||||
* @var bool $profile_photo
|
||||
* @var bool $show_name
|
||||
* @var bool $show_tagline
|
||||
* @var bool $show_userinfo
|
||||
* @var bool $userinfo_animate
|
||||
* @var bool $show_social
|
||||
* @var array $reveal_fields
|
||||
* @var string $no_users
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
$unique_hash = substr( md5( $args['form_id'] ), 10, 5 ); ?>
|
||||
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the members directory pagination JS template
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/members-pagination.php
|
||||
*
|
||||
* Page: "Members"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
<script type="text/template" id="tmpl-um-members-pagination">
|
||||
@@ -24,4 +36,4 @@
|
||||
<span class="pagi pagi-arrow <# if ( data.pagination.current_page == data.pagination.total_pages ) { #>disabled<# } #>" data-page="last" aria-label="<?php esc_attr_e( 'Last page', 'ultimate-member' ); ?>"><i class="um-faicon-angle-double-right"></i></span>
|
||||
</div>
|
||||
<# } #>
|
||||
</script>
|
||||
</script>
|
||||
|
||||
+15
-1
@@ -1,4 +1,18 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the members directory
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/members.php
|
||||
*
|
||||
* Page: "Members"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
global $post;
|
||||
|
||||
|
||||
+17
-2
@@ -1,4 +1,19 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the message after registration process
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/message.php
|
||||
*
|
||||
* Call: function parse_shortcode_args()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
|
||||
|
||||
@@ -8,4 +23,4 @@
|
||||
printf( __( '%s', 'ultimate-member' ), $this->custom_message ); ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the modal form
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/modal/um_upload_single.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div id="um_upload_single" style="display:none"></div>
|
||||
<div id="um_upload_single" style="display:none"></div>
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the modal photo
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/modal/um_view_photo.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div id="um_view_photo" style="display:none">
|
||||
|
||||
@@ -11,4 +21,4 @@
|
||||
<div class="um-modal-photo"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,21 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the password change
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/password-change.php
|
||||
*
|
||||
* Call: function ultimatemember_password()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var string $rp_key
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
|
||||
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) {
|
||||
<?php
|
||||
/**
|
||||
* Template for the password reset
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/password-reset.php
|
||||
*
|
||||
* Call: function ultimatemember_password()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
+17
-1
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the profile page
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/profile.php
|
||||
*
|
||||
* Page: "Profile"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?> um-role-<?php echo esc_attr( um_user( 'role' ) ); ?> ">
|
||||
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the profile single comments
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/profile/comments-single.php
|
||||
*
|
||||
* Page: "Profile"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var object $comment
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$comment_title = apply_filters( 'um_user_profile_comment_title', get_the_title( $comment->comment_post_ID ), $comment );
|
||||
$link = apply_filters( 'um_user_profile_comment_url', get_permalink( $comment->comment_post_ID ), $comment ); ?>
|
||||
@@ -13,4 +27,4 @@ $link = apply_filters( 'um_user_profile_comment_url', get_permalink( $comment->c
|
||||
<div class="um-item-meta">
|
||||
<span><?php printf( __( 'On <a href="%1$s">%2$s</a>','ultimate-member' ), $link, $comment_title ); ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the profile comments
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/profile/comments.php
|
||||
*
|
||||
* Page: "Profile"
|
||||
* Call: function add_comments(), function load_comments()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var int $count_comments
|
||||
* @var object $comments
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
||||
@@ -41,4 +57,4 @@ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
||||
</div>
|
||||
|
||||
<?php }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the profile single post
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/profile/posts-single.php
|
||||
*
|
||||
* Page: "Profile"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var object $post
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um-item">
|
||||
<div class="um-item-link">
|
||||
|
||||
@@ -1,4 +1,19 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the profile posts
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/profile/posts.php
|
||||
*
|
||||
* Page: "Profile"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var object $posts
|
||||
* @var int $count_posts
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
||||
//Only for AJAX loading posts
|
||||
@@ -40,4 +55,4 @@ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
||||
</div>
|
||||
|
||||
<?php }
|
||||
}
|
||||
}
|
||||
|
||||
+19
-3
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the register page
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/register.php
|
||||
*
|
||||
* Page: "Register"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! is_user_logged_in() ) {
|
||||
um_reset_user();
|
||||
@@ -136,9 +152,9 @@ if ( ! is_user_logged_in() ) {
|
||||
* ?>
|
||||
*/
|
||||
do_action( 'um_after_form', $args ); ?>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* Template for the blog restricted message
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/restricted-blog.php
|
||||
*
|
||||
* Call: function blog_message()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the taxonomy restricted message
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/restricted-taxonomy.php
|
||||
*
|
||||
* Call: function taxonomy_message()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
get_header(); ?>
|
||||
|
||||
@@ -51,4 +63,4 @@ get_header(); ?>
|
||||
<?php get_sidebar(); ?>
|
||||
</div><!-- .wrap -->
|
||||
|
||||
<?php get_footer();
|
||||
<?php get_footer();
|
||||
|
||||
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the search form
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/searchform.php
|
||||
*
|
||||
* Call: function ultimatemember_searchform()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $members_page
|
||||
* @var string $search_value
|
||||
* @var array $query
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="search-form um-search-form" data-members_page="<?php echo esc_url( $members_page ); ?>">
|
||||
<?php foreach ( array_keys( $query ) as $key ) { ?>
|
||||
@@ -9,4 +25,4 @@
|
||||
<input type="search" class="um-search-field search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ); ?>" value="<?php echo esc_attr( $search_value ); ?>" name="search" title="<?php echo esc_attr_x( 'Search for:', 'label' ); ?>" />
|
||||
<a href="javascript:void(0);" id="um-search-button" class="um-search-icon um-faicon um-faicon-search"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user