#605880 by bleen18 and David_Rothstein: Fix weird bugs with settings and menus after install due to faulty caching.
							parent
							
								
									c6e2dfa573
								
							
						
					
					
						commit
						a986e349fa
					
				| 
						 | 
					@ -10,10 +10,7 @@
 | 
				
			||||||
 * implementation during normal operations would have a negative impact
 | 
					 * implementation during normal operations would have a negative impact
 | 
				
			||||||
 * on performance.
 | 
					 * on performance.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class DrupalFakeCache implements DrupalCacheInterface {
 | 
					class DrupalFakeCache extends DrupalDatabaseCache implements DrupalCacheInterface {
 | 
				
			||||||
  function __construct($bin) {
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  function get($cid) {
 | 
					  function get($cid) {
 | 
				
			||||||
    return FALSE;
 | 
					    return FALSE;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -22,11 +19,34 @@ class DrupalFakeCache implements DrupalCacheInterface {
 | 
				
			||||||
    return array();
 | 
					    return array();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
  function set($cid, $data, $expire = CACHE_PERMANENT, array $headers = NULL) {
 | 
					  function set($cid, $data, $expire = CACHE_PERMANENT, array $headers = NULL) {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function clear($cid = NULL, $wildcard = FALSE) {
 | 
					  function clear($cid = NULL, $wildcard = FALSE) {
 | 
				
			||||||
 | 
					    // If there is a database cache, attempt to clear it whenever possible. The
 | 
				
			||||||
 | 
					    // reason for doing this is that the database cache can accumulate data
 | 
				
			||||||
 | 
					    // during installation due to any full bootstraps that may occur at the
 | 
				
			||||||
 | 
					    // same time (for example, AJAX requests triggered by the installer). If we
 | 
				
			||||||
 | 
					    // didn't try to clear it whenever this function is called, the data in the
 | 
				
			||||||
 | 
					    // cache would become stale; for example, the installer sometimes calls
 | 
				
			||||||
 | 
					    // variable_set(), which updates the {variable} table and then clears the
 | 
				
			||||||
 | 
					    // cache to make sure that the next page request picks up the new value.
 | 
				
			||||||
 | 
					    // Not actually clearing the cache here therefore leads old variables to be
 | 
				
			||||||
 | 
					    // loaded on the first page requests after installation, which can cause
 | 
				
			||||||
 | 
					    // subtle bugs, some of which would not be fixed unless the site
 | 
				
			||||||
 | 
					    // administrator cleared the cache manually.
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      if (function_exists('drupal_install_initialize_database')) {
 | 
				
			||||||
 | 
					        drupal_install_initialize_database();
 | 
				
			||||||
 | 
					        parent::clear($cid, $wildcard);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // If the attempt at clearing the cache causes an error, that means that
 | 
				
			||||||
 | 
					    // either the database connection is not set up yet or the relevant cache
 | 
				
			||||||
 | 
					    // table in the database has not yet been created, so we can safely do
 | 
				
			||||||
 | 
					    // nothing here.
 | 
				
			||||||
 | 
					    catch (Exception $e) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function isEmpty() {
 | 
					  function isEmpty() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue