555 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			555 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| class S2_Upgrade {
 | |
| 	/* ===== Install and reset ===== */
 | |
| 	/**
 | |
| 	 * Install our table
 | |
| 	 */
 | |
| 	public function install() {
 | |
| 		global $wpdb, $mysubscribe2;
 | |
| 		// load our translations and strings
 | |
| 		$mysubscribe2->load_translations();
 | |
| 
 | |
| 		// include upgrade functions
 | |
| 		if ( ! function_exists( 'maybe_create_table' ) ) {
 | |
| 			require_once ABSPATH . 'wp-admin/install-helper.php';
 | |
| 		}
 | |
| 		$charset_collate = '';
 | |
| 		if ( ! empty( $wpdb->charset ) ) {
 | |
| 			$charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset}";
 | |
| 		}
 | |
| 
 | |
| 		if ( ! empty( $wpdb->collate ) ) {
 | |
| 			$charset_collate .= " COLLATE {$wpdb->collate}";
 | |
| 		}
 | |
| 
 | |
| 		$date = gmdate( 'Y-m-d' );
 | |
| 		$sql  = "CREATE TABLE $wpdb->subscribe2 (
 | |
| 			id int(11) NOT NULL auto_increment,
 | |
| 			email varchar(64) NOT NULL default '',
 | |
| 			active tinyint(1) default 0,
 | |
| 			date DATE default '$date' NOT NULL,
 | |
| 			time TIME DEFAULT '00:00:00' NOT NULL,
 | |
| 			ip char(64) NOT NULL default 'admin',
 | |
| 			conf_date DATE,
 | |
| 			conf_time TIME,
 | |
| 			conf_ip char(64),
 | |
| 			PRIMARY KEY (id) ) $charset_collate";
 | |
| 
 | |
| 		// create the table, as needed
 | |
| 		maybe_create_table( $wpdb->subscribe2, $sql );
 | |
| 
 | |
| 		// safety check if options exist and if not create them
 | |
| 		if ( ! is_array( $mysubscribe2->subscribe2_options ) ) {
 | |
| 			$this->reset();
 | |
| 		}
 | |
| 
 | |
| 		// create table entries for registered users
 | |
| 		$users = $mysubscribe2->get_all_registered( 'ID' );
 | |
