[Tͪ#n$;<:a4sX[Q 0nI0ESHf"B/=u~&MTlOѲrބ!2<3bsR9;$Vu~T}k96 #NKg\`c+u,⻺Ł|;&!ՆӮs7zhxc[H
_O$4LӿWx˗5\[f1̡ti)|x\\(8BҌ`W$MHHX=$7-Fya0ؑ/pJeGzpsx. 8G(1}b?tf}lB̉,#5
kSsJNY_ @B?V/&U"Y5sqwi⏃	4i}=̓㢴O]sV'JvL$hy&HE[{3HU%wH<}wpွ ٢9D_i,ew]Y
Gr_#N`V:jR0*T-M {
Lrxr-$RhHe's9W?0NM$lhO[,l+RP/;S75'-/(S{ 
hNr&U0W1qΰs_.j1dn$%Ĵ+)}3|%}遇>۱iԂgMӕ"DWx?=McL곍>J7zn-҇w49{gC1hI9HQJnh+7aJX3`rVp>x^A':vm;F974cye@|cc>6NJ$=cZ]&;3Da<F[yʏl8	.4[`K]fu+ebYfU[v E tkL	k@믁6*Lfҋ'2щ?#gЇO'v\q3Ժgj9~+Xz4YNh);[qrLG l5?Uns 8åYZ^>1RPh׏kaS ro8	j9>K!+voY5ŵg.J^%z%B_iu]2l;Z:h<"ny}T)'2Jo7.%-yɦeׯ	jI]L'mWfn[(fŝܿJ7zn-҇w49+/Ԭva]sV'JvL$hy&HE[{3HU%wH<}wpွ ٢9![;'_#N`V:jR0*T-M {
Lrxr-$RM.i嵴//Ձj0+{9g,2TR~Lh٪KH6I 
] s~Z[s_.j1dn$%Ĵ+)}ݡLG6ɤӛT}eaK}|	p[{q|ܣ>rL*N*!ER}v =qP5!VvEMx	=e>H\Y_Z/& CR
,! /͔oPbr?e1H6ƆduߺPݽ47n=$EJ,$]*KÛ"OO܍᫬
06P!VXQ,DUC`4mw`q޳-烪K[/FJ2:޳6wKCpJ%ǓS/;5U2QTK9Il/:kڗ-bMlXX7_y1x27	^&%4pkgf}'?:l}V0gΏwW	}4}^D1&+䨕ky̭4r2,~BUT}u^X;J߇+}5x!&nqR#tQ#9dD8{eS^EAK;S'U~{7nY٥kH#+$1N+E3)	$kJH҈%uLm&ED^g
7j[m7jf>*J!9Kr.ͼ$y)U{x]47F"q}wb\u_c3pCN62v揇cf뎮x@!UCEv6rIRmOψFNL@A'<^~b{B}gȴW,b盳uOI:zMٜJ#.qWXa(qԕ$\ãnMIs:dsnED;	Mұ'dMX`tw,z{2מl/BdsY?Cpsnӣl%IK]fu+ebnrǫY1oEM%ɇ>;(4inbGY雿-Gmʹoiܙ(79V9f&HMU˧rgLb~		^F[(ǎi_GȲJ4L)k:mۛ*DMcJ w5v;EXPMd.2F+G9ȃ,AѕXbˢz?ړ7rrCeA"YCF}CF@N_e#VkțBؙIGݦ)0D4WiOP>^C)o^)]7JP{{${|=)~xIXJf @88Y}Kzg:Tasi?KSK[͜vz6 8me/LMBgAgjJ/.M*2U
_9,8;$@	YSURTdeؖRtV[?Uns 8åYZ^>1RPh׏kaS ro8	j9>K!+vo|GqLod-{wJP5#JʇBƩ2Zoe*E<Pܡ׷a2LcY%"m:E:6z5i7LaUׁ3BLk(㧵1ҷ끴ܕJVs}ikcwߑ(mI{9zF긤Z&2eUZ=?3ڏ)Rr-@^.%mYq14?w/ϡQQ@1HmsMm^9ɐOFÞu,]diH
ȕ'y<"jae/R'2-'.4;rĘ	/h#?]ZҋwV
L Zduj-PY~AIGT8#7r0nX!a8r#&\g4_,
mr>s?xx~J!н}/H<i$4|6fB̐
mH䗗d"ZE`r|RL8%o[0vAOYHW駍dg?zXY_dF.<_5ajŁsȵG-;S*Ut^buø/(AЅeUG
Nq9=@w` w]ީEj?*d8(6bc:\C\$;$lT0yHfZcX`/zICd|&)k㽡Vӈ[i9V]qxz9d])I
Fy*4]txh06~X&@Di>Oc dlay_field,
                'display_page' => $display_page
            )
        );
}

/**
 * Returns HTML for the menu bar of the designer page
 *
 * @param boolean $visualBuilder whether this is visual query builder
 * @param string  $selected_page name of the selected page
 * @param array   $params_array  array with class name for various buttons on side
 *                               menu
 *
 * @return string html
 */
function PMA_getDesignerPageMenu($visualBuilder, $selected_page, $params_array)
{
    return PMA\libraries\Template::get('database/designer/side_menu')
        ->render(
            array(
                'visualBuilder' => $visualBuilder,
                'selected_page' => $selected_page,
                'params_array' => $params_array
            )
        );
}

/**
 * Returns array of stored values of Designer Settings
 *
 * @return array stored values
 */
