<?php
class menu
{
    const TABLE = 'menu';
    
    ////////////////////////////////////////////////////////////////////////////
    // Construct and destruct functions.
    
    ////////////////////////////////////////////////////////////////////////////
    // Overload functions.

    ////////////////////////////////////////////////////////////////////////////
    // Interface functions.
    
    public static function get($id)
    {
        return db::query()->select(self::TABLE)
                          ->where('id', $id)
                          ->execute()->fetch();
    }
    
    public static function get_list()
    {
        return db::query()->select(self::TABLE)
                          ->execute();
    }
    
    public static function add(array $data)
    {
        db::query()->insert(self::TABLE)
                   ->column($data)
                   ->execute();
        
        $id = db::get()->get_last_id();
        return $id;
    }
    
    public static function edit($id, array $data)
    {
        db::query()->update(self::TABLE)
                   ->column($data)
                   ->where('id', $id)
                   ->limit(1)
                   ->execute();
    }
    
    public static function delete($id)
    {
        db::query()->delete(self::TABLE)
                   ->where('id', $id)
                   ->execute();
        
        menu_item::delete_by_menu($id);
        
        foreach (module::get_list() as $module) {
            if ($module['module_type_id'] == 4 && $module['data']->menu_id == $id) {
                module::delete($module['id']);
            }
        }
    }
    
    ////////////////////////////////////////////////////////////////////////////
    // Internal functions.
}
