web/wp-content/plugins/bbpress/includes/core/update.php
changeset 196 5e8dcbe22c24
child 204 09a1c134465b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/bbpress/includes/core/update.php	Tue Dec 04 18:43:10 2012 -0800
@@ -0,0 +1,291 @@
+<?php
+
+/**
+ * bbPress Updater
+ *
+ * @package bbPress
+ * @subpackage Updater
+ */
+
+// Exit if accessed directly
+if ( !defined( 'ABSPATH' ) ) exit;
+
+/**
+ * If there is no raw DB version, this is the first installation
+ *
+ * @since bbPress (r3764)
+ *
+ * @uses get_option()
+ * @uses bbp_get_db_version() To get bbPress's database version
+ * @return bool True if update, False if not
+ */
+function bbp_is_install() {
+	return ! bbp_get_db_version_raw();
+}
+
+/**
+ * Compare the bbPress version to the DB version to determine if updating
+ *
+ * @since bbPress (r3421)
+ *
+ * @uses get_option()
+ * @uses bbp_get_db_version() To get bbPress's database version
+ * @return bool True if update, False if not
+ */
+function bbp_is_update() {
+	$raw    = (int) bbp_get_db_version_raw();
+	$cur    = (int) bbp_get_db_version();
+	$retval = (bool) ( $raw < $cur );
+	return $retval;
+}
+
+/**
+ * Determine if bbPress is being activated
+ *
+ * Note that this function currently is not used in bbPress core and is here
+ * for third party plugins to use to check for bbPress activation.
+ *
+ * @since bbPress (r3421)
+ *
+ * @return bool True if activating bbPress, false if not
+ */
+function bbp_is_activation( $basename = '' ) {
+	$bbp = bbpress();
+
+	$action = false;
+	if ( ! empty( $_REQUEST['action'] ) && ( '-1' != $_REQUEST['action'] ) )
+		$action = $_REQUEST['action'];
+	elseif ( ! empty( $_REQUEST['action2'] ) && ( '-1' != $_REQUEST['action2'] ) )
+		$action = $_REQUEST['action2'];
+
+	// Bail if not activating
+	if ( empty( $action ) || !in_array( $action, array( 'activate', 'activate-selected' ) ) )
+		return false;
+
+	// The plugin(s) being activated
+	if ( $action == 'activate' ) {
+		$plugins = isset( $_GET['plugin'] ) ? array( $_GET['plugin'] ) : array();
+	} else {
+		$plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
+	}
+
+	// Set basename if empty
+	if ( empty( $basename ) && !empty( $bbp->basename ) )
+		$basename = $bbp->basename;
+
+	// Bail if no basename
+	if ( empty( $basename ) )
+		return false;
+
+	// Is bbPress being activated?
+	return in_array( $basename, $plugins );
+}
+
+/**
+ * Determine if bbPress is being deactivated
+ *
+ * @since bbPress (r3421)
+ * @return bool True if deactivating bbPress, false if not
+ */
+function bbp_is_deactivation( $basename = '' ) {
+	$bbp = bbpress();
+
+	$action = false;
+	if ( ! empty( $_REQUEST['action'] ) && ( '-1' != $_REQUEST['action'] ) )
+		$action = $_REQUEST['action'];
+	elseif ( ! empty( $_REQUEST['action2'] ) && ( '-1' != $_REQUEST['action2'] ) )
+		$action = $_REQUEST['action2'];
+
+	// Bail if not deactivating
+	if ( empty( $action ) || !in_array( $action, array( 'deactivate', 'deactivate-selected' ) ) )
+		return false;
+
+	// The plugin(s) being deactivated
+	if ( $action == 'deactivate' ) {
+		$plugins = isset( $_GET['plugin'] ) ? array( $_GET['plugin'] ) : array();
+	} else {
+		$plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
+	}
+
+	// Set basename if empty
+	if ( empty( $basename ) && !empty( $bbp->basename ) )
+		$basename = $bbp->basename;
+
+	// Bail if no basename
+	if ( empty( $basename ) )
+		return false;
+
+	// Is bbPress being deactivated?
+	return in_array( $basename, $plugins );
+}
+
+/**
+ * Update the DB to the latest version
+ *
+ * @since bbPress (r3421)
+ * @uses update_option()
+ * @uses bbp_get_db_version() To get bbPress's database version
+ */
+function bbp_version_bump() {
+	$db_version = bbp_get_db_version();
+	update_option( '_bbp_db_version', $db_version );
+}
+
+/**
+ * Setup the bbPress updater
+ *
+ * @since bbPress (r3419)
+ *
+ * @uses bbp_version_updater()
+ * @uses bbp_version_bump()
+ * @uses flush_rewrite_rules()
+ */
+function bbp_setup_updater() {
+
+	// Bail if no update needed
+	if ( ! bbp_is_update() )
+		return;
+
+	// Call the automated updater
+	bbp_version_updater();
+}
+
+/**
+ * Create a default forum, topic, and reply
+ *
+ * @since bbPress (r3767)
+ * @param array $args Array of arguments to override default values
+ */
+function bbp_create_initial_content( $args = array() ) {
+
+	$defaults = array(
+		'forum_parent'  => 0,
+		'forum_status'  => 'publish',
+		'forum_title'   => __( 'General',                                  'bbpress' ),
+		'forum_content' => __( 'General chit-chat',                        'bbpress' ),
+		'topic_title'   => __( 'Hello World!',                             'bbpress' ),
+		'topic_content' => __( 'I am the first topic in your new forums.', 'bbpress' ),
+		'reply_title'   => __( 'Re: Hello World!',                         'bbpress' ),
+		'reply_content' => __( 'Oh, and this is what a reply looks like.', 'bbpress' ),
+	);
+	$r = bbp_parse_args( $args, $defaults, 'create_initial_content' );
+	extract( $r );
+
+	// Create the initial forum
+	$forum_id = bbp_insert_forum( array(
+		'post_parent'  => $forum_parent,
+		'post_status'  => $forum_status,
+		'post_title'   => $forum_title,
+		'post_content' => $forum_content
+	) );
+
+	// Create the initial topic
+	$topic_id = bbp_insert_topic(
+		array(
+			'post_parent'  => $forum_id,
+			'post_title'   => $topic_title,
+			'post_content' => $topic_content
+		),
+		array( 'forum_id'  => $forum_id )
+	);
+
+	// Create the initial reply
+	$reply_id = bbp_insert_reply(
+		array(
+			'post_parent'  => $topic_id,
+			'post_title'   => $reply_title,
+			'post_content' => $reply_content
+		),
+		array(
+			'forum_id'     => $forum_id,
+			'topic_id'     => $topic_id
+		)
+	);
+
+	return array(
+		'forum_id' => $forum_id,
+		'topic_id' => $topic_id,
+		'reply_id' => $reply_id
+	);
+}
+
+/**
+ * bbPress's version updater looks at what the current database version is, and
+ * runs whatever other code is needed.
+ *
+ * This is most-often used when the data schema changes, but should also be used
+ * to correct issues with bbPress meta-data silently on software update.
+ *
+ * @since bbPress (r4104)
+ */
+function bbp_version_updater() {
+
+	// Get the raw database version
+	$raw_db_version = (int) bbp_get_db_version_raw();
+
+	/** 2.0 Branch ************************************************************/
+
+	// 2.0, 2.0.1, 2.0.2, 2.0.3
+	if ( $raw_db_version < 200 ) {
+		// Do nothing
+	}
+
+	/** 2.1 Branch ************************************************************/
+
+	// 2.1, 2.1.1
+	if ( $raw_db_version < 211 ) {
+
+		/**
+		 * Repair private and hidden forum data
+		 *
+		 * @link http://bbpress.trac.wordpress.org/ticket/1891
+		 */
+		bbp_admin_repair_forum_visibility();
+	}
+
+	/** 2.2 Branch ************************************************************/
+
+	// 2.2
+	if ( $raw_db_version < 220 ) {
+
+		// Remove bbPress 1.1 roles (BuddyPress)
+		remove_role( 'member'    );
+		remove_role( 'inactive'  );
+		remove_role( 'blocked'   );
+		remove_role( 'moderator' );
+		remove_role( 'keymaster' );
+
+		// Refresh capabilities
+		bbp_remove_caps();
+	}
+
+	/** All done! *************************************************************/
+
+	// Bump the version
+	bbp_version_bump();
+
+	// Delete rewrite rules to force a flush
+	bbp_delete_rewrite_rules();
+}
+
+/**
+ * Redirect user to bbPress's What's New page on activation
+ *
+ * @since bbPress (r4389)
+ *
+ * @internal Used internally to redirect bbPress to the about page on activation
+ *
+ * @uses is_network_admin() To bail if being network activated
+ * @uses set_transient() To drop the activation transient for 30 seconds
+ *
+ * @return If network admin or bulk activation
+ */
+function bbp_add_activation_redirect() {
+
+	// Bail if activating from network, or bulk
+	if ( is_network_admin() || isset( $_GET['activate-multi'] ) )
+		return;
+
+	// Add the transient to redirect
+    set_transient( '_bbp_activation_redirect', true, 30 );
+}