function PMA_getSideMenuParamsArray()
{
    $params = array();

    $cfgRelation = PMA_getRelationsParam();

    if ($GLOBALS['cfgRelation']['designersettingswork']) {

        $query = 'SELECT `settings_data` FROM '
            . PMA\libraries\Util::backquote($cfgRelation['db']) . '.'
            . PMA\libraries\Util::backquote($cfgRelation['designer_settings'])
            . ' WHERE ' . PMA\libraries\Util::backquote('username') . ' = "'
            . $GLOBALS['cfg']['Server']['user'] . '";';

        $result = $GLOBALS['dbi']->fetchSingleRow($query);

        $params = json_decode($result['settings_data'], true);
    }

    return $params;
}

/**
 * Returns class names for various buttons on Designer Side Menu
 *
 * @return array class names of various buttons
 */
function PMA_returnClassNamesFromMenuButtons()
{
    $classes_array = array();
    $params_array = PMA_getSideMenuParamsArray();

    if (isset($params_array['angular_direct'])
        && $params_array['angular_direct'] == 'angular'
    ) {
        $classes_array['angular_direct'] = 'M_butt_Selected_down';
    } else {
        $classes_array['angular_direct'] = 'M_butt';
    }

    if (isset($params_array['snap_to_grid'])
        && $params_array['snap_to_grid'] == 'on'
    ) {
        $classes_array['snap_to_grid'] = 'M_butt_Selected_down';
    } else {
        $classes_array['snap_to_grid'] = 'M_butt';
    }

    if (isset($params_array['pin_text'])
        && $params_array['pin_text'] == 'true'
    ) {
        $classes_array['pin_text'] = 'M_butt_Selected_down';
    } else {
        $classes_array['pin_text'] = 'M_butt';
    }

    if (isset($params_array['relation_lines'])
        && $params_array['relation_lines'] == 'false'
    ) {
        $classes_array['relation_lines'] = 'M_butt_Selected_down';
    } else {
        $classes_array['relation_lines'] = 'M_butt';
    }

    if (isset($params_array['small_big_all'])
        && $params_array['small_big_all'] == 'v'
    ) {
        $classes_array['small_big_all'] = 'M_butt_Selected_down';
    } else {
        $classes_array['small_big_all'] = 'M_butt';
    }

    if (isset($params_array['side_menu'])
        && $params_array['side_menu'] == 'true'
    ) {
        $classes_array['side_menu'] = 'M_butt_Selected_down';
    } else {
        $classes_array['side_menu'] = 'M_butt';
    }

    return $classes_array;
}

/**
 * Returns HTML for the canvas element
 *
 * @return string html
 */
function PMA_getHTMLCanvas()
{
    return PMA\libraries\Template::get('database/designer/canvas')->render();
}

/**
 * Return HTML for the table list
 *
 * @param array $tab_pos      table positions
 * @param int   $display_page page number of the selected page
 *
 * @return string html
 */
function PMA_getHTMLTableList($tab_pos, $display_page)
{
    return PMA\libraries\Template::get('database/designer/table_list')
        ->render(
            array(
                'tab_pos' => $tab_pos,
                'display_page' => $display_page
            )
        );
}

/**
 * Get HTML to display tables on designer page
 *
 * @param array $tab_pos                  tables positions
 * @param int   $display_page             page number of the selected page
 * @param array $tab_column               table column info
 * @param array $tables_all_keys          all indices
 * @param array $tables_pk_or_unique_keys unique or primary indices
 *
 * @return string html
 */
function PMA_getDatabaseTables(
    $tab_pos, $display_page, $tab_column, $tables_all_keys, $tables_pk_or_unique_keys
) {
    return PMA\libraries\Template::get('database/designer/database_tables')
        ->render(
            array(
                'tab_pos' => $tab_pos,
                'display_page' => $display_page,
                'tab_column' => $tab_column,
                'tables_all_keys' => $tables_all_keys,
                'tables_pk_or_unique_keys' => $tables_pk_or_unique_keys
            )
        );
}

/**
 * Returns HTML for the new relations panel.
 *
 * @return string html
 */
function PMA_getNewRelationPanel()
{
    return PMA\libraries\Template::get('database/designer/new_relation_panel')
        ->render();
}

/**
 * Returns HTML for the relations delete panel
 *
 * @return string html
 */
function PMA_getDeleteRelationPanel()
{
    return PMA\libraries\Template::get('database/designer/delete_relation_panel')
        ->render();
}

/**
 * Returns HTML for the options panel
 *
 * @return string html
 */
function PMA_getOptionsPanel()
{
    return PMA\libraries\Template::get('database/designer/options_panel')->render();
}

/**
 * Get HTML for the 'rename to' panel
 *
 * @return string html
 */
function PMA_getRenameToPanel()
{
    return PMA\libraries\Template::get('database/designer/rename_to_panel')
        ->render();
}

/**
 * Returns HTML for the 'having' panel
 *
 * @return string html
 */
function PMA_getHavingQueryPanel()
{
    return PMA\libraries\Template::get('database/designer/having_query_panel')
        ->render();
}

/**
 * Returns HTML for the 'aggregate' panel
 *
 * @return string html
 */
function PMA_getAggregateQueryPanel()
{
    return PMA\libraries\Template::get('database/designer/aggregate_query_panel')
        ->render();
}

/**
 * Returns HTML for the 'where' panel
 *
 * @return string html
 */
function PMA_getWhereQueryPanel()
{
    return PMA\libraries\Template::get('database/designer/where_query_panel')
        ->render();
}

/**
 * Returns HTML for the query details panel
 *
 * @return string html
 */
function PMA_getQueryDetails()
{
    return PMA\libraries\Template::get('database/designer/query_details')->render();
}
