W3 Total Cache - Version 0.9.1

Version Description

  • Improved Rackspace Cloud Files implementation
  • Improved frequently asked questions implementation to support incomplete PHP distributions
  • Fixed 500 Internal Server Error when upgrading with Disk enhanced mode enabled
  • Fixed notification issues with preview mode
  • Fixed an issue with fatal errors with minify and memcache(d) caching engine
Download this release

Release Info

Developer fredericktownes
Plugin Icon 128x128 W3 Total Cache
Version 0.9.1
Comparing to
See all releases

Code changes from version 0.9.0 to 0.9.1

inc/define.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- define('W3TC_VERSION', '0.9b');
4
  define('W3TC_POWERED_BY', 'W3 Total Cache/' . W3TC_VERSION);
5
  define('W3TC_EMAIL', 'w3tc@w3-edge.com');
6
  define('W3TC_PAYPAL_URL', 'https://www.paypal.com/cgi-bin/webscr');
@@ -100,11 +100,7 @@ function w3_writable_error($path)
100
  $reactivate_button = sprintf('<input type="button" value="re-activate plugin" onclick="top.location.href = \'%s\'" />', addslashes($activate_url));
101
 
102
  if (w3_check_open_basedir($path)) {
103
- if (file_exists($path)) {
104
- $error = sprintf('<strong>%s</strong> is not write-able, please run following command:<br /><strong style="color: #f00;">chmod 777 %s</strong><br />then %s.', $path, $path, $reactivate_button);
105
- } else {
106
- $error = sprintf('<strong>%s</strong> could not be created, please run following command:<br /><strong style="color: #f00;">chmod 777 %s</strong><br />then %s.', $path, dirname($path), $reactivate_button);
107
- }
108
  } else {
109
  $error = sprintf('<strong>%s</strong> could not be created, <strong>open_basedir</strong> restriction in effect, please check your php.ini settings:<br /><strong style="color: #f00;">open_basedir = "%s"</strong><br />then %s.', $path, ini_get('open_basedir'), $reactivate_button);
110
  }
1
  <?php
2
 
3
+ define('W3TC_VERSION', '0.9.1');
4
  define('W3TC_POWERED_BY', 'W3 Total Cache/' . W3TC_VERSION);
5
  define('W3TC_EMAIL', 'w3tc@w3-edge.com');
6
  define('W3TC_PAYPAL_URL', 'https://www.paypal.com/cgi-bin/webscr');
100
  $reactivate_button = sprintf('<input type="button" value="re-activate plugin" onclick="top.location.href = \'%s\'" />', addslashes($activate_url));
101
 
102
  if (w3_check_open_basedir($path)) {
103
+ $error = sprintf('<strong>%s</strong> could not be created, please run following command:<br /><strong style="color: #f00;">chmod 777 %s</strong><br />then %s.', $path, (file_exists($path) ? $path : dirname($path)), $reactivate_button);
 
 
 
 
104
  } else {
105
  $error = sprintf('<strong>%s</strong> could not be created, <strong>open_basedir</strong> restriction in effect, please check your php.ini settings:<br /><strong style="color: #f00;">open_basedir = "%s"</strong><br />then %s.', $path, ini_get('open_basedir'), $reactivate_button);
106
  }
inc/email/support_request.phtml CHANGED
@@ -7,6 +7,7 @@
7
  URL: <a href="<?php echo htmlspecialchars($url); ?>"><?php echo htmlspecialchars($url); ?></a><br />
8
  Name: <?php echo htmlspecialchars($name); ?><br />
9
  E-Mail: <a href="mailto:<?php echo htmlspecialchars($email); ?>"><?php echo htmlspecialchars($email); ?></a><br />
 
10
  Phone: <?php echo htmlspecialchars($phone); ?><br />
11
  <?php if ($forum_url): ?>
12
  Forum Topic URL: <a href="<?php echo htmlspecialchars($forum_url); ?>"><?php echo htmlspecialchars($forum_url); ?></a><br />
7
  URL: <a href="<?php echo htmlspecialchars($url); ?>"><?php echo htmlspecialchars($url); ?></a><br />
8
  Name: <?php echo htmlspecialchars($name); ?><br />
9
  E-Mail: <a href="mailto:<?php echo htmlspecialchars($email); ?>"><?php echo htmlspecialchars($email); ?></a><br />
10
+ Twitter: <a href="http://twitter.com/<?php echo htmlspecialchars($twitter); ?>"><?php echo htmlspecialchars($twitter); ?></a><br />
11
  Phone: <?php echo htmlspecialchars($phone); ?><br />
12
  <?php if ($forum_url): ?>
13
  Forum Topic URL: <a href="<?php echo htmlspecialchars($forum_url); ?>"><?php echo htmlspecialchars($forum_url); ?></a><br />
inc/options/cdn/rscf.phtml CHANGED
@@ -21,7 +21,7 @@
21
  <tr>
22
  <th><label for="cdn_rscf_id">Replace site's hostname with:</label></th>
23
  <td>
24
- <input id="cdn_rscf_id" type="text" name="cdn.rscf.id" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.rscf.id')); ?>" size="18" style="text-align:right;" />.cdn.cloudfiles.rackspacecloud.com or CNAME:
25
  <?php $cnames = $this->_config->get_array('cdn.rscf.cname'); include W3TC_DIR . '/inc/options/cdn/common/cnames.phtml'; ?>
26
  </td>
27
  </tr>
21
  <tr>
22
  <th><label for="cdn_rscf_id">Replace site's hostname with:</label></th>
23
  <td>
24
+ <input id="cdn_rscf_id" type="text" name="cdn.rscf.id" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.rscf.id')); ?>" size="18" style="text-align:right;" />.cloudfiles.rackspacecloud.com or CNAME:
25
  <?php $cnames = $this->_config->get_array('cdn.rscf.cname'); include W3TC_DIR . '/inc/options/cdn/common/cnames.phtml'; ?>
26
  </td>
27
  </tr>
inc/options/common/help.phtml CHANGED
@@ -1,11 +1,11 @@
1
  <div id="w3tc-help">
2
  <p>Request professional <a href="admin.php?page=w3tc_support" style="color: red;"><strong>support</strong></a> or troubleshoot issues using the common questions below:</p>
3
 
4
- <?php foreach ($columns as $questions): ?>
5
  <ul>
6
- <?php foreach ($questions as $question): ?>
7
  <li>
8
- <a href="admin.php?page=w3tc_faq#q<?php echo ++$q; ?>"><?php echo $question; ?></a>
9
  </li>
10
  <?php endforeach; ?>
11
  </ul>
1
  <div id="w3tc-help">
2
  <p>Request professional <a href="admin.php?page=w3tc_support" style="color: red;"><strong>support</strong></a> or troubleshoot issues using the common questions below:</p>
3
 
4
+ <?php foreach ($columns as $entries): ?>
5
  <ul>
6
+ <?php foreach ($entries as $entry): ?>
7
  <li>
8
+ <a href="admin.php?page=w3tc_faq#q<?php echo $entry['index']; ?>"><?php echo $entry['question']; ?></a>
9
  </li>
10
  <?php endforeach; ?>
11
  </ul>
inc/options/faq.phtml CHANGED
@@ -4,13 +4,13 @@
4
 
5
  <div id="toc">
6
  <ul>
7
- <?php $q = 1; foreach ($xpath->query('//faqs/section') as $section): ?>
8
  <li class="col">
9
- <h5><?php echo strtoupper($section->attributes->getNamedItem('name')->nodeValue); ?>:</h5>
10
  <ul>
11
- <?php foreach ($xpath->query('./entry/question', $section) as $entry): ?>
12
- <li><a href="#q<?php echo $q; ?>"><?php echo $entry->nodeValue; ?></a></li>
13
- <?php $q++; endforeach; ?>
14
  </ul>
15
  </li>
16
  <?php endforeach; ?>
@@ -18,11 +18,13 @@
18
  </div>
19
  <div id="qa">
20
  <hr />
21
- <?php $q = 1; foreach ($xpath->query('//faqs/section/entry') as $entry): ?>
22
- <p id="q<?php echo $q; ?>"><strong><?php echo $xpath->query('question', $entry)->item(0)->nodeValue; ?></strong></p>
23
- <?php echo $xpath->query('answer', $entry)->item(0)->nodeValue; ?>
24
- <p align="right"><a href="#toc">back to top</a></p>
25
- <?php $q++; endforeach; ?>
 
 
26
  </div>
27
 
28
  <?php include W3TC_DIR . '/inc/options/common/footer.phtml'; ?>
4
 
5
  <div id="toc">
6
  <ul>
7
+ <?php foreach ($faq as $section => $entries): ?>
8
  <li class="col">
9
+ <h5><?php echo strtoupper($section); ?>:</h5>
10
  <ul>
11
+ <?php foreach ($entries as $entry): ?>
12
+ <li><a href="#q<?php echo $entry['index']; ?>"><?php echo $entry['question']; ?></a></li>
13
+ <?php endforeach; ?>
14
  </ul>
15
  </li>
16
  <?php endforeach; ?>
18
  </div>
19
  <div id="qa">
20
  <hr />
21
+ <?php foreach ($faq as $section => $entries): ?>
22
+ <?php foreach ($entries as $entry): ?>
23
+ <p id="q<?php echo $entry['index']; ?>"><strong><?php echo $entry['question']; ?></strong></p>
24
+ <?php echo $entry['answer']; ?>
25
+ <p align="right"><a href="#toc">back to top</a></p>
26
+ <?php endforeach; ?>
27
+ <?php endforeach; ?>
28
  </div>
29
 
30
  <?php include W3TC_DIR . '/inc/options/common/footer.phtml'; ?>
inc/options/support/bug_report.phtml CHANGED
@@ -18,6 +18,10 @@
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
 
 
 
 
21
  <tr>
22
  <th><label for="support_subject">Subject:</label></th>
23
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
21
+ <tr>
22
+ <th><label for="support_twitter">Twitter ID:</label></th>
23
+ <td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
24
+ </tr>
25
  <tr>
26
  <th><label for="support_subject">Subject:</label></th>
27
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
inc/options/support/email_support.phtml CHANGED
@@ -18,6 +18,10 @@
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
 
 
 
 
21
  <tr>
22
  <th><label for="support_subject">Subject:</label></th>
23
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
21
+ <tr>
22
+ <th><label for="support_twitter">Twitter ID:</label></th>
23
+ <td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
24
+ </tr>
25
  <tr>
26
  <th><label for="support_subject">Subject:</label></th>