| 		if ( ! empty( $users ) ) {
 | |
| 			foreach ( $users as $user_ID ) {
 | |
| 				$check_format = get_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_format' ), true );
 | |
| 				if ( empty( $check_format ) ) {
 | |
| 					// no prior settings so create them
 | |
| 					$mysubscribe2->register( $user_ID );
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Reset our options
 | |
| 	 */
 | |
| 	public function reset() {
 | |
| 		// load our translations and strings
 | |
| 		global $mysubscribe2;
 | |
| 		$mysubscribe2->load_translations();
 | |
| 
 | |
| 		delete_option( 'subscribe2_options' );
 | |
| 		wp_clear_scheduled_hook( 's2_digest_cron' );
 | |
| 		unset( $mysubscribe2->subscribe2_options );
 | |
| 		require S2PATH . 'include/options.php';
 | |
| 		$mysubscribe2->subscribe2_options['version'] = S2VERSION;
 | |
| 		update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Core upgrade function for the database and settings
 | |
| 	 */
 | |
| 	public function upgrade() {
 | |
| 		global $mysubscribe2;
 | |
| 		// load our translations and strings
 | |
| 		$mysubscribe2->load_translations();
 | |
| 
 | |
| 		// ensure that the options are in the database
 | |
| 		require S2PATH . 'include/options.php';
 | |
| 		// catch older versions that didn't use serialised options
 | |
| 		if ( ! isset( $mysubscribe2->subscribe2_options['version'] ) ) {
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '2.0';
 | |
| 		}
 | |
| 
 | |
| 		// let's take the time to ensure that database entries exist for all registered users
 | |
| 		$this->upgrade_core();
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '2.3', '<' ) ) {
 | |
| 			$this->upgrade2_3();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '2.3';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '5.1', '<' ) ) {
 | |
| 			$this->upgrade5_1();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '5.1';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '5.6', '<' ) ) {
 | |
| 			$this->upgrade5_6();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '5.6';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '5.9', '<' ) ) {
 | |
| 			$this->upgrade5_9();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '5.9';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '6.4', '<' ) ) {
 | |
| 			$this->upgrade6_4();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '6.4';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '7.0', '<' ) ) {
 | |
| 			$this->upgrade7_0();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '7.0';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '8.5', '<' ) ) {
 | |
| 			$this->upgrade8_5();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '8.5';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '8.6', '<' ) ) {
 | |
| 			$this->upgrade8_6();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '8.6';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '8.8', '<' ) ) {
 | |
| 			$this->upgrade8_8();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '8.8';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '9.5', '<' ) ) {
 | |
| 			$this->upgrade9_5();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '9.5';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '10.14', '<' ) ) {
 | |
| 			$this->upgrade10_14();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '10.14';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 		if ( version_compare( $mysubscribe2->subscribe2_options['version'], '10.23', '<' ) ) {
 | |
| 			$this->upgrade10_23();
 | |
| 			$mysubscribe2->subscribe2_options['version'] = '10.23';
 | |
| 			update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 		}
 | |
| 
 | |
| 		$mysubscribe2->subscribe2_options['version'] = S2VERSION;
 | |
| 		update_option( 'subscribe2_options', $mysubscribe2->subscribe2_options );
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade_core() {
 | |
| 		// let's take the time to double check data for registered users
 | |
| 		global $mysubscribe2;
 | |
| 		if ( version_compare( $mysubscribe2->wp_release, '3.5', '<' ) ) {
 | |
| 			global $wpdb;
 | |
| 			$users = $wpdb->get_col( $wpdb->prepare( "SELECT ID from $wpdb->users WHERE ID NOT IN (SELECT user_id FROM $wpdb->usermeta WHERE meta_key=%s)", $mysubscribe2->get_usermeta_keyname( 's2_format' ) ) );
 | |
| 			if ( ! empty( $users ) ) {
 | |
| 				foreach ( $users as $user_ID ) {
 | |
| 					$mysubscribe2->register( $user_ID );
 | |
| 				}
 | |
| 			}
 | |
| 		} else {
 | |
| 			$args = array(
 | |
| 				'meta_query' => array(
 | |
| 					array(
 | |
| 						'key'     => $mysubscribe2->get_usermeta_keyname( 's2_format' ),
 | |
| 						'compare' => 'NOT EXISTS',
 | |
| 					),
 | |
| 				),
 | |
| 			);
 | |
| 
 | |
| 			$user_query = new WP_User_Query( $args );
 | |
| 			$users      = $user_query->get_results();
 | |
| 			if ( ! empty( $users ) ) {
 | |
| 				foreach ( $users as $user ) {
 | |
| 					$mysubscribe2->register( $user->ID );
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		// let's make sure that the 's2_authors' key exists on every site for all Registered Users too
 | |
| 		$this->upgrade7_0();
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade2_3() {
 | |
| 		global $mysubscribe2, $wpdb;
 | |
| 
 | |
| 		// include upgrade functions
 | |
| 		if ( ! function_exists( 'maybe_add_column' ) ) {
 | |
| 			require_once ABSPATH . 'wp-admin/install-helper.php';
 | |
| 		}
 | |
| 		$date = gmdate( 'Y-m-d' );
 | |
| 		maybe_add_column( $wpdb->subscribe2, 'date', "ALTER TABLE $wpdb->subscribe2 ADD date DATE DEFAULT '$date' NOT NULL AFTER active" );
 | |
| 
 | |
| 		// update the options table to serialized format
 | |
| 		$old_options = $wpdb->get_col( "SELECT option_name from $wpdb->options where option_name LIKE 's2%' AND option_name <> 's2_future_posts'" );
 | |
| 
 | |
| 		if ( ! empty( $old_options ) ) {
 | |
| 			foreach ( $old_options as $option ) {
 | |
| 				$value        = get_option( $option );
 | |
| 				$option_array = substr( $option, 3 );
 | |
| 				$mysubscribe2->subscribe2_options[ $option_array ] = $value;
 | |
| 				delete_option( $option );
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade5_1() {
 | |
| 		global $mysubscribe2, $wpdb;
 | |
| 
 | |
| 		// include upgrade functions
 | |
| 		if ( ! function_exists( 'maybe_add_column' ) ) {
 | |
| 			require_once ABSPATH . 'wp-admin/install-helper.php';
 | |
| 		}
 | |
| 		maybe_add_column( $wpdb->subscribe2, 'ip', "ALTER TABLE $wpdb->subscribe2 ADD ip char(64) DEFAULT 'admin' NOT NULL AFTER date" );
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade5_6() {
 | |
| 		global $mysubscribe2;
 | |
| 		// correct autoformat to upgrade from pre 5.6
 | |
| 		if ( 'text' === $mysubscribe2->subscribe2_options['autoformat'] ) {
 | |
| 			$mysubscribe2->subscribe2_options['autoformat'] = 'excerpt';
 | |
| 		}
 | |
| 		if ( 'full' === $mysubscribe2->subscribe2_options['autoformat'] ) {
 | |
| 			$mysubscribe2->subscribe2_options['autoformat'] = 'post';
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade5_9() {
 | |
| 		global $mysubscribe2, $wpdb;
 | |
| 		// ensure existing public subscriber emails are all sanitized
 | |
| 		$confirmed          = $mysubscribe2->get_public();
 | |
| 		$unconfirmed        = $mysubscribe2->get_public( 0 );
 | |
| 		$public_subscribers = array_merge( (array) $confirmed, (array) $unconfirmed );
 | |
| 
 | |
| 		foreach ( $public_subscribers as $email ) {
 | |
| 			$new_email = $mysubscribe2->sanitize_email( $email );
 | |
| 			if ( $email !== $new_email ) {
 | |
| 				$wpdb->get_results( $wpdb->prepare( "UPDATE $wpdb->subscribe2 SET email=%s WHERE CAST(email as binary)=%s", $new_email, $email ) );
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade6_4() {
 | |
| 		global $mysubscribe2;
 | |
| 		// change old CAPITALISED keywords to those in {PARENTHESES}; since version 6.4
 | |
| 		$keywords = array( 'BLOGNAME', 'BLOGLINK', 'TITLE', 'POST', 'POSTTIME', 'TABLE', 'TABLELINKS', 'PERMALINK', 'TINYLINK', 'DATE', 'TIME', 'MYNAME', 'EMAIL', 'AUTHORNAME', 'LINK', 'CATS', 'TAGS', 'COUNT', 'ACTION' );
 | |
| 		$keyword  = implode( '|', $keywords );
 | |
| 		$regex    = '/(?<!\{)\b(' . $keyword . ')\b(?!\{)/xm';
 | |
| 		$replace  = '{\1}';
 | |
| 
 | |
| 		$mysubscribe2->subscribe2_options['mailtext']             = preg_replace( $regex, $replace, $mysubscribe2->subscribe2_options['mailtext'] );
 | |
| 		$mysubscribe2->subscribe2_options['notification_subject'] = preg_replace( $regex, $replace, $mysubscribe2->subscribe2_options['notification_subject'] );
 | |
| 		$mysubscribe2->subscribe2_options['confirm_email']        = preg_replace( $regex, $replace, $mysubscribe2->subscribe2_options['confirm_email'] );
 | |
| 		$mysubscribe2->subscribe2_options['confirm_subject']      = preg_replace( $regex, $replace, $mysubscribe2->subscribe2_options['confirm_subject'] );
 | |
| 		$mysubscribe2->subscribe2_options['remind_email']         = preg_replace( $regex, $replace, $mysubscribe2->subscribe2_options['remind_email'] );
 | |
| 		$mysubscribe2->subscribe2_options['remind_subject']       = preg_replace( $regex, $replace, $mysubscribe2->subscribe2_options['remind_subject'] );
 | |
| 
 | |
| 		if ( version_compare( $mysubscribe2->wp_release, '3.5', '<' ) ) {
 | |
| 			$users = $mysubscribe2->get_all_registered( 'ID' );
 | |
| 			foreach ( $users as $user_ID ) {
 | |
| 				$check_format = get_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_format' ), true );
 | |
| 				// if user is already registered update format remove 's2_excerpt' field and update 's2_format'
 | |
| 				if ( 'html' === $check_format ) {
 | |
| 					delete_user_meta( $user_ID, 's2_excerpt' );
 | |
| 				} elseif ( 'text' === $check_format ) {
 | |
| 					update_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_format' ), get_user_meta( $user_ID, 's2_excerpt' ) );
 | |
| 					delete_user_meta( $user_ID, 's2_excerpt' );
 | |
| 				}
 | |
| 				$subscribed = get_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ), true );
 | |
| 				if ( strstr( $subscribed, '-1' ) ) {
 | |
| 					// make sure we remove '-1' from any settings
 | |
| 					$old_cats = explode( ',', $subscribed );
 | |
| 					$pos      = array_search( '-1', $old_cats, true );
 | |
| 					unset( $old_cats[ $pos ] );
 | |
| 					$cats = implode( ',', $old_cats );
 | |
| 					update_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ), $cats );
 | |
| 				}
 | |
| 			}
 | |
| 		} else {
 | |
| 			$args = array(
 | |
| 				'relation'   => 'AND',
 | |
| 				'meta_query' => array(
 | |
| 					array(
 | |
| 						'key'   => $mysubscribe2->get_usermeta_keyname( 's2_format' ),
 | |
| 						'value' => 'html',
 | |
| 					),
 | |
| 				),
 | |
| 				'meta_query' => array(
 | |
| 					array(
 | |
| 						'key'     => 's2_excerpt',
 | |
| 						'compare' => 'EXISTS',
 | |
| 					),
 | |
| 				),
 | |
| 			);
 | |
| 
 | |
| 			$user_query = new WP_User_Query( $args );
 | |
| 			$users      = $user_query->get_results();
 | |
| 			if ( ! empty( $users ) ) {
 | |
| 				foreach ( $users as $user ) {
 | |
| 					delete_user_meta( $user->ID, 's2_excerpt' );
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			$args = array(
 | |
| 				'relation'   => 'AND',
 | |
| 				'meta_query' => array(
 | |
| 					array(
 | |
| 						'key'   => $mysubscribe2->get_usermeta_keyname( 's2_format' ),
 | |
| 						'value' => 'text',
 | |
| 					),
 | |
| 				),
 | |
| 				'meta_query' => array(
 | |
| 					array(
 | |
| 						'key'     => 's2_excerpt',
 | |
| 						'compare' => 'EXISTS',
 | |
| 					),
 | |
| 				),
 | |
| 			);
 | |
| 
 | |
| 			$user_query = new WP_User_Query( $args );
 | |
| 			$users      = $user_query->get_results();
 | |
| 			if ( ! empty( $users ) ) {
 | |
| 				foreach ( $users as $user ) {
 | |
| 					update_user_meta( $user->ID, $mysubscribe2->get_usermeta_keyname( 's2_format' ), get_user_meta( $user->ID, 's2_excerpt' ) );
 | |
| 					delete_user_meta( $user->ID, 's2_excerpt' );
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			$args = array(
 | |
| 				'meta_query' => array(
 | |
| 					array(
 | |
| 						'key'     => $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ),
 | |
| 						'value'   => '-1',
 | |
| 						'compare' => 'LIKE',
 | |
| 					),
 | |
| 				),
 | |
| 			);
 | |
| 
 | |
| 			$user_query = new WP_User_Query( $args );
 | |
| 			$users      = $user_query->get_results();
 | |
| 			if ( ! empty( $users ) ) {
 | |
| 				foreach ( $users as $user ) {
 | |
| 					$subscribed = get_user_meta( $user->ID, $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ), true );
 | |
| 					$old_cats   = explode( ',', $subscribed );
 | |
| 					$pos        = array_search( '-1', $old_cats, true );
 | |
| 					unset( $old_cats[ $pos ] );
 | |
| 					$cats = implode( ',', $old_cats );
 | |
| 					update_user_meta( $user->ID, $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ), $cats );
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		// upgrade old wpmu user meta data to new
 | |
| 		if ( true === $mysubscribe2->s2_mu ) {
 | |
| 			global $s2class_multisite, $wpdb;
 | |
| 			$s2class_multisite->namechange_subscribe2_widget();
 | |
| 			// loop through all users
 | |
| 			foreach ( $users as $user_ID ) {
 | |
| 				// get categories which the user is subscribed to (old ones)
 | |
| 				$categories = get_user_meta( $user_ID, 's2_subscribed', true );
 | |
| 				$categories = explode( ',', $categories );
 | |
| 				$format     = get_user_meta( $user_ID, 's2_format', true );
 | |
| 				$autosub    = get_user_meta( $user_ID, 's2_autosub', true );
 | |
| 
 | |
| 				// load blogs of user (only if we need them)
 | |
| 				$blogs = array();
 | |
| 				if ( count( $categories ) > 0 && ! in_array( '-1', $categories, true ) ) {
 | |
| 					$blogs = get_blogs_of_user( $user_ID, true );
 | |
| 				}
 | |
| 
 | |
| 				foreach ( $blogs as $blog ) {
 | |
| 					switch_to_blog( $blog->userblog_id );
 | |
| 
 | |
| 					$blog_categories       = (array) $wpdb->get_col( "SELECT term_id FROM $wpdb->term_taxonomy WHERE taxonomy = 'category'" );
 | |
| 					$subscribed_categories = array_intersect( $categories, $blog_categories );
 | |
| 					if ( ! empty( $subscribed_categories ) ) {
 | |
| 						foreach ( $subscribed_categories as $subscribed_category ) {
 | |
| 							update_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_cat' ) . $subscribed_category, $subscribed_category );
 | |
| 						}
 | |
| 						update_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ), implode( ',', $subscribed_categories ) );
 | |
| 					}
 | |
| 					if ( ! empty( $format ) ) {
 | |
| 						update_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_format' ), $format );
 | |
| 					}
 | |
| 					if ( ! empty( $autosub ) ) {
 | |
| 						update_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_autosub' ), $autosub );
 | |
| 					}
 | |
| 					restore_current_blog();
 | |
| 				}
 | |
| 
 | |
| 				// delete old user meta keys
 | |
| 				delete_user_meta( $user_ID, 's2_subscribed' );
 | |
| 				delete_user_meta( $user_ID, 's2_format' );
 | |
| 				delete_user_meta( $user_ID, 's2_autosub' );
 | |
| 				foreach ( $categories as $cat ) {
 | |
| 					delete_user_meta( $user_ID, 's2_cat' . $cat );
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade7_0() {
 | |
| 		global $mysubscribe2, $wpdb;
 | |
| 		if ( version_compare( $mysubscribe2->wp_release, '3.5', '<' ) ) {
 | |
| 			$users = $wpdb->get_col( $wpdb->prepare( "SELECT ID from $wpdb->users WHERE ID NOT IN (SELECT user_id from $wpdb->usermeta WHERE meta_key=%s", $mysubscribe2->get_usermeta_keyname( 's2_authors' ) ) );
 | |
| 			foreach ( $users as $user_ID ) {
 | |
| 				$check_authors = get_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_authors' ), true );
 | |
| 				if ( empty( $check_authors ) ) {
 | |
| 					update_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_authors' ), '' );
 | |
| 				}
 | |
| 			}
 | |
| 		} else {
 | |
| 			$args = array(
 | |
| 				'meta_query' => array(
 | |
| 					array(
 | |
| 						'key'     => $mysubscribe2->get_usermeta_keyname( 's2_authors' ),
 | |
| 						'compare' => 'NOT EXISTS',
 | |
| 					),
 | |
| 				),
 | |
| 			);
 | |
| 
 | |
| 			$user_query = new WP_User_Query( $args );
 | |
| 			$users      = $user_query->get_results();
 | |
| 			if ( ! empty( $users ) ) {
 | |
| 				foreach ( $users as $user ) {
 | |
| 					update_user_meta( $user->ID, $mysubscribe2->get_usermeta_keyname( 's2_authors' ), '' );
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade8_5() {
 | |
| 		global $mysubscribe2, $wpdb;
 | |
| 
 | |
| 		// include upgrade functions
 | |
| 		if ( ! function_exists( 'maybe_add_column' ) ) {
 | |
| 			require_once ABSPATH . 'wp-admin/install-helper.php';
 | |
| 		}
 | |
| 		maybe_add_column( $wpdb->subscribe2, 'time', "ALTER TABLE $wpdb->subscribe2 ADD time TIME DEFAULT '00:00:00' NOT NULL AFTER date" );
 | |
| 
 | |
| 		// update postmeta field to a protected name, from version 8.5
 | |
| 		$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_s2mail' WHERE meta_key = 's2mail'" );
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade8_6() {
 | |
| 		global $mysubscribe2, $wpdb;
 | |
| 
 | |
| 		// include upgrade functions
 | |
| 		if ( ! function_exists( 'maybe_add_column' ) ) {
 | |
| 			require_once ABSPATH . 'wp-admin/install-helper.php';
 | |
| 		}
 | |
| 		maybe_add_column( $wpdb->subscribe2, 'conf_date', "ALTER TABLE $wpdb->subscribe2 ADD conf_date DATE AFTER ip" );
 | |
| 		maybe_add_column( $wpdb->subscribe2, 'conf_time', "ALTER TABLE $wpdb->subscribe2 ADD conf_time TIME AFTER conf_date" );
 | |
| 		maybe_add_column( $wpdb->subscribe2, 'conf_ip', "ALTER TABLE $wpdb->subscribe2 ADD conf_ip char(64) AFTER conf_time" );
 | |
| 
 | |
| 		// remove unnecessary table data
 | |
| 		$wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key = 's2_cat'" );
 | |
| 
 | |
| 		$users = $wpdb->get_results(
 | |
| 			$wpdb->prepare(
 | |
| 				"SELECT ID FROM $wpdb->users INNER JOIN $wpdb->usermeta ON ( $wpdb->users.ID = $wpdb->usermeta.user_id) WHERE ( $wpdb->usermeta.meta_key = %s AND $wpdb->usermeta.meta_value LIKE %s )",
 | |
| 				$mysubscribe2->get_usermeta_keyname( 's2_subscribed' ),
 | |
| 				$wpdb->esc_like( ',' ) . '%'
 | |
| 			)
 | |
| 		);
 | |
| 		foreach ( $users as $user ) {
 | |
| 			// make sure we remove leading ',' from this setting
 | |
| 			$subscribed = get_user_meta( $user->ID, $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ), true );
 | |
| 			$old_cats   = explode( ',', $subscribed );
 | |
| 			unset( $old_cats[0] );
 | |
| 			$cats = implode( ',', $old_cats );
 | |
| 			update_user_meta( $user->ID, $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ), $cats );
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade8_8() {
 | |
| 		// to ensure compulsory category collects all users we need there to be s2_subscribed meta-keys for all users
 | |
| 		global $mysubscribe2, $wpdb;
 | |
| 
 | |
| 		if ( version_compare( $mysubscribe2->wp_release, '3.5', '<' ) ) {
 | |
| 			$all_registered = $mysubscribe2->get_all_registered( 'ID' );
 | |
| 			if ( ! empty( $all_registered ) ) {
 | |
| 				foreach ( $all_registered as $user_ID ) {
 | |
| 					$check_subscribed = get_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ), true );
 | |
| 					if ( empty( $check_subscribed ) ) {
 | |
| 						update_user_meta( $user_ID, $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ), '' );
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 		} else {
 | |
| 			$args = array(
 | |
| 				'meta_query' => array(
 | |
| 					array(
 | |
| 						'key'     => $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ),
 | |
| 						'compare' => 'NOT EXISTS',
 | |
| 					),
 | |
| 				),
 | |
| 			);
 | |
| 
 | |
| 			$user_query = new WP_User_Query( $args );
 | |
| 			$users      = $user_query->get_results();
 | |
| 			if ( ! empty( $users ) ) {
 | |
| 				foreach ( $users as $user ) {
 | |
| 					update_user_meta( $user->ID, $mysubscribe2->get_usermeta_keyname( 's2_subscribed' ), '' );
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		// check the time column again as the upgrade8_6() function contained a bug
 | |
| 		// include upgrade-functions for maybe_add_column;
 | |
| 		if ( ! function_exists( 'maybe_add_column' ) ) {
 | |
| 			require_once ABSPATH . 'wp-admin/install-helper.php';
 | |
| 		}
 | |
| 		maybe_add_column( $wpdb->subscribe2, 'time', "ALTER TABLE $wpdb->subscribe2 ADD time TIME DEFAULT '00:00:00' NOT NULL AFTER date" );
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade9_5() {
 | |
| 		global $mysubscribe2;
 | |
| 		if ( 'never' !== $mysubscribe2->subscribe2_options['email_freq'] ) {
 | |
| 			$mysubscribe2->subscribe2_options['last_s2cron'] = '';
 | |
| 			unset( $mysubscribe2->subscribe2_options['previous_s2cron'] );
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade10_14() {
 | |
| 		global $mysubscribe2;
 | |
| 		if ( ! isset( $mysubscribe2->subscribe2_options['frontend_form'] ) ) {
 | |
| 			$mysubscribe2->subscribe2_options['frontend_form'] = '0';
 | |
| 		}
 | |
| 		if ( ! isset( $mysubscribe2->subscribe2_options['dismiss_sender_warning'] ) ) {
 | |
| 			$mysubscribe2->subscribe2_options['dismiss_sender_warning'] = '0';
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade10_15() {
 | |
| 		global $mysubscribe2;
 | |
| 		if ( ! isset( $mysubscribe2->subscribe2_options['js_ip_updater'] ) ) {
 | |
| 			$mysubscribe2->subscribe2_options['js_ip_updater'] = '0';
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function upgrade10_23() {
 | |
| 		global $mysubscribe2;
 | |
| 		if ( isset( $mysubscribe2->subscribe2_options['entries'] ) ) {
 | |
| 			unset( $mysubscribe2->subscribe2_options['entries'] );
 | |
| 		}
 | |
| 	}
 | |
| }
 |