1772c9249SMichael Hamann<?php 2772c9249SMichael Hamann 3*cbb44eabSAndreas Gohruse dokuwiki\Extension\Event; 4*cbb44eabSAndreas Gohr 5772c9249SMichael Hamann/** 6772c9249SMichael Hamann * This tests if event handlers can trigger the same event again. 7772c9249SMichael Hamann * This is used by plugins that modify cache handling and use metadata 8772c9249SMichael Hamann * for checking cache validity which triggers another cache use event. 9772c9249SMichael Hamann */ 10772c9249SMichael Hamannclass events_nested_test extends DokuWikiTest { 11772c9249SMichael Hamann function test_nested_events() { 12772c9249SMichael Hamann global $EVENT_HANDLER; 13772c9249SMichael Hamann $firstcount = 0; 14772c9249SMichael Hamann $secondcount = 0; 15772c9249SMichael Hamann 16772c9249SMichael Hamann $EVENT_HANDLER->register_hook('NESTED_EVENT', 'BEFORE', null, 17772c9249SMichael Hamann function() use (&$firstcount) { 18772c9249SMichael Hamann $firstcount++; 19772c9249SMichael Hamann if ($firstcount == 1) { 20772c9249SMichael Hamann $param = array(); 21*cbb44eabSAndreas Gohr Event::createAndTrigger('NESTED_EVENT', $param); 22772c9249SMichael Hamann } 23772c9249SMichael Hamann } 24772c9249SMichael Hamann ); 25772c9249SMichael Hamann 26772c9249SMichael Hamann $EVENT_HANDLER->register_hook('NESTED_EVENT', 'BEFORE', null, 27772c9249SMichael Hamann function() use (&$secondcount) { 28772c9249SMichael Hamann $secondcount++; 29772c9249SMichael Hamann } 30772c9249SMichael Hamann ); 31772c9249SMichael Hamann 32772c9249SMichael Hamann $param = array(); 33*cbb44eabSAndreas Gohr Event::createAndTrigger('NESTED_EVENT', $param); 34772c9249SMichael Hamann 35772c9249SMichael Hamann $this->assertEquals(2, $firstcount); 36772c9249SMichael Hamann $this->assertEquals(2, $secondcount); 37772c9249SMichael Hamann } 38772c9249SMichael Hamann} 39