27
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
inc/options/support/linux_config.phtml CHANGED
@@ -18,6 +18,10 @@
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
 
 
 
 
21
  <tr>
22
  <th><label for="support_subject">Subject:</label></th>
23
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
21
+ <tr>
22
+ <th><label for="support_twitter">Twitter ID:</label></th>
23
+ <td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
24
+ </tr>
25
  <tr>
26
  <th><label for="support_subject">Subject:</label></th>
27
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
inc/options/support/new_feature.phtml CHANGED
@@ -18,6 +18,10 @@
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
 
 
 
 
21
  <tr>
22
  <th><label for="support_subject">Subject:</label></th>
23
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
21
+ <tr>
22
+ <th><label for="support_twitter">Twitter ID:</label></th>
23
+ <td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
24
+ </tr>
25
  <tr>
26
  <th><label for="support_subject">Subject:</label></th>
27
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
inc/options/support/phone_support.phtml CHANGED
@@ -18,6 +18,10 @@
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
 
 
 
 
21
  <tr>
22
  <th><label for="support_phone">Phone:</label></th>
23
  <td><input id="support_phone" type="text" name="phone" value="<?php echo htmlspecialchars($phone); ?>" size="80" /></td>
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
21
+ <tr>
22
+ <th><label for="support_twitter">Twitter ID:</label></th>
23
+ <td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
24
+ </tr>
25
  <tr>
26
  <th><label for="support_phone">Phone:</label></th>
27
  <td><input id="support_phone" type="text" name="phone" value="<?php echo htmlspecialchars($phone); ?>" size="80" /></td>
inc/options/support/plugin_config.phtml CHANGED
@@ -18,6 +18,10 @@
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
 
 
 
 
21
  <tr>
22
  <th><label for="support_subject">Subject:</label></th>
23
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
21
+ <tr>
22
+ <th><label for="support_twitter">Twitter ID:</label></th>
23
+ <td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
24
+ </tr>
25
  <tr>
26
  <th><label for="support_subject">Subject:</label></th>
27
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
inc/options/support/theme_config.phtml CHANGED
@@ -18,6 +18,10 @@
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
 
 
 
 
21
  <tr>
22
  <th><label for="support_subject">Subject:</label></th>
23
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
18
  <th><label for="support_email">E-Mail:</label></th>
19
  <td><input id="support_email" type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="80" /></td>
20
  </tr>
21
+ <tr>
22
+ <th><label for="support_twitter">Twitter ID:</label></th>
23
+ <td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
24
+ </tr>
25
  <tr>
26
  <th><label for="support_subject">Subject:</label></th>
27
  <td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
inc/options/support_select.phtml CHANGED
@@ -19,7 +19,7 @@
19
  <?php foreach ($this->_request_groups as $_request_group => $_request_types): ?>
20
  <optgroup label="<?php echo htmlspecialchars($_request_group); ?>:">
21
  <?php foreach ($_request_types as $_request_type): ?>
22
- <option value="<?php echo $_request_type; ?>"<?php if ($request_type == $_request_type): ?><?php endif; ?>><?php echo htmlspecialchars($this->_request_types[$_request_type]); ?></option>
23
  <?php endforeach; ?>
24
  </optgroup>
25
  <?php endforeach; ?>
19
  <?php foreach ($this->_request_groups as $_request_group => $_request_types): ?>
20
  <optgroup label="<?php echo htmlspecialchars($_request_group); ?>:">
21
  <?php foreach ($_request_types as $_request_type): ?>
22
+ <option value="<?php echo $_request_type; ?>"><?php echo htmlspecialchars($this->_request_types[$_request_type]); ?></option>
23
  <?php endforeach; ?>
24
  </optgroup>
25
  <?php endforeach; ?>
