/**
  * @expectedException coding_exception
  */
 public function test_add_nodes_before_invalid2() {
     $tree = new admin_root(true);
     $tree->add('root', new admin_category('bar', 'Bar'), '');
 }
Exemple #2
0
/**
 * Returns the reference to admin tree root
 *
 * @return object admin_root object
 */
function admin_get_root($reload = false, $requirefulltree = true)
{
    global $CFG, $DB, $OUTPUT;
    static $ADMIN = NULL;
    if (is_null($ADMIN)) {
        // create the admin tree!
        $ADMIN = new admin_root($requirefulltree);
    }
    if ($reload or $requirefulltree and !$ADMIN->fulltree) {
        $ADMIN->purge_children($requirefulltree);
    }
    if (!$ADMIN->loaded) {
        // we process this file first to create categories first and in correct order
        require $CFG->dirroot . '/' . $CFG->admin . '/settings/top.php';
        // now we process all other files in admin/settings to build the admin tree
        foreach (glob($CFG->dirroot . '/' . $CFG->admin . '/settings/*.php') as $file) {
            if ($file == $CFG->dirroot . '/' . $CFG->admin . '/settings/top.php') {
                continue;
            }
            if ($file == $CFG->dirroot . '/' . $CFG->admin . '/settings/plugins.php') {
                // plugins are loaded last - they may insert pages anywhere
                continue;
            }
            require $file;
        }
        require $CFG->dirroot . '/' . $CFG->admin . '/settings/plugins.php';
        $ADMIN->loaded = true;
    }
    return $ADMIN;
}
 /**
  * Saving of values.
  */
 public function test_config_logging()
 {
     global $DB;
     $this->resetAfterTest();
     $DB->delete_records('config_log', array());
     $adminroot = new admin_root(true);
     $adminroot->add('root', $one = new admin_category('one', 'One'));
     $page = new admin_settingpage('page', 'Page');
     $page->add(new admin_setting_configtext('text1', 'Text 1', '', ''));
     $page->add(new admin_setting_configpasswordunmask('pass1', 'Password 1', '', ''));
     $adminroot->add('one', $page);
     $this->assertEmpty($DB->get_records('config_log'));
     $data = array('s__text1' => 'sometext', 's__pass1' => '');
     $count = $this->save_config_data($adminroot, $data);
     $this->assertEquals(2, $count);
     $records = $DB->get_records('config_log', array(), 'id asc');
     $this->assertCount(2, $records);
     reset($records);
     $record = array_shift($records);
     $this->assertNull($record->plugin);
     $this->assertSame('text1', $record->name);
     $this->assertNull($record->oldvalue);
     $this->assertSame('sometext', $record->value);
     $record = array_shift($records);
     $this->assertNull($record->plugin);
     $this->assertSame('pass1', $record->name);
     $this->assertNull($record->oldvalue);
     $this->assertSame('', $record->value);
     $DB->delete_records('config_log', array());
     $data = array('s__text1' => 'other', 's__pass1' => 'nice password');
     $count = $this->save_config_data($adminroot, $data);
     $this->assertEquals(2, $count);
     $records = $DB->get_records('config_log', array(), 'id asc');
     $this->assertCount(2, $records);
     reset($records);
     $record = array_shift($records);
     $this->assertNull($record->plugin);
     $this->assertSame('text1', $record->name);
     $this->assertSame('sometext', $record->oldvalue);
     $this->assertSame('other', $record->value);
     $record = array_shift($records);
     $this->assertNull($record->plugin);
     $this->assertSame('pass1', $record->name);
     $this->assertSame('', $record->oldvalue);
     $this->assertSame('********', $record->value);
     $DB->delete_records('config_log', array());
     $data = array('s__text1' => '', 's__pass1' => '');
     $count = $this->save_config_data($adminroot, $data);
     $this->assertEquals(2, $count);
     $records = $DB->get_records('config_log', array(), 'id asc');
     $this->assertCount(2, $records);
     reset($records);
     $record = array_shift($records);
     $this->assertNull($record->plugin);
     $this->assertSame('text1', $record->name);
     $this->assertSame('other', $record->oldvalue);
     $this->assertSame('', $record->value);
     $record = array_shift($records);
     $this->assertNull($record->plugin);
     $this->assertSame('pass1', $record->name);
     $this->assertSame('********', $record->oldvalue);
     $this->assertSame('', $record->value);
 }