From 61bb8ccdd3c792c6f9acd90b5577b0ffa5aeac9d Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Tue, 19 Feb 2008 20:53:06 +1300 Subject: [PATCH] Switch the direction of relationships which are editable. --- inc/RSCDSUser.php | 81 ++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/inc/RSCDSUser.php b/inc/RSCDSUser.php index b63de84a..85b831e1 100644 --- a/inc/RSCDSUser.php +++ b/inc/RSCDSUser.php @@ -113,9 +113,6 @@ class RSCDSUser extends User $browser->AddColumn( 'fullname', translate('Linked To'), 'left', '##user_link##' ); $browser->AddHidden( 'confers' ); $browser->AddColumn( 'email', translate('EMail') ); - if ( $ef->EditMode ) { // && $session->AllowedTo("MaintainRelationships") ) { - $browser->AddColumn( 'delete', translate('Delete'), 'centre', '', "'base_url/usr.php?edit=1&user_no=$this->user_no&action=delete_relationship&to_user=' || user_no || '\">Delete'" ); - } $browser->SetJoins( 'relationship NATURAL JOIN relationship_type rt LEFT JOIN usr ON (to_user = user_no)' ); $browser->SetWhere( "from_user = $this->user_no" ); @@ -139,42 +136,6 @@ class RSCDSUser extends User } $browser->DoQuery(); - /** - * Present an extra editable row at the bottom of the browse. - */ - if ( $ef->EditMode ) { // && $session->AllowedTo("MaintainRelationships") ) { - $sql = <<user_no)) - AND user_no != $this->user_no -EOSQL; - if ( isset($this->roles['Group']) ) { - /** - * We only allow individuals to link to groups at this stage. - */ - $sql .= 'AND NOT EXISTS (SELECT 1 FROM role_member WHERE role_no = 2 AND user_no=usr.user_no)'; - } - - if ( isset($this->roles['Group']) ) - $nullvalue = translate( "--- select a user, group or resource ---" ); - else - $nullvalue = translate( "--- select a user or resource ---" ); - $person_selection = $ef->DataEntryField( "", "lookup", "relate_to", - array("title" => translate("Select the user, resource or group to relate this user to"), - "_null" => $nullvalue, - "_sql" => $sql ) ); - - $relationship_type_selection = $ef->DataEntryField( "", "lookup", "relate_as", - array("title" => translate("Select the type of relationship from this user"), - "_null" => translate("--- select a relationship type ---"), - "_sql" => "SELECT rt_id, rt_name FROM relationship_type " ) ); - - $browser->AddRow( array( - 'rt_name' => $relationship_type_selection, /* Since 'fullname' is formatted to display this value */ - 'user_link' => $person_selection, - 'delete' => sprintf('', htmlspecialchars(translate("Add Relationship"))) - ) ); - } $html = ( $title == "" ? "" : $ef->BreakLine(translate($title)) ); $html .= " \n"; @@ -200,6 +161,9 @@ EOSQL; $browser->AddColumn( 'rt_name', translate('Relationship') ); $browser->AddHidden( 'confers' ); $browser->AddColumn( 'email', translate('EMail') ); + if ( $ef->EditMode ) { // && $session->AllowedTo("MaintainRelationships") ) { + $browser->AddColumn( 'delete', translate('Delete'), 'centre', '', "'base_url/usr.php?edit=1&user_no=$this->user_no&action=delete_relationship&to_user=' || user_no || '\">Delete'" ); + } $browser->SetJoins( 'relationship NATURAL JOIN relationship_type rt LEFT JOIN usr ON (from_user = user_no)' ); $browser->SetWhere( "to_user = $this->user_no" ); @@ -213,6 +177,43 @@ EOSQL; $browser->RowFormat( "\n", "\n", '#even' ); $browser->DoQuery(); + /** + * Present an extra editable row at the bottom of the browse. + */ + if ( $ef->EditMode ) { // && $session->AllowedTo("MaintainRelationships") ) { + $sql = <<user_no)) + AND user_no != $this->user_no +EOSQL; + if ( isset($this->roles['Group']) ) { + /** + * We only allow individuals to link to groups at this stage. + */ +// $sql .= 'AND NOT EXISTS (SELECT 1 FROM role_member WHERE role_no = 2 AND user_no=usr.user_no)'; + } + +// if ( isset($this->roles['Group']) ) + $nullvalue = translate( "--- select a user, group or resource ---" ); +// else +// $nullvalue = translate( "--- select a user or resource ---" ); + $person_selection = $ef->DataEntryField( "", "lookup", "relate_to", + array("title" => translate("Select the user, resource or group to relate this user to"), + "_null" => $nullvalue, + "_sql" => $sql ) ); + + $relationship_type_selection = $ef->DataEntryField( "", "lookup", "relate_as", + array("title" => translate("Select the type of relationship from this user"), + "_null" => translate("--- select a relationship type ---"), + "_sql" => "SELECT rt_id, rt_name FROM relationship_type " ) ); + + $browser->AddRow( array( + 'user_link' => $person_selection, + 'rt_name' => $relationship_type_selection, /* Since 'fullname' is formatted to display this value */ + 'delete' => sprintf('', htmlspecialchars(translate("Add Relationship"))) + ) ); + } + $html = ( $title == "" ? "" : $ef->BreakLine(translate($title)) ); $html .= " \n"; $html .= $browser->Render(); @@ -313,7 +314,7 @@ EOSQL; } if ( $this->AllowedTo("Admin") && isset($_POST['relate_to']) && $_POST['relate_to'] != '' && isset($_POST['relate_as']) && $_POST['relate_as'] != '' && isset($_POST['submit']) && $_POST['submit'] == htmlspecialchars(translate('Add Relationship')) ) { dbg_error_log("User",":Write: Adding relationship as %d to %d", $_POST['relate_as'], isset($_POST['relate_to'] ) ); - $qry = new PgQuery("INSERT INTO relationship (from_user, to_user, rt_id ) VALUES( $this->user_no, ?, ? )", $_POST['relate_to'], $_POST['relate_as'] ); + $qry = new PgQuery("INSERT INTO relationship (from_user, to_user, rt_id ) VALUES( ?, $this->user_no, ? )", $_POST['relate_to'], $_POST['relate_as'] ); if ( $qry->Exec() ) { $c->messages[] = i18n("Relationship added."); }