lib/Minify/Minify/Cache/Memcache.php CHANGED
@@ -47,7 +47,9 @@ class Minify_Cache_Memcache {
47
  */
48
  public function store($id, $data)
49
  {
50
- return $this->_mc->set($id, "{$_SERVER['REQUEST_TIME']}|{$data}", 0, $this->_exp);
 
 
51
  }
52
 
53
 
47
  */
48
  public function store($id, $data)
49
  {
50
+ $data = "{$_SERVER['REQUEST_TIME']}|{$data}";
51
+
52
+ return $this->_mc->set($id, $data, 0, $this->_exp);
53
  }
54
 
55
 
lib/W3/Cdn/Rscf.php CHANGED
@@ -237,7 +237,7 @@ class W3_Cdn_Rscf extends W3_Cdn_Base
237
  if (!empty($this->_config['cname'])) {
238
  return (array) $this->_config['cname'];
239
  } elseif (!empty($this->_config['id'])) {
240
- $domain = sprintf('%s.cdn.cloudfiles.rackspacecloud.com', $this->_config['id']);
241
 
242
  return array(
243
  $domain
@@ -295,7 +295,7 @@ class W3_Cdn_Rscf extends W3_Cdn_Base
295
 
296
  $matches = null;
297
 
298
- if (preg_match('~^https?://(.+)\.cdn\.cloudfiles\.rackspacecloud\.com$~', $container->cdn_uri, $matches)) {
299
  $container_id = $matches[1];
300
  }
301
 
237
  if (!empty($this->_config['cname'])) {
238
  return (array) $this->_config['cname'];
239
  } elseif (!empty($this->_config['id'])) {
240
+ $domain = sprintf('%s.cloudfiles.rackspacecloud.com', $this->_config['id']);
241
 
242
  return array(
243
  $domain
295
 
296
  $matches = null;
297
 
298
+ if (preg_match('~^https?://(.+)\.cloudfiles\.rackspacecloud\.com$~', $container->cdn_uri, $matches)) {
299
  $container_id = $matches[1];
300
  }
301
 
lib/W3/Config.php CHANGED
@@ -183,7 +183,7 @@ class W3_Config
183
  'browsercache.other.w3tc' => 'boolean',
184
 
185
  'mobile.enabled' => 'boolean',
186
- 'mobile.groups' => 'array',
187
 
188
  'common.support' => 'string',
189
  'common.install' => 'integer',
@@ -419,7 +419,7 @@ class W3_Config
419
  'browsercache.other.w3tc' => true,
420
 
421
  'mobile.enabled' => true,
422
- 'mobile.groups' => array(
423
  'high' => array(
424
  'theme' => '',
425
  'enabled' => true,
183
  'browsercache.other.w3tc' => 'boolean',
184
 
185
  'mobile.enabled' => 'boolean',
186
+ 'mobile.rgroups' => 'array',
187
 
188
  'common.support' => 'string',
189
  'common.install' => 'integer',
419
  'browsercache.other.w3tc' => true,
420
 
421
  'mobile.enabled' => true,
422
+ 'mobile.rgroups' => array(
423
  'high' => array(
424
  'theme' => '',
425
  'enabled' => true,
lib/W3/Mobile.php CHANGED
@@ -23,7 +23,7 @@ class W3_Mobile
23
  require_once W3TC_LIB_W3_DIR . '/Config.php';
24
  $config = & W3_Config::instance();
25
 
26
- $this->groups = $config->get_array('mobile.groups');
27
  }
28
 
29
  /**
23
  require_once W3TC_LIB_W3_DIR . '/Config.php';
24
  $config = & W3_Config::instance();
25
 
26
+ $this->groups = $config->get_array('mobile.rgroups');
27
  }
28
 
29
  /**
lib/W3/Plugin/PgCache.php CHANGED
@@ -592,7 +592,7 @@ class W3_Plugin_PgCache extends W3_Plugin
592
  * Check mobile groups
593
  */
594
  if ($this->_config->get_boolean('mobile.enabled')) {
595
- $mobile_groups = array_reverse($this->_config->get_array('mobile.groups'));
596
 
597
  foreach ($mobile_groups as $mobile_group => $mobile_config) {
598
  $mobile_agents = (isset($mobile_config['agents']) ? (array) $mobile_config['agents'] : '');
@@ -625,7 +625,7 @@ class W3_Plugin_PgCache extends W3_Plugin
625
  * Check for mobile redirect
626
  */
627
  if ($this->_config->get_boolean('mobile.enabled')) {
628
- $mobile_groups = $this->_config->get_array('mobile.groups');
629
 
630
  foreach ($mobile_groups as $mobile_group => $mobile_config) {
631
  $mobile_agents = (isset($mobile_config['agents']) ? (array) $mobile_config['agents'] : '');
592
  * Check mobile groups
593
  */
594
  if ($this->_config->get_boolean('mobile.enabled')) {
595
+ $mobile_groups = array_reverse($this->_config->get_array('mobile.rgroups'));
596
 
597
  foreach ($mobile_groups as $mobile_group => $mobile_config) {
598
  $mobile_agents = (isset($mobile_config['agents']) ? (array) $mobile_config['agents'] : '');
625
  * Check for mobile redirect
626
  */
627
  if ($this->_config->get_boolean('mobile.enabled')) {
628
+ $mobile_groups = $this->_config->get_array('mobile.rgroups');
629
 
630
  foreach ($mobile_groups as $mobile_group => $mobile_config) {
631
  $mobile_agents = (isset($mobile_config['agents']) ? (array) $mobile_config['agents'] : '');
lib/W3/Plugin/TotalCache.php CHANGED
@@ -957,38 +957,27 @@ class W3_Plugin_TotalCache extends W3_Plugin
957
 
958
  /**
959
  * Contextual help list filter
 
960
  * @param string $list
961
  * @return string
962
  */
963
  function contextual_help_list($list)
964
  {
965
- $faq_file = W3TC_DIR . '/inc/options/faq.xml';
966
-
967
- $dom = new DOMDocument();
968
- $dom->preserveWhiteSpace = true;
969
- $dom->load($faq_file);
970
-
971
- $xpath = new DOMXPath($dom);
972
-
973
- $q = $xpath->query('//faqs/section[@name="General"]/entry/question')->length;
974
 
975
- $questions = array();
976
-
977
- foreach ($xpath->query('//faqs/section[@name="Usage"]/entry/question') as $node) {
978
- $questions[] = $node->nodeValue;
 
 
 
 
 
 
 
979
  }
980
 
981
- $columns = array_chunk($questions, ceil(count($questions) / 3));
982
-
983
- ob_start();
984
- include W3TC_DIR . '/inc/options/common/help.phtml';
985
- $help = ob_get_contents();
986
- ob_end_clean();
987
-
988
- $hook = get_plugin_page_hookname($this->_page, 'w3tc_general');
989
-
990
- $list[$hook] = $list[$hook] . $help;
991
-
992
  return $list;
993
  }
994
 
@@ -1057,16 +1046,22 @@ class W3_Plugin_TotalCache extends W3_Plugin
1057
  $document_root = w3_get_document_root();
1058
  $config_path = (w3_is_preview_config() ? W3TC_CONFIG_PREVIEW_PATH : W3TC_CONFIG_PATH);
1059
 
 
 
 
 
 
 
1060
  $error_messages = array(
1061
- 'config_save' => sprintf('The settings could not be saved because the config file is not write-able. Please run <strong>chmod 777 %s</strong> to resolve this issue.', file_exists($config_path) ? $config_path : WP_CONTENT_DIR),
1062
  'fancy_permalinks_disabled_pgcache' => sprintf('Fancy permalinks are disabled. Please %s it first, then re-attempt to enabling the enhanced disk mode.', $this->button_link('enable', 'options-permalink.php')),
1063
  'fancy_permalinks_disabled_browsercache' => sprintf('Fancy permalinks are disabled. Please %s it first, then re-attempt to enabling the \'Do not process 404 errors for static objects with WordPress\'.', $this->button_link('enable', 'options-permalink.php')),
1064
- 'pgcache_write_rules_core' => sprintf('Either your .htaccess file does not exist or cannot be modified (%s/.htaccess). Please run <strong>chmod 777 %s/.htaccess</strong> to resolve this issue.', $home_root, $home_root),
1065
- 'pgcache_write_rules_cache' => sprintf('The page cache rules (%s/.htaccess) could not be modified. Please run <strong>chmod 777 %s/.htaccess</strong> to resolve this issue.', W3TC_CACHE_FILE_PGCACHE_DIR, W3TC_CACHE_FILE_PGCACHE_DIR),
1066
- 'browsercache_write_rules_cache' => sprintf('The browser cache rules (%s/.htaccess) could not be modified. Please run <strong>chmod 777 %s/.htaccess</strong> to resolve this issue.', $home_root, $home_root),
1067
- 'browsercache_write_rules_no404wp' => sprintf('The browser cache rules (%s/.htaccess) could not be modified. Please run <strong>chmod 777 %s/.htaccess</strong> to resolve this issue.', $document_root, $document_root),
1068
  'browsercache_write_rules_cdn' => sprintf('The browser cache rules for CDN could not be modified. Please check CDN settings.'),
1069
- 'minify_write_rules' => sprintf('The minify cache rules (%s/.htaccess) could not be modified. Please run <strong>chmod 777 %s/.htaccess</strong> to resolve this issue.', W3TC_CACHE_FILE_MINIFY_DIR, W3TC_CACHE_FILE_MINIFY_DIR),
1070
  'support_request_type' => 'Please select request type.',
1071
  'support_request_url' => 'Please enter the address of your site in the site <acronym title="Uniform Resource Locator">URL</acronym> field.',
1072
  'support_request_name' => 'Please enter your name in the Name field',
@@ -1082,9 +1077,11 @@ class W3_Plugin_TotalCache extends W3_Plugin
1082
  'support_request' => 'Unable to send your support request.',
1083
  'config_import_no_file' => 'Please select config file.',
1084
  'config_import_upload' => 'Unable to upload config file.',
1085
- 'config_import_import' => 'Unable to import config file.',
1086
- 'config_reset' => 'Unable to restore default settings.',
1087
- 'preview_deploy' => 'Unable to deploy preview settings.',
 
 
1088
  'cdn_purge_attachment' => 'Unable to purge attachment.',
1089
  'pgcache_purge_post' => 'Unable to purge post.'
1090
  );
@@ -1107,6 +1104,8 @@ class W3_Plugin_TotalCache extends W3_Plugin
1107
  'support_request' => 'Your support request has been successfully sent.',
1108
  'config_import' => 'Settings successfully imported.',
1109
  'config_reset' => 'Settings successfully restored.',
 
 
1110
  'preview_deploy' => 'Preview settings successfully deployed.',
1111
  'cdn_purge_attachment' => 'Attachment successfully purged.',
1112
  'pgcache_purge_post' => 'Post successfully purged.'
@@ -1430,15 +1429,19 @@ class W3_Plugin_TotalCache extends W3_Plugin
1430
  $w3_plugin_pgcache = & W3_Plugin_PgCache::instance();
1431
 
1432
  if ($this->_config->get_boolean('notes.pgcache_rules_core') && !$w3_plugin_pgcache->check_rules_core()) {
 
 
1433
  if (w3_is_multisite()) {
1434
- $this->_errors[] = sprintf('Enhanced mode page cache is not operational. Your .htaccess rules could not be modified. Please verify <strong>%s/.htaccess</strong> has the following rules: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> %s', w3_get_home_root(), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_pgcache->generate_rules_core()), $this->button_hide_note('Hide this message', 'pgcache_rules_core'));
1435
  } else {
1436
- $this->_errors[] = sprintf('You\'ve selected disk caching with enhanced mode however the .htaccess file is not properly configured. Please run <strong>chmod 777 %s/.htaccess</strong>, then %s. To manually modify your server configuration for enhanced mode append the following code: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> and %s.', w3_get_home_root(), $this->button_link('try again', sprintf('admin.php?page=%s&pgcache_write_rules_core', $this->_page)), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_pgcache->generate_rules_core()), $this->button_hide_note('hide this message', 'pgcache_rules_core'));
1437
  }
1438
  }
1439
 
1440
  if ($this->_config->get_boolean('notes.pgcache_rules_cache') && !$w3_plugin_pgcache->check_rules_cache()) {
1441
- $this->_errors[] = sprintf('You\'ve selected disk caching with enhanced mode however the .htaccess file is not properly configured. Please run <strong>chmod 777 %s/.htaccess</strong>, then %s. To manually modify your server configuration for enhanced mode append the following code: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> and %s.', W3TC_CACHE_FILE_PGCACHE_DIR, $this->button_link('try again', sprintf('admin.php?page=%s&pgcache_write_rules_cache', $this->_page)), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_pgcache->generate_rules_cache()), $this->button_hide_note('hide this message', 'pgcache_rules_cache'));
 
 
1442
  }
1443
  break;
1444
 
@@ -1462,7 +1465,9 @@ class W3_Plugin_TotalCache extends W3_Plugin
1462
  $w3_plugin_minify = & W3_Plugin_Minify::instance();
1463
 
1464
  if ($this->_config->get_boolean('notes.minify_rules') && !$w3_plugin_minify->check_rules()) {
1465
- $this->_errors[] = sprintf('The "Rewrite URL Structure" feature, requires rewrite rules be present. Please run <strong>chmod 777 %s/.htaccess</strong>, then %s. To manually modify your server configuration for minify append the following code: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> and %s.', W3TC_CACHE_FILE_MINIFY_DIR, $this->button_link('try again', sprintf('admin.php?page=%s&minify_write_rules', $this->_page)), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_minify->generate_rules()), $this->button_hide_note('hide this message', 'minify_rules'));
 
 
1466
  }
1467
  }
1468
 
@@ -1513,18 +1518,22 @@ class W3_Plugin_TotalCache extends W3_Plugin
1513
  $w3_plugin_browsercache = & W3_Plugin_BrowserCache::instance();
1514
 
1515
  if ($this->_config->get_boolean('notes.browsercache_rules_cache') && !$w3_plugin_browsercache->check_rules_cache()) {
 
 
1516
  if (w3_is_multisite()) {
1517
- $this->_errors[] = sprintf('Browser Cache feature is not operational. Your .htaccess rules could not be modified. Please verify <strong>%s/.htaccess</strong> has the following rules: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> %s', w3_get_document_root(), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_browsercache->generate_rules_cache()), $this->button_hide_note('Hide this message', 'browsercache_rules_cache'));
1518
  } else {
1519
- $this->_errors[] = sprintf('You\'ve enabled Browser Cache feature however the .htaccess file is not properly configured. Please run <strong>chmod 777 %s/.htaccess</strong>, then %s. To manually modify these settings use the following code: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> and %s.', w3_get_document_root(), $this->button_link('try again', sprintf('admin.php?page=%s&browsercache_write_rules_cache', $this->_page)), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_browsercache->generate_rules_cache()), $this->button_hide_note('hide this message', 'browsercache_rules_cache'));
1520
  }
1521
  }
1522
 
1523
  if ($this->_config->get_boolean('notes.browsercache_rules_no404wp') && $this->_config->get_boolean('browsercache.no404wp') && !$w3_plugin_browsercache->check_rules_no404wp()) {
 
 
1524
  if (w3_is_multisite()) {
1525
- $this->_errors[] = sprintf('Browser Cache feature is not operational. Your .htaccess rules could not be modified. Please verify <strong>%s/.htaccess</strong> has the following rules: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> %s', w3_get_home_root(), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_browsercache->generate_rules_no404wp()), $this->button_hide_note('Hide this message', 'browsercache_rules_no404wp'));
1526
  } else {
1527
- $this->_errors[] = sprintf('You\'ve enabled Browser Cache feature however the .htaccess file is not properly configured. Please run <strong>chmod 777 %s/.htaccess</strong>, then %s. To manually modify these settings use the following code: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> and %s.', w3_get_home_root(), $this->button_link('try again', sprintf('admin.php?page=%s&browsercache_write_rules_no404wp', $this->_page)), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_browsercache->generate_rules_no404wp()), $this->button_hide_note('hide this message', 'browsercache_rules_no404wp'));
1528
  }
1529
  }
1530
  }
@@ -1835,7 +1844,7 @@ class W3_Plugin_TotalCache extends W3_Plugin
1835
  function options_mobile()
1836
  {
1837
  $mobile_enabled = $this->_config->get_boolean('mobile.enabled');
1838
- $groups = $this->_config->get_array('mobile.groups');
1839
 
1840
  require_once W3TC_LIB_W3_DIR . '/Mobile.php';
1841
  $w3_mobile = & W3_Mobile::instance();
@@ -1864,13 +1873,7 @@ class W3_Plugin_TotalCache extends W3_Plugin
1864
  */
1865
  function options_faq()
1866
  {
1867
- $faq_file = W3TC_DIR . '/inc/options/faq.xml';
1868
-
1869
- $dom = new DOMDocument();
1870
- $dom->preserveWhiteSpace = true;
1871
- $dom->load($faq_file);
1872
-
1873
- $xpath = new DOMXPath($dom);
1874
 
1875
  include W3TC_DIR . '/inc/options/faq.phtml';
1876
  }
@@ -1914,10 +1917,12 @@ class W3_Plugin_TotalCache extends W3_Plugin
1914
  $url = W3_Request::get_string('url', w3_get_domain_url());
1915
  $name = W3_Request::get_string('name', $name);
1916
  $email = W3_Request::get_string('email', $email);
 
1917
  $phone = W3_Request::get_string('phone');
1918
  $subject = W3_Request::get_string('subject');
1919
  $description = W3_Request::get_string('description');
1920
  $templates = W3_Request::get_array('templates');
 
1921
  $wp_login = W3_Request::get_string('wp_login');
1922
  $wp_password = W3_Request::get_string('wp_password');
1923
  $ftp_host = W3_Request::get_string('ftp_host');
@@ -2237,7 +2242,7 @@ class W3_Plugin_TotalCache extends W3_Plugin
2237
  sort($mobile_groups[$group]['agents']);
2238
  }
2239
 
2240
- $config->set('mobile.groups', $mobile_groups);
2241
  }
2242
 
2243
  /**
@@ -2386,7 +2391,7 @@ class W3_Plugin_TotalCache extends W3_Plugin
2386
 
2387
  if ($new_config->get_boolean('mobile.enabled')) {
2388
  $pgcache_dependencies = array_merge($pgcache_dependencies, array(
2389
- 'mobile.groups'
2390
  ));
2391
  }
2392
 
@@ -2699,25 +2704,23 @@ class W3_Plugin_TotalCache extends W3_Plugin
2699
  if ($preview) {
2700
  if ($this->_config->save(true)) {
2701
  $this->redirect(array(
2702
- 'w3tc_note' => 'config_save'
2703
  ));
2704
  } else {
2705
  $this->redirect(array(
2706
- 'w3tc_error' => 'config_save'
2707
  ));
2708
  }
2709
  } else {
2710
- @unlink(W3TC_CONFIG_PREVIEW_PATH);
2711
-
2712
  $config = & new W3_Config(false);
2713
 
2714
- if ($this->config_save($this->_config, $config)) {
2715
  $this->redirect(array(
2716
- 'w3tc_note' => 'config_save'
2717
  ));
2718
  } else {
2719
  $this->redirect(array(
2720
- 'w3tc_error' => 'config_save'
2721
  ));
2722
  }
2723
  }
@@ -2791,6 +2794,7 @@ class W3_Plugin_TotalCache extends W3_Plugin
2791
  $url = W3_Request::get_string('url');
2792
  $name = W3_Request::get_string('name');
2793
  $email = W3_Request::get_string('email');
 
2794
  $phone = W3_Request::get_string('phone');
2795
  $subject = W3_Request::get_string('subject');
2796
  $description = W3_Request::get_string('description');
@@ -2808,6 +2812,7 @@ class W3_Plugin_TotalCache extends W3_Plugin
2808
  'url' => $url,
2809
  'name' => $name,
2810
  'email' => $email,
 
2811
  'phone' => $phone,
2812
  'subject' => $subject,
2813
  'description' => $description,
@@ -4952,4 +4957,68 @@ class W3_Plugin_TotalCache extends W3_Plugin
4952
 
4953
  return sprintf('%s=%s%s%s', $attr, $quote, $domain_url, $path);
4954
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4955
  }
957
 
958
  /**
959
  * Contextual help list filter
960
+ *
961
  * @param string $list
962
  * @return string
963
  */
964
  function contextual_help_list($list)
965
  {
966
+ $faq = $this->parse_faq();
 
 
 
 
 
 
 
 
967
 
968
+ if (isset($faq['Usage'])) {
969
+ $columns = array_chunk($faq['Usage'], ceil(count($faq['Usage']) / 3));
970
+
971
+ ob_start();
972
+ include W3TC_DIR . '/inc/options/common/help.phtml';
973
+ $help = ob_get_contents();
974
+ ob_end_clean();
975
+
976
+ $hook = get_plugin_page_hookname($this->_page, 'w3tc_general');
977
+
978
+ $list[$hook] = $help;
979
  }
980
 
 
 
 
 
 
 
 
 
 
 
 
981
  return $list;
982
  }
983
 
1046
  $document_root = w3_get_document_root();
1047
  $config_path = (w3_is_preview_config() ? W3TC_CONFIG_PREVIEW_PATH : W3TC_CONFIG_PATH);
1048
 
1049
+ $pgcache_rules_core_path = $home_root . '/.htaccess';
1050
+ $pgcache_rules_cache_path = W3TC_CACHE_FILE_PGCACHE_DIR . '/.htaccess';
1051
+ $browsercache_rules_cache_path = $document_root . '/.htaccess';
1052
+ $browsercache_rules_no404wp_path = $home_root . '/.htaccess';
1053
+ $minify_rules_path = W3TC_CACHE_FILE_MINIFY_DIR . '/.htaccess';
1054
+
1055
  $error_messages = array(
1056
+ 'config_save' => sprintf('The settings could not be saved because the config file is not write-able. Please run <strong>chmod 777 %s</strong> to resolve this issue.', (file_exists($config_path) ? $config_path : dirname($config_path))),
1057
  'fancy_permalinks_disabled_pgcache' => sprintf('Fancy permalinks are disabled. Please %s it first, then re-attempt to enabling the enhanced disk mode.', $this->button_link('enable', 'options-permalink.php')),
1058
  'fancy_permalinks_disabled_browsercache' => sprintf('Fancy permalinks are disabled. Please %s it first, then re-attempt to enabling the \'Do not process 404 errors for static objects with WordPress\'.', $this->button_link('enable', 'options-permalink.php')),
1059
+ 'pgcache_write_rules_core' => sprintf('Either your .htaccess file does not exist or cannot be modified (%s). Please run <strong>chmod 777 %s</strong> to resolve this issue.', $pgcache_rules_core_path, (file_exists($pgcache_rules_core_path) ? $pgcache_rules_core_path : dirname($pgcache_rules_core_path))),
1060
+ 'pgcache_write_rules_cache' => sprintf('The page cache rules (%s) could not be modified. Please run <strong>chmod 777 %s</strong> to resolve this issue.', $pgcache_rules_cache_path, (file_exists($pgcache_rules_cache_path) ? $pgcache_rules_cache_path : dirname($pgcache_rules_cache_path))),
1061
+ 'browsercache_write_rules_cache' => sprintf('The browser cache rules (%s) could not be modified. Please run <strong>chmod 777 %s</strong> to resolve this issue.', $browsercache_rules_cache_path, (file_exists($browsercache_rules_cache_path) ? $browsercache_rules_cache_path : dirname($browsercache_rules_cache_path))),
1062
+ 'browsercache_write_rules_no404wp' => sprintf('The browser cache rules (%s) could not be modified. Please run <strong>chmod 777 %s</strong> to resolve this issue.', $browsercache_rules_no404wp_path, (file_exists($browsercache_rules_no404wp_path) ? $browsercache_rules_no404wp_path : dirname($browsercache_rules_no404wp_path))),
1063
  'browsercache_write_rules_cdn' => sprintf('The browser cache rules for CDN could not be modified. Please check CDN settings.'),
1064
+ 'minify_write_rules' => sprintf('The minify cache rules (%s) could not be modified. Please run <strong>chmod 777 %s</strong> to resolve this issue.', $minify_rules_path, (file_exists($minify_rules_path) ? $minify_rules_path : dirname($minify_rules_path))),
1065
  'support_request_type' => 'Please select request type.',
1066
  'support_request_url' => 'Please enter the address of your site in the site <acronym title="Uniform Resource Locator">URL</acronym> field.',
1067
  'support_request_name' => 'Please enter your name in the Name field',
1077
  'support_request' => 'Unable to send your support request.',
1078
  'config_import_no_file' => 'Please select config file.',
1079
  'config_import_upload' => 'Unable to upload config file.',
1080
+ 'config_import_import' => sprintf('Configuration file could not be imported. Please run <strong>chmod 777 %s</strong> to make the configuration file write-able, then try again.', (file_exists($config_path) ? $config_path : dirname($config_path))),
1081
+ 'config_reset' => sprintf('Default settings could not be restored. Please run <strong>chmod 777 %s</strong> to make the configuration file write-able, then try again.', (file_exists(W3TC_CONFIG_PREVIEW_PATH) ? W3TC_CONFIG_PREVIEW_PATH : W3TC_CONFIG_PREVIEW_PATH)),
1082
+ 'preview_enable' => sprintf('Preview mode could not be enabled. Please run <strong>chmod 777 %s</strong> to make the configuration file write-able, then try again.', (file_exists(W3TC_CONFIG_PREVIEW_PATH) ? W3TC_CONFIG_PREVIEW_PATH : dirname(W3TC_CONFIG_PREVIEW_PATH))),
1083
+ 'preview_disable' => sprintf('Preview mode could not be disabled. Please run <strong>chmod 777 %s</strong> to make the configuration file write-able, then try again.', (file_exists($config_path) ? $config_path : dirname($config_path))),
1084
+ 'preview_deploy' => sprintf('Preview settings could not be deployed. Please run <strong>chmod 777 %s</strong> to make the configuration file write-able, then try again.', (file_exists(W3TC_CONFIG_PATH) ? W3TC_CONFIG_PATH : dirname(W3TC_CONFIG_PATH))),
1085
  'cdn_purge_attachment' => 'Unable to purge attachment.',
1086
  'pgcache_purge_post' => 'Unable to purge post.'
1087
  );
1104
  'support_request' => 'Your support request has been successfully sent.',
1105
  'config_import' => 'Settings successfully imported.',
1106
  'config_reset' => 'Settings successfully restored.',
1107
+ 'preview_enable' => 'Preview mode was successfully enabled',
1108
+ 'preview_disable' => 'Preview mode was successfully disabled',
1109
  'preview_deploy' => 'Preview settings successfully deployed.',
1110
  'cdn_purge_attachment' => 'Attachment successfully purged.',
1111
  'pgcache_purge_post' => 'Post successfully purged.'
1429
  $w3_plugin_pgcache = & W3_Plugin_PgCache::instance();
1430
 
1431
  if ($this->_config->get_boolean('notes.pgcache_rules_core') && !$w3_plugin_pgcache->check_rules_core()) {
1432
+ $pgcache_rules_core_path = w3_get_home_root() . '/.htaccess';
1433
+
1434
  if (w3_is_multisite()) {
1435
+ $this->_errors[] = sprintf('Enhanced mode page cache is not operational. Your .htaccess rules could not be modified. Please verify <strong>%s</strong> has the following rules: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> %s', $pgcache_rules_core_path, $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_pgcache->generate_rules_core()), $this->button_hide_note('Hide this message', 'pgcache_rules_core'));
1436
  } else {
1437
+ $this->_errors[] = sprintf('You\'ve selected disk caching with enhanced mode however the .htaccess file is not properly configured. Please run <strong>chmod 777 %s</strong>, then %s. To manually modify your server configuration for enhanced mode append the following code: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> and %s.', (file_exists($pgcache_rules_core_path) ? $pgcache_rules_core_path : dirname($pgcache_rules_core_path)), $this->button_link('try again', sprintf('admin.php?page=%s&pgcache_write_rules_core', $this->_page)), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_pgcache->generate_rules_core()), $this->button_hide_note('hide this message', 'pgcache_rules_core'));
1438
  }
1439
  }
1440
 
1441
  if ($this->_config->get_boolean('notes.pgcache_rules_cache') && !$w3_plugin_pgcache->check_rules_cache()) {
1442
+ $pgcache_rules_cache_path = W3TC_CACHE_FILE_PGCACHE_DIR . '/.htaccess';
1443
+
1444
+ $this->_errors[] = sprintf('You\'ve selected disk caching with enhanced mode however the .htaccess file is not properly configured. Please run <strong>chmod 777 %s</strong>, then %s. To manually modify your server configuration for enhanced mode append the following code: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> and %s.', (file_exists($pgcache_rules_cache_path) ? $pgcache_rules_cache_path : dirname($pgcache_rules_cache_path)), $this->button_link('try again', sprintf('admin.php?page=%s&pgcache_write_rules_cache', $this->_page)), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_pgcache->generate_rules_cache()), $this->button_hide_note('hide this message', 'pgcache_rules_cache'));
1445
  }
1446
  break;
1447
 
1465
  $w3_plugin_minify = & W3_Plugin_Minify::instance();
1466
 
1467
  if ($this->_config->get_boolean('notes.minify_rules') && !$w3_plugin_minify->check_rules()) {
1468
+ $minify_rules_path = W3TC_CACHE_FILE_MINIFY_DIR . '/.htaccess';
1469
+
1470
+ $this->_errors[] = sprintf('The "Rewrite URL Structure" feature, requires rewrite rules be present. Please run <strong>chmod 777 %s</strong>, then %s. To manually modify your server configuration for minify append the following code: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> and %s.', (file_exists($minify_rules_path) ? $minify_rules_path : dirname($minify_rules_path)), $this->button_link('try again', sprintf('admin.php?page=%s&minify_write_rules', $this->_page)), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_minify->generate_rules()), $this->button_hide_note('hide this message', 'minify_rules'));
1471
  }
1472
  }
