copyGui($guiId, $newGuiName, true)) { $this->deleteGui($guiId); return true; } return false; } /** * * Copies a GUI $guiId and all its links to users, layers etc. to GUI $newGuiName * * @param Integer $guiId ID of the GUI * @param String $newGuiName the new name of the GUI * @param boolean $withUsers true if the users, that may access the GUI $guiId, shall have access to the new GUI; else false. * * @return boolean true if the renaming succeded, else false */ public function copyGui ($guiId, $newGuiName, $withUsers) { $guiList = $guiId; if (!$this->guiExists($newGuiName)) { $sql = array(); $v = array(); $t = array(); array_push($sql, "BEGIN"); array_push($v, array()); array_push($t, array()); array_push($sql, "INSERT INTO gui (gui_id, gui_name, gui_description, gui_public) SELECT $1, $2, gui_description, gui_public FROM gui WHERE gui_id = $3;"); array_push($v, array ($newGuiName, $newGuiName, $guiList)); array_push($t, array ("s", "s", "s"));; array_push($sql, "INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, e_title, e_element, e_src, e_attributes, e_left, e_top, e_width, e_height, e_z_index, e_more_styles, e_content, e_closetag, e_js_file, e_mb_mod, e_target, e_requires, e_url) SELECT $1, e_id, e_pos, e_public, e_comment, e_title, e_element, e_src, e_attributes, e_left, e_top, e_width, e_height, e_z_index, e_more_styles, e_content, e_closetag, e_js_file, e_mb_mod, e_target, e_requires, e_url FROM gui_element WHERE fkey_gui_id = $2;"); array_push($v, array($newGuiName, $guiList)); array_push($t, array("s", "s")); array_push($sql, "INSERT INTO gui_element_vars (fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) SELECT $1, fkey_e_id, var_name, var_value, context, var_type FROM gui_element_vars WHERE fkey_gui_id = $2;"); array_push($v, array($newGuiName, $guiList)); array_push($t, array("s", "s")); array_push($sql, "INSERT INTO gui_layer (fkey_gui_id, fkey_layer_id, gui_layer_wms_id, gui_layer_status, gui_layer_selectable, gui_layer_visible, gui_layer_queryable, gui_layer_querylayer, gui_layer_minscale, gui_layer_maxscale, gui_layer_priority, gui_layer_style, gui_layer_wfs_featuretype) SELECT $1, fkey_layer_id, gui_layer_wms_id, gui_layer_status, gui_layer_selectable, gui_layer_visible, gui_layer_queryable, gui_layer_querylayer, gui_layer_minscale, gui_layer_maxscale, gui_layer_priority, gui_layer_style, gui_layer_wfs_featuretype FROM gui_layer WHERE fkey_gui_id = $2;"); array_push($v, array($newGuiName, $guiList)); array_push($t, array("s", "s")); if ($withUsers == true) { /* group of original gui is copied as well */ array_push($sql, "INSERT INTO gui_mb_group (fkey_gui_id, fkey_mb_group_id, mb_group_type) SELECT $1, fkey_mb_group_id, mb_group_type FROM gui_mb_group WHERE fkey_gui_id = $2;"); array_push($v, array($newGuiName, $guiList)); array_push($t, array("s", "s")); /* users of original gui are copied as well */ array_push($sql, "INSERT INTO gui_mb_user (fkey_gui_id, fkey_mb_user_id, mb_user_type) SELECT $1, fkey_mb_user_id, mb_user_type FROM gui_mb_user WHERE fkey_gui_id = $2;"); array_push($v, array($newGuiName, $guiList)); array_push($t, array("s", "s")); } else { // users of original gui are not copied, the current user is set as owner array_push($sql, "INSERT INTO gui_mb_user (fkey_gui_id, fkey_mb_user_id, mb_user_type) VALUES ($1, $2, 'owner')"); array_push($v, array($newGuiName, $_SESSION["mb_user_id"])); array_push($t, array('s', 'i')); } array_push($sql, "INSERT INTO gui_treegde (fkey_gui_id, fkey_layer_id, id, lft, rgt, my_layer_title, layer, wms_id) SELECT $1, fkey_layer_id, id, lft, rgt, my_layer_title, layer, wms_id FROM gui_treegde WHERE fkey_gui_id = $2;"); array_push($v, array($newGuiName, $guiList)); array_push($t, array("s", "s")); array_push($sql, "INSERT INTO gui_wfs (fkey_gui_id, fkey_wfs_id) SELECT $1, fkey_wfs_id FROM gui_wfs WHERE fkey_gui_id = $2;"); array_push($v, array($newGuiName, $guiList)); array_push($t, array("s", "s")); array_push($sql, "INSERT INTO gui_wms (fkey_gui_id, fkey_wms_id, gui_wms_position, gui_wms_mapformat, gui_wms_featureinfoformat, gui_wms_exceptionformat, gui_wms_epsg, gui_wms_visible) SELECT $1, fkey_wms_id, gui_wms_position, gui_wms_mapformat, gui_wms_featureinfoformat, gui_wms_exceptionformat, gui_wms_epsg, gui_wms_visible FROM gui_wms WHERE fkey_gui_id = $2;"); array_push($v, array($newGuiName, $guiList)); array_push($t, array("s", "s")); array_push($sql, "COMMIT"); array_push($v, array()); array_push($t, array()); // execute all SQLs for ($i = 0; $i < count($sql); $i++) { $res = db_prep_query($sql[$i], $v[$i], $t[$i]); // if an SQL fails, send a ROLLBACK and return false if (!$res) { db_query("ROLLBACK"); return false; } } return true; } else { echo ""; return false; } } } ?>