| $prompt_password_1: | ##newpass1.password.$pwstars## |
| $prompt_password_2: | ##newpass2.password.$pwstars## |
| $prompt_fullname: | ##fullname.input.50## |
- | $prompt_email: | ##email.input.50##$email_unique |
| $prompt_locale: | ##locale.select## |
| $prompt_date_format: | ##date_format_type.select## |
| $prompt_type: | ##type_id.select## |
@@ -487,6 +505,121 @@ function confirm_delete_principal($confirmation_hash, $displayname ) {
return $html;
}
+function email_row_editor() {
+ global $c, $id, $editor, $can_write_principal, $email;
+
+ $emailrow = new Editor("Email Addresses", "usr_emails");
+ $emailrow->SetSubmitName( 'saveemailrow' );
+ $edit_email_clause = '';
+ if ( $can_write_principal ) {
+ if ( $emailrow->IsSubmit() ) {
+
+ $_POST['user_no'] = $id;
+ $email = $_POST['email'];
+ $orig_email = $_POST['orig_email'];
+ $emailrow->SetWhere( 'user_no='.$id.' AND email=\''.$orig_email.'\'');
+ $emailrow->Assign('email', $email);
+ $emailrow->Assign('main', $_POST['main']);
+ $emailrow->Write( );
+ unset($_GET['email']);
+ }
+ elseif ( isset($_GET['delete_email']) ) {
+ $qry = new AwlQuery("DELETE FROM usr_emails WHERE user_no=:user_no AND email = :email",
+ array( ':user_no' => $id, ':email' => $_GET['delete_email'] ));
+ $qry->Exec('email-delete');
+ $c->messages[] = translate('Deleted an email from this Principal');
+ }
+ }
+ return $emailrow;
+}
+
+
+function edit_email_row_email( $row_data ) {
+ global $id, $emailrow;
+
+ $email = $row_data->email;
+ if ( ! empty($email) ) {
+ $emailrow->SetRecord( $row_data );
+ }
+ else {
+ $emailrow->Initialise( $row_data );
+ }
+
+ $form_id = $emailrow->Id();
+ $form_url = preg_replace( '#&(edit|delete)_email=\d+#', '', $_SERVER['REQUEST_URI'] );
+
+ $csrf_field = getCsrfField();
+
+ $template = <<
+ $csrf_field
+
+
+ | ##main.checkbox## |
+ ##submit## |
+
+
+EOTEMPLATE;
+
+ $emailrow->SetTemplate( $template );
+ $emailrow->Title("");
+
+ return $emailrow->Render();
+}
+
+function format_boolean($col_val, $field, $row) {
+ if ($col_val == 0 || $col_val == '') {
+ return Translate('No');
+ } else if ($col_val == '1') {
+ return Translate('Yes');
+ }
+
+ return $col_val;
+}
+
+function email_browser() {
+ global $c, $id, $editor, $can_write_principal;
+ $browser = new Browser(translate('Email Addresses'));
+
+ $browser->AddColumn( 'email', translate('Email'), '', '##email_link##' );
+ $rowurl = $c->base_url . '/admin.php?action=edit&t=principal&id='.$id.'&edit_email=';
+ $browser->AddHidden( 'email_link', "'' || email || ''" );
+ $browser->AddColumn( 'main', translate('Primary'), 'center', '', '', '', '', 'format_boolean');
+
+ if ( $can_write_principal ) {
+ $del_link = ''.translate('Delete').'';
+ $edit_link = ''.translate('Edit').'';
+ $browser->AddColumn( 'action', translate('Action'), 'center', '', "'$edit_link $del_link'" );
+ }
+
+ $browser->SetOrdering( 'email', 'A' );
+
+ $browser->SetJoins( "usr_emails " );
+ $browser->SetWhere( 'user_no = '.$id );
+
+ if ( $c->enable_row_linking ) {
+ $browser->RowFormat( '', '
', '#even' );
+ }
+ else {
+ $browser->RowFormat( '', '
', '#even' );
+ }
+ $browser->DoQuery();
+
+
+ if ( $can_write_principal ) {
+ if ( isset($_GET['edit_email']) ) {
+ $browser->MatchedRow('email', $_GET['edit_email'], 'edit_email_row_email');
+ }
+ else if ( isset($id ) ) {
+ $browser->ExtraRowFormat( '', '
', '#even' );
+ $extra_row = array( 'email' => "" );
+ $browser->MatchedRow('email', "", 'edit_email_row_email');
+ $extra_row = (object) $extra_row;
+ $browser->AddRow($extra_row);
+ }
+ }
+ return $browser;
+}
function group_memberships_browser() {
@@ -737,7 +870,6 @@ function principal_grants_browser() {
return $browser;
}
-
function ticket_row_editor() {
global $c, $id, $editor, $can_write_principal, $privilege_names;
@@ -1151,6 +1283,10 @@ if ( isset($id) && $id > 0 ) {
$page_elements[] = confirm_delete_principal($delete_principal_confirmation_required, $editor->Value('displayname'));
+ $emailrow = email_row_editor();
+ $page_elements[] = email_browser();
+ if ( isset($delete_email_confirmation_required) ) $page_elements[] = confirm_delete_email($delete_email_confirmation_required);
+
$page_elements[] = group_memberships_browser();
if ( $editor->Value('type_id') == 3 ) {
$grouprow = group_row_editor();