1473
 
1518
  $w3_plugin_browsercache = & W3_Plugin_BrowserCache::instance();
1519
 
1520
  if ($this->_config->get_boolean('notes.browsercache_rules_cache') && !$w3_plugin_browsercache->check_rules_cache()) {
1521
+ $browsercache_rules_cache_path = w3_get_document_root() . '/.htaccess';
1522
+
1523
  if (w3_is_multisite()) {
1524
+ $this->_errors[] = sprintf('Browser Cache feature is not operational. Your .htaccess rules could not be modified. Please verify <strong>%s</strong> has the following rules: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> %s', $browsercache_rules_cache_path, $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_browsercache->generate_rules_cache()), $this->button_hide_note('Hide this message', 'browsercache_rules_cache'));
1525
  } else {
1526
+ $this->_errors[] = sprintf('You\'ve enabled Browser Cache feature however the .htaccess file is not properly configured. Please run <strong>chmod 777 %s</strong>, then %s. To manually modify these settings use the following code: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> and %s.', (file_exists($browsercache_rules_cache_path) ? $browsercache_rules_cache_path : dirname($browsercache_rules_cache_path)), $this->button_link('try again', sprintf('admin.php?page=%s&browsercache_write_rules_cache', $this->_page)), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_browsercache->generate_rules_cache()), $this->button_hide_note('hide this message', 'browsercache_rules_cache'));
1527
  }
