redirect($PAGE->url); } } break; case 'purgedefinition': // Purge a specific definition. $definition = required_param('definition', PARAM_SAFEPATH); list($component, $area) = explode('/', $definition, 2); $factory = cache_factory::instance(); $definition = $factory->create_definition($component, $area); if ($definition->has_required_identifiers()) { // We will have to purge the stores used by this definition. cache_helper::purge_stores_used_by_definition($component, $area); } else { // Alrighty we can purge just the data belonging to this definition. cache_helper::purge_by_definition($component, $area); } redirect($PAGE->url, get_string('purgedefinitionsuccess', 'cache'), 5); break; case 'purgestore': case 'purge': // Purge a store cache. $store = required_param('store', PARAM_TEXT); cache_helper::purge_store($store); redirect($PAGE->url, get_string('purgestoresuccess', 'cache'), 5); break; case 'newlockinstance': // Adds a new lock instance. $lock = required_param('lock', PARAM_ALPHANUMEXT); $mform = cache_administration_helper::get_add_lock_form($lock); if ($mform->is_cancelled()) {
/** * Resets the internal column details cache * @return void */ public function reset_caches() { $this->tables = null; // Purge MUC as well $identifiers = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash()); cache_helper::purge_by_definition('core', 'databasemeta', $identifiers); }
/** * Test purge routines. */ public function test_purge_routines() { $instance = cache_config_testing::instance(true); $instance->phpunit_add_definition('phpunit/purge1', array('mode' => cache_store::MODE_APPLICATION, 'component' => 'phpunit', 'area' => 'purge1')); $instance->phpunit_add_definition('phpunit/purge2', array('mode' => cache_store::MODE_APPLICATION, 'component' => 'phpunit', 'area' => 'purge2', 'requireidentifiers' => array('id'))); $factory = cache_factory::instance(); $definition = $factory->create_definition('phpunit', 'purge1'); $this->assertFalse($definition->has_required_identifiers()); $cache = $factory->create_cache($definition); $this->assertInstanceOf('cache_application', $cache); $this->assertTrue($cache->set('test', 'test')); $this->assertTrue($cache->has('test')); cache_helper::purge_by_definition('phpunit', 'purge1'); $this->assertFalse($cache->has('test')); $factory = cache_factory::instance(); $definition = $factory->create_definition('phpunit', 'purge2'); $this->assertTrue($definition->has_required_identifiers()); $cache = $factory->create_cache($definition); $this->assertInstanceOf('cache_application', $cache); $this->assertTrue($cache->set('test', 'test')); $this->assertTrue($cache->has('test')); cache_helper::purge_stores_used_by_definition('phpunit', 'purge2'); $this->assertFalse($cache->has('test')); try { cache_helper::purge_by_definition('phpunit', 'purge2'); $this->fail('Should not be able to purge a definition required identifiers without providing them.'); } catch (coding_exception $ex) { $this->assertContains('Identifier required for cache has not been provided', $ex->getMessage()); } }
/** * Tests application cache definition purge */ public function test_application_definition_purge() { $instance = cache_config_phpunittest::instance(); $instance->phpunit_add_definition('phpunit/definitionpurgetest', array('mode' => cache_store::MODE_APPLICATION, 'component' => 'phpunit', 'area' => 'definitionpurgetest', 'invalidationevents' => array('crazyevent'))); $cache = cache::make('phpunit', 'definitionpurgetest'); $this->assertTrue($cache->set('testkey1', 'test data 1')); $this->assertEquals('test data 1', $cache->get('testkey1')); $this->assertTrue($cache->set('testkey2', 'test data 2')); $this->assertEquals('test data 2', $cache->get('testkey2')); // Purge the event. cache_helper::purge_by_definition('phpunit', 'definitionpurgetest'); // Check things have been removed. $this->assertFalse($cache->get('testkey1')); $this->assertFalse($cache->get('testkey2')); }
public function test_delete() { $this->search->index(); $querydata = new stdClass(); $querydata->q = 'message'; $this->assertCount(2, $this->search->search($querydata)); $areaid = \core_search\manager::generate_areaid('core_mocksearch', 'role_capabilities'); $this->search->delete_index($areaid); cache_helper::purge_by_definition('core', 'search_results'); $this->assertCount(0, $this->search->search($querydata)); }