/
ColdCore-3.0a9.02/
ColdCore-3.0a9.02/src/
new object $channel_db: $db;

var $channel_db system_channels = ['Login, 'System, 'All];
var $db database = #[['all, ['All, 0, <$parent_lock_frob, [$admin]>, 0, $channel_db, [$channel_db], 0, 0]], ['login, ['Login, 2, 0, 0, $channel_db, [$channel_db], "User login and logout notifications.", 0]], ['system, ['System, 1, 0, 0, $channel_db, [$channel_db], "System wide messages like backup notifications.", 0]]];
var $root created_on = 845244416;
var $root flags = ['variables, 'methods, 'code, 'core];
var $root inited = 1;
var $root managed = [$channel_db];
var $root manager = $channel_db;
var $root trusted = [$channel_ui];

protected method .clean_db() {
    var x, d;
    
    d = #[];
    for x in (.database()) {
        pause();
        if ((x[2])[2])
            d = d.add(@x);
    }
    .set_database(d);
};

root method .core_channel_db() {
    var elem, key, value, d;
    
    d = #[];
    for elem in (.database()) {
        refresh();
        [key, value] = elem;
        if (!valid(value[5]))
            continue;
        if (filter elem in (value[6]) where (!valid(elem)))
            continue;
        d = d.add(key, value);
    }
    .set_database(d);
};

public method .search() {
    arg channel;
    var key;
    
    if (type(channel) != 'symbol)
        key = .strip_key(channel);
    else
        key = channel;
    catch ~keynf, ~matchnf
        return (> .exact_match(key) <);
    with
        throw(~keynf, "Unknown channel: " + channel);
};

public method .strip_key() {
    arg channel;
    var key;
    
    anticipate_assignment();
    return lowercase(tostr(channel)).to_symbol();
};

public method .system_channels() {
    return system_channels;
};