1528
  }
1529
 
1530
  if ($this->_config->get_boolean('notes.browsercache_rules_no404wp') && $this->_config->get_boolean('browsercache.no404wp') && !$w3_plugin_browsercache->check_rules_no404wp()) {
1531
+ $browsercache_rules_no404wp_path = w3_get_home_root() . '/.htaccess';
1532
+
1533
  if (w3_is_multisite()) {
1534
+ $this->_errors[] = sprintf('Browser Cache feature is not operational. Your .htaccess rules could not be modified. Please verify <strong>%s</strong> has the following rules: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> %s', $browsercache_rules_no404wp_path, $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_browsercache->generate_rules_no404wp()), $this->button_hide_note('Hide this message', 'browsercache_rules_no404wp'));
1535
  } else {
1536
+ $this->_errors[] = sprintf('You\'ve enabled Browser Cache feature however the .htaccess file is not properly configured. Please run <strong>chmod 777 %s</strong>, then %s. To manually modify these settings use the following code: %s <textarea class="w3tc-rules" cols="120" rows="10" readonly="readonly">%s</textarea> and %s.', (file_exists($browsercache_rules_no404wp_path) ? $browsercache_rules_no404wp_path : dirname($browsercache_rules_no404wp_path)), $this->button_link('try again', sprintf('admin.php?page=%s&browsercache_write_rules_no404wp', $this->_page)), $this->button('view code', '', 'w3tc-show-rules'), htmlspecialchars($w3_plugin_browsercache->generate_rules_no404wp()), $this->button_hide_note('hide this message', 'browsercache_rules_no404wp'));
1537
  }
1538
  }
1539
  }
1844
  function options_mobile()
1845
  {
1846
  $mobile_enabled = $this->_config->get_boolean('mobile.enabled');
1847
+ $groups = $this->_config->get_array('mobile.rgroups');
1848
 
1849
  require_once W3TC_LIB_W3_DIR . '/Mobile.php';
1850
  $w3_mobile = & W3_Mobile::instance();
1873
  */
1874
  function options_faq()
1875
  {
1876
+ $faq = $this->parse_faq();
 
 
 
 
 
 
1877
 
1878
  include W3TC_DIR . '/inc/options/faq.phtml';
1879
  }
1917
  $url = W3_Request::get_string('url', w3_get_domain_url());
1918
  $name = W3_Request::get_string('name', $name);
1919
  $email = W3_Request::get_string('email', $email);
1920
+ $twitter = W3_Request::get_string('twitter');
1921
  $phone = W3_Request::get_string('phone');
1922
  $subject = W3_Request::get_string('subject');
1923
  $description = W3_Request::get_string('description');
1924
  $templates = W3_Request::get_array('templates');
1925
+ $forum_url = W3_Request::get_string('forum_url');
1926
  $wp_login = W3_Request::get_string('wp_login');
1927
  $wp_password = W3_Request::get_string('wp_password');
1928
  $ftp_host = W3_Request::get_string('ftp_host');
2242
  sort($mobile_groups[$group]['agents']);
2243
  }
2244
 
2245
+ $config->set('mobile.rgroups', $mobile_groups);
2246
  }
2247
 
2248
  /**
2391
 
2392
  if ($new_config->get_boolean('mobile.enabled')) {
2393
  $pgcache_dependencies = array_merge($pgcache_dependencies, array(
2394
+ 'mobile.rgroups'
2395
  ));
2396
  }
2397
 
2704
  if ($preview) {
2705
  if ($this->_config->save(true)) {
2706
  $this->redirect(array(
2707
+ 'w3tc_note' => 'preview_enable'
2708
  ));
2709
  } else {
2710
  $this->redirect(array(
2711
+ 'w3tc_error' => 'preview_enable'
2712
  ));
2713
  }
2714
  } else {
 
 
2715
  $config = & new W3_Config(false);
2716
 
2717
+ if (@unlink(W3TC_CONFIG_PREVIEW_PATH) && $this->config_save($this->_config, $config, false)) {
2718
  $this->redirect(array(
2719
+ 'w3tc_note' => 'preview_disable'
2720
  ));
2721
  } else {
2722
  $this->redirect(array(
2723
+ 'w3tc_error' => 'preview_disable'
2724
  ));
2725
  }
2726
  }
2794
  $url = W3_Request::get_string('url');
2795
  $name = W3_Request::get_string('name');
2796
  $email = W3_Request::get_string('email');
2797
+ $twitter = W3_Request::get_string('twitter');
2798
  $phone = W3_Request::get_string('phone');
2799
  $subject = W3_Request::get_string('subject');
2800
  $description = W3_Request::get_string('description');
2812
  'url' => $url,
2813
  'name' => $name,
2814
  'email' => $email,
2815
+ 'twitter' => $twitter,
2816
  'phone' => $phone,
2817
  'subject' => $subject,
2818
  'description' => $description,
4957
 
4958
  return sprintf('%s=%s%s%s', $attr, $quote, $domain_url, $path);
4959
  }
4960
+
4961
+ /**
4962
+ * Parses FAQ XML file into array
4963
+ *
4964
+ * @return array
4965
+ */
4966
+ function parse_faq()
4967
+ {
4968
+ $faq = array();
4969
+ $file = W3TC_DIR . '/inc/options/faq.xml';
4970
+
4971
+ $xml = @file_get_contents($file);
4972
+
4973
+ if ($xml) {
4974
+ if (function_exists('xml_parser_create')) {
4975
+ $parser = @xml_parser_create('UTF-8');
4976
+
4977
+ xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
4978
+ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
4979
+ xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
4980
+ $values = null;
4981
+
4982
+ $result = xml_parse_into_struct($parser, $xml, $values);
4983
+ xml_parser_free($parser);
4984
+
4985
+ if ($result) {
4986
+ $index = 0;
4987
+ $current_section = '';
4988
+ $current_entry = array();
4989
+
4990
+ foreach ($values as $value) {
4991
+ switch ($value['type']) {
4992
+ case 'open':
4993
+ if ($value['tag'] === 'section') {
4994
+ $current_section = $value['attributes']['name'];
4995
+ }
4996
+ break;
4997
+
4998
+ case 'complete':
4999
+ switch ($value['tag']) {
5000
+ case 'question':
5001
+ $current_entry['question'] = $value['value'];
5002
+ break;
5003
+
5004
+ case 'answer':
5005
+ $current_entry['answer'] = $value['value'];
5006
+ break;
5007
+ }
5008
+ break;
5009
+
5010
+ case 'close':
5011
+ if ($value['tag'] == 'entry') {
5012
+ $current_entry['index'] = ++$index;
5013
+ $faq[$current_section][] = $current_entry;
5014
+ }
5015
+ break;
5016
+ }
5017
+ }
5018
+ }
5019
+ }
5020
+ }
5021
+
5022
+ return $faq;
5023
+ }
5024
  }
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Plugin Name ===
2
  Contributors: fredericktownes
