From: chriskl Date: Mon, 6 Jun 2005 14:50:05 +0000 (+0000) Subject: Creating and dropping of listens. X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=b457917d88b6768ad290ead861c6ecf33e773a1a;p=phppgadmin.git Creating and dropping of listens. --- diff --git a/classes/plugins/Slony.php b/classes/plugins/Slony.php index d9d20829..efa658dd 100755 --- a/classes/plugins/Slony.php +++ b/classes/plugins/Slony.php @@ -3,7 +3,7 @@ /** * A class that implements the Slony 1.0.x support plugin * - * $Id: Slony.php,v 1.1.2.12 2005/06/05 16:07:24 chriskl Exp $ + * $Id: Slony.php,v 1.1.2.13 2005/06/06 14:50:06 chriskl Exp $ */ include_once('./classes/plugins/Plugin.php'); @@ -372,6 +372,8 @@ class Slony extends Plugin { return $data->execute($sql); } + // LISTENS + /** * Gets node listens */ @@ -410,6 +412,40 @@ class Slony extends Plugin { return $data->selectSet($sql); } + /** + * Creates a listen + */ + function createListen($no_id, $origin, $provider) { + global $data; + + $schema = $this->slony_schema; + $data->fieldClean($schema); + $data->clean($no_id); + $data->clean($origin); + $data->clean($provider); + + $sql = "SELECT \"{$schema}\".storelisten('{$origin}', '{$provider}', '{$no_id}')"; + + return $data->execute($sql); + } + + /** + * Drops a listen + */ + function dropListen($no_id, $origin, $provider) { + global $data; + + $schema = $this->slony_schema; + $data->fieldClean($schema); + $data->clean($no_id); + $data->clean($origin); + $data->clean($provider); + + $sql = "SELECT \"{$schema}\".droplisten('{$origin}', '{$provider}', '{$no_id}')"; + + return $data->execute($sql); + } + // ACTIONS diff --git a/plugin_slony.php b/plugin_slony.php index 49099381..61d9c197 100755 --- a/plugin_slony.php +++ b/plugin_slony.php @@ -3,7 +3,7 @@ /** * Slony database tab plugin * - * $Id: plugin_slony.php,v 1.1.2.11 2005/06/05 16:07:24 chriskl Exp $ + * $Id: plugin_slony.php,v 1.1.2.12 2005/06/06 14:50:05 chriskl Exp $ */ // Include application functions @@ -825,11 +825,13 @@ } } + // LISTENS + /** * List all the listens */ function doListens($msg = '') { - global $slony, $misc; + global $PHP_SELF, $slony, $misc; global $lang; $misc->printTrail('database'); @@ -855,11 +857,19 @@ 'detail' => array( 'title' => $lang['strproperties'], 'url' => "plugin_slony.php?{$misc->href}&action=listen_properties&", - 'vars' => array('no_id' => 'li_receiver', 'listen_id' => 'no_id') + 'vars' => array('no_id' => 'li_receiver', 'listen_id' => 'no_id', 'origin_id' => 'li_origin') + ), + 'drop' => array( + 'title' => $lang['strdrop'], + 'url' => "plugin_slony.php?{$misc->href}&action=confirm_drop_listen&", + 'vars' => array('no_id' => 'li_receiver', 'listen_id' => 'no_id', 'origin_id' => 'li_origin') ) + ); $misc->printTable($listens, $columns, $actions, 'No listens found.'); + + echo "

href}&no_id={$_REQUEST['no_id']}\">Create Listen

\n"; } /** @@ -894,7 +904,100 @@ echo "\n"; } else echo "

{$lang['strnodata']}

\n"; + + echo "

href}&no_id={$_REQUEST['no_id']}&listen_id={$_REQUEST['listen_id']}&origin_id={$listen->f['li_origin']}\">{$lang['strdrop']}

\n"; + } + + /** + * Displays a screen where they can enter a new listen + */ + function doCreateListen($confirm, $msg = '') { + global $data, $slony, $misc; + global $PHP_SELF, $lang; + + if ($confirm) { + if (!isset($_POST['listenorigin'])) $_POST['listenorigin'] = ''; + if (!isset($_POST['listenprovider'])) $_POST['listenprovider'] = ''; + + // Fetch all servers + $nodes = &$slony->getNodes(); + + $misc->printTrail('slony_listens'); + $misc->printTitle('Create Listen'); + $misc->printMsg($msg); + + echo "
\n"; + echo $misc->form; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n"; + echo "
Origin\n\t\t\t\n\t\t
Provider\n\t\t\t\n\t\t
\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + $status = $slony->createListen($_POST['no_id'], $_POST['listenorigin'], $_POST['listenprovider']); + if ($status == 0) + doListens('Listen created.'); + else + doCreateListen(true, 'Failed creating listen.'); + } + } + + /** + * Show confirmation of drop and perform actual drop of a listen + */ + function doDropListen($confirm) { + global $slony, $misc; + global $PHP_SELF, $lang; + + if ($confirm) { + $misc->printTrail('slony_cluster'); + $misc->printTitle($lang['strdrop']); + + echo "

", sprintf('Are you sure you want to drop listen "%s"?', $misc->printVal($_REQUEST['listen_id'])), "

\n"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $slony->dropListen($_REQUEST['no_id'], $_REQUEST['origin_id'], $_REQUEST['listen_id']); + if ($status == 0) + doListens('Listen dropped.'); + else + doListens('Failed dropping listen.'); + } } + + // REPLICATION SETS /** * List all the replication sets @@ -1109,6 +1212,20 @@ case 'listen_properties': doListen(); break; + case 'save_create_listen': + if (isset($_POST['cancel'])) doListens(); + else doCreateListen(false); + break; + case 'create_listen': + doCreateListen(true); + break; + case 'drop_listen': + if (isset($_POST['cancel'])) doListens(); + else doDropListen(false); + break; + case 'confirm_drop_listen': + doDropListen(true); + break; case 'sets_properties': doReplicationSets(); break;