mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-13 03:36:28 +09:00
190 lines
5.7 KiB
PHP
190 lines
5.7 KiB
PHP
<?php
|
|
/**
|
|
* Locate a template and return the path for inclusion.
|
|
*
|
|
* @access public
|
|
* @param string $template_name
|
|
* @param bool $html
|
|
* @return bool
|
|
*/
|
|
function um_upgrade20beta1_template_in_theme( $template_name, $html = false ) {
|
|
$template_name_file = UM()->mail()->get_template_filename( $template_name );
|
|
$ext = ! $html ? '.php' : '.html';
|
|
|
|
$blog_id = '';
|
|
if ( ! $html ) {
|
|
$blog_id = UM()->mail()->get_blog_id();
|
|
}
|
|
|
|
// check if there is template at theme folder
|
|
$template = locate_template(
|
|
array(
|
|
trailingslashit( 'ultimate-member/email' . $blog_id ) . $template_name_file . $ext,
|
|
)
|
|
);
|
|
// Return what we found.
|
|
return (bool) $template;
|
|
}
|
|
|
|
/**
|
|
* Method returns expected path for template
|
|
*
|
|
* @access public
|
|
* @param string $location
|
|
* @param string $template_name
|
|
* @param bool $html
|
|
* @return string
|
|
*/
|
|
function um_upgrade20beta1_get_template_file( $location, $template_name, $html = false ) {
|
|
$template_path = '';
|
|
$template_name_file = UM()->mail()->get_template_filename( $template_name );
|
|
$ext = ! $html ? '.php' : '.html';
|
|
switch ( $location ) {
|
|
case 'theme':
|
|
$blog_id = '';
|
|
if ( ! $html ) {
|
|
$blog_id = UM()->mail()->get_blog_id();
|
|
}
|
|
$template_path = trailingslashit( get_stylesheet_directory() . '/ultimate-member/email' . $blog_id ) . $template_name_file . $ext;
|
|
break;
|
|
|
|
case 'plugin':
|
|
$path = ! empty( UM()->mail()->path_by_slug[ $template_name ] ) ? UM()->mail()->path_by_slug[ $template_name ] : UM_PATH . 'templates/email';
|
|
$template_path = trailingslashit( $path ) . $template_name . $ext;
|
|
break;
|
|
}
|
|
return $template_path;
|
|
}
|
|
|
|
/**
|
|
* Ajax copy template to the theme
|
|
*
|
|
* @param string $template
|
|
* @return bool
|
|
*/
|
|
function um_upgrade20beta1_copy_email_template( $template ) {
|
|
$in_theme = um_upgrade20beta1_template_in_theme( $template );
|
|
if ( $in_theme ) {
|
|
return false;
|
|
}
|
|
$plugin_template_path = um_upgrade20beta1_get_template_file( 'plugin', $template );
|
|
$theme_template_path = um_upgrade20beta1_get_template_file( 'theme', $template );
|
|
$temp_path = str_replace( trailingslashit( get_stylesheet_directory() ), '', $theme_template_path );
|
|
$temp_path = str_replace( '/', DIRECTORY_SEPARATOR, $temp_path );
|
|
$folders = explode( DIRECTORY_SEPARATOR, $temp_path );
|
|
$folders = array_splice( $folders, 0, count( $folders ) - 1 );
|
|
$cur_folder = '';
|
|
$theme_dir = trailingslashit( get_stylesheet_directory() );
|
|
foreach ( $folders as $folder ) {
|
|
$prev_dir = $cur_folder;
|
|
$cur_folder .= $folder . DIRECTORY_SEPARATOR;
|
|
if ( ! is_dir( $theme_dir . $cur_folder ) && wp_is_writable( $theme_dir . $prev_dir ) ) {
|
|
mkdir( $theme_dir . $cur_folder, 0777 );
|
|
}
|
|
}
|
|
return ( file_exists( $plugin_template_path ) && copy( $plugin_template_path, $theme_template_path ) );
|
|
}
|
|
|
|
/**
|
|
* Insert email template content to file
|
|
*
|
|
* @param string $path Filepath
|
|
* @param string $content Email template content
|
|
*/
|
|
function um_upgrade20beta1_insert_content( $path, $content ) {
|
|
if ( file_exists( $path ) ) {
|
|
$fp = @fopen( $path, "w" );
|
|
@fputs( $fp, $content );
|
|
@fclose( $fp );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Transferring email templates to new logic
|
|
*/
|
|
function um_upgrade20beta1_email_templates_process() {
|
|
$templates_in_theme = 0;
|
|
$emails = UM()->config()->email_notifications;
|
|
foreach ( $emails as $email_key => $value ) {
|
|
|
|
$in_theme = um_upgrade20beta1_template_in_theme( $email_key, true );
|
|
$theme_template_path = um_upgrade20beta1_get_template_file( 'theme', $email_key );
|
|
|
|
if ( ! $in_theme ) {
|
|
//there isn't HTML email template's file in theme, get from option
|
|
//this value is correct for each multisite's subsites
|
|
$setting_value = UM()->options()->get( $email_key );
|
|
|
|
$html_email = UM()->options()->get( 'email_html' );
|
|
if ( $html_email ) {
|
|
|
|
if ( ! um_upgrade20beta1_copy_email_template( $email_key ) ) {
|
|
|
|
um_upgrade20beta1_insert_content( $theme_template_path, $setting_value );
|
|
|
|
} else {
|
|
|
|
$templates_in_theme++;
|
|
|
|
}
|
|
} else {
|
|
|
|
um_upgrade20beta1_insert_content( $theme_template_path, $setting_value );
|
|
|
|
}
|
|
} else {
|
|
//there is HTML email template in a theme's folder
|
|
$theme_template_path_html = um_upgrade20beta1_get_template_file( 'theme', $email_key, true );
|
|
|
|
$setting_value = preg_replace( '/<\/body>|<\/head>|<html>|<\/html>|<body.*?>|<head.*?>/', '', file_get_contents( $theme_template_path_html ) );
|
|
|
|
if ( file_exists( $theme_template_path_html ) ) {
|
|
|
|
$temp_path = str_replace( trailingslashit( get_stylesheet_directory() ), '', $theme_template_path );
|
|
$temp_path = str_replace( '/', DIRECTORY_SEPARATOR, $temp_path );
|
|
$folders = explode( DIRECTORY_SEPARATOR, $temp_path );
|
|
$folders = array_splice( $folders, 0, count( $folders ) - 1 );
|
|
$cur_folder = '';
|
|
$theme_dir = trailingslashit( get_stylesheet_directory() );
|
|
foreach ( $folders as $folder ) {
|
|
$prev_dir = $cur_folder;
|
|
$cur_folder .= $folder . DIRECTORY_SEPARATOR;
|
|
if ( ! is_dir( $theme_dir . $cur_folder ) && wp_is_writable( $theme_dir . $prev_dir ) ) {
|
|
mkdir( $theme_dir . $cur_folder, 0777 );
|
|
}
|
|
}
|
|
|
|
if ( copy( $theme_template_path_html, $theme_template_path ) ) {
|
|
|
|
um_upgrade20beta1_insert_content( $theme_template_path, $setting_value );
|
|
|
|
$templates_in_theme++;
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$email_html = $templates_in_theme > 0;
|
|
UM()->options()->update( 'email_html', $email_html );
|
|
}
|
|
|
|
if ( is_multisite() ) {
|
|
$start_blog_id = get_current_blog_id();
|
|
|
|
$blog_ids = get_sites(
|
|
array(
|
|
'fields' => 'ids',
|
|
)
|
|
);
|
|
|
|
foreach ( $blog_ids as $b_id ) {
|
|
switch_to_blog( $b_id );
|
|
um_upgrade20beta1_email_templates_process();
|
|
}
|
|
|
|
restore_current_blog();
|
|
} else {
|
|
um_upgrade20beta1_email_templates_process();
|
|
}
|