3
- Tags: user experience, cache, caching, page cache, css cache, js cache, db cache, disk cache, disk caching, database cache, http compression, gzip, deflate, minify, CDN, content delivery network, media library, performance, speed, multiple hosts, CSS, merge, combine, unobtrusive javascript, compress, optimize, optimizer, JavaScript, JS, cascading style sheet, plugin, yslow, YUI, google, google rank, google page speed, S3, CloudFront, AWS, Amazon Web Services, cloudfiles, rackspace, batcache, wp cache, wp super cache, w3 total cache, buddypress
4
  Requires at least: 2.6
5
  Tested up to: 3.1
6
- Stable tag: 0.9
7
 
8
  Dramatically improve the speed and user experience of your site. Add browser, page, object and database caching as well as minify and content delivery network (CDN) to WordPress.
9
 
@@ -222,9 +222,113 @@ Yes! Please [reach out to us](http://www.w3-edge.com/contact/) and we'll get you
222
 
223
  Install the plugin to read the full FAQ.
224
 
225
- == Other Notes ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
226
 
227
- = Who do I thank for all of this? =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
 
229
  It's quite difficult to recall all of the innovators that have shared their thoughts, code and experiences in the blogosphere over the years, but here are some names to get you started:
230
 
@@ -243,75 +347,15 @@ It's quite difficult to recall all of the innovators that have shared their thou
243
 
244
  Please reach out to all of these people and support their projects if you're so inclined.
245
 
246
- == Installation ==
247
-
248
- 1. Deactivate and delete any other caching plugin you may be using. Make sure wp-content/ and wp-content/uploads/ (temporarily) has 777 permissions before proceeding, e.g.: `# chmod 777 /var/www/vhosts/domain.com/httpdocs/wp-content/` using your web hosting control panel or your SSH account.
249
- 1. Login as an administrator to your WordPress Admin account. Using the "Add New" menu option under the "Plugins" section of the navigation, you can either search for: w3 total cache or if you've downloaded the plugin already, click the "Upload" link, find the .zip file you download and then click "Install Now". Or you can unzip and FTP upload the plugin to your plugins directory (wp-content/plugins/). In either case, when done wp-content/plugins/w3-total-cache/ should exist.
250
- 1. Locate and activate the plugin on the "Plugins" page. Page caching will **automatically be running** in basic mode. Set the permissions of wp-content and wp-content/uploads back to 755, e.g.: `# chmod 755 /var/www/vhosts/domain.com/httpdocs/wp-content/`.
251
- 1. Now click the "Settings" link to proceed to the "General" tab and select your caching methods for page, database and minify. In most cases, "disk enhanced" mode for page cache, "disk" mode for minify and "disk" mode for database caching are "good" settings.
252
- 1. *Recommended:* On the "Minify Settings" tab, all of the recommended settings are preset. Use the help button to simplify discovery of your CSS and JS files and groups. Pay close attention to the method and location of your JS group embeddings. See the plugin's FAQ for more information on usage.
253
- 1. *Recommended:* On the "Browser Cache" tab, all of the recommended settings are preset. Use these options to improve user experience by using the brower's cache.
254
- 1. *Recommended:* If you already have a content delivery network (CDN) provider, proceed to the "Content Delivery Network" tab and populate the fields and set your preferences. If you do not use the Media Library, you will need to import your images etc into the default locations. Use the Media Library Import Tool on the "Content Delivery Network" tab to perform this task. If you do not have a CDN provider, you can still improve your site's performance using the "Self-hosted" method. On your own server, create a subdomain and matching DNS Zone record; e.g. static.domain.com and configure FTP options on the "Content Delivery Network" tab accordingly. Be sure to FTP upload the appropriate files, using the available upload buttons.
255
- 1. *Recommended:* On the "Browser Cache" tab, HTTP compression is enabled by default. Make sure to enable other options to suit your goals.
256
- 1. *Optional:* On the "Database Cache" tab, the recommended settings are preset. If using a shared hosting account use the "disk" method with caution, the response time of the disk may not be fast enough, so this option is disabled by default. Try object caching instead for shared hosting.
257
- 1. *Optional:* On the "Object Cache" tab, all of the recommended settings are preset. If using a shared hosting account use the "disk" method with caution, the response time of the disk may not be fast enough, so this option is disabled by default. Test this option with and without database cache to ensure that it provides a performance increase.
258
- 1. *Optional:* On the "User Agent Groups" tab, specify any user agents, like mobile phones if a mobile theme is used.
259
-
260
- == Other Notes ==
261
-
262
- = Press: Mentions, Tutorials &amp; Reviews =
263
-
264
- * July 21, 2010: [Improve Your WordPress Performance With W3 Total Cache](http://maketecheasier.com/improve-wordpress-performance-with-w3-total-cache/2010/07/21), Damien Oh
265
- * July 21, 2010: [Four Simple Steps For Big Gains In Page Speed](http://www.dailyblogtips.com/four-simple-steps-for-big-gains-in-page-speed/), Greg Hayes
266
- * July 20, 2010: [How to Use Google Webmaster Tools to Diagnose and Improve WordPress Page Speed](http://wpmu.org/how-to-use-google-webmaster-tools-to-diagnose-and-improve-wordpress-page-speed/), Sarah Gooding
267
- * July 20, 2010: [Caching Wordpress - Preparing Your Blog For The Mainstream](http://bradblogging.com/how-to/caching-wordpress-preparing-your-blog-for-the-mainstream/), Brad Ney
268
- * July 19, 2010: [11 Ways to Speed Up WordPress](http://mashable.com/2010/07/19/speed-up-wordpress/), Cyrus Patten
269
- * July 14, 2010: [How To Decrease Page Loading Time Of Your WordPress Blog By 75%](http://bloggingwithsuccess.net/decrease-loading-times), Ishan Sharma
270
- * July 14, 2010: [Top 10 Wordpress Plugins which I use on DailyBlogging](http://www.dailyblogging.org/wordpress/top-10-wordpress-plugins-which-i-use-on-dailyblogging/), Mani Viswanathan
271
- * July 12, 2010: [Install and Configure W3 Total Cache in 7 Easy Steps](http://zemalf.com/1443/w3-total-cache/), Antti Kokkonen
272
- * July 9, 2010: [How to Reduce the Loading Time of Your Blog](http://www.admixweb.com/2010/07/09/how-to-reduce-the-loading-time-of-your-blog/), Rishabh Agarwal
273
- * July 6, 2010: [5 Wordpress Plugins You Need To Know About](http://thenextweb.com/apps/2010/07/06/5-wordpress-plugins-you-need-to-know-about/), James Hicks
274
- * June 22, 2010: [12 Ways to Improve Wordpress Page Load Time](http://myblog2day.com/12-ways-to-improve-wordpress-page-load-time.php), Lee Ka Hoong
275
- * June 21, 2010: [Significantly Speed Up Your WordPress Blog in 9 Easy Steps](http://www.bloggingpro.com/archives/2010/06/21/significantly-speed-up-your-wordpress-blog-in-9-easy-steps/), Robyn-Dale Samuda
276
- * June 10, 2010: [Speed 'Em Up: Wordpress &amp; W3 Total Cache](http://translate.google.com/translate?js=y&prev=_t&hl=en&ie=UTF-8&layout=1&eotf=1&u=http://www.andilicious.com/blog/1473/20100610/wordpress-beschleunigen-grundlagen-w3-total-cache-page-speed&sl=auto&tl=en), Andi Licious
277
- * May 24, 2010: [Make Your Blog 10x Faster With W3 Total Cache Plug-in](http://www.strictlyonlinebiz.com/blog/speed-up-wordpress-with-w3-total-cache/1231/), Udegbunam Chukwudi
278
- * May 23, 2010: [xCache v1.3.0 Now Available](http://webcache.googleusercontent.com/search?q=cache%3Ahttp%3A%2F%2Fresellr.net%2Fxcache-now-available%2F&rls=com.microsoft:en-us&ie=UTF-8&oe=UTF-8&startIndex=&startPage=1&rlz=1I7GGIE_en&redir_esc=&ei=NO49TNaAFIH60wS2zuXLDg), Michael
279
- * May 10, 2010: [Maximize WordPress and BuddyPress Performance With W3 Total Cache](http://wpmu.org/maximize-wordpress-and-buddypress-performance-with-w3-total-cache/), Sarah Gooding
280
- * May 5, 2010: [Is Your Wordpress Blog Slow to Load?](http://homenotion.com/blog/blogs/is-your-wordpress-blog-slow-to-load/), Elizabeth McGee
281
- * April 21, 2010: [WordPress Optimization: How I Reduced Page Load Time by 75%](http://www.kadavy.net/blog/posts/wordpress-optimization-dreamhost-rackspace/), David Kadavy
282
- * April 13, 2010: [Top 10 Wordpress Plugins Your Blog Should Have (Video)](http://www.blogsuccessjournal.com/blog-tips-and-advice/wordpress-tips-advice/top-10-wordpress-plugins-your-blog-should-have-video/), Dan &amp; Jennifer
283
- * March 12, 2010: [Howto: Speed up WordPress sites by using Amazon Cloudfront](http://www.jitscale.com/howto-speed-up-wordpress-sites-by-using-amazon-cloudfront/), Niek Waarbroek
284
- * April 12, 2010: [Super or Total? Money Talks But Cache Rules](http://website-in-a-weekend.net/website-maintenance/super-total-money-talks-cache-rules/), Dave Thackeray
285
- * April 6, 2010: [W3 Total Cache, the most comprehensive cache plugin in WordPress](http://blogandweb.com/wordpress/w3-total-cache-plugin-cache-wordpress/), Francisco Oliveros
286
- * April 6, 2010: [10 OF THE BEST WORDPRESS PLUGINS IN 2010](http://www.sitesketch101.com/best-wordpress-plugins), Nicholas Cardot
287
- * March 4, 2010: [Wordpress Cache Plugin Benchmarks](http://cd34.com/blog/scalability/wordpress-cache-plugin-benchmarks/), Chris Davies
288
- * March 2, 2010: [Wordpress + W3 Total Cache + MaxCDN How-To](http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/), Major Hayden
289
- * February 18, 2010: [Blog Building: How To Dramatically Speed Up Your WordPress Site with W3 Total Cache](http://nimopress.com/pressed/blog-building-how-to-dramatically-speed-up-your-wordpress-site-with-w3-total-cache/), Nicholas Ong
290
- * February 13, 2010: [Wordpress + W3 Total Cache + MaxCDN How-To](http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/), Major Hayden
291
- * February 8, 2010: [Utilizing W3 Total Cache](http://www.reviewkin.com/utilizing-w3-total-cache/), Anangga Pratama
292
- * February 5, 2010: [Shared Hosting vs. Cloud Hosting](http://gregrickaby.com/2010/02/shared-hosting-vs-cloud-hosting.html), Greg Rickaby
293
- * February 4, 2010: [My Thoughts on Premium Plugins](http://weblogtoolscollection.com/archives/2010/02/04/my-thoughts-on-premium-plugins/), Ronald Huereca
294
- * February 1, 2010: [W3 Total Cache Plugin for Wordpress Eats WP Super Cache's Lunch!](http://human3rror.com/w3-total-cache-plugin-for-wordpress-eats-wp-super-caches-lunch/), John Saddington
295
- * January 19, 2010: [WordPress Cacheing with W3 Total Cache](http://blog.whoishostingthis.com/2010/01/19/wordpress-cacheing-w3-total-cache/), Jonathan
296
- * January 13, 2010: [Configuring W3 Total Cache for WordPress](http://translate.google.com/translate?js=y&prev=_t&hl=en&ie=UTF-8&layout=1&eotf=1&u=http://da.clausheinrich.com/w3-total-cache-wordpress/&sl=auto&tl=en)
297
- * January 12, 2010: [Wordpress load test part 2 - amendment](http://loadimpact.com/blog/wordpress-load-test-part-2-amendment), Erik Torsner
298
- * January 6, 2010: [Wordpress - Accelerate your site with W3 Total Cache](http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=http://www.egonomik.com/2010/01/wordpress-w3-total-cache-ile-sitenizi-hizlandirin-sunucunuzu-rahatlatin/), Caner Phenix
299
- * December 24, 2009: [WordPress Plugin � Best of 4 Caching Plugins](http://nimopress.com/pressed/wordpress-plugin-best-of-4-caching-plugins/), Nicholas Ong
300
- * December 20, 2009: [Speed Up Your Blog With W3 Total Cache &amp; Amazon](http://www.freedomtarget.com/w3-total-cache-with-amazon-s3-and-cloudfront), Kevin McKillop
301
- * December 7, 2009: [W3 Total Cache with Amazon S3 and CloudFront](http://kovshenin.com/archives/w3-total-cache-with-amazon-s3-and-cloudfront/), Konstantin Kovshenin
302
- * November 5, 2009: [How to Boost Ad Revenue: Speed is Your Secret Weapon](http://blog.buysellads.com/2009/11/how-to-boost-ad-revenue-speed-is-your-secret-weapon/), Todd Garland
303
- * October 26, 2009: [Plugin: WordPress Caching with CDN Integration](http://www.blogperfume.com/plugin-wordpress-caching-with-cdn-integration/)
304
- * October 19, 2009: [8 Powerful Wordpress Plugins You Probably Don't Use But Should](http://www.smashingapps.com/2009/10/19/8-powerful-wordpress-plugins-you-probably-dont-use-but-should.html), AN Jay
305
- * October 15, 2009: [Beyond Super Cache: W3 Total Cache](http://www.webmaster-source.com/2009/10/15/beyond-super-cache-w3-total-cache/), Matt Harzewski
306
- * September 28, 2009: [Why Noupe.com is Loading So Much Faster?](http://209.85.129.132/search?q=cache:PgY8haU_0I4J:www.noupe.com/spotlight/why-noupe-com-is-loading-pretty-fast.html+http://www.noupe.com/spotlight/why-noupe-com-is-loading-pretty-fast.html&cd=1&hl=en&ct=clnk&gl=it), Noura Yehia
307
- * August 26, 2009: [W3 Total Cache Plugin](http://dougal.gunters.org/blog/2009/08/26/w3-total-cache-plugin), Dougal Campbell
308
-
309
- = What users have to say: =
310
-
311
- Read [testimonials](http://bit.ly/6Wbvpt) from W3TC users.
312
-
313
  == Changelog ==
314
 
 
 
 
 
 
 
 
315
  = 0.9.0 =
316
  * Added preview feature so all cache settings can be reviewed prior to deployment
317
  * Added minify configuration wizard (help button on minify tab)
@@ -329,7 +373,7 @@ Read [testimonials](http://bit.ly/6Wbvpt) from W3TC users.
329
  * Added HTTP compression and headers for AWS S3
330
  * Added ignored comment stems field, with Google AdSense default value to HTML minify
331
  * Added support for varnish purging
332
- * Added Rackspace CloudFiles support
333
  * Added native NetDNA / MaxCDN integration
334
  * Added option to cache 404 pages
335
  * Added changed files auto-upload to CDN
1
  === Plugin Name ===
2
  Contributors: fredericktownes
3
+ Tags: user experience, cache, caching, page cache, css cache, js cache, db cache, disk cache, disk caching, database cache, http compression, gzip, deflate, minify, CDN, content delivery network, media library, performance, speed, multiple hosts, CSS, merge, combine, unobtrusive javascript, compress, optimize, optimizer, JavaScript, JS, cascading style sheet, plugin, yslow, YUI, google, google rank, google page speed, S3, CloudFront, AWS, Amazon Web Services, cloud files, rackspace, batcache, wp cache, wp super cache, w3 total cache, buddypress
4
  Requires at least: 2.6
5
  Tested up to: 3.1
6
+ Stable tag: 0.9.1
7
 
8
  Dramatically improve the speed and user experience of your site. Add browser, page, object and database caching as well as minify and content delivery network (CDN) to WordPress.
9
 
222
 
223
  Install the plugin to read the full FAQ.
224
 
225
+ == Installation ==
226
+
227
+ 1. Deactivate and delete any other caching plugin you may be using. Make sure wp-content/ and wp-content/uploads/ (temporarily) has 777 permissions before proceeding, e.g.: `# chmod 777 /var/www/vhosts/domain.com/httpdocs/wp-content/` using your web hosting control panel or your SSH account.
228
+ 1. Login as an administrator to your WordPress Admin account. Using the "Add New" menu option under the "Plugins" section of the navigation, you can either search for: w3 total cache or if you've downloaded the plugin already, click the "Upload" link, find the .zip file you download and then click "Install Now". Or you can unzip and FTP upload the plugin to your plugins directory (wp-content/plugins/). In either case, when done wp-content/plugins/w3-total-cache/ should exist.
229
+ 1. Locate and activate the plugin on the "Plugins" page. Page caching will **automatically be running** in basic mode. Set the permissions of wp-content and wp-content/uploads back to 755, e.g.: `# chmod 755 /var/www/vhosts/domain.com/httpdocs/wp-content/`.
230
+ 1. Now click the "Settings" link to proceed to the "General" tab and select your caching methods for page, database and minify. In most cases, "disk enhanced" mode for page cache, "disk" mode for minify and "disk" mode for database caching are "good" settings.
231
+ 1. *Recommended:* On the "Minify Settings" tab, all of the recommended settings are preset. Use the help button to simplify discovery of your CSS and JS files and groups. Pay close attention to the method and location of your JS group embeddings. See the plugin's FAQ for more information on usage.
232
+ 1. *Recommended:* On the "Browser Cache" tab, all of the recommended settings are preset. Use these options to improve user experience by using the brower's cache.
233
+ 1. *Recommended:* If you already have a content delivery network (CDN) provider, proceed to the "Content Delivery Network" tab and populate the fields and set your preferences. If you do not use the Media Library, you will need to import your images etc into the default locations. Use the Media Library Import Tool on the "Content Delivery Network" tab to perform this task. If you do not have a CDN provider, you can still improve your site's performance using the "Self-hosted" method. On your own server, create a subdomain and matching DNS Zone record; e.g. static.domain.com and configure FTP options on the "Content Delivery Network" tab accordingly. Be sure to FTP upload the appropriate files, using the available upload buttons.
234
+ 1. *Recommended:* On the "Browser Cache" tab, HTTP compression is enabled by default. Make sure to enable other options to suit your goals.
235
+ 1. *Optional:* On the "Database Cache" tab, the recommended settings are preset. If using a shared hosting account use the "disk" method with caution, the response time of the disk may not be fast enough, so this option is disabled by default. Try object caching instead for shared hosting.
236
+ 1. *Optional:* On the "Object Cache" tab, all of the recommended settings are preset. If using a shared hosting account use the "disk" method with caution, the response time of the disk may not be fast enough, so this option is disabled by default. Test this option with and without database cache to ensure that it provides a performance increase.
237
+ 1. *Optional:* On the "User Agent Groups" tab, specify any user agents, like mobile phones if a mobile theme is used.
238
+
239
+ == What users have to say: ==
240
+
241
+ * Read [testimonials](http://bit.ly/6Wbvpt) from W3TC users.
242
+
243
+ == Press: Mentions, Tutorials &amp; Reviews ==
244
+
245
+ **July 2010:**
246
+
247
+ * [Getting W3 Total Cache and a mobile plugin to work in WordPress](http://blog.trasatti.it/2010/07/getting-w3-total-cache-and-a-mobile-plugin-to-work-in-wordpress.html), Andrea Trasatti
248
+ * [Improve Your WordPress Performance With W3 Total Cache](http://maketecheasier.com/improve-wordpress-performance-with-w3-total-cache/2010/07/21), Damien Oh
249
+ * [Four Simple Steps For Big Gains In Page Speed](http://www.dailyblogtips.com/four-simple-steps-for-big-gains-in-page-speed/), Greg Hayes
250
+ * [How to use Content Delivery Network on Shared Hosting for WordPress](http://solvater.com/2010/07/content-delivery-network-shared-hosting-wordpress-configuration-with-w3-total-cache-in-wordpress/), Arafath Hashmi
251
+ * [How to Use Google Webmaster Tools to Diagnose and Improve WordPress Page Speed](http://wpmu.org/how-to-use-google-webmaster-tools-to-diagnose-and-improve-wordpress-page-speed/), Sarah Gooding
252
+ * [Caching Wordpress - Preparing Your Blog For The Mainstream](http://bradblogging.com/how-to/caching-wordpress-preparing-your-blog-for-the-mainstream/), Brad Ney
253
+ * [11 Ways to Speed Up WordPress](http://mashable.com/2010/07/19/speed-up-wordpress/), Cyrus Patten
254
+ * [How To Decrease Page Loading Time Of Your WordPress Blog By 75%](http://bloggingwithsuccess.net/decrease-loading-times), Ishan Sharma
255
+ * [Top 10 Wordpress Plugins which I use on DailyBlogging](http://www.dailyblogging.org/wordpress/top-10-wordpress-plugins-which-i-use-on-dailyblogging/), Mani Viswanathan
256
+ * [Install and Configure W3 Total Cache in 7 Easy Steps](http://zemalf.com/1443/w3-total-cache/), Antti Kokkonen
257
+ * [How to Reduce the Loading Time of Your Blog](http://www.admixweb.com/2010/07/09/how-to-reduce-the-loading-time-of-your-blog/), Rishabh Agarwal
258
+ * [5 Wordpress Plugins You Need To Know About](http://thenextweb.com/apps/2010/07/06/5-wordpress-plugins-you-need-to-know-about/), James Hicks
259
+
260
+ **June 2010:**
261
+
262
+ * [12 Ways to Improve Wordpress Page Load Time](http://myblog2day.com/12-ways-to-improve-wordpress-page-load-time.php), Lee Ka Hoong
263
+ * [Significantly Speed Up Your WordPress Blog in 9 Easy Steps](http://www.bloggingpro.com/archives/2010/06/21/significantly-speed-up-your-wordpress-blog-in-9-easy-steps/), Robyn-Dale Samuda
264
+ * [Speed 'Em Up: Wordpress &amp; W3 Total Cache](http://translate.google.com/translate?js=y&prev=_t&hl=en&ie=UTF-8&layout=1&eotf=1&u=http://www.andilicious.com/blog/1473/20100610/wordpress-beschleunigen-grundlagen-w3-total-cache-page-speed&sl=auto&tl=en), Andi Licious
265
+
266
+ **May 2010:**
267
+
268
+ * [Make Your Blog 10x Faster With W3 Total Cache Plug-in](http://www.strictlyonlinebiz.com/blog/speed-up-wordpress-with-w3-total-cache/1231/), Udegbunam Chukwudi
269
+ * [xCache v1.3.0 Now Available](http://webcache.googleusercontent.com/search?q=cache%3Ahttp%3A%2F%2Fresellr.net%2Fxcache-now-available%2F&rls=com.microsoft:en-us&ie=UTF-8&oe=UTF-8&startIndex=&startPage=1&rlz=1I7GGIE_en&redir_esc=&ei=NO49TNaAFIH60wS2zuXLDg), Michael
270
+ * [Maximize WordPress and BuddyPress Performance With W3 Total Cache](http://wpmu.org/maximize-wordpress-and-buddypress-performance-with-w3-total-cache/), Sarah Gooding
271
+ * [Is Your Wordpress Blog Slow to Load?](http://homenotion.com/blog/blogs/is-your-wordpress-blog-slow-to-load/), Elizabeth McGee
272
+
273
+ **April 2010:**
274
+
275
+ * [WordPress Optimization: How I Reduced Page Load Time by 75%](http://www.kadavy.net/blog/posts/wordpress-optimization-dreamhost-rackspace/), David Kadavy
276
+ * [Top 10 Wordpress Plugins Your Blog Should Have (Video)](http://www.blogsuccessjournal.com/blog-tips-and-advice/wordpress-tips-advice/top-10-wordpress-plugins-your-blog-should-have-video/), Dan &amp; Jennifer
277
+ * [Super or Total? Money Talks But Cache Rules](http://website-in-a-weekend.net/website-maintenance/super-total-money-talks-cache-rules/), Dave Thackeray
278
+ * [W3 Total Cache, the most comprehensive cache plugin in WordPress](http://blogandweb.com/wordpress/w3-total-cache-plugin-cache-wordpress/), Francisco Oliveros
279
+ * [10 OF THE BEST WORDPRESS PLUGINS IN 2010](http://www.sitesketch101.com/best-wordpress-plugins), Nicholas Cardot
280
+
281
+ **March 2010:**
282
+
283
+ * [Howto: Speed up WordPress sites by using Amazon Cloudfront](http://www.jitscale.com/howto-speed-up-wordpress-sites-by-using-amazon-cloudfront/), Niek Waarbroek
284
+ * [Wordpress Cache Plugin Benchmarks](http://cd34.com/blog/scalability/wordpress-cache-plugin-benchmarks/), Chris Davies
285
+ * [Wordpress + W3 Total Cache + MaxCDN How-To](http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/), Major Hayden
286
+
287
+ **February 2010:**
288
+
289
+ * [Blog Building: How To Dramatically Speed Up Your WordPress Site with W3 Total Cache](http://nimopress.com/pressed/blog-building-how-to-dramatically-speed-up-your-wordpress-site-with-w3-total-cache/), Nicholas Ong
290
+ * [Wordpress + W3 Total Cache + MaxCDN How-To](http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/), Major Hayden
291
+ * [Utilizing W3 Total Cache](http://www.reviewkin.com/utilizing-w3-total-cache/), Anangga Pratama
292
+ * [Shared Hosting vs. Cloud Hosting](http://gregrickaby.com/2010/02/shared-hosting-vs-cloud-hosting.html), Greg Rickaby
293
+ * [My Thoughts on Premium Plugins](http://weblogtoolscollection.com/archives/2010/02/04/my-thoughts-on-premium-plugins/), Ronald Huereca
294
+ * [W3 Total Cache Plugin for Wordpress Eats WP Super Cache's Lunch!](http://human3rror.com/w3-total-cache-plugin-for-wordpress-eats-wp-super-caches-lunch/), John Saddington
295
+
296
+ **January 2010:**
297
 
298
+ * [WordPress Cacheing with W3 Total Cache](http://blog.whoishostingthis.com/2010/01/19/wordpress-cacheing-w3-total-cache/), Jonathan
299
+ * [Configuring W3 Total Cache for WordPress](http://translate.google.com/translate?js=y&prev=_t&hl=en&ie=UTF-8&layout=1&eotf=1&u=http://da.clausheinrich.com/w3-total-cache-wordpress/&sl=auto&tl=en)
300
+ * [Wordpress load test part 2 - amendment](http://loadimpact.com/blog/wordpress-load-test-part-2-amendment), Erik Torsner
301
+ * [Wordpress - Accelerate your site with W3 Total Cache](http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=http://www.egonomik.com/2010/01/wordpress-w3-total-cache-ile-sitenizi-hizlandirin-sunucunuzu-rahatlatin/), Caner Phenix
302
+
303
+ **December 2009:**
304
+
305
+ * [WordPress Plugin &mdash; Best of 4 Caching Plugins](http://nimopress.com/pressed/wordpress-plugin-best-of-4-caching-plugins/), Nicholas Ong
306
+ * [Speed Up Your Blog With W3 Total Cache &amp; Amazon](http://www.freedomtarget.com/w3-total-cache-with-amazon-s3-and-cloudfront), Kevin McKillop
307
+ * [W3 Total Cache with Amazon S3 and CloudFront](http://kovshenin.com/archives/w3-total-cache-with-amazon-s3-and-cloudfront/), Konstantin Kovshenin
308
+
309
+ **November 2009:**
310
+
311
+ * [How to Boost Ad Revenue: Speed is Your Secret Weapon](http://blog.buysellads.com/2009/11/how-to-boost-ad-revenue-speed-is-your-secret-weapon/), Todd Garland
312
+
313
+ **October 2009:**
314
+
315
+ * [Plugin: WordPress Caching with CDN Integration](http://www.blogperfume.com/plugin-wordpress-caching-with-cdn-integration/)
316
+ * [8 Powerful Wordpress Plugins You Probably Don't Use But Should](http://www.smashingapps.com/2009/10/19/8-powerful-wordpress-plugins-you-probably-dont-use-but-should.html), AN Jay
317
+ * [Beyond Super Cache: W3 Total Cache](http://www.webmaster-source.com/2009/10/15/beyond-super-cache-w3-total-cache/), Matt Harzewski
318
+
319
+ **September 2009:**
320
+
321
+ * [Why Noupe.com is Loading So Much Faster?](http://209.85.129.132/search?q=cache:PgY8haU_0I4J:www.noupe.com/spotlight/why-noupe-com-is-loading-pretty-fast.html+http://www.noupe.com/spotlight/why-noupe-com-is-loading-pretty-fast.html&cd=1&hl=en&ct=clnk&gl=it), Noura Yehia
322
+
323
+ **August 2009:**
324
+
325
+ * [W3 Total Cache Plugin](http://dougal.gunters.org/blog/2009/08/26/w3-total-cache-plugin), Dougal Campbell
326
+
327
+ **July 2009:**
328
+
329
+ * [W3 Total Cache](http://weblogtoolscollection.com/pluginblog/2009/07/27/w3-total-cache/)
330
+
331
+ == Who do I thank for all of this? ==
332
 
333
  It's quite difficult to recall all of the innovators that have shared their thoughts, code and experiences in the blogosphere over the years, but here are some names to get you started:
334
 
347
 
348
  Please reach out to all of these people and support their projects if you're so inclined.
349
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  == Changelog ==
351
 
352
+ = 0.9.1 =
353
+ * Improved Rackspace Cloud Files implementation
354
+ * Improved frequently asked questions implementation to support incomplete PHP distributions
355
+ * Fixed 500 Internal Server Error when upgrading with Disk enhanced mode enabled
356
+ * Fixed notification issues with preview mode
357
+ * Fixed an issue with fatal errors with minify and memcache(d) caching engine
358
+
359
  = 0.9.0 =
360
  * Added preview feature so all cache settings can be reviewed prior to deployment
361
  * Added minify configuration wizard (help button on minify tab)
373
  * Added HTTP compression and headers for AWS S3
374
  * Added ignored comment stems field, with Google AdSense default value to HTML minify
375
  * Added support for varnish purging
376
+ * Added Rackspace Cloud Files support
377
  * Added native NetDNA / MaxCDN integration
378
  * Added option to cache 404 pages
379
  * Added changed files auto-upload to CDN
w3-total-cache.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: W3 Total Cache
4
  Description: The fastest and most complete WordPress performance plugin. Dramatically improve the speed and user experience of your site. Add browser, page, object and database caching as well as minify and content delivery network (CDN) to WordPress.
5
- Version: 0.9.0
6
  Plugin URI: http://www.w3-edge.com/wordpress-plugins/w3-total-cache/
7
  Author: Frederick Townes
8
  Author URI: http://www.linkedin.com/in/w3edge
2
  /*
3
  Plugin Name: W3 Total Cache
4
  Description: The fastest and most complete WordPress performance plugin. Dramatically improve the speed and user experience of your site. Add browser, page, object and database caching as well as minify and content delivery network (CDN) to WordPress.
5
+ Version: 0.9.1
6
  Plugin URI: http://www.w3-edge.com/wordpress-plugins/w3-total-cache/
7
  Author: Frederick Townes
8
  Author URI: http://www.linkedin.com/in/w3edge