mirror of
https://github.com/mainwp/mainwp-child.git
synced 2025-09-01 03:58:07 +08:00
commit
294aa1c364
6 changed files with 2651 additions and 1686 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -5,3 +5,4 @@
|
|||
.idea/vcs.xml
|
||||
.idea/dictionaries/keith.xml
|
||||
.idea/dictionaries/keith.xml
|
||||
.idea/inspectionProfiles/Project_Default.xml
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -17,15 +17,13 @@ namespace MainWP\Child;
|
|||
class MainWP_Child_Install {
|
||||
|
||||
/**
|
||||
* Public static variable to hold the single instance of the class.
|
||||
* Public static variable to hold the single instance of MainWP_Child_Install.
|
||||
*
|
||||
* @var mixed Default null
|
||||
*/
|
||||
protected static $instance = null;
|
||||
|
||||
/**
|
||||
* Method get_class_name()
|
||||
*
|
||||
* Get class name.
|
||||
*
|
||||
* @return string __CLASS__ Class name.
|
||||
|
@ -35,19 +33,17 @@ class MainWP_Child_Install {
|
|||
}
|
||||
|
||||
/**
|
||||
* Method __construct()
|
||||
* MainWP_Child_Install constructor
|
||||
*
|
||||
* Run any time MainWP_Child is called.
|
||||
* Run any time new MainWP_Child_Install is created.
|
||||
*/
|
||||
public function __construct() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Method get_instance()
|
||||
* Create a public static instance of MainWP_Child_Install.
|
||||
*
|
||||
* Create a public static instance.
|
||||
*
|
||||
* @return mixed Class instance.
|
||||
* @return MainWP_Child_Install|mixed|null
|
||||
*/
|
||||
public static function get_instance() {
|
||||
if ( null === self::$instance ) {
|
||||
|
@ -376,9 +372,6 @@ class MainWP_Child_Install {
|
|||
* @used-by install_plugin_theme() Plugin & Theme Installation functions.
|
||||
*/
|
||||
private function after_installed( $result ) {
|
||||
if ( empty( $result ) || is_wp_error( $result ) ) {
|
||||
return false;
|
||||
}
|
||||
$args = array(
|
||||
'success' => 1,
|
||||
'action' => 'install',
|
||||
|
|
|
@ -1,33 +1,59 @@
|
|||
<?php
|
||||
/**
|
||||
* MainWP Child posts handler
|
||||
*
|
||||
* This file handles all post & post plus actions.
|
||||
*/
|
||||
|
||||
namespace MainWP\Child;
|
||||
|
||||
//phpcs:disable Generic.Metrics.CyclomaticComplexity -- complex functions/features.
|
||||
|
||||
/**
|
||||
* Class MainWP_Child_Posts
|
||||
*
|
||||
* @package MainWP\Child
|
||||
*/
|
||||
class MainWP_Child_Posts {
|
||||
|
||||
/**
|
||||
* Public static variable to hold the single instance of MainWP_Child_Posts.
|
||||
*
|
||||
* @var mixed Default null
|
||||
*/
|
||||
protected static $instance = null;
|
||||
|
||||
/** @var string Comments & clauses. */
|
||||
private $comments_and_clauses;
|
||||
|
||||
/** @var string Post Query WHERE suffix. */
|
||||
private $posts_where_suffix;
|
||||
|
||||
|
||||
/**
|
||||
* Method get_class_name()
|
||||
* Get class name.
|
||||
*
|
||||
* Get Class Name.
|
||||
*
|
||||
* @return object
|
||||
* @return string __CLASS__ Class name.
|
||||
*/
|
||||
public static function get_class_name() {
|
||||
return __CLASS__;
|
||||
}
|
||||
|
||||
/**
|
||||
* MainWP_Child_Posts constructor
|
||||
*
|
||||
* Run any time class is called.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::comments_and_clauses()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::posts_where_suffix()
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->comments_and_clauses = '';
|
||||
$this->posts_where_suffix = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a public static instance of MainWP_Child_Posts.
|
||||
*
|
||||
* @return MainWP_Child_Posts|null
|
||||
*/
|
||||
public static function get_instance() {
|
||||
if ( null === self::$instance ) {
|
||||
self::$instance = new self();
|
||||
|
@ -37,7 +63,18 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get recent posts.
|
||||
*
|
||||
* @param array $pAllowedStatuses Array of allowed post statuses.
|
||||
* @param int $pCount Number of posts.
|
||||
* @param string $type Post type.
|
||||
* @param null $extra Extra tokens.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::get_recent_posts_int()
|
||||
*
|
||||
* @return array $allPost Return array of recent posts.
|
||||
*/
|
||||
public function get_recent_posts( $pAllowedStatuses, $pCount, $type = 'post', $extra = null ) {
|
||||
$allPosts = array();
|
||||
if ( null !== $pAllowedStatuses ) {
|
||||
|
@ -51,6 +88,24 @@ class MainWP_Child_Posts {
|
|||
return $allPosts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiate get recent posts.
|
||||
*
|
||||
* @param string $status Post status.
|
||||
* @param int $pCount Number of posts.
|
||||
* @param string $type Post type.
|
||||
* @param array $allPosts All posts array.
|
||||
* @param null $extra Extra tokens.
|
||||
*
|
||||
* @return array $allPosts[] Array of all posts.
|
||||
*
|
||||
* @uses \WPSEO_Link_Column_Count()
|
||||
* @uses \WPSEO_Meta()
|
||||
* @uses \MainWP_WordPress_SEO::instance()::parse_column_score()
|
||||
* @uses \MainWP_WordPress_SEO::instance()->parse_column_score_readability()
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::get_out_post()
|
||||
*/
|
||||
public function get_recent_posts_int( $status, $pCount, $type = 'post', &$allPosts, $extra = null ) {
|
||||
|
||||
$args = array(
|
||||
|
@ -92,8 +147,7 @@ class MainWP_Child_Posts {
|
|||
$post_ids[] = $post->ID;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
/**
|
||||
* Credits
|
||||
*
|
||||
* Plugin-Name: Yoast SEO
|
||||
|
@ -104,7 +158,6 @@ class MainWP_Child_Posts {
|
|||
*
|
||||
* The code is used for the MainWP WordPress SEO Extension
|
||||
* Extension URL: https://mainwp.com/extension/wordpress-seo/
|
||||
*
|
||||
*/
|
||||
$link_count = new \WPSEO_Link_Column_Count();
|
||||
$link_count->set( $post_ids );
|
||||
|
@ -124,6 +177,14 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Build Post.
|
||||
*
|
||||
* @param array $post Post array.
|
||||
* @param string $extra Post date & time.
|
||||
* @param array $tokens Post tokens.
|
||||
* @return array $outPost Return completed post.
|
||||
*/
|
||||
private function get_out_post( $post, $extra, $tokens ) {
|
||||
$outPost = array();
|
||||
$outPost['id'] = $post->ID;
|
||||
|
@ -178,15 +239,33 @@ class MainWP_Child_Posts {
|
|||
return $outPost;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all posts.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::get_all_posts_by_type()
|
||||
*/
|
||||
public function get_all_posts() {
|
||||
$post_type = ( isset( $_POST['post_type'] ) ? $_POST['post_type'] : 'post' );
|
||||
$this->get_all_posts_by_type( $post_type );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all pages.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::get_all_posts_by_type()
|
||||
*/
|
||||
public function get_all_pages() {
|
||||
$this->get_all_posts_by_type( 'page' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Append the Post's SQL WHERE clause suffix.
|
||||
*
|
||||
* @param $where Post's SQL WHERE clause.
|
||||
* @return string $where The full SQL WHERE clause with the appended suffix.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::posts_where_suffix()
|
||||
*/
|
||||
public function posts_where( $where ) {
|
||||
if ( $this->posts_where_suffix ) {
|
||||
$where .= ' ' . $this->posts_where_suffix;
|
||||
|
@ -195,7 +274,17 @@ class MainWP_Child_Posts {
|
|||
return $where;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all posts by type.
|
||||
*
|
||||
* @param string $type Post type.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::posts_where_suffix()
|
||||
* @uses \MainWP\Child\MainWP_Helper::write()
|
||||
*/
|
||||
public function get_all_posts_by_type( $type ) {
|
||||
|
||||
/** @global $wpdb wpdb */
|
||||
global $wpdb;
|
||||
|
||||
add_filter( 'posts_where', array( &$this, 'posts_where' ) );
|
||||
|
@ -260,6 +349,13 @@ class MainWP_Child_Posts {
|
|||
MainWP_Helper::write( $rslt );
|
||||
}
|
||||
|
||||
/**
|
||||
* Build New Post.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::create_post()
|
||||
* @uses \MainWP\Child\ainWP_Helper::error()
|
||||
* @uses \MainWP\Child\MainWP_Helper::write()
|
||||
*/
|
||||
public function new_post() {
|
||||
$new_post = maybe_unserialize( base64_decode( $_POST['new_post'] ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions -- base64_encode function is used for http encode compatible..
|
||||
$post_custom = maybe_unserialize( base64_decode( $_POST['post_custom'] ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions -- base64_encode function is used for http encode compatible..
|
||||
|
@ -293,6 +389,14 @@ class MainWP_Child_Posts {
|
|||
MainWP_Helper::write( $information );
|
||||
}
|
||||
|
||||
/**
|
||||
* Post Action.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Links_Checker()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::get_post_edit()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::get_page_edit()
|
||||
* @uses \MainWP\Child\MainWP_Helper::write()
|
||||
*/
|
||||
public function post_action() {
|
||||
$action = $_POST['action'];
|
||||
$postId = $_POST['id'];
|
||||
|
@ -369,6 +473,13 @@ class MainWP_Child_Posts {
|
|||
MainWP_Helper::write( $information );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get post edit data.
|
||||
*
|
||||
* @param string $id Post ID.
|
||||
*
|
||||
* @return array|bool Return $post_data or FALSE on failure.
|
||||
*/
|
||||
public function get_post_edit( $id ) {
|
||||
$post = get_post( $id );
|
||||
if ( $post ) {
|
||||
|
@ -456,6 +567,13 @@ class MainWP_Child_Posts {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get page edit data.
|
||||
*
|
||||
* @param string $id Page ID.
|
||||
*
|
||||
* @return array|bool Return $post_data or FALSE on failure.
|
||||
*/
|
||||
public function get_page_edit( $id ) {
|
||||
$post = get_post( $id );
|
||||
if ( $post ) {
|
||||
|
@ -487,18 +605,18 @@ class MainWP_Child_Posts {
|
|||
$post_gallery_images = array();
|
||||
|
||||
if ( is_array( $galleries ) && isset( $galleries['ids'] ) ) {
|
||||
$attached_images = explode( ',', $galleries['ids'] );
|
||||
$attached_images = explode( ',', $galleries['ids'] );
|
||||
foreach ( $attached_images as $attachment_id ) {
|
||||
$attachment = get_post( $attachment_id );
|
||||
$attachment = get_post( $attachment_id );
|
||||
if ( $attachment ) {
|
||||
$post_gallery_images[] = array(
|
||||
'id' => $attachment_id,
|
||||
'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
|
||||
'caption' => $attachment->post_excerpt,
|
||||
'description' => $attachment->post_content,
|
||||
'src' => $attachment->guid,
|
||||
'title' => $attachment->post_title,
|
||||
);
|
||||
$post_gallery_images[] = array(
|
||||
'id' => $attachment_id,
|
||||
'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
|
||||
'caption' => $attachment->post_excerpt,
|
||||
'description' => $attachment->post_content,
|
||||
'src' => $attachment->guid,
|
||||
'title' => $attachment->post_title,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -518,7 +636,34 @@ class MainWP_Child_Posts {
|
|||
return false;
|
||||
}
|
||||
|
||||
private function create_post( $new_post, $post_custom, $post_category, $post_featured_image, $upload_dir, $post_tags, $others = array() ) {
|
||||
/**
|
||||
* Create new post.
|
||||
*
|
||||
* @param array $new_post Post data array.
|
||||
* @param array $post_custom Post custom meta data.
|
||||
* @param string $post_category Post categories.
|
||||
* @param string $post_featured_image Post featured image.
|
||||
* @param string $upload_dir Upload directory.
|
||||
* @param string $post_tags Post tags.
|
||||
* @param array $others Other data.
|
||||
*
|
||||
* @return array|string[] $ret Return success array, permalink & Post ID.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::set_post_custom_data()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::update_found_images()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::create_has_shortcode_gallery()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::create_post_plus()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::update_post_data()
|
||||
*/
|
||||
private function create_post(
|
||||
$new_post,
|
||||
$post_custom,
|
||||
$post_category,
|
||||
$post_featured_image,
|
||||
$upload_dir,
|
||||
$post_tags,
|
||||
$others = array()
|
||||
) {
|
||||
|
||||
/**
|
||||
* Hook: `mainwp_before_post_update`
|
||||
|
@ -531,10 +676,14 @@ class MainWP_Child_Posts {
|
|||
* @param string $post_tags <EFBFBD> Post tags.
|
||||
*/
|
||||
do_action( 'mainwp_before_post_update', $new_post, $post_custom, $post_category, $post_tags );
|
||||
|
||||
$edit_post_id = 0;
|
||||
$is_post_plus = false;
|
||||
|
||||
$this->set_post_custom_data( $new_post, $post_custom, $post_tags, $edit_post_id, $is_post_plus );
|
||||
|
||||
require_once ABSPATH . 'wp-admin/includes/post.php';
|
||||
|
||||
if ( $edit_post_id ) {
|
||||
$user_id = wp_check_post_lock( $edit_post_id );
|
||||
if ( $user_id ) {
|
||||
|
@ -543,17 +692,23 @@ class MainWP_Child_Posts {
|
|||
return array( 'error' => $error );
|
||||
}
|
||||
}
|
||||
$check_image_existed = $edit_post_id ? true : false; // if editing post then will check if image existed.
|
||||
|
||||
// if editing post then will check if image existed.
|
||||
$check_image_existed = $edit_post_id ? true : false;
|
||||
|
||||
$this->update_found_images( $new_post, $upload_dir, $check_image_existed );
|
||||
$this->create_has_shortcode_gallery( $new_post );
|
||||
|
||||
if ( $is_post_plus ) {
|
||||
$this->create_post_plus( $new_post, $post_custom );
|
||||
}
|
||||
|
||||
// Save the post to the WP.
|
||||
remove_filter( 'content_save_pre', 'wp_filter_post_kses' ); // to fix brake scripts or html.
|
||||
$post_status = $new_post['post_status']; // save post_status.
|
||||
$new_post['post_status'] = 'auto-draft'; // to fix reports, to log as created post.
|
||||
// update post.
|
||||
|
||||
// Update post.
|
||||
if ( $edit_post_id ) {
|
||||
// check if post existed.
|
||||
$current_post = get_post( $edit_post_id );
|
||||
|
@ -591,6 +746,17 @@ class MainWP_Child_Posts {
|
|||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set custom post data.
|
||||
*
|
||||
* @param array $new_post Post data array.
|
||||
* @param array $post_custom Post custom meta data.
|
||||
* @param string $post_tags Post tags.
|
||||
* @param string $edit_post_id Edit Post ID.
|
||||
* @param bool $is_post_plus TRUE|FALSE, Whether or not this came from MainWP Post Plus Extension.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::update_wp_rocket_custom_post()
|
||||
*/
|
||||
private function set_post_custom_data( &$new_post, $post_custom, $post_tags, &$edit_post_id, &$is_post_plus ) {
|
||||
|
||||
global $current_user;
|
||||
|
@ -600,8 +766,7 @@ class MainWP_Child_Posts {
|
|||
// current user may be connected admin or alternative admin.
|
||||
$current_uid = $current_user->ID;
|
||||
|
||||
// Set up a new post (adding addition information).
|
||||
|
||||
// Set up a new post (adding additional information).
|
||||
$new_post['post_author'] = isset( $new_post['post_author'] ) && ! empty( $new_post['post_author'] ) ? $new_post['post_author'] : $current_uid;
|
||||
|
||||
if ( isset( $new_post['custom_post_author'] ) && ! empty( $new_post['custom_post_author'] ) ) {
|
||||
|
@ -633,6 +798,23 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update post data.
|
||||
*
|
||||
* @param string $new_post_id New post ID.
|
||||
* @param array $post_custom Post custom meta data.
|
||||
* @param string $post_category Post categories.
|
||||
* @param string $post_featured_image Post featured image.
|
||||
* @param bool $check_image_existed TRUE|FALSE, Whether or not featured image already exists.
|
||||
* @param bool $is_post_plus TRUE|FALSE, Whether or not this came from MainWP Post Plus Extension.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::set_custom_post_fields()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::create_seo_extension_activated()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::create_set_categories()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::create_featured_image()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::post_plus_update_author()
|
||||
* @uses \MainWP\Child\MainWP_Child_Posts::post_plus_update_categories()
|
||||
*/
|
||||
private function update_post_data( $new_post_id, $post_custom, $post_category, $post_featured_image, $check_image_existed, $is_post_plus ) {
|
||||
|
||||
$seo_ext_activated = false;
|
||||
|
@ -670,6 +852,14 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update WPRocket custom post.
|
||||
*
|
||||
* @param array $post_custom Post custom meta data.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Child_WP_Rocket::instance()::is_activated()
|
||||
* @uses \get_rocket_option()
|
||||
*/
|
||||
private function update_wp_rocket_custom_post( &$post_custom ) {
|
||||
// Options fields.
|
||||
$wprocket_fields = array(
|
||||
|
@ -705,9 +895,19 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for all the images added to the new post.
|
||||
*
|
||||
* @param array $new_post Post data array.
|
||||
* @param string $upload_dir Upload directory.
|
||||
* @param bool $check_image_existed TRUE|FALSE, Whether or not featured image already exists.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Utility::upload_image()
|
||||
* @uses \MainWP\Child\MainWP_Helper::log_debug()
|
||||
*/
|
||||
private function update_found_images( &$new_post, $upload_dir, $check_image_existed ) {
|
||||
|
||||
// Search for all the images added to the new post. Some images have a href tag to click to navigate to the image.. we need to replace this too.
|
||||
// Some images have a href tag to click to navigate to the image.. we need to replace this too.
|
||||
$foundMatches = preg_match_all( '/(<a[^>]+href=\"(.*?)\"[^>]*>)?(<img[^>\/]*src=\"((.*?)(png|gif|jpg|jpeg))\")/ix', $new_post['post_content'], $matches, PREG_SET_ORDER );
|
||||
if ( $foundMatches > 0 ) {
|
||||
// We found images, now to download them so we can start balbal.
|
||||
|
@ -751,6 +951,14 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create shortcode image gallery.
|
||||
*
|
||||
* @param array $new_post Post data array.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Utility::upload_image()
|
||||
* @uses \Exception()
|
||||
*/
|
||||
private function create_has_shortcode_gallery( &$new_post ) {
|
||||
|
||||
if ( has_shortcode( $new_post['post_content'], 'gallery' ) ) {
|
||||
|
@ -760,7 +968,7 @@ class MainWP_Child_Posts {
|
|||
$post_gallery_images = unserialize( base64_decode( $_POST['post_gallery_images'] ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions -- base64_encode function is used for http encode compatible..
|
||||
if ( is_array( $post_gallery_images ) ) {
|
||||
foreach ( $post_gallery_images as $gallery ) {
|
||||
if ( isset( $gallery['src'] ) ) {
|
||||
if \ Exception ( isset( $gallery['src'] ) ) {
|
||||
try {
|
||||
$upload = MainWP_Utility::upload_image( $gallery['src'], $gallery ); // Upload image to WP.
|
||||
if ( null !== $upload ) {
|
||||
|
@ -793,6 +1001,12 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create post plus post.
|
||||
*
|
||||
* @param array $new_post Post data array.
|
||||
* @param array $post_custom Post custom meta data.
|
||||
*/
|
||||
private function create_post_plus( &$new_post, $post_custom ) {
|
||||
$random_publish_date = isset( $post_custom['_saved_draft_random_publish_date'] ) ? $post_custom['_saved_draft_random_publish_date'] : false;
|
||||
$random_publish_date = is_array( $random_publish_date ) ? current( $random_publish_date ) : null;
|
||||
|
@ -829,6 +1043,12 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update post plus author.
|
||||
*
|
||||
* @param string $new_post_id New post ID.
|
||||
* @param array $post_custom Post custom meta data.
|
||||
*/
|
||||
private function post_plus_update_author( $new_post_id, $post_custom ) {
|
||||
$random_privelege = isset( $post_custom['_saved_draft_random_privelege'] ) ? $post_custom['_saved_draft_random_privelege'] : null;
|
||||
$random_privelege = is_array( $random_privelege ) ? current( $random_privelege ) : null;
|
||||
|
@ -856,6 +1076,12 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update post plus categories.
|
||||
*
|
||||
* @param string $new_post_id New post ID.
|
||||
* @param array $post_custom Post custom meta data.
|
||||
*/
|
||||
private function post_plus_update_categories( $new_post_id, $post_custom ) {
|
||||
$random_category = isset( $post_custom['_saved_draft_random_category'] ) ? $post_custom['_saved_draft_random_category'] : false;
|
||||
$random_category = is_array( $random_category ) ? current( $random_category ) : null;
|
||||
|
@ -880,6 +1106,11 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $new_post_id New post ID.
|
||||
* @param string $post_category Post category.
|
||||
* @param bool $post_to_only TRUE|FALSE, Whether or not to post only to this category.
|
||||
*/
|
||||
private function create_set_categories( $new_post_id, $post_category, $post_to_only ) {
|
||||
|
||||
// If categories exist, create them (second parameter of wp_create_categories adds the categories to the post).
|
||||
|
@ -905,6 +1136,14 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set custom post fields.
|
||||
*
|
||||
* @param string $new_post_id New post ID.
|
||||
* @param array $post_custom Post custom meta data.
|
||||
* @param bool $seo_ext_activated TRUE|FALSE, Whether or not Yoast SEO is activateed or not.
|
||||
* @param bool $post_to_only TRUE|FALSE, Whether or not to post only to this category.
|
||||
*/
|
||||
private function set_custom_post_fields( $new_post_id, $post_custom, $seo_ext_activated, &$post_to_only ) {
|
||||
|
||||
// Set custom fields.
|
||||
|
@ -970,6 +1209,16 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update Yoast SEO Extension meta.
|
||||
*
|
||||
* @param string $new_post_id New post ID.
|
||||
* @param array $post_custom Post custom meta data.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Utility::upload_image()
|
||||
* @uses \WPSEO_Meta::$meta_prefix()
|
||||
* @uses \Exception()
|
||||
*/
|
||||
private function create_seo_extension_activated( $new_post_id, $post_custom ) {
|
||||
|
||||
$_seo_opengraph_image = isset( $post_custom[ \WPSEO_Meta::$meta_prefix . 'opengraph-image' ] ) ? $post_custom[ \WPSEO_Meta::$meta_prefix . 'opengraph-image' ] : array();
|
||||
|
@ -993,6 +1242,16 @@ class MainWP_Child_Posts {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create featured image.
|
||||
*
|
||||
* @param string $new_post_id New post ID.
|
||||
* @param string $post_featured_image Post featured image.
|
||||
* @param bool $check_image_existed TRUE|FALSE, Whether or not featured image already exists.
|
||||
*
|
||||
* @uses \MainWP\Child\MainWP_Utility::upload_image()
|
||||
* @uses \Excepsion()
|
||||
*/
|
||||
private function create_featured_image( $new_post_id, $post_featured_image, $check_image_existed ) {
|
||||
|
||||
$featured_image_exist = false;
|
||||
|
|
|
@ -1,4 +1,13 @@
|
|||
<?php
|
||||
/**
|
||||
* MainWP Updraft Plus Backups
|
||||
*
|
||||
* This code is used for the MainWP UpdraftPlus Extension.
|
||||
*/
|
||||
|
||||
use MainWP\Child\MainWP_Helper;
|
||||
use MainWP\Child\MainWP_Utility;
|
||||
|
||||
/**
|
||||
* Credits
|
||||
*
|
||||
|
@ -11,16 +20,28 @@
|
|||
* The code is used for the MainWP UpdraftPlus Extension
|
||||
* Extension URL: https://mainwp.com/extension/updraftplus/
|
||||
*/
|
||||
|
||||
use MainWP\Child\MainWP_Helper;
|
||||
use MainWP\Child\MainWP_Utility;
|
||||
|
||||
// phpcs:disable -- Third party credit.
|
||||
|
||||
|
||||
/**
|
||||
* Class MainWP_Child_Updraft_Plus_Backups
|
||||
*/
|
||||
class MainWP_Child_Updraft_Plus_Backups {
|
||||
public static $instance = null;
|
||||
public $is_plugin_installed = false;
|
||||
public static function instance() {
|
||||
|
||||
/**
|
||||
* Public static variable to hold the single instance of MainWP_Child_Updraft_Plus_Backups.
|
||||
*
|
||||
* @var mixed Default null
|
||||
*/
|
||||
public static $instance = null;
|
||||
|
||||
/** @var bool Whether or not UpdraftPlus WordPress plugin is installed. Default: false.*/
|
||||
public $is_plugin_installed = false;
|
||||
|
||||
/**
|
||||
* @return MainWP_Child_Updraft_Plus_Backups|null
|
||||
*/
|
||||
public static function instance() {
|
||||
if ( null === self::$instance ) {
|
||||
self::$instance = new self();
|
||||
}
|
||||
|
@ -28,7 +49,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return self::$instance;
|
||||
}
|
||||
|
||||
public function __construct() {
|
||||
/**
|
||||
* MainWP_Child_Updraft_Plus_Backups constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
||||
if ( is_plugin_active( 'updraftplus/updraftplus.php' ) && defined( 'UPDRAFTPLUS_DIR' ) ) {
|
||||
$this->is_plugin_installed = true;
|
||||
|
@ -42,7 +66,11 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
add_filter( 'updraftplus_save_last_backup', array( __CLASS__, 'hook_updraft_plus_save_last_backup' ) );
|
||||
}
|
||||
|
||||
public static function hook_updraft_plus_save_last_backup( $last_backup ) {
|
||||
/**
|
||||
* @param $last_backup
|
||||
* @return array
|
||||
*/
|
||||
public static function hook_updraft_plus_save_last_backup($last_backup ) {
|
||||
if ( ! is_array( $last_backup ) ) {
|
||||
return $last_backup;
|
||||
}
|
||||
|
@ -56,7 +84,12 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return $last_backup;
|
||||
}
|
||||
|
||||
public function sync_others_data( $information, $data = array() ) {
|
||||
/**
|
||||
* @param $information
|
||||
* @param array $data
|
||||
* @return mixed
|
||||
*/
|
||||
public function sync_others_data($information, $data = array() ) {
|
||||
try {
|
||||
if ( isset( $data['syncUpdraftData'] ) ) {
|
||||
$info = $data['syncUpdraftData'];
|
||||
|
@ -80,7 +113,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return $information;
|
||||
}
|
||||
|
||||
public function action() {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function action() {
|
||||
$information = array();
|
||||
if ( ! $this->is_plugin_installed ) {
|
||||
$information['error'] = 'NO_UPDRAFTPLUS';
|
||||
|
@ -169,7 +205,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
MainWP_Helper::write( $information );
|
||||
}
|
||||
|
||||
public function set_showhide() {
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function set_showhide() {
|
||||
$hide = isset( $_POST['showhide'] ) && ( 'hide' === $_POST['showhide'] ) ? 'hide' : '';
|
||||
MainWP_Helper::update_option( 'mainwp_updraftplus_hide_plugin', $hide );
|
||||
$information['result'] = 'SUCCESS';
|
||||
|
@ -177,7 +216,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return $information;
|
||||
}
|
||||
|
||||
private function get_settings_keys() {
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
private function get_settings_keys() {
|
||||
return array(
|
||||
'updraft_autobackup_default',
|
||||
'updraftplus_dismissedautobackup',
|
||||
|
@ -236,7 +278,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
);
|
||||
}
|
||||
|
||||
private function do_vault_connect() {
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function do_vault_connect() {
|
||||
$vault_settings = UpdraftPlus_Options::get_updraft_option( 'updraft_updraftvault' );
|
||||
if ( is_array( $vault_settings ) && ! empty( $vault_settings['token'] ) && ! empty( $vault_settings['email'] ) ) {
|
||||
return array(
|
||||
|
@ -265,7 +310,11 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
|
||||
private function connected_html() {
|
||||
/**
|
||||
* @return string
|
||||
* @throws Exception
|
||||
*/
|
||||
private function connected_html() {
|
||||
MainWP_Helper::check_classes_exists( 'UpdraftPlus_Options' );
|
||||
MainWP_Helper::check_methods( 'UpdraftPlus_Options', 'get_updraft_option' );
|
||||
|
||||
|
@ -295,7 +344,13 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
|
||||
|
||||
// Returns either true (in which case the Vault token will be stored), or false|\WP_Error.
|
||||
private function vault_connect( $email, $password ) {
|
||||
|
||||
/**
|
||||
* @param $email
|
||||
* @param $password
|
||||
* @return bool|WP_Error
|
||||
*/
|
||||
private function vault_connect($email, $password ) {
|
||||
global $updraftplus;
|
||||
$vault_mothership = 'https://vault.updraftplus.com/plugin-info/';
|
||||
|
||||
|
@ -372,7 +427,11 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
// This method also gets called directly, so don't add code that assumes that it's definitely an AJAX situation.
|
||||
public function vault_disconnect() {
|
||||
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
public function vault_disconnect() {
|
||||
$vault_settings = UpdraftPlus_Options::get_updraft_option( 'updraft_updraftvault' );
|
||||
UpdraftPlus_Options::update_updraft_option( 'updraft_updraftvault', array() );
|
||||
global $updraftplus;
|
||||
|
@ -411,7 +470,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
}
|
||||
|
||||
public function required_files() {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function required_files() {
|
||||
if ( defined( 'UPDRAFTPLUS_DIR' ) ) {
|
||||
if ( ! class_exists( 'UpdraftPlus' ) && file_exists( UPDRAFTPLUS_DIR . '/class-updraftplus.php' ) ) {
|
||||
require_once UPDRAFTPLUS_DIR . '/class-updraftplus.php';
|
||||
|
@ -423,7 +485,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
}
|
||||
|
||||
public function save_settings() {
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function save_settings() {
|
||||
$settings = maybe_unserialize( base64_decode( $_POST['settings'] ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions -- base64_encode function is used for http encode compatible..
|
||||
|
||||
$keys_filter = $this->get_settings_keys();
|
||||
|
@ -651,7 +716,11 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return $out;
|
||||
}
|
||||
|
||||
public function replace_tokens( $str = '' ) {
|
||||
/**
|
||||
* @param string $str
|
||||
* @return string|string[]
|
||||
*/
|
||||
public function replace_tokens($str = '' ) {
|
||||
if ( stripos( $str, '%sitename%' ) !== false ) {
|
||||
$replace_token = get_bloginfo( 'name' );
|
||||
$replace_token = sanitize_file_name( $replace_token );
|
||||
|
@ -668,7 +737,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return $str;
|
||||
}
|
||||
|
||||
public function addons_connect() {
|
||||
/**
|
||||
* @return array|string[]
|
||||
*/
|
||||
public function addons_connect() {
|
||||
if ( ! defined( 'UDADDONS2_SLUG' ) ) {
|
||||
if ( is_file( UPDRAFTPLUS_DIR . '/udaddons/updraftplus-addons.php' ) ) {
|
||||
require_once UPDRAFTPLUS_DIR . '/udaddons/updraftplus-addons.php';
|
||||
|
@ -693,7 +765,11 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return $out;
|
||||
}
|
||||
|
||||
public function update_wpmu_options( $value ) {
|
||||
/**
|
||||
* @param $value
|
||||
* @return bool|void
|
||||
*/
|
||||
public function update_wpmu_options($value ) {
|
||||
|
||||
if ( ! UpdraftPlus_Options::user_can_manage() ) {
|
||||
return;
|
||||
|
@ -713,7 +789,12 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
// Funnelling through here a) allows for future flexibility and b) allows us to migrate elegantly from the previous non-MU-friendly setup.
|
||||
public function addons2_get_option( $option ) {
|
||||
|
||||
/**
|
||||
* @param $option
|
||||
* @return mixed
|
||||
*/
|
||||
public function addons2_get_option($option ) {
|
||||
$val = get_site_option( $option );
|
||||
// On multisite, migrate options into the site options.
|
||||
if ( false === $val && is_multisite() ) {
|
||||
|
@ -740,11 +821,20 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return $val;
|
||||
}
|
||||
|
||||
public function addons2_update_option( $option, $val ) {
|
||||
/**
|
||||
* @param $option
|
||||
* @param $val
|
||||
* @return mixed
|
||||
*/
|
||||
public function addons2_update_option($option, $val ) {
|
||||
return update_site_option( $option, $val );
|
||||
}
|
||||
|
||||
public function options_validate( $input ) {
|
||||
/**
|
||||
* @param $input
|
||||
* @return mixed
|
||||
*/
|
||||
public function options_validate($input ) {
|
||||
// See: http://codex.wordpress.org/Function_Reference/add_settings_error.
|
||||
// When the options are re-saved, clear any previous cache of the connection status.
|
||||
$ehash = substr( md5( $input['email'] ), 0, 23 );
|
||||
|
@ -882,11 +972,18 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
);
|
||||
}
|
||||
|
||||
private function cb_get_name_base_type( $a ) {
|
||||
/**
|
||||
* @param $a
|
||||
* @return mixed
|
||||
*/
|
||||
private function cb_get_name_base_type($a ) {
|
||||
return $a[0];
|
||||
}
|
||||
|
||||
public function backup_now() {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function backup_now() {
|
||||
global $updraftplus;
|
||||
$backupnow_nocloud = ( empty( $_REQUEST['backupnow_nocloud'] ) ) ? false : true;
|
||||
$event = ( ! empty( $_REQUEST['backupnow_nofiles'] ) ) ? 'updraft_backupnow_backup_database' : ( ( ! empty( $_REQUEST['backupnow_nodb'] ) ) ? 'updraft_backupnow_backup' : 'updraft_backupnow_backup_all' );
|
||||
|
@ -917,7 +1014,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
die;
|
||||
}
|
||||
|
||||
public function activejobs_list() {
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function activejobs_list() {
|
||||
global $updraftplus;
|
||||
$download_status = array();
|
||||
if ( ! empty( $_REQUEST['downloaders'] ) ) {
|
||||
|
@ -964,7 +1064,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
|
||||
private function last_backup_html() {
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function last_backup_html() {
|
||||
|
||||
global $updraftplus;
|
||||
|
||||
|
@ -1021,7 +1124,12 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
);
|
||||
}
|
||||
|
||||
private function get_updraft_data( $with_hist = true ) {
|
||||
/**
|
||||
* @param bool $with_hist
|
||||
* @return array|bool
|
||||
* @throws Exception
|
||||
*/
|
||||
private function get_updraft_data($with_hist = true ) {
|
||||
global $updraftplus;
|
||||
|
||||
if ( empty( $updraftplus ) && class_exists( 'UpdraftPlus' ) ) {
|
||||
|
@ -1103,7 +1211,11 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
|
||||
private function next_scheduled_backups() {
|
||||
/**
|
||||
* @return array
|
||||
* @throws Exception
|
||||
*/
|
||||
private function next_scheduled_backups() {
|
||||
global $updraftplus;
|
||||
// UNIX timestamp.
|
||||
$next_scheduled_backup = wp_next_scheduled( 'updraft_backup' );
|
||||
|
@ -1187,7 +1299,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return $out;
|
||||
}
|
||||
|
||||
private function deleteset() {
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function deleteset() {
|
||||
global $updraftplus;
|
||||
|
||||
if ( method_exists( $updraftplus, 'get_backup_history' ) ) {
|
||||
|
@ -1318,7 +1433,11 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
);
|
||||
}
|
||||
|
||||
public function build_historystatus() {
|
||||
/**
|
||||
* @return array
|
||||
* @throws Exception
|
||||
*/
|
||||
public function build_historystatus() {
|
||||
|
||||
MainWP_Helper::check_classes_exists( 'UpdraftPlus_Backup_History' );
|
||||
MainWP_Helper::check_methods( 'UpdraftPlus_Backup_History', 'get_history' );
|
||||
|
@ -1342,7 +1461,12 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
);
|
||||
}
|
||||
|
||||
public function historystatus( $remotescan = null, $rescan = null ) {
|
||||
/**
|
||||
* @param null $remotescan
|
||||
* @param null $rescan
|
||||
* @return array
|
||||
*/
|
||||
public function historystatus($remotescan = null, $rescan = null ) {
|
||||
global $updraftplus;
|
||||
|
||||
$remotescan = ( null !== $remotescan ) ? $remotescan : $_POST['remotescan'];
|
||||
|
@ -1373,7 +1497,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
|
||||
public function updraft_download_backup() {
|
||||
/**
|
||||
* @return array|string|string[]
|
||||
*/
|
||||
public function updraft_download_backup() {
|
||||
|
||||
set_time_limit( 900 );
|
||||
|
||||
|
@ -1530,7 +1657,13 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
// Pass only a single service, as a string, into this function.
|
||||
private function download_file( $file, $service ) {
|
||||
|
||||
/**
|
||||
* @param $file
|
||||
* @param $service
|
||||
* @return bool
|
||||
*/
|
||||
private function download_file($file, $service ) {
|
||||
|
||||
global $updraftplus;
|
||||
|
||||
|
@ -1557,7 +1690,12 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
// This options filter removes ABSPATH off the front of updraft_dir, if it is given absolutely and contained within it.
|
||||
public function prune_updraft_dir_prefix( $updraft_dir ) {
|
||||
|
||||
/**
|
||||
* @param $updraft_dir
|
||||
* @return false|string
|
||||
*/
|
||||
public function prune_updraft_dir_prefix($updraft_dir ) {
|
||||
if ( '/' == substr( $updraft_dir, 0, 1 ) || '\\' === substr( $updraft_dir, 0, 1 ) || preg_match( '/^[a-zA-Z]:/', $updraft_dir ) ) {
|
||||
$wcd = trailingslashit( WP_CONTENT_DIR );
|
||||
if ( strpos( $updraft_dir, $wcd ) === 0 ) {
|
||||
|
@ -1569,7 +1707,10 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
|
||||
public function restore_alldownloaded() { // phpcs:ignore -- third party credit.
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function restore_alldownloaded() { // phpcs:ignore -- third party credit.
|
||||
global $updraftplus;
|
||||
|
||||
if ( method_exists( $updraftplus, 'get_backup_history' ) ) {
|
||||
|
@ -1734,36 +1875,59 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
}
|
||||
|
||||
public function option_filter_template( $val ) {
|
||||
/**
|
||||
* @param $val
|
||||
* @return mixed
|
||||
*/
|
||||
public function option_filter_template($val ) {
|
||||
global $updraftplus;
|
||||
|
||||
return $updraftplus->option_filter_get( 'template' );
|
||||
}
|
||||
|
||||
public function option_filter_stylesheet( $val ) {
|
||||
/**
|
||||
* @param $val
|
||||
* @return mixed
|
||||
*/
|
||||
public function option_filter_stylesheet($val ) {
|
||||
global $updraftplus;
|
||||
|
||||
return $updraftplus->option_filter_get( 'stylesheet' );
|
||||
}
|
||||
|
||||
public function option_filter_template_root( $val ) {
|
||||
/**
|
||||
* @param $val
|
||||
* @return mixed
|
||||
*/
|
||||
public function option_filter_template_root($val ) {
|
||||
global $updraftplus;
|
||||
|
||||
return $updraftplus->option_filter_get( 'template_root' );
|
||||
}
|
||||
|
||||
public function option_filter_stylesheet_root( $val ) {
|
||||
/**
|
||||
* @param $val
|
||||
* @return mixed
|
||||
*/
|
||||
public function option_filter_stylesheet_root($val ) {
|
||||
global $updraftplus;
|
||||
|
||||
return $updraftplus->option_filter_get( 'stylesheet_root' );
|
||||
}
|
||||
|
||||
|
||||
private function print_delete_old_dirs_form() {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function print_delete_old_dirs_form() {
|
||||
echo '<a href="#" class="button-primary" onclick="event.preventDefault(); mainwp_updraft_delete_old_dirs();">' . esc_html__( 'Delete Old Directories', 'updraftplus' ) . '</a>';
|
||||
}
|
||||
|
||||
private function delete_old_dirs_go( $show_return = true ) {
|
||||
/**
|
||||
* @param bool $show_return
|
||||
* @return array
|
||||
*/
|
||||
private function delete_old_dirs_go($show_return = true ) {
|
||||
ob_start();
|
||||
|
||||
echo ( $show_return ) ? '<h1>UpdraftPlus - ' . esc_html__( 'Remove old directories', 'updraftplus' ) . '</h1>' : '<h2>' . esc_html__( 'Remove old directories', 'updraftplus' ) . '</h2>';
|
||||
|
@ -1785,7 +1949,11 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
// deletes the -old directories that are created when a backup is restored.
|
||||
private function delete_old_dirs() {
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
private function delete_old_dirs() {
|
||||
global $wp_filesystem, $updraftplus;
|
||||
$credentials = request_filesystem_credentials( wp_nonce_url( UpdraftPlus_Options::admin_page_url() . '?page=updraftplus&action=updraft_delete_old_dirs', 'updraftplus-credentialtest-nonce' ) );
|
||||
WP_Filesystem( $credentials );
|
||||
|
@ -1822,7 +1990,12 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return $ret && $ret3 && $ret4;
|
||||
}
|
||||
|
||||
private function delete_old_dirs_dir( $dir, $wpfs = true ) {
|
||||
/**
|
||||
* @param $dir
|
||||
* @param bool $wpfs
|
||||
* @return bool
|
||||
*/
|
||||
private function delete_old_dirs_dir($dir, $wpfs = true ) {
|
||||
|
||||
$dir = trailingslashit( $dir );
|
||||
|
||||
|
@ -1866,11 +2039,22 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
|
||||
public function show_admin_warning( $message, $class = 'updated' ) {
|
||||
/**
|
||||
* @param $message
|
||||
* @param string $class
|
||||
*/
|
||||
public function show_admin_warning($message, $class = 'updated' ) {
|
||||
echo '<div class="updraftmessage ' . $class . '">' . "<p>$message</p></div>";
|
||||
}
|
||||
|
||||
private function analyse_db_file_old( $timestamp, $res, $db_file = false, $header_only = false ) { // phpcs:ignore -- third party credit.
|
||||
/**
|
||||
* @param $timestamp
|
||||
* @param $res
|
||||
* @param bool $db_file
|
||||
* @param bool $header_only
|
||||
* @return array[]
|
||||
*/
|
||||
private function analyse_db_file_old($timestamp, $res, $db_file = false, $header_only = false ) { // phpcs:ignore -- third party credit.
|
||||
|
||||
$mess = array();
|
||||
$warn = array();
|
||||
|
@ -2102,7 +2286,14 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
|
||||
public function analyse_db_file( $timestamp, $res, $db_file = false, $header_only = false ) { // phpcs:ignore -- third party credit.
|
||||
/**
|
||||
* @param $timestamp
|
||||
* @param $res
|
||||
* @param bool $db_file
|
||||
* @param bool $header_only
|
||||
* @return array[]
|
||||
*/
|
||||
public function analyse_db_file($timestamp, $res, $db_file = false, $header_only = false ) { // phpcs:ignore -- third party credit.
|
||||
global $updraftplus;
|
||||
|
||||
$mess = array();
|
||||
|
@ -2511,7 +2702,13 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
}
|
||||
|
||||
|
||||
private function gzopen_for_read( $file, &$warn, &$err ) {
|
||||
/**
|
||||
* @param $file
|
||||
* @param $warn
|
||||
* @param $err
|
||||
* @return bool|false|resource
|
||||
*/
|
||||
private function gzopen_for_read($file, &$warn, &$err ) {
|
||||
if ( ! function_exists( 'gzopen' ) || ! function_exists( 'gzread' ) ) {
|
||||
$missing = '';
|
||||
if ( ! function_exists( 'gzopen' ) ) {
|
||||
|
@ -2600,7 +2797,12 @@ class MainWP_Child_Updraft_Plus_Backups {
|
|||
return $what_to_return;
|
||||
}
|
||||
|
||||
private function existing_backup_table( $backup_history = false ) { // phpcs:ignore -- third party credit.
|
||||
/**
|
||||
* @param bool $backup_history
|
||||
* @return string
|
||||
* @throws Exception
|
||||
*/
|
||||
private function existing_backup_table($backup_history = false ) { // phpcs:ignore -- third party credit.
|
||||
|
||||
global $updraftplus;
|
||||
|
||||
|
@ -2731,7 +2933,14 @@ ENDHERE;
|
|||
return $ret;
|
||||
}
|
||||
|
||||
private function restore_button( $backup, $key, $pretty_date, $entities ) {
|
||||
/**
|
||||
* @param $backup
|
||||
* @param $key
|
||||
* @param $pretty_date
|
||||
* @param $entities
|
||||
* @return string
|
||||
*/
|
||||
private function restore_button($backup, $key, $pretty_date, $entities ) {
|
||||
$ret = <<<ENDHERE
|
||||
<div style="float:left; clear:none; margin-right: 6px;">
|
||||
<form method="post" action="">
|
||||
|
@ -2750,13 +2959,27 @@ ENDHERE;
|
|||
return $ret;
|
||||
}
|
||||
|
||||
private function delete_button( $key, $nonce, $backup ) {
|
||||
/**
|
||||
* @param $key
|
||||
* @param $nonce
|
||||
* @param $backup
|
||||
* @return string
|
||||
*/
|
||||
private function delete_button($key, $nonce, $backup ) {
|
||||
$sval = ( ( isset( $backup['service'] ) && 'email' !== $backup['service'] && 'none' !== $backup['service'] ) ) ? '1' : '0';
|
||||
|
||||
return '<a style="float:left;margin-right:6px" class="ui green basic button" href="#" onclick="event.preventDefault();' . "mainwp_updraft_delete( '$key', '$nonce', $sval, this );" . '" title="' . esc_attr( __( 'Delete this backup set', 'updraftplus' ) ) . '">' . __( 'Delete', 'updraftplus' ) . '</a>';
|
||||
}
|
||||
|
||||
private function date_label( $pretty_date, $key, $backup, $jobdata, $nonce ) {
|
||||
/**
|
||||
* @param $pretty_date
|
||||
* @param $key
|
||||
* @param $backup
|
||||
* @param $jobdata
|
||||
* @param $nonce
|
||||
* @return string
|
||||
*/
|
||||
private function date_label($pretty_date, $key, $backup, $jobdata, $nonce ) {
|
||||
$ret = apply_filters( 'updraftplus_showbackup_date', $pretty_date, $backup, $jobdata, (int) $key, false );
|
||||
if ( is_array( $jobdata ) && ! empty( $jobdata['resume_interval'] ) && ( empty( $jobdata['jobstatus'] ) || 'finished' !== $jobdata['jobstatus'] ) ) {
|
||||
$ret .= apply_filters( 'updraftplus_msg_unfinishedbackup', '<br><span title="' . esc_attr( __( 'If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes.', 'updraftplus' ) ) . '">' . __( '(Not finished)', 'updraftplus' ) . '</span>', $jobdata, $nonce );
|
||||
|
@ -2765,7 +2988,16 @@ ENDHERE;
|
|||
return $ret;
|
||||
}
|
||||
|
||||
private function download_db_button( $bkey, $key, $esc_pretty_date, $nonce_field, $backup, $accept = array() ) {
|
||||
/**
|
||||
* @param $bkey
|
||||
* @param $key
|
||||
* @param $esc_pretty_date
|
||||
* @param $nonce_field
|
||||
* @param $backup
|
||||
* @param array $accept
|
||||
* @return string
|
||||
*/
|
||||
private function download_db_button($bkey, $key, $esc_pretty_date, $nonce_field, $backup, $accept = array() ) {
|
||||
|
||||
if ( ! empty( $backup['meta_foreign'] ) && isset( $accept[ $backup['meta_foreign'] ] ) ) {
|
||||
$desc_source = $accept[ $backup['meta_foreign'] ]['desc'];
|
||||
|
@ -2797,7 +3029,17 @@ ENDHERE;
|
|||
}
|
||||
|
||||
// Go through each of the file entities.
|
||||
private function download_buttons( $backup, $key, $accept, &$entities, $esc_pretty_date, $nonce_field ) { // phpcs:ignore -- third party credit.
|
||||
|
||||
/**
|
||||
* @param $backup
|
||||
* @param $key
|
||||
* @param $accept
|
||||
* @param $entities
|
||||
* @param $esc_pretty_date
|
||||
* @param $nonce_field
|
||||
* @return string
|
||||
*/
|
||||
private function download_buttons($backup, $key, $accept, &$entities, $esc_pretty_date, $nonce_field ) { // phpcs:ignore -- third party credit.
|
||||
global $updraftplus;
|
||||
$ret = '';
|
||||
$backupable_entities = $updraftplus->get_backupable_file_entities( true, true );
|
||||
|
@ -2897,7 +3139,19 @@ ENDHERE;
|
|||
}
|
||||
|
||||
|
||||
private function download_button( $type, $key, $findex, $info, $nonce_field, $ide, $pdescrip, $esc_pretty_date, $set_contents ) {
|
||||
/**
|
||||
* @param $type
|
||||
* @param $key
|
||||
* @param $findex
|
||||
* @param $info
|
||||
* @param $nonce_field
|
||||
* @param $ide
|
||||
* @param $pdescrip
|
||||
* @param $esc_pretty_date
|
||||
* @param $set_contents
|
||||
* @return string
|
||||
*/
|
||||
private function download_button($type, $key, $findex, $info, $nonce_field, $ide, $pdescrip, $esc_pretty_date, $set_contents ) {
|
||||
$ret = <<<ENDHERE
|
||||
<div style="float: left; clear: none;">
|
||||
<form id="uddownloadform_${type}_${key}_${findex}" action="admin-ajax.php" onsubmit="return mainwp_updraft_downloader( 'uddlstatus_', '$key', '$type', '#mwp_ud_downloadstatus', '$set_contents', '$esc_pretty_date', true, this )" method="post">
|
||||
|
@ -2914,7 +3168,11 @@ ENDHERE;
|
|||
return $ret;
|
||||
}
|
||||
|
||||
private function log_button( $backup ) {
|
||||
/**
|
||||
* @param $backup
|
||||
* @return string
|
||||
*/
|
||||
private function log_button($backup ) {
|
||||
global $updraftplus;
|
||||
$updraft_dir = $updraftplus->backups_dir_location();
|
||||
$ret = '';
|
||||
|
@ -2937,7 +3195,11 @@ ENDHERE;
|
|||
}
|
||||
}
|
||||
|
||||
private function rebuild_backup_history( $remotescan = false ) {
|
||||
/**
|
||||
* @param bool $remotescan
|
||||
* @return |null
|
||||
*/
|
||||
private function rebuild_backup_history($remotescan = false ) {
|
||||
global $updraftplus_admin, $updraftplus;
|
||||
$messages = null;
|
||||
if ( method_exists( $updraftplus, 'rebuild_backup_history' ) ) {
|
||||
|
@ -2949,7 +3211,10 @@ ENDHERE;
|
|||
return $messages;
|
||||
}
|
||||
|
||||
private function force_scheduled_resumption() {
|
||||
/**
|
||||
* @return array|bool[]
|
||||
*/
|
||||
private function force_scheduled_resumption() {
|
||||
global $updraftplus;
|
||||
// Casting $resumption to int is absolutely necessary, as the WP cron system uses a hashed serialisation of the parameters for identifying jobs. Different type => different hash => does not match.
|
||||
$resumption = (int) $_REQUEST['resumption'];
|
||||
|
@ -2970,7 +3235,10 @@ ENDHERE;
|
|||
}
|
||||
|
||||
|
||||
public function diskspaceused() {
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function diskspaceused() {
|
||||
global $updraftplus;
|
||||
$out = array();
|
||||
if ( 'updraft' === $_POST['entity'] ) {
|
||||
|
@ -2991,7 +3259,14 @@ ENDHERE;
|
|||
}
|
||||
|
||||
// If $basedirs is passed as an array, then $directorieses must be too.
|
||||
private function recursive_directory_size( $directorieses, $exclude = array(), $basedirs = '' ) {
|
||||
|
||||
/**
|
||||
* @param $directorieses
|
||||
* @param array $exclude
|
||||
* @param string $basedirs
|
||||
* @return string
|
||||
*/
|
||||
private function recursive_directory_size($directorieses, $exclude = array(), $basedirs = '' ) {
|
||||
|
||||
$size = 0;
|
||||
|
||||
|
@ -3032,7 +3307,13 @@ ENDHERE;
|
|||
}
|
||||
}
|
||||
|
||||
private function recursive_directory_size_raw( $prefix_directory, &$exclude = array(), $suffix_directory = '' ) {
|
||||
/**
|
||||
* @param $prefix_directory
|
||||
* @param array $exclude
|
||||
* @param string $suffix_directory
|
||||
* @return false|int
|
||||
*/
|
||||
private function recursive_directory_size_raw($prefix_directory, &$exclude = array(), $suffix_directory = '' ) {
|
||||
|
||||
$directory = $prefix_directory . ( '' === $suffix_directory ? '' : '/' . $suffix_directory );
|
||||
$size = 0;
|
||||
|
@ -3074,7 +3355,11 @@ ENDHERE;
|
|||
return $size;
|
||||
}
|
||||
|
||||
private function get_cron( $job_id = false ) {
|
||||
/**
|
||||
* @param bool $job_id
|
||||
* @return array|bool
|
||||
*/
|
||||
private function get_cron($job_id = false ) {
|
||||
|
||||
$cron = get_option( 'cron' );
|
||||
if ( ! is_array( $cron ) ) {
|
||||
|
@ -3099,7 +3384,12 @@ ENDHERE;
|
|||
}
|
||||
|
||||
// A value for $this_job_only also causes something to always be returned (to allow detection of the job having started on the front-end).
|
||||
private function print_active_jobs( $this_job_only = false ) {
|
||||
|
||||
/**
|
||||
* @param bool $this_job_only
|
||||
* @return string
|
||||
*/
|
||||
private function print_active_jobs($this_job_only = false ) {
|
||||
$cron = $this->get_cron();
|
||||
$ret = '';
|
||||
|
||||
|
@ -3128,7 +3418,14 @@ ENDHERE;
|
|||
return $ret;
|
||||
}
|
||||
|
||||
private function print_active_job( $job_id, $is_oneshot = false, $time = false, $next_resumption = false ) { // phpcs:ignore -- third party credit.
|
||||
/**
|
||||
* @param $job_id
|
||||
* @param bool $is_oneshot
|
||||
* @param bool $time
|
||||
* @param bool $next_resumption
|
||||
* @return string
|
||||
*/
|
||||
private function print_active_job($job_id, $is_oneshot = false, $time = false, $next_resumption = false ) { // phpcs:ignore -- third party credit.
|
||||
|
||||
$ret = '';
|
||||
|
||||
|
@ -3308,13 +3605,19 @@ ENDHERE;
|
|||
return $ret;
|
||||
}
|
||||
|
||||
private function fetch_updraft_log() {
|
||||
/**
|
||||
* @return array|string[]
|
||||
*/
|
||||
private function fetch_updraft_log() {
|
||||
$backup_nonce = $_POST['backup_nonce'];
|
||||
|
||||
return $this->fetch_log( $backup_nonce );
|
||||
}
|
||||
|
||||
private function activejobs_delete() {
|
||||
/**
|
||||
* @return array|string[]
|
||||
*/
|
||||
private function activejobs_delete() {
|
||||
$jobid = $_POST['jobid'];
|
||||
if ( empty( $jobid ) ) {
|
||||
return array( 'error' => 'Error: empty job id.' );
|
||||
|
@ -3350,7 +3653,12 @@ ENDHERE;
|
|||
return array();
|
||||
}
|
||||
|
||||
public function fetch_log( $backup_nonce, $log_pointer = 0 ) {
|
||||
/**
|
||||
* @param $backup_nonce
|
||||
* @param int $log_pointer
|
||||
* @return array|string[]
|
||||
*/
|
||||
public function fetch_log($backup_nonce, $log_pointer = 0 ) {
|
||||
global $updraftplus;
|
||||
|
||||
if ( empty( $backup_nonce ) ) {
|
||||
|
@ -3405,7 +3713,13 @@ ENDHERE;
|
|||
return $ret_array;
|
||||
}
|
||||
|
||||
private function download_status( $timestamp, $type, $findex ) {
|
||||
/**
|
||||
* @param $timestamp
|
||||
* @param $type
|
||||
* @param $findex
|
||||
* @return string[]
|
||||
*/
|
||||
private function download_status($timestamp, $type, $findex ) {
|
||||
global $updraftplus;
|
||||
$response = array( 'm' => $updraftplus->jobdata_get( 'dlmessage_' . $timestamp . '_' . $type . '_' . $findex ) . '<br>' );
|
||||
$file = $updraftplus->jobdata_get( 'dlfile_' . $timestamp . '_' . $type . '_' . $findex );
|
||||
|
@ -3454,7 +3768,10 @@ ENDHERE;
|
|||
return $response;
|
||||
}
|
||||
|
||||
private function close_browser_connection( $txt = '' ) {
|
||||
/**
|
||||
* @param string $txt
|
||||
*/
|
||||
private function close_browser_connection($txt = '' ) {
|
||||
|
||||
if ( isset( $_REQUEST['json_result'] ) && true == $_REQUEST['json_result'] ) :
|
||||
$output = wp_json_encode( $txt );
|
||||
|
@ -3478,7 +3795,10 @@ ENDHERE;
|
|||
flush();
|
||||
}
|
||||
|
||||
public function updraftplus_init() {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function updraftplus_init() {
|
||||
if ( ! $this->is_plugin_installed ) {
|
||||
return;
|
||||
}
|
||||
|
@ -3493,7 +3813,10 @@ ENDHERE;
|
|||
}
|
||||
}
|
||||
|
||||
public function remove_notices() {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function remove_notices() {
|
||||
$remove_hooks['all_admin_notices'] = array(
|
||||
'UpdraftPlus' => array(
|
||||
'show_admin_warning_unreadablelog' => 10,
|
||||
|
@ -3543,8 +3866,11 @@ ENDHERE;
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function wp_before_admin_bar_render() {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function wp_before_admin_bar_render() {
|
||||
global $wp_admin_bar;
|
||||
|
||||
$nodes = $wp_admin_bar->get_nodes();
|
||||
|
@ -3561,12 +3887,20 @@ ENDHERE;
|
|||
}
|
||||
}
|
||||
|
||||
public function hide_update_notice( $slugs ) {
|
||||
/**
|
||||
* @param $slugs
|
||||
* @return mixed
|
||||
*/
|
||||
public function hide_update_notice($slugs ) {
|
||||
$slugs[] = 'updraftplus/updraftplus.php';
|
||||
return $slugs;
|
||||
}
|
||||
|
||||
public function remove_update_nag( $value ) {
|
||||
/**
|
||||
* @param $value
|
||||
* @return mixed
|
||||
*/
|
||||
public function remove_update_nag($value ) {
|
||||
if ( isset( $_POST['mainwpsignature'] ) ) {
|
||||
return $value;
|
||||
}
|
||||
|
@ -3581,12 +3915,21 @@ ENDHERE;
|
|||
return $value;
|
||||
}
|
||||
|
||||
public function get_sync_data( $with_hist = false ) {
|
||||
/**
|
||||
* @param bool $with_hist
|
||||
* @return array|bool
|
||||
* @throws Exception
|
||||
*/
|
||||
public function get_sync_data($with_hist = false ) {
|
||||
$this->required_files();
|
||||
return $this->get_updraft_data( $with_hist );
|
||||
}
|
||||
|
||||
public function all_plugins( $plugins ) {
|
||||
/**
|
||||
* @param $plugins
|
||||
* @return mixed
|
||||
*/
|
||||
public function all_plugins($plugins ) {
|
||||
foreach ( $plugins as $key => $value ) {
|
||||
$plugin_slug = basename( $key, '.php' );
|
||||
if ( 'updraftplus' === $plugin_slug ) {
|
||||
|
@ -3597,7 +3940,10 @@ ENDHERE;
|
|||
return $plugins;
|
||||
}
|
||||
|
||||
public function remove_menu() {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function remove_menu() {
|
||||
global $submenu;
|
||||
if ( isset( $submenu['options-general.php'] ) ) {
|
||||
foreach ( $submenu['options-general.php'] as $index => $item ) {
|
||||
|
|
|
@ -40,11 +40,11 @@ class MainWP_Clone_Install {
|
|||
protected $archiver;
|
||||
|
||||
/**
|
||||
* Method __construct( $file )
|
||||
* Method __construct()
|
||||
*
|
||||
* Run any time MainWP_Child is called.
|
||||
* Run any time new MainWP_Clone_Install is created.
|
||||
*
|
||||
* @param string $file Contains the file name.
|
||||
* @param string $file Archive file.
|
||||
*/
|
||||
public function __construct( $file ) {
|
||||
require_once ABSPATH . 'wp-admin/includes/class-pclzip.php';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue