/**
 * Implements hook_flush_caches().
 *
 * Support triggering expiration in modules not declaring their cache bins,
 * either by taking them from an explicit variable, or by performing a discovery
 * assuming the cache bin names to start by 'cache_'.
 */
function mongodb_cache_flush_caches()
{
    // Recursion protection, not static caching, so no drupal_static().
    static $reentry = FALSE;
    if ($reentry) {
        return [];
    }
    // Hardcoded in drupal_flush_all_caches() or system_cron(), but not declared
    // in system_flush_caches().
    $system_bins = ['cache', 'cache_bootstrap', 'cache_filter', 'cache_form', 'cache_menu', 'cache_page', 'cache_path'];
    $reentry = TRUE;
    $owned_bins = module_invoke_all('flush_caches');
    $reentry = FALSE;
    $detected_bins = variable_get('mongodb_cache_extra_bins', NULL);
    // As with databases, NULL means unknown, so perform a discovery.
    if (!isset($detected_bins)) {
        $detected_bins = [];
        $names = mongodb()->getCollectionNames(FALSE);
        foreach ($names as $name) {
            if (strpos($name, 'cache_') === 0) {
                $detected_bins[] = $name;
            }
        }
    }
    $adopted_bins = array_diff($detected_bins, $system_bins, $owned_bins);
    return $adopted_bins;
}
Exemplo n.º 2
0
 /**
  */
 function _init()
 {
     $this->_connection = mongodb();
     $this->_connection->connect();
 }