<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[BuddyPress][7904] trunk: Install default options at installation time and at upgrade to 2.0</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://buddypress.trac.wordpress.org/changeset/7904">7904</a></dd>
<dt>Author</dt> <dd>boonebgorges</dd>
<dt>Date</dt> <dd>2014-02-17 00:42:05 +0000 (Mon, 17 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Install default options at installation time and at upgrade to 2.0

When BuddyPress is installed, all basic config options should be saved to the
database, even when the setting is empty (0). This ensures that the options
will be pre-fetched by the first call to wp_load_alloptions() and stored in the
non-persistent cache, removing the necessity to make additional failed queries
to the wp_options table.

This changeset also includes logic to add missing default options to existing
default installations when upgrading to 2.0.

Fixes <a href="http://buddypress.trac.wordpress.org/ticket/5385">#5385</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkbpcorebpcoreoptionsphp">trunk/bp-core/bp-core-options.php</a></li>
<li><a href="#trunkbpcorebpcoreupdatephp">trunk/bp-core/bp-core-update.php</a></li>
<li><a href="#trunkbploaderphp">trunk/bp-loader.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkbpcorebpcoreoptionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-core/bp-core-options.php (7903 => 7904)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-core/bp-core-options.php        2014-02-17 00:35:26 UTC (rev 7903)
+++ trunk/bp-core/bp-core-options.php   2014-02-17 00:42:05 UTC (rev 7904)
</span><span class="lines">@@ -79,7 +79,20 @@
</span><span class="cx">          /** BuddyBar **********************************************************/
</span><span class="cx"> 
</span><span class="cx">          // Force the BuddyBar
</span><del>-               '_bp_force_buddybar'              => false
</del><ins>+                '_bp_force_buddybar'              => false,
+
+               /** Legacy theme *********************************************/
+
+               // Whether to register the bp-default themes directory
+               '_bp_retain_bp_default'           => false,
+
+               /** Widgets **************************************************/
+               'widget_bp_core_login_widget'                => false,
+               'widget_bp_core_members_widget'              => false,
+               'widget_bp_core_whos_online_widget'          => false,
+               'widget_bp_core_recently_active_widget'      => false,
+               'widget_bp_groups_widget'                    => false,
+               'widget_bp_messages_sitewide_notices_widget' => false,
</ins><span class="cx">   );
</span><span class="cx"> 
</span><span class="cx">  return apply_filters( 'bp_get_default_options', $options );
</span><span class="lines">@@ -88,11 +101,9 @@
</span><span class="cx"> /**
</span><span class="cx">  * Add default options when BuddyPress is first activated.
</span><span class="cx">  *
</span><del>- * Hooked to bp_activate, it is only called once when BuddyPress is activated.
- * This is non-destructive, so existing settings will not be overridden.
</del><ins>+ * Only called once when BuddyPress is activated.
+ * Non-destructive, so existing settings will not be overridden.
</ins><span class="cx">  *
</span><del>- * Currently unused.
- *
</del><span class="cx">  * @since BuddyPress (1.6.0)
</span><span class="cx">  *
</span><span class="cx">  * @uses bp_get_default_options() To get default options.
</span><span class="lines">@@ -105,8 +116,9 @@
</span><span class="cx">  $options = bp_get_default_options();
</span><span class="cx"> 
</span><span class="cx">  // Add default options
</span><del>-       foreach ( $options as $key => $value )
-               add_option( $key, $value );
</del><ins>+        foreach ( $options as $key => $value ) {
+               bp_add_option( $key, $value );
+       }
</ins><span class="cx"> 
</span><span class="cx">  // Allow previously activated plugins to append their own options.
</span><span class="cx">  do_action( 'bp_add_options' );
</span></span></pre></div>
<a id="trunkbpcorebpcoreupdatephp"></a>
<div class="modfile"><h4>Modified: trunk/bp-core/bp-core-update.php (7903 => 7904)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-core/bp-core-update.php 2014-02-17 00:35:26 UTC (rev 7903)
+++ trunk/bp-core/bp-core-update.php    2014-02-17 00:42:05 UTC (rev 7904)
</span><span class="lines">@@ -232,7 +232,7 @@
</span><span class="cx">          }
</span><span class="cx"> 
</span><span class="cx">          // 2.0
</span><del>-               if ( $raw_db_version < 7859 ) {
</del><ins>+                if ( $raw_db_version < 7892 ) {
</ins><span class="cx">                   bp_update_to_2_0();
</span><span class="cx">          }
</span><span class="cx">  }
</span><span class="lines">@@ -337,16 +337,18 @@
</span><span class="cx">  *
</span><span class="cx">  * - Ensure that the activity tables are installed, for last_activity storage.
</span><span class="cx">  * - Migrate last_activity data from usermeta to activity table
</span><ins>+ * - Add values for all BuddyPress options to the options table
</ins><span class="cx">  */
</span><span class="cx"> function bp_update_to_2_0() {
</span><span class="cx">  global $wpdb;
</span><span class="cx"> 
</span><del>-       // Install activity tables
</del><ins>+        /** Install activity tables for 'last_activity' **********************/
</ins><span class="cx">   bp_core_install_activity_streams();
</span><span class="cx"> 
</span><span class="cx">  $bp = buddypress();
</span><span class="cx"> 
</span><del>-       // Migrate data
</del><ins>+        /** Migrate 'last_activity' data *************************************/
+
</ins><span class="cx">   // The "NOT IN" clause prevents duplicates
</span><span class="cx">  $sql = "INSERT INTO {$bp->members->table_name_last_activity} (`user_id`, `component`, `type`, `date_recorded` ) (
</span><span class="cx">            SELECT user_id, '{$bp->members->id}' as component, 'last_activity' as type, meta_value AS date_recorded
</span><span class="lines">@@ -362,6 +364,9 @@
</span><span class="cx">  );";
</span><span class="cx"> 
</span><span class="cx">  $wpdb->query( $sql );
</span><ins>+
+       /** Add BP options to the options table ******************************/
+       bp_add_options();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><span class="lines">@@ -405,6 +410,9 @@
</span><span class="cx">  // Force refresh theme roots.
</span><span class="cx">  delete_site_transient( 'theme_roots' );
</span><span class="cx"> 
</span><ins>+       // Add options
+       bp_add_options();
+
</ins><span class="cx">   // Use as of (1.6)
</span><span class="cx">  do_action( 'bp_activation' );
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkbploaderphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-loader.php (7903 => 7904)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-loader.php      2014-02-17 00:35:26 UTC (rev 7903)
+++ trunk/bp-loader.php 2014-02-17 00:42:05 UTC (rev 7904)
</span><span class="lines">@@ -304,7 +304,7 @@
</span><span class="cx">          /** Versions **************************************************/
</span><span class="cx"> 
</span><span class="cx">          $this->version    = '2.0-alpha-7752';
</span><del>-               $this->db_version = 7859;
</del><ins>+                $this->db_version = 7892;
</ins><span class="cx"> 
</span><span class="cx">          /** Loading ***************************************************/
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>