Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F120826935
identity_edit.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
9 KB
Referenced Files
None
Subscribers
None
identity_edit.php
View Options
<?php
/**
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
| PURPOSE: |
| Show edit form for an identity record |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
class
rcmail_action_settings_identity_edit
extends
rcmail_action
{
protected
static
$mode
=
self
::
MODE_HTTP
;
protected
static
$record
;
/**
* Request handler.
*
* @param array $args Arguments from the previous step(s)
*/
public
function
run
(
$args
=
[])
{
$rcmail
=
rcmail
::
get_instance
();
$IDENTITIES_LEVEL
=
intval
(
$rcmail
->
config
->
get
(
'identities_level'
,
0
));
// edit-identity
if
((!
empty
(
$_GET
[
'_iid'
])
||
!
empty
(
$_POST
[
'_iid'
]))
&&
$rcmail
->
action
==
'edit-identity'
)
{
$id
=
rcube_utils
::
get_input_value
(
'_iid'
,
rcube_utils
::
INPUT_GPC
);
self
::
$record
=
$rcmail
->
user
->
get_identity
(
$id
);
if
(!
is_array
(
self
::
$record
))
{
$rcmail
->
output
->
show_message
(
'dberror'
,
'error'
);
// go to identities page
$rcmail
->
overwrite_action
(
'identities'
);
return
;
}
$rcmail
->
output
->
set_env
(
'iid'
,
self
::
$record
[
'identity_id'
]);
$rcmail
->
output
->
set_env
(
'mailvelope_main_keyring'
,
$rcmail
->
config
->
get
(
'mailvelope_main_keyring'
));
$rcmail
->
output
->
set_env
(
'mailvelope_keysize'
,
$rcmail
->
config
->
get
(
'mailvelope_keysize'
));
}
// add-identity
else
{
if
(
$IDENTITIES_LEVEL
>
1
)
{
$rcmail
->
output
->
show_message
(
'opnotpermitted'
,
'error'
);
// go to identities page
$rcmail
->
overwrite_action
(
'identities'
);
return
;
}
if
(
$IDENTITIES_LEVEL
==
1
)
{
self
::
$record
[
'email'
]
=
$rcmail
->
get_user_email
();
}
}
$rcmail
->
output
->
add_handler
(
'identityform'
,
[
$this
,
'identity_form'
]);
$rcmail
->
output
->
set_env
(
'identities_level'
,
$IDENTITIES_LEVEL
);
$rcmail
->
output
->
add_label
(
'deleteidentityconfirm'
,
'generate'
,
'encryptioncreatekey'
,
'openmailvelopesettings'
,
'encryptionprivkeysinmailvelope'
,
'encryptionnoprivkeysinmailvelope'
,
'keypaircreatesuccess'
);
$rcmail
->
output
->
set_pagetitle
(
$rcmail
->
gettext
((
$rcmail
->
action
==
'add-identity'
?
'addidentity'
:
'editidentity'
)));
if
(
$rcmail
->
action
==
'add-identity'
&&
$rcmail
->
output
->
template_exists
(
'identityadd'
))
{
$rcmail
->
output
->
send
(
'identityadd'
);
}
$rcmail
->
output
->
send
(
'identityedit'
);
}
public
static
function
identity_form
(
$attrib
)
{
$rcmail
=
rcmail
::
get_instance
();
$IDENTITIES_LEVEL
=
intval
(
$rcmail
->
config
->
get
(
'identities_level'
,
0
));
// Add HTML editor script(s)
self
::
html_editor
(
'identity'
);
// add some labels to client
$rcmail
->
output
->
add_label
(
'noemailwarning'
,
'converting'
,
'editorwarning'
);
$i_size
=
!
empty
(
$attrib
[
'size'
])
?
$attrib
[
'size'
]
:
40
;
$t_rows
=
!
empty
(
$attrib
[
'textarearows'
])
?
$attrib
[
'textarearows'
]
:
6
;
$t_cols
=
!
empty
(
$attrib
[
'textareacols'
])
?
$attrib
[
'textareacols'
]
:
40
;
// list of available cols
$form
=
[
'addressing'
=>
[
'name'
=>
$rcmail
->
gettext
(
'settings'
),
'content'
=>
[
'name'
=>
[
'type'
=>
'text'
,
'size'
=>
$i_size
],
'email'
=>
[
'type'
=>
'text'
,
'size'
=>
$i_size
],
'organization'
=>
[
'type'
=>
'text'
,
'size'
=>
$i_size
],
'reply-to'
=>
[
'type'
=>
'text'
,
'size'
=>
$i_size
],
'bcc'
=>
[
'type'
=>
'text'
,
'size'
=>
$i_size
],
'standard'
=>
[
'type'
=>
'checkbox'
,
'label'
=>
$rcmail
->
gettext
(
'setdefault'
)],
]
],
'signature'
=>
[
'name'
=>
$rcmail
->
gettext
(
'signature'
),
'content'
=>
[
'signature'
=>
[
'type'
=>
'textarea'
,
'size'
=>
$t_cols
,
'rows'
=>
$t_rows
,
'spellcheck'
=>
true
,
'data-html-editor'
=>
true
],
'html_signature'
=>
[
'type'
=>
'checkbox'
,
'label'
=>
$rcmail
->
gettext
(
'htmlsignature'
),
'onclick'
=>
"return rcmail.command('toggle-editor', {id: 'rcmfd_signature', html: this.checked}, '', event)"
],
]
],
'encryption'
=>
[
'name'
=>
$rcmail
->
gettext
(
'identityencryption'
),
'attrs'
=>
[
'class'
=>
'identity-encryption'
,
'style'
=>
'display:none'
],
'content'
=>
html
::
div
(
'identity-encryption-block'
,
''
)
]
];
// Enable TinyMCE editor
if
(!
empty
(
self
::
$record
[
'html_signature'
]))
{
$form
[
'signature'
][
'content'
][
'signature'
][
'class'
]
=
'mce_editor'
;
$form
[
'signature'
][
'content'
][
'signature'
][
'is_escaped'
]
=
true
;
// Correctly handle HTML entities in HTML editor (#1488483)
self
::
$record
[
'signature'
]
=
htmlspecialchars
(
self
::
$record
[
'signature'
],
ENT_NOQUOTES
,
RCUBE_CHARSET
);
}
// hide "default" checkbox if only one identity is allowed
if
(
$IDENTITIES_LEVEL
>
1
)
{
unset
(
$form
[
'addressing'
][
'content'
][
'standard'
]);
}
// disable some field according to access level
if
(
$IDENTITIES_LEVEL
==
1
||
$IDENTITIES_LEVEL
==
3
)
{
$form
[
'addressing'
][
'content'
][
'email'
][
'disabled'
]
=
true
;
$form
[
'addressing'
][
'content'
][
'email'
][
'class'
]
=
'disabled'
;
}
if
(
$IDENTITIES_LEVEL
==
4
)
{
foreach
(
$form
[
'addressing'
][
'content'
]
as
$formfield
=>
$value
){
$form
[
'addressing'
][
'content'
][
$formfield
][
'disabled'
]
=
true
;
$form
[
'addressing'
][
'content'
][
$formfield
][
'class'
]
=
'disabled'
;
}
}
if
(!
empty
(
self
::
$record
[
'email'
]))
{
self
::
$record
[
'email'
]
=
rcube_utils
::
idn_to_utf8
(
self
::
$record
[
'email'
]);
}
// Allow plugins to modify identity form content
$plugin
=
$rcmail
->
plugins
->
exec_hook
(
'identity_form'
,
[
'form'
=>
$form
,
'record'
=>
self
::
$record
]);
$form
=
$plugin
[
'form'
];
self
::
$record
=
$plugin
[
'record'
];
// Set form tags and hidden fields
list
(
$form_start
,
$form_end
)
=
self
::
get_form_tags
(
$attrib
,
'save-identity'
,
isset
(
self
::
$record
[
'identity_id'
])
?
intval
(
self
::
$record
[
'identity_id'
])
:
0
,
[
'name'
=>
'_iid'
,
'value'
=>
isset
(
self
::
$record
[
'identity_id'
])
?
self
::
$record
[
'identity_id'
]
:
0
]
);
unset
(
$plugin
);
unset
(
$attrib
[
'form'
],
$attrib
[
'id'
]);
// return the complete edit form as table
$out
=
"$form_start
\n
"
;
foreach
(
$form
as
$fieldset
)
{
if
(
empty
(
$fieldset
[
'content'
]))
{
continue
;
}
$content
=
''
;
if
(
is_array
(
$fieldset
[
'content'
]))
{
$table
=
new
html_table
([
'cols'
=>
2
]);
foreach
(
$fieldset
[
'content'
]
as
$col
=>
$colprop
)
{
$colprop
[
'id'
]
=
'rcmfd_'
.
$col
;
if
(!
empty
(
$colprop
[
'label'
]))
{
$label
=
$colprop
[
'label'
];
}
else
{
$label
=
$rcmail
->
gettext
(
str_replace
(
'-'
,
''
,
$col
));
}
if
(!
empty
(
$colprop
[
'value'
]))
{
$value
=
$colprop
[
'value'
];
}
else
{
$val
=
isset
(
self
::
$record
[
$col
])
?
self
::
$record
[
$col
]
:
''
;
$value
=
rcube_output
::
get_edit_field
(
$col
,
$val
,
$colprop
,
$colprop
[
'type'
]);
}
$table
->
add
(
'title'
,
html
::
label
(
$colprop
[
'id'
],
rcube
::
Q
(
$label
)));
$table
->
add
(
null
,
$value
);
}
$content
=
$table
->
show
(
$attrib
);
}
else
{
$content
=
$fieldset
[
'content'
];
}
$content
=
html
::
tag
(
'legend'
,
null
,
rcube
::
Q
(
$fieldset
[
'name'
]))
.
$content
;
$out
.=
html
::
tag
(
'fieldset'
,
!
empty
(
$fieldset
[
'attrs'
])
?
$fieldset
[
'attrs'
]
:
[],
$content
)
.
"
\n
"
;
}
$out
.=
$form_end
;
// add image upload form
$max_size
=
self
::
upload_init
(
$rcmail
->
config
->
get
(
'identity_image_size'
,
64
)
*
1024
);
$form_id
=
'identityImageUpload'
;
$out
.=
'<form id="'
.
$form_id
.
'" style="display: none">'
.
html
::
div
(
'hint'
,
$rcmail
->
gettext
([
'name'
=>
'maxuploadsize'
,
'vars'
=>
[
'size'
=>
$max_size
]]))
.
'</form>'
;
$rcmail
->
output
->
add_gui_object
(
'uploadform'
,
$form_id
);
return
$out
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Fri, Apr 24, 11:03 AM (1 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18772077
Default Alt Text
identity_edit.php (9 KB)
Attached To
Mode
R113 roundcubemail
Attached
Detach File
Event Timeline