Exemplo n.º 1
0
    protected void initCtrls(bool reconnect = true)
    {
        // inizializzazioni
        conn_des.InnerText  = _dbname != "" ? cfg_value("/root/dbconns/dbconn[@name='" + _dbname + "']", "des") : "";
        view_tables.Visible = view_meta.Visible = view_schema.Visible = title_infos.Visible = import_pocket.Visible
                                                                                                  = gen_schema.Visible = integrita_schema.Visible = upgrade_schema.Visible = init_infos.Visible
                                                                                                                                                                                 = exp_all.Visible = exp_db.Visible = false;
        infos.Controls.Clear();

        // utente
        uid.InnerText   = userLogged;
        utype.InnerText = userTypeLogged;
        uconn.InnerText = userConn;
        try { uvis.InnerText = classPage.user_childs(userId); } catch (Exception ex) { uvis.InnerText = ex.Message; }

        // mi connetto
        db_schema db = null;

        try {
            db = _dbname != "" ? conn_db(_dbname, true, reconnect) : null;
            conn_state.InnerText = "connessione effettuata con successo";
            conn_ver.InnerText   = db.ver == "" ? "versione non presente, è necessario inizializzare le infos!" : db.ver;
            last_ver.InnerText   = _dbname != "" ? conn_curver(_dbname) : "nessun database selezionato";
        } catch (Exception ex) {
            _dbname = "";
            conn_state.InnerText = "non è stato possibile effettuare la connessione: " + ex.Message;
            classPage.regScript(classPage.scriptStartAlert("Si è verificato un errore: " + ex.Message + ". <br><br><b>E' consigliabile un ripristino del database o selezionare una connessione raggiungibile.</b>", "Caricamento pagina"));
        }

        // check utenti
        check_utenti.InnerText = "";
        set_utenti.Visible     = false;
        if (db != null && db.name != base_conn() && xmlDoc.node_val(conn_group(db.name), "name") == "web")
        {
            remove_cfg_style(check_utenti, "rcvry-sec-err");
            check_utenti.InnerText = "ok";
            db_schema base_db = conn_db_base();
            cfg_var("user_tables").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList()
            .ForEach(tbl => {
                string reason = "";
                if (!base_db.same_contents(tbl.Trim(), db, out reason))
                {
                    add_cfg_style(check_utenti, "rcvry-sec-err"); check_utenti.InnerText = reason; set_utenti.Visible = true; return;
                }
            });
        }

        // aggiorno i controlli
        try {
            // tables
            if (view_tables.Visible = db != null && db.exist_schema)
            {
                view_tables.HRef = getPageRef("tables_list", "dbname=" + _dbname);
            }

            if (_dbname != "")
            {
                init_infos.Visible = db.ver == "";
                gen_schema.Visible = exp_db.Visible = true;
                exp_all.Visible    = integrita_schema.Visible = db.ver != "";

                // meta
                if (view_meta.Visible = db.exist_meta && File.Exists(schema_path_fromconn(_dbname, false, false, true, db.ver)))
                {
                    view_meta.HRef = schema_path_fromconn(_dbname, false, true, true, db.ver);
                }

                // schema
                if (view_schema.Visible = db.exist_schema && File.Exists(schema_path_fromconn(_dbname, false, false, false, db.ver)))
                {
                    view_schema.HRef = schema_path_fromconn(_dbname, false, true, false, db.ver);
                }

                // infos
                if (db.existInfos())
                {
                    title_infos.Visible = true;
                    foreach (Dictionary <string, string> info in db.getInfos())
                    {
                        ctrlsToParent(infos, new label(info["name"] + ":", "rcvry-sec-subtitle").control
                                      , dd_exclude("name", db.info_story(info["name"])));
                    }
                }

                // pockets
                import_pocket.Visible = true;

                // upgrade schema
                if (db.ver != "" && db.ver != db.cur_ver && db.ver_long < db.cur_ver_long)
                {
                    upgrade_schema.Visible = true;
                }
            }

            // backups
            refresh_backups(db);

            // scripts
            refresh_scripts(db);
        } catch (Exception ex) {
            classPage.regScript(classPage.scriptStartAlert("Si è verificato un errore: " + ex.Message
                                                           + ". <br><br><b>E' consigliabile un ripristino del database o selezionare una connessione raggiungibile.</b>"
                                                           , "Caricamento pagina"));
        }
    }