* @copyright Catalyst .Net Ltd * @license http://gnu.org/copyleft/gpl.html GNU GPL v2 */ require_once("User.php"); require_once("classBrowser.php"); $c->stylesheets[] = "css/browse.css"; $c->scripts[] = "js/browse.js"; /** * A class for viewing and maintaining RSCDS User records * * @package rscds */ class RSCDSUser extends User { /** * Constructor - nothing fancy as yet. */ function RSCDSUser( $id , $prefix = "") { parent::User( $id, $prefix ); } /** * Render the form / viewer as HTML to show the user * @return string An HTML fragment to display in the page. */ function Render($title = "" ) { $html = ""; dbg_error_log("User", ":Render: type=$this->WriteType, edit_mode=$this->EditMode" ); $ef = new EntryForm( $REQUEST_URI, $this->Values, $this->EditMode ); $ef->NoHelp(); // Prefer this style, for the moment $html = '
'; if ( $title != "" ) { $html .= "

$title

\n"; } if ( $ef->editmode ) { $html .= $ef->StartForm( array("autocomplete" => "off" ) ); if ( $this->user_no > 0 ) $html .= $ef->HiddenField( "user_no", $this->user_no ); } $html .= "\n"; $html .= $this->RenderFields($ef,""); $html .= $this->RenderRoles($ef); $html .= $this->RenderRelationships($ef); $html .= "
\n"; $html .= "
"; if ( $ef->editmode ) { $html .= ''; $html .= $ef->EndForm(); } return $html; } /** * Render the user's relationships to other users & resources * * @return string The string of html to be output */ function RenderRelationships( $ef, $title = "User Relationships" ) { global $session, $c; $browser = new Browser(""); $browser->AddHidden( 'user_link', "'' || fullname || ''" ); $browser->AddColumn( 'rt_name', 'Relationship' ); $browser->AddColumn( 'fullname', 'Linked To', 'left', '##user_link##' ); $browser->AddColumn( 'rt_isgroup', 'Group?' ); $browser->AddHidden( 'confers', 'Confers' ); $browser->AddColumn( 'email', 'EMail' ); $browser->SetJoins( 'relationship NATURAL JOIN relationship_type rt LEFT JOIN usr ON (to_user = user_no)' ); $browser->SetWhere( "from_user = $this->user_no" ); $browser->SetUnion("SELECT rt.rt_name, fullname, rt.rt_isgroup, email, '' || fullname || '' AS user_link, rt.confers AS confers FROM relationship NATURAL JOIN relationship_type rt1 LEFT JOIN relationship_type rt ON (rt.rt_id = rt1.rt_inverse) LEFT JOIN usr ON (from_user = user_no) WHERE to_user = $this->user_no "); if ( isset( $_GET['o']) && isset($_GET['d']) ) { $browser->AddOrder( $_GET['o'], $_GET['d'] ); } else $browser->AddOrder( 'rt_name', 'A' ); $browser->RowFormat( "\n", "\n", '#even' ); $browser->DoQuery(); $html = ( $title == "" ? "" : $ef->BreakLine($title) ); $html .= " \n"; $html .= $browser->Render(); $html .= "\n"; return $html; } } ?>