Remove deprecated functions (these listed in bc.php file) usage
| | |
| | | |
| | | foreach (array('contacts','contactgroups','identities') as $table) { |
| | | |
| | | $sqltable = get_table_name($table); |
| | | $sqltable = $db->table_name($table); |
| | | |
| | | // also delete linked records |
| | | // could be skipped for databases which respect foreign key constraints |
| | |
| | | $archive_type->add($this->gettext('archivetypefolder'), 'folder'); |
| | | |
| | | $args['blocks']['archive'] = array( |
| | | 'name' => Q(rcube_label('settingstitle', 'archive')), |
| | | 'name' => Q($this->gettext('settingstitle')), |
| | | 'options' => array('archive_type' => array( |
| | | 'title' => $this->gettext('archivetype'), |
| | | 'content' => $archive_type->show($rcmail->config->get('archive_type')) |
| | |
| | | } |
| | | |
| | | $this->output->set_env('max_filesize', $max_filesize); |
| | | $max_filesize = self::show_bytes($max_filesize); |
| | | $max_filesize = $this->show_bytes($max_filesize); |
| | | $this->output->set_env('filesizeerror', $this->gettext(array( |
| | | 'name' => 'filesizeerror', 'vars' => array('size' => $max_filesize)))); |
| | | |
| | |
| | | // special case: list groups from 'group_filters' config |
| | | if ($vlv_page === null && !empty($this->prop['group_filters'])) { |
| | | $groups = array(); |
| | | $rcube = rcube::get_instance(); |
| | | |
| | | // list regular groups configuration as special filter |
| | | if (!empty($this->prop['groups']['filter'])) { |
| | | $id = '__groups__'; |
| | | $groups[$id] = array('ID' => $id, 'name' => rcube_label('groups'), 'virtual' => true) + $this->prop['groups']; |
| | | $groups[$id] = array('ID' => $id, 'name' => $rcube->gettext('groups'), 'virtual' => true) + $this->prop['groups']; |
| | | } |
| | | |
| | | foreach ($this->prop['group_filters'] as $id => $prop) { |
| | |
| | | |
| | | |
| | | $cids = rcmail_get_cids(); |
| | | $target = get_input_value('_to', RCUBE_INPUT_POST); |
| | | $target_group = get_input_value('_togid', RCUBE_INPUT_POST); |
| | | $target = rcube_utils::get_input_value('_to', rcube_utils::INPUT_POST); |
| | | $target_group = rcube_utils::get_input_value('_togid', rcube_utils::INPUT_POST); |
| | | |
| | | $success = 0; |
| | | $errormsg = 'copyerror'; |
| | |
| | | $error = 'contactdelerror'; |
| | | } |
| | | |
| | | $source = get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $group = get_input_value('_gid', RCUBE_INPUT_GPC); |
| | | $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | $group = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC); |
| | | |
| | | $OUTPUT->show_message($error, 'error'); |
| | | $OUTPUT->command('list_contacts', $source, $group); |
| | |
| | | |
| | | if (!empty($_SESSION['contact_undo'])) { |
| | | $_SESSION['contact_undo']['ts'] = time(); |
| | | $msg = html::span(null, rcube_label('contactdeleted')) |
| | | . ' ' . html::a(array('onclick' => JS_OBJECT_NAME.".command('undo', '', this)"), rcube_label('undo')); |
| | | $msg = html::span(null, $RCMAIL->gettext('contactdeleted')) |
| | | . ' ' . html::a(array('onclick' => rcmail_output::JS_OBJECT_NAME.".command('undo', '', this)"), $RCMAIL->gettext('undo')); |
| | | |
| | | $OUTPUT->show_message($msg, 'confirmation', null, true, $undo_time); |
| | | } |
| | |
| | | // editing not allowed here |
| | | if ($CONTACTS->readonly || $record['readonly']) { |
| | | $OUTPUT->show_message('sourceisreadonly'); |
| | | rcmail_overwrite_action('show'); |
| | | $RCMAIL->overwrite_action('show'); |
| | | return; |
| | | } |
| | | } |
| | | else { |
| | | $source = get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | |
| | | if (strlen($source)) { |
| | | $CONTACTS = $RCMAIL->get_address_book($source, true); |
| | |
| | | |
| | | $form = array( |
| | | 'contact' => array( |
| | | 'name' => rcube_label('properties'), |
| | | 'name' => $RCMAIL->gettext('properties'), |
| | | 'content' => array( |
| | | 'email' => array('size' => $i_size, 'visible' => true), |
| | | 'phone' => array('size' => $i_size, 'visible' => true), |
| | |
| | | ), |
| | | ), |
| | | 'personal' => array( |
| | | 'name' => rcube_label('personalinfo'), |
| | | 'name' => $RCMAIL->gettext('personalinfo'), |
| | | 'content' => array( |
| | | 'gender' => array('visible' => true), |
| | | 'maidenname' => array('size' => $i_size), |
| | |
| | | |
| | | if (isset($CONTACT_COLTYPES['notes'])) { |
| | | $form['notes'] = array( |
| | | 'name' => rcube_label('notes'), |
| | | 'name' => $RCMAIL->gettext('notes'), |
| | | 'content' => array( |
| | | 'notes' => array('size' => $t_cols, 'rows' => $t_rows, 'label' => false, 'visible' => true, 'limit' => 1), |
| | | ), |
| | |
| | | |
| | | function rcmail_upload_photo_form($attrib) |
| | | { |
| | | global $OUTPUT; |
| | | global $RCMAIL, $OUTPUT; |
| | | |
| | | // set defaults |
| | | $attrib += array('id' => 'rcmUploadform', 'buttons' => 'yes'); |
| | |
| | | $max_postsize = parse_bytes(ini_get('post_max_size')); |
| | | if ($max_postsize && $max_postsize < $max_filesize) |
| | | $max_filesize = $max_postsize; |
| | | $max_filesize = show_bytes($max_filesize); |
| | | $max_filesize = $RCMAIL->show_bytes($max_filesize); |
| | | |
| | | $hidden = new html_hiddenfield(array('name' => '_cid', 'value' => $GLOBALS['cid'])); |
| | | $input = new html_inputfield(array('type' => 'file', 'name' => '_photo', 'size' => $attrib['size'])); |
| | |
| | | $OUTPUT->form_tag(array('id' => $attrib['id'].'Frm', 'name' => 'uploadform', 'method' => 'post', 'enctype' => 'multipart/form-data'), |
| | | $hidden->show() . |
| | | html::div(null, $input->show()) . |
| | | html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) . |
| | | (get_boolean($attrib['buttons']) ? html::div('buttons', |
| | | $button->show(rcube_label('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' . |
| | | $button->show(rcube_label('upload'), array('class' => 'button mainaction', 'onclick' => JS_OBJECT_NAME . ".command('upload-photo', this.form)")) |
| | | html::div('hint', $RCMAIL->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) . |
| | | (rcube_utils::get_boolean($attrib['buttons']) ? html::div('buttons', |
| | | $button->show($RCMAIL->gettext('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' . |
| | | $button->show($RCMAIL->gettext('upload'), array('class' => 'button mainaction', 'onclick' => rcmail_output::JS_OBJECT_NAME . ".command('upload-photo', this.form)")) |
| | | ) : '') |
| | | ) |
| | | ); |
| | |
| | | |
| | | $attrib['name'] = '_source'; |
| | | $attrib['is_escaped'] = true; |
| | | $attrib['onchange'] = JS_OBJECT_NAME . ".command('save', 'reload', this.form)"; |
| | | $attrib['onchange'] = rcmail_output::JS_OBJECT_NAME . ".command('save', 'reload', this.form)"; |
| | | |
| | | $select = new html_select($attrib); |
| | | |
| | |
| | | } |
| | | |
| | | // send downlaod headers |
| | | header('Content-Type: text/x-vcard; charset='.RCMAIL_CHARSET); |
| | | header('Content-Type: text/x-vcard; charset='.RCUBE_CHARSET); |
| | | header('Content-Disposition: attachment; filename="contacts.vcf"'); |
| | | |
| | | while ($result && ($row = $result->next())) { |
| | |
| | | |
| | | // general definition of contact coltypes |
| | | $CONTACT_COLTYPES = array( |
| | | 'name' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('name'), 'category' => 'main'), |
| | | 'firstname' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('firstname'), 'category' => 'main'), |
| | | 'surname' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('surname'), 'category' => 'main'), |
| | | 'email' => array('type' => 'text', 'size' => 40, 'maxlength' => 254, 'label' => rcube_label('email'), 'subtypes' => array('home','work','other'), 'category' => 'main'), |
| | | 'middlename' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('middlename'), 'category' => 'main'), |
| | | 'prefix' => array('type' => 'text', 'size' => 8, 'maxlength' => 20, 'limit' => 1, 'label' => rcube_label('nameprefix'), 'category' => 'main'), |
| | | 'suffix' => array('type' => 'text', 'size' => 8, 'maxlength' => 20, 'limit' => 1, 'label' => rcube_label('namesuffix'), 'category' => 'main'), |
| | | 'nickname' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('nickname'), 'category' => 'main'), |
| | | 'jobtitle' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('jobtitle'), 'category' => 'main'), |
| | | 'organization' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('organization'), 'category' => 'main'), |
| | | 'department' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('department'), 'category' => 'main'), |
| | | 'gender' => array('type' => 'select', 'limit' => 1, 'label' => rcube_label('gender'), 'options' => array('male' => rcube_label('male'), 'female' => rcube_label('female')), 'category' => 'personal'), |
| | | 'maidenname' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('maidenname'), 'category' => 'personal'), |
| | | 'phone' => array('type' => 'text', 'size' => 40, 'maxlength' => 20, 'label' => rcube_label('phone'), 'subtypes' => array('home','home2','work','work2','mobile','main','homefax','workfax','car','pager','video','assistant','other'), 'category' => 'main'), |
| | | 'address' => array('type' => 'composite', 'label' => rcube_label('address'), 'subtypes' => array('home','work','other'), 'childs' => array( |
| | | 'street' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => rcube_label('street'), 'category' => 'main'), |
| | | 'locality' => array('type' => 'text', 'size' => 28, 'maxlength' => 50, 'label' => rcube_label('locality'), 'category' => 'main'), |
| | | 'zipcode' => array('type' => 'text', 'size' => 8, 'maxlength' => 15, 'label' => rcube_label('zipcode'), 'category' => 'main'), |
| | | 'region' => array('type' => 'text', 'size' => 12, 'maxlength' => 50, 'label' => rcube_label('region'), 'category' => 'main'), |
| | | 'country' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => rcube_label('country'), 'category' => 'main'), |
| | | 'name' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('name'), 'category' => 'main'), |
| | | 'firstname' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('firstname'), 'category' => 'main'), |
| | | 'surname' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('surname'), 'category' => 'main'), |
| | | 'email' => array('type' => 'text', 'size' => 40, 'maxlength' => 254, 'label' => $RCMAIL->gettext('email'), 'subtypes' => array('home','work','other'), 'category' => 'main'), |
| | | 'middlename' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('middlename'), 'category' => 'main'), |
| | | 'prefix' => array('type' => 'text', 'size' => 8, 'maxlength' => 20, 'limit' => 1, 'label' => $RCMAIL->gettext('nameprefix'), 'category' => 'main'), |
| | | 'suffix' => array('type' => 'text', 'size' => 8, 'maxlength' => 20, 'limit' => 1, 'label' => $RCMAIL->gettext('namesuffix'), 'category' => 'main'), |
| | | 'nickname' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('nickname'), 'category' => 'main'), |
| | | 'jobtitle' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('jobtitle'), 'category' => 'main'), |
| | | 'organization' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('organization'), 'category' => 'main'), |
| | | 'department' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('department'), 'category' => 'main'), |
| | | 'gender' => array('type' => 'select', 'limit' => 1, 'label' => $RCMAIL->gettext('gender'), 'options' => array('male' => $RCMAIL->gettext('male'), 'female' => $RCMAIL->gettext('female')), 'category' => 'personal'), |
| | | 'maidenname' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('maidenname'), 'category' => 'personal'), |
| | | 'phone' => array('type' => 'text', 'size' => 40, 'maxlength' => 20, 'label' => $RCMAIL->gettext('phone'), 'subtypes' => array('home','home2','work','work2','mobile','main','homefax','workfax','car','pager','video','assistant','other'), 'category' => 'main'), |
| | | 'address' => array('type' => 'composite', 'label' => $RCMAIL->gettext('address'), 'subtypes' => array('home','work','other'), 'childs' => array( |
| | | 'street' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => $RCMAIL->gettext('street'), 'category' => 'main'), |
| | | 'locality' => array('type' => 'text', 'size' => 28, 'maxlength' => 50, 'label' => $RCMAIL->gettext('locality'), 'category' => 'main'), |
| | | 'zipcode' => array('type' => 'text', 'size' => 8, 'maxlength' => 15, 'label' => $RCMAIL->gettext('zipcode'), 'category' => 'main'), |
| | | 'region' => array('type' => 'text', 'size' => 12, 'maxlength' => 50, 'label' => $RCMAIL->gettext('region'), 'category' => 'main'), |
| | | 'country' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => $RCMAIL->gettext('country'), 'category' => 'main'), |
| | | ), 'category' => 'main'), |
| | | 'birthday' => array('type' => 'date', 'size' => 12, 'maxlength' => 16, 'label' => rcube_label('birthday'), 'limit' => 1, 'render_func' => 'rcmail_format_date_col', 'category' => 'personal'), |
| | | 'anniversary' => array('type' => 'date', 'size' => 12, 'maxlength' => 16, 'label' => rcube_label('anniversary'), 'limit' => 1, 'render_func' => 'rcmail_format_date_col', 'category' => 'personal'), |
| | | 'website' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => rcube_label('website'), 'subtypes' => array('homepage','work','blog','profile','other'), 'category' => 'main'), |
| | | 'im' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => rcube_label('instantmessenger'), 'subtypes' => array('aim','icq','msn','yahoo','jabber','skype','other'), 'category' => 'main'), |
| | | 'notes' => array('type' => 'textarea', 'size' => 40, 'rows' => 15, 'maxlength' => 500, 'label' => rcube_label('notes'), 'limit' => 1), |
| | | 'birthday' => array('type' => 'date', 'size' => 12, 'maxlength' => 16, 'label' => $RCMAIL->gettext('birthday'), 'limit' => 1, 'render_func' => 'rcmail_format_date_col', 'category' => 'personal'), |
| | | 'anniversary' => array('type' => 'date', 'size' => 12, 'maxlength' => 16, 'label' => $RCMAIL->gettext('anniversary'), 'limit' => 1, 'render_func' => 'rcmail_format_date_col', 'category' => 'personal'), |
| | | 'website' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => $RCMAIL->gettext('website'), 'subtypes' => array('homepage','work','blog','profile','other'), 'category' => 'main'), |
| | | 'im' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => $RCMAIL->gettext('instantmessenger'), 'subtypes' => array('aim','icq','msn','yahoo','jabber','skype','other'), 'category' => 'main'), |
| | | 'notes' => array('type' => 'textarea', 'size' => 40, 'rows' => 15, 'maxlength' => 500, 'label' => $RCMAIL->gettext('notes'), 'limit' => 1), |
| | | 'photo' => array('type' => 'image', 'limit' => 1, 'category' => 'main'), |
| | | 'assistant' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('assistant'), 'category' => 'personal'), |
| | | 'manager' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('manager'), 'category' => 'personal'), |
| | | 'spouse' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('spouse'), 'category' => 'personal'), |
| | | 'assistant' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('assistant'), 'category' => 'personal'), |
| | | 'manager' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('manager'), 'category' => 'personal'), |
| | | 'spouse' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('spouse'), 'category' => 'personal'), |
| | | // TODO: define fields for vcards like GEO, KEY |
| | | ); |
| | | |
| | |
| | | $OUTPUT->set_env('writable_source', $writeable); |
| | | $OUTPUT->set_env('compose_extwin', $RCMAIL->config->get('compose_extwin',false)); |
| | | |
| | | $OUTPUT->set_pagetitle(rcube_label('addressbook')); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('addressbook')); |
| | | $_SESSION['addressbooks_count'] = $count; |
| | | $_SESSION['addressbooks_count_writeable'] = $writeable; |
| | | |
| | | // select address book |
| | | $source = get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | |
| | | // use first directory by default |
| | | if (!strlen($source) || !isset($js_list[$source])) { |
| | |
| | | global $RCMAIL, $OUTPUT, $CONTACT_COLTYPES, $PAGE_SIZE; |
| | | |
| | | if (!strlen($source)) { |
| | | $source = get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | } |
| | | |
| | | // Get object |
| | |
| | | $CONTACTS->set_page(isset($_SESSION['page']) ? $_SESSION['page'] : 1); |
| | | |
| | | if (!empty($_REQUEST['_gid'])) |
| | | $CONTACTS->set_group(get_input_value('_gid', RCUBE_INPUT_GPC)); |
| | | $CONTACTS->set_group(rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC)); |
| | | |
| | | if (!$init_env) |
| | | return $CONTACTS; |
| | |
| | | |
| | | function rcmail_set_sourcename($abook) |
| | | { |
| | | global $OUTPUT; |
| | | global $OUTPUT, $RCMAIL; |
| | | |
| | | // get address book name (for display) |
| | | if ($abook && $_SESSION['addressbooks_count'] > 1) { |
| | | $name = $abook->get_name(); |
| | | if (!$name) { |
| | | $name = rcube_label('personaladrbook'); |
| | | $name = $RCMAIL->gettext('personaladrbook'); |
| | | } |
| | | $OUTPUT->set_env('sourcename', html_entity_decode($name, ENT_COMPAT, 'UTF-8')); |
| | | } |
| | |
| | | 'id' => 'rcmli%s', 'class' => '%s', 'noclose' => true), |
| | | html::a(array('href' => '%s', |
| | | 'rel' => '%s', |
| | | 'onclick' => "return ".JS_OBJECT_NAME.".command('list','%s',this)"), '%s')); |
| | | 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('list','%s',this)"), '%s')); |
| | | |
| | | $sources = (array) $OUTPUT->get_env('address_sources'); |
| | | reset($sources); |
| | | |
| | | // currently selected source |
| | | $current = get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $current = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | |
| | | foreach ($sources as $j => $source) { |
| | | $id = strval(strlen($source['id']) ? $source['id'] : $j); |
| | | $js_id = JQ($id); |
| | | $js_id = rcube::JQ($id); |
| | | |
| | | // set class name(s) |
| | | $class_name = 'addressbook'; |
| | |
| | | $out .= sprintf($line_templ, |
| | | rcube_utils::html_identifier($id, true), |
| | | $class_name, |
| | | Q(rcmail_url(null, array('_source' => $id))), |
| | | rcube::Q($RCMAIL->url(array('_source' => $id))), |
| | | $source['id'], |
| | | $js_id, $name); |
| | | |
| | |
| | | $line_templ = html::tag('li', array( |
| | | 'id' => 'rcmli%s', 'class' => '%s'), |
| | | html::a(array('href' => '#', 'rel' => 'S%s', |
| | | 'onclick' => "return ".JS_OBJECT_NAME.".command('listsearch', '%s', this)"), '%s')); |
| | | 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('listsearch', '%s', this)"), '%s')); |
| | | |
| | | // Saved searches |
| | | $sources = $RCMAIL->user->list_searches(rcube_user::SEARCH_ADDRESSBOOK); |
| | | foreach ($sources as $j => $source) { |
| | | $id = $source['id']; |
| | | $js_id = JQ($id); |
| | | $js_id = rcube::JQ($id); |
| | | |
| | | // set class name(s) |
| | | $class_name = 'contactsearch'; |
| | |
| | | rcube_utils::html_identifier('S'.$id, true), |
| | | $class_name, |
| | | $id, |
| | | $js_id, (!empty($source['name']) ? Q($source['name']) : Q($id))); |
| | | $js_id, (!empty($source['name']) ? rcube::Q($source['name']) : rcube::Q($id))); |
| | | } |
| | | |
| | | $OUTPUT->set_env('contactgroups', $jsdata); |
| | |
| | | 'id' => 'rcmli%s', 'class' => 'contactgroup'), |
| | | html::a(array('href' => '#', |
| | | 'rel' => '%s:%s', |
| | | 'onclick' => "return ".JS_OBJECT_NAME.".command('listgroup',{'source':'%s','id':'%s'},this)"), '%s')); |
| | | 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('listgroup',{'source':'%s','id':'%s'},this)"), '%s')); |
| | | |
| | | // append collapse/expand toggle and open a new <ul> |
| | | $is_collapsed = strpos($RCMAIL->config->get('collapsed_abooks',''), '&'.rawurlencode($args['source']).'&') !== false; |
| | |
| | | $groups_html .= sprintf($line_templ, |
| | | rcube_utils::html_identifier('G' . $args['source'] . $group['ID'], true), |
| | | $args['source'], $group['ID'], |
| | | $args['source'], $group['ID'], Q($group['name']) |
| | | $args['source'], $group['ID'], rcube::Q($group['name']) |
| | | ); |
| | | $args['jsdata']['G'.$args['source'].$group['ID']] = array( |
| | | 'source' => $args['source'], 'id' => $group['ID'], |
| | |
| | | // return the contacts list as HTML table |
| | | function rcmail_contacts_list($attrib) |
| | | { |
| | | global $CONTACTS, $OUTPUT; |
| | | global $RCMAIL, $CONTACTS, $OUTPUT; |
| | | |
| | | // define list of cols to be displayed |
| | | $a_show_cols = array('name','action'); |
| | |
| | | $attrib['id'] = 'rcmAddressList'; |
| | | |
| | | // create XHTML table |
| | | $out = rcube_table_output($attrib, array(), $a_show_cols, $CONTACTS->primary_key); |
| | | $out = $RCMAIL->table_output($attrib, array(), $a_show_cols, $CONTACTS->primary_key); |
| | | |
| | | // set client env |
| | | $OUTPUT->add_gui_object('contactslist', $attrib['id']); |
| | |
| | | |
| | | function rcmail_js_contacts_list($result, $prefix='') |
| | | { |
| | | global $OUTPUT; |
| | | global $OUTPUT, $RCMAIL; |
| | | |
| | | if (empty($result) || $result->count == 0) |
| | | return; |
| | |
| | | $val = ''; |
| | | switch ($col) { |
| | | case 'name': |
| | | $val = Q(rcube_addressbook::compose_list_name($row)); |
| | | $val = rcube::Q(rcube_addressbook::compose_list_name($row)); |
| | | break; |
| | | |
| | | case 'action': |
| | |
| | | $val = html::a(array( |
| | | 'href' => '#list', |
| | | 'rel' => $row['ID'], |
| | | 'title' => rcube_label('listgroup'), |
| | | 'onclick' => sprintf("return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)", JS_OBJECT_NAME, $source_id, $row['CID']), |
| | | 'title' => $RCMAIL->gettext('listgroup'), |
| | | 'onclick' => sprintf("return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)", rcmail_output::JS_OBJECT_NAME, $source_id, $row['CID']), |
| | | ), '»'); |
| | | } |
| | | else |
| | |
| | | break; |
| | | |
| | | default: |
| | | $val = Q($row[$col]); |
| | | $val = rcube::Q($row[$col]); |
| | | break; |
| | | } |
| | | |
| | |
| | | |
| | | function rcmail_contacts_list_title($attrib) |
| | | { |
| | | global $OUTPUT; |
| | | global $OUTPUT, $RCMAIL; |
| | | |
| | | $attrib += array('label' => 'contacts', 'id' => 'rcmabooklisttitle', 'tag' => 'span'); |
| | | unset($attrib['name']); |
| | |
| | | $OUTPUT->add_gui_object('addresslist_title', $attrib['id']); |
| | | $OUTPUT->add_label('contacts'); |
| | | |
| | | return html::tag($attrib['tag'], $attrib, rcube_label($attrib['label']), html::$common_attrib); |
| | | return html::tag($attrib['tag'], $attrib, $RCMAIL->gettext($attrib['label']), html::$common_attrib); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | function rcmail_rowcount_display($attrib) |
| | | { |
| | | global $OUTPUT; |
| | | global $RCMAIL; |
| | | |
| | | if (!$attrib['id']) |
| | | $attrib['id'] = 'rcmcountdisplay'; |
| | | |
| | | $OUTPUT->add_gui_object('countdisplay', $attrib['id']); |
| | | $RCMAIL->output->add_gui_object('countdisplay', $attrib['id']); |
| | | |
| | | if ($attrib['label']) |
| | | $_SESSION['contactcountdisplay'] = $attrib['label']; |
| | | |
| | | return html::span($attrib, rcube_label('loading')); |
| | | return html::span($attrib, $RCMAIL->gettext('loading')); |
| | | } |
| | | |
| | | |
| | | function rcmail_get_rowcount_text($result=null) |
| | | { |
| | | global $CONTACTS, $PAGE_SIZE; |
| | | global $RCMAIL, $CONTACTS, $PAGE_SIZE; |
| | | |
| | | // read nr of contacts |
| | | if (!$result) { |
| | |
| | | } |
| | | |
| | | if ($result->count == 0) |
| | | $out = rcube_label('nocontactsfound'); |
| | | $out = $RCMAIL->gettext('nocontactsfound'); |
| | | else |
| | | $out = rcube_label(array( |
| | | $out = $RCMAIL->gettext(array( |
| | | 'name' => $_SESSION['contactcountdisplay'] ? $_SESSION['contactcountdisplay'] : 'contactsfromto', |
| | | 'vars' => array( |
| | | 'from' => $result->first + 1, |
| | |
| | | |
| | | function rcmail_get_type_label($type) |
| | | { |
| | | global $RCMAIL; |
| | | |
| | | $label = 'type'.$type; |
| | | if (rcube_label_exists($label, '*', $domain)) |
| | | return rcube_label($label, $domain); |
| | | if ($RCMAIL->text_exists($label, '*', $domain)) |
| | | return $RCMAIL->gettext($label, $domain); |
| | | else if (preg_match('/\w+(\d+)$/', $label, $m) |
| | | && ($label = preg_replace('/(\d+)$/', '', $label)) |
| | | && rcube_label_exists($label, '*', $domain)) |
| | | return rcube_label($label, $domain) . ' ' . $m[1]; |
| | | && $RCMAIL->text_exists($label, '*', $domain)) |
| | | return $RCMAIL->gettext($label, $domain) . ' ' . $m[1]; |
| | | |
| | | return ucfirst($type); |
| | | } |
| | |
| | | $form = $plugin['form']; |
| | | $record = $plugin['record']; |
| | | $edit_mode = $RCMAIL->action != 'show'; |
| | | $del_button = $attrib['deleteicon'] ? html::img(array('src' => $RCMAIL->output->get_skin_file($attrib['deleteicon']), 'alt' => rcube_label('delete'))) : rcube_label('delete'); |
| | | $del_button = $attrib['deleteicon'] ? html::img(array('src' => $RCMAIL->output->get_skin_file($attrib['deleteicon']), 'alt' => $RCMAIL->gettext('delete'))) : $RCMAIL->gettext('delete'); |
| | | unset($attrib['deleteicon']); |
| | | $out = ''; |
| | | |
| | |
| | | continue; |
| | | |
| | | $select_add = new html_select(array('class' => 'addfieldmenu', 'rel' => $section)); |
| | | $select_add->add(rcube_label('addfield'), ''); |
| | | $select_add->add($RCMAIL->gettext('addfield'), ''); |
| | | |
| | | // render head section with name fields (not a regular list of rows) |
| | | if ($section == 'head') { |
| | |
| | | |
| | | if ($RCMAIL->action == 'show') { |
| | | if (!empty($record[$col])) |
| | | $fields .= html::span('namefield ' . $col, Q($record[$col])) . " "; |
| | | $fields .= html::span('namefield ' . $col, rcube::Q($record[$col])) . " "; |
| | | } |
| | | else { |
| | | $colprop = (array)$fieldset['content'][$col] + (array)$coltypes[$col]; |
| | |
| | | $colprop['style'] = 'display:none'; |
| | | $select_add->add($colprop['label'], $col); |
| | | } |
| | | $fields .= rcmail_get_edit_field($col, $record[$col], $colprop, $colprop['type']); |
| | | $fields .= rcube_output::get_edit_field($col, $record[$col], $colprop, $colprop['type']); |
| | | } |
| | | } |
| | | $content .= html::div($blockname, $fields); |
| | |
| | | if ($edit_mode) |
| | | $content .= html::p('addfield', $select_add->show(null)); |
| | | |
| | | $out .= html::tag('fieldset', $attrib, (!empty($fieldset['name']) ? html::tag('legend', null, Q($fieldset['name'])) : '') . $content) ."\n"; |
| | | $out .= html::tag('fieldset', $attrib, (!empty($fieldset['name']) ? html::tag('legend', null, rcube::Q($fieldset['name'])) : '') . $content) ."\n"; |
| | | continue; |
| | | } |
| | | |
| | |
| | | |
| | | // merge colprop with global coltype configuration |
| | | $colprop += $coltypes[$field]; |
| | | $label = isset($colprop['label']) ? $colprop['label'] : rcube_label($col); |
| | | $label = isset($colprop['label']) ? $colprop['label'] : $RCMAIL->gettext($col); |
| | | |
| | | // prepare subtype selector in edit mode |
| | | if ($edit_mode && is_array($colprop['subtypes'])) { |
| | |
| | | |
| | | if ($edit_mode) { |
| | | if ($colprop['subtypes'] || $colprop['limit'] != 1) $cp['array'] = true; |
| | | $composite['{'.$childcol.'}'] = rcmail_get_edit_field($childcol, $childvalue, $cp, $cp['type']) . " "; |
| | | $composite['{'.$childcol.'}'] = rcube_output::get_edit_field($childcol, $childvalue, $cp, $cp['type']) . " "; |
| | | } |
| | | else { |
| | | $childval = $cp['render_func'] ? call_user_func($cp['render_func'], $childvalue, $childcol) : Q($childvalue); |
| | | $childval = $cp['render_func'] ? call_user_func($cp['render_func'], $childvalue, $childcol) : rcube::Q($childvalue); |
| | | $composite['{'.$childcol.'}'] = html::span('data ' . $childcol, $childval) . " "; |
| | | } |
| | | $j++; |
| | |
| | | $val = rcmail_format_date_col($val); |
| | | } |
| | | |
| | | $val = rcmail_get_edit_field($col, $val, $colprop, $colprop['type']); |
| | | $val = rcube_output::get_edit_field($col, $val, $colprop, $colprop['type']); |
| | | $coltypes[$field]['count']++; |
| | | } |
| | | else if ($colprop['render_func']) |
| | |
| | | else if (is_array($colprop['options']) && isset($colprop['options'][$val])) |
| | | $val = $colprop['options'][$val]; |
| | | else |
| | | $val = Q($val); |
| | | $val = rcube::Q($val); |
| | | |
| | | // use subtype as label |
| | | if ($colprop['subtypes']) |
| | |
| | | |
| | | // add delete button/link |
| | | if ($edit_mode && !($colprop['visible'] && $colprop['limit'] == 1)) |
| | | $val .= html::a(array('href' => '#del', 'class' => 'contactfieldbutton deletebutton', 'title' => rcube_label('delete'), 'rel' => $col), $del_button); |
| | | $val .= html::a(array('href' => '#del', 'class' => 'contactfieldbutton deletebutton', 'title' => $RCMAIL->gettext('delete'), 'rel' => $col), $del_button); |
| | | |
| | | // display row with label |
| | | if ($label) { |
| | | $rows .= html::div('row', |
| | | html::div('contactfieldlabel label', $select_subtype ? $select_subtype->show($subtype) : Q($label)) . |
| | | html::div('contactfieldlabel label', $select_subtype ? $select_subtype->show($subtype) : rcube::Q($label)) . |
| | | html::div('contactfieldcontent '.$colprop['type'], $val)); |
| | | } |
| | | else // row without label |
| | |
| | | // wrap rows in fieldgroup container |
| | | if ($rows) { |
| | | $content .= html::tag('fieldset', array('class' => 'contactfieldgroup ' . ($colprop['subtypes'] ? 'contactfieldgroupmulti ' : '') . 'contactcontroller' . $col, 'style' => ($rows ? null : 'display:none')), |
| | | ($colprop['subtypes'] ? html::tag('legend', null, Q($colprop['label'])) : ' ') . |
| | | ($colprop['subtypes'] ? html::tag('legend', null, rcube::Q($colprop['label'])) : ' ') . |
| | | $rows); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | if ($content) |
| | | $out .= html::tag('fieldset', null, html::tag('legend', null, Q($fieldset['name'])) . $content) ."\n"; |
| | | $out .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($fieldset['name'])) . $content) ."\n"; |
| | | } |
| | | |
| | | if ($edit_mode) { |
| | |
| | | function rcmail_format_date_col($val) |
| | | { |
| | | global $RCMAIL; |
| | | return format_date($val, $RCMAIL->config->get('date_format', 'Y-m-d'), false); |
| | | return $RCMAIL->format_date($val, $RCMAIL->config->get('date_format', 'Y-m-d'), false); |
| | | } |
| | | |
| | | /** |
| | |
| | | // forms. If _source is an empty string then the ID is a string |
| | | // containing contact ID and source name in form: <ID>-<SOURCE> |
| | | |
| | | $cid = get_input_value('_cid', RCUBE_INPUT_GPC); |
| | | $source = (string) get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $cid = rcube_utils::get_input_value('_cid', rcube_utils::INPUT_GPC); |
| | | $source = (string) rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | |
| | | if (is_array($cid)) { |
| | | return $cid; |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | $source = get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | $CONTACTS = rcmail_contact_source($source); |
| | | |
| | | if ($CONTACTS->readonly || !$CONTACTS->groups) { |
| | |
| | | } |
| | | |
| | | if ($RCMAIL->action == 'group-addmembers') { |
| | | if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($ids = rcmail_get_cids($source))) { |
| | | if (($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_POST)) && ($ids = rcmail_get_cids($source))) { |
| | | $plugin = $RCMAIL->plugins->exec_hook('group_addmembers', array('group_id' => $gid, 'ids' => $ids, 'source' => $source)); |
| | | |
| | | $CONTACTS->set_group($gid); |
| | |
| | | } |
| | | |
| | | else if ($RCMAIL->action == 'group-delmembers') { |
| | | if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($ids = rcmail_get_cids($source))) { |
| | | if (($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_POST)) && ($ids = rcmail_get_cids($source))) { |
| | | $plugin = $RCMAIL->plugins->exec_hook('group_delmembers', array('group_id' => $gid, 'ids' => $ids, 'source' => $source)); |
| | | |
| | | if (!$plugin['abort']) |
| | |
| | | } |
| | | |
| | | else if ($RCMAIL->action == 'group-create') { |
| | | if ($name = trim(get_input_value('_name', RCUBE_INPUT_POST, true))) { |
| | | if ($name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true))) { |
| | | $plugin = $RCMAIL->plugins->exec_hook('group_create', array('name' => $name, 'source' => $source)); |
| | | |
| | | if (!$plugin['abort']) |
| | |
| | | } |
| | | |
| | | if ($created && $OUTPUT->ajax_call) { |
| | | $created['name'] = Q($created['name']); |
| | | $created['name'] = rcube::Q($created['name']); |
| | | $OUTPUT->show_message('groupcreated', 'confirmation'); |
| | | $OUTPUT->command('insert_contact_group', array('source' => $source) + $created); |
| | | } |
| | |
| | | } |
| | | |
| | | else if ($RCMAIL->action == 'group-rename') { |
| | | if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($name = trim(get_input_value('_name', RCUBE_INPUT_POST, true)))) { |
| | | if (($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_POST)) && ($name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true)))) { |
| | | $plugin = $RCMAIL->plugins->exec_hook('group_rename', array('group_id' => $gid, 'name' => $name, 'source' => $source)); |
| | | |
| | | if (!$plugin['abort']) |
| | |
| | | if ($newname && $OUTPUT->ajax_call) { |
| | | $OUTPUT->show_message('grouprenamed', 'confirmation'); |
| | | $OUTPUT->command('update_contact_group', array( |
| | | 'source' => $source, 'id' => $gid, 'name' => Q($newname), 'newid' => $newgid)); |
| | | 'source' => $source, 'id' => $gid, 'name' => rcube::Q($newname), 'newid' => $newgid)); |
| | | } |
| | | else if (!$newname) |
| | | $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error'); |
| | | } |
| | | |
| | | else if ($RCMAIL->action == 'group-delete') { |
| | | if ($gid = get_input_value('_gid', RCUBE_INPUT_POST)) { |
| | | if ($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_POST)) { |
| | | $plugin = $RCMAIL->plugins->exec_hook('group_delete', array('group_id' => $gid, 'source' => $source)); |
| | | |
| | | if (!$plugin['abort']) |
| | |
| | | function rcmail_import_form($attrib) |
| | | { |
| | | global $RCMAIL, $OUTPUT; |
| | | $target = get_input_value('_target', RCUBE_INPUT_GPC); |
| | | $target = rcube_utils::get_input_value('_target', rcube_utils::INPUT_GPC); |
| | | |
| | | $attrib += array('id' => "rcmImportForm"); |
| | | |
| | |
| | | 'size' => 40, |
| | | 'multiple' => 'multiple', |
| | | )); |
| | | $form = html::p(null, html::label('rcmimportfile', rcube_label('importfromfile')) . $upload->show()); |
| | | $form = html::p(null, html::label('rcmimportfile', $RCMAIL->gettext('importfromfile')) . $upload->show()); |
| | | $table = new html_table(array('cols' => 2)); |
| | | |
| | | // addressbook selector |
| | |
| | | foreach ($writable_books as $book) |
| | | $select->add($book['name'], $book['id']); |
| | | |
| | | $table->add('title', html::label('rcmimporttarget', rcube_label('importtarget'))); |
| | | $table->add('title', html::label('rcmimporttarget', $RCMAIL->gettext('importtarget'))); |
| | | $table->add(null, $select->show($target)); |
| | | } |
| | | else { |
| | |
| | | // selector for group import options |
| | | if (count($writable_books) >= 1 || $writable_books[0]->groups) { |
| | | $select = new html_select(array('name' => '_groups', 'id' => 'rcmimportgroups', 'is_escaped' => true)); |
| | | $select->add(rcube_label('none'), '0'); |
| | | $select->add(rcube_label('importgroupsall'), '1'); |
| | | $select->add(rcube_label('importgroupsexisting'), '2'); |
| | | $select->add($RCMAIL->gettext('none'), '0'); |
| | | $select->add($RCMAIL->gettext('importgroupsall'), '1'); |
| | | $select->add($RCMAIL->gettext('importgroupsexisting'), '2'); |
| | | |
| | | $table->add('title', html::label('rcmimportgroups', rcube_label('importgroups'))); |
| | | $table->add(null, $select->show(get_input_value('_groups', RCUBE_INPUT_GPC))); |
| | | $table->add('title', html::label('rcmimportgroups', $RCMAIL->gettext('importgroups'))); |
| | | $table->add(null, $select->show(rcube_utils::get_input_value('_groups', rcube_utils::INPUT_GPC))); |
| | | } |
| | | |
| | | // checkbox to replace the entire address book |
| | | $check_replace = new html_checkbox(array('name' => '_replace', 'value' => 1, 'id' => 'rcmimportreplace')); |
| | | $table->add('title', html::label('rcmimportreplace', rcube_label('importreplace'))); |
| | | $table->add(null, $check_replace->show(get_input_value('_replace', RCUBE_INPUT_GPC))); |
| | | $table->add('title', html::label('rcmimportreplace', $RCMAIL->gettext('importreplace'))); |
| | | $table->add(null, $check_replace->show(rcube_utils::get_input_value('_replace', rcube_utils::INPUT_GPC))); |
| | | |
| | | $form .= $table->show(array('id' => null) + $attrib); |
| | | |
| | |
| | | $OUTPUT->add_label('selectimportfile','importwait'); |
| | | $OUTPUT->add_gui_object('importform', $attrib['id']); |
| | | |
| | | $out = html::p(null, Q(rcube_label('importdesc'), 'show')); |
| | | $out = html::p(null, rcube::Q($RCMAIL->gettext('importdesc'), 'show')); |
| | | |
| | | $out .= $OUTPUT->form_tag(array( |
| | | 'action' => $RCMAIL->url('import'), |
| | |
| | | */ |
| | | function rcmail_import_confirm($attrib) |
| | | { |
| | | global $IMPORT_STATS; |
| | | global $IMPORT_STATS, $RCMAIL; |
| | | |
| | | $vars = get_object_vars($IMPORT_STATS); |
| | | $vars['names'] = $vars['skipped_names'] = ''; |
| | | |
| | | $content = html::p(null, rcube_label(array( |
| | | $content = html::p(null, $RCMAIL->gettext(array( |
| | | 'name' => 'importconfirm', |
| | | 'nr' => $IMPORT_STATS->inserted, |
| | | 'vars' => $vars, |
| | |
| | | $content .= html::p('em', join(', ', array_map('Q', $IMPORT_STATS->names))); |
| | | |
| | | if ($IMPORT_STATS->skipped) { |
| | | $content .= html::p(null, rcube_label(array( |
| | | $content .= html::p(null, $RCMAIL->gettext(array( |
| | | 'name' => 'importconfirmskipped', |
| | | 'nr' => $IMPORT_STATS->skipped, |
| | | 'vars' => $vars, |
| | |
| | | function rcmail_import_buttons($attrib) |
| | | { |
| | | global $IMPORT_STATS, $OUTPUT; |
| | | $target = get_input_value('_target', RCUBE_INPUT_GPC); |
| | | $target = rcube_utils::get_input_value('_target', rcube_utils::INPUT_GPC); |
| | | |
| | | $attrib += array('type' => 'input'); |
| | | unset($attrib['name']); |
| | |
| | | $importstep = 'rcmail_import_form'; |
| | | |
| | | if (is_array($_FILES['_file'])) { |
| | | $replace = (bool)get_input_value('_replace', RCUBE_INPUT_GPC); |
| | | $target = get_input_value('_target', RCUBE_INPUT_GPC); |
| | | $with_groups = intval(get_input_value('_groups', RCUBE_INPUT_GPC)); |
| | | $replace = (bool)rcube_utils::get_input_value('_replace', rcube_utils::INPUT_GPC); |
| | | $target = rcube_utils::get_input_value('_target', rcube_utils::INPUT_GPC); |
| | | $with_groups = intval(rcube_utils::get_input_value('_groups', rcube_utils::INPUT_GPC)); |
| | | |
| | | $vcards = array(); |
| | | $upload_error = null; |
| | |
| | | // no vcards detected |
| | | if (!count($vcards)) { |
| | | if ($upload_error == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) { |
| | | $OUTPUT->show_message('filesizeerror', 'error', array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize'))))); |
| | | $size = $RCMAIL->show_bytes(parse_bytes(ini_get('upload_max_filesize'))); |
| | | $OUTPUT->show_message('filesizeerror', 'error', array('size' => $size)); |
| | | } |
| | | else if ($upload_error) { |
| | | $OUTPUT->show_message('fileuploaderror', 'error'); |
| | |
| | | |
| | | // We're using UTF8 internally |
| | | $email = $vcard->email[0]; |
| | | $email = rcube_idn_to_utf8($email); |
| | | $email = rcube_utils::idn_to_utf8($email); |
| | | |
| | | if (!$replace) { |
| | | $existing = null; |
| | |
| | | } |
| | | |
| | | |
| | | $OUTPUT->set_pagetitle(rcube_label('importcontacts')); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('importcontacts')); |
| | | |
| | | $OUTPUT->add_handlers(array( |
| | | 'importstep' => $importstep, |
| | |
| | | |
| | | if (!empty($_REQUEST['_gid']) && isset($_REQUEST['_source'])) |
| | | { |
| | | $source = get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | $CONTACTS = $RCMAIL->get_address_book($source); |
| | | |
| | | $group_id = get_input_value('_gid', RCUBE_INPUT_GPC); |
| | | $group_id = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC); |
| | | $group_data = $CONTACTS->get_group($group_id); |
| | | |
| | | // group has an email address assigned: use that |
| | |
| | | } |
| | | |
| | | $cids = rcmail_get_cids(); |
| | | $target = get_input_value('_to', RCUBE_INPUT_POST); |
| | | $target_group = get_input_value('_togid', RCUBE_INPUT_POST); |
| | | $target = rcube_utils::get_input_value('_to', rcube_utils::INPUT_POST); |
| | | $target_group = rcube_utils::get_input_value('_togid', rcube_utils::INPUT_POST); |
| | | |
| | | $all = 0; |
| | | $deleted = 0; |
| | |
| | | $cid = $cids ? array_shift($cids[$source]) : null; |
| | | |
| | | // read the referenced file |
| | | if (($file_id = get_input_value('_photo', RCUBE_INPUT_GPC)) && ($tempfile = $_SESSION['contacts']['files'][$file_id])) { |
| | | if (($file_id = rcube_utils::get_input_value('_photo', rcube_utils::INPUT_GPC)) && ($tempfile = $_SESSION['contacts']['files'][$file_id])) { |
| | | $tempfile = $RCMAIL->plugins->exec_hook('attachment_display', $tempfile); |
| | | if ($tempfile['status']) { |
| | | if ($tempfile['data']) |
| | |
| | | } |
| | | else { |
| | | // by email, search for contact first |
| | | if ($email = get_input_value('_email', RCUBE_INPUT_GPC)) { |
| | | if ($email = rcube_utils::get_input_value('_email', rcube_utils::INPUT_GPC)) { |
| | | foreach ($RCMAIL->get_address_sources() as $s) { |
| | | $abook = $RCMAIL->get_address_book($s['id']); |
| | | $result = $abook->search(array('email'), $email, 1, true, true, 'photo'); |
| | |
| | | } |
| | | |
| | | // deliver alt image |
| | | if (!$data && ($alt_img = get_input_value('_alt', RCUBE_INPUT_GPC)) && is_file($alt_img)) { |
| | | if (!$data && ($alt_img = rcube_utils::get_input_value('_alt', rcube_utils::INPUT_GPC)) && is_file($alt_img)) { |
| | | $data = file_get_contents($alt_img); |
| | | } |
| | | |
| | |
| | | $RCMAIL->output->future_expire_header(86400); |
| | | } |
| | | |
| | | header('Content-Type: ' . rc_image_content_type($data)); |
| | | header('Content-Type: ' . rcube_mime::image_content_type($data)); |
| | | echo $data ? $data : file_get_contents('program/resources/blank.gif'); |
| | | exit; |
| | |
| | | */ |
| | | |
| | | $CONTACTS = rcmail_contact_source(null, true, true); |
| | | $cid = get_input_value('_cid', RCUBE_INPUT_POST); |
| | | $cid = rcube_utils::get_input_value('_cid', rcube_utils::INPUT_POST); |
| | | $return_action = empty($cid) ? 'add' : 'edit'; |
| | | |
| | | // Source changed, display the form again |
| | | if (!empty($_GET['_reload'])) { |
| | | rcmail_overwrite_action($return_action); |
| | | $RCMAIL->overwrite_action($return_action); |
| | | return; |
| | | } |
| | | |
| | | // cannot edit record |
| | | if ($CONTACTS->readonly) { |
| | | $OUTPUT->show_message('contactreadonly', 'error'); |
| | | rcmail_overwrite_action($return_action); |
| | | $RCMAIL->overwrite_action($return_action); |
| | | return; |
| | | } |
| | | |
| | |
| | | if ($colprop['childs']) { |
| | | $values = array(); |
| | | foreach ($colprop['childs'] as $childcol => $cp) { |
| | | $vals = get_input_value('_'.$childcol, RCUBE_INPUT_POST, true); |
| | | $vals = rcube_utils::get_input_value('_'.$childcol, rcube_utils::INPUT_POST, true); |
| | | foreach ((array)$vals as $i => $val) |
| | | $values[$i][$childcol] = $val; |
| | | } |
| | | $subtypes = isset($_REQUEST['_subtype_' . $col]) ? (array)get_input_value('_subtype_' . $col, RCUBE_INPUT_POST) : array(''); |
| | | $subtypes = isset($_REQUEST['_subtype_' . $col]) ? (array)rcube_utils::get_input_value('_subtype_' . $col, rcube_utils::INPUT_POST) : array(''); |
| | | foreach ($subtypes as $i => $subtype) { |
| | | $suffix = $subtype ? ':'.$subtype : ''; |
| | | if ($values[$i]) |
| | |
| | | } |
| | | // assign values and subtypes |
| | | else if (is_array($_POST[$fname])) { |
| | | $values = get_input_value($fname, RCUBE_INPUT_POST, true); |
| | | $subtypes = get_input_value('_subtype_' . $col, RCUBE_INPUT_POST); |
| | | $values = rcube_utils::get_input_value($fname, rcube_utils::INPUT_POST, true); |
| | | $subtypes = rcube_utils::get_input_value('_subtype_' . $col, rcube_utils::INPUT_POST); |
| | | |
| | | foreach ($values as $i => $val) { |
| | | if ($col == 'email') { |
| | |
| | | } |
| | | } |
| | | else if (isset($_POST[$fname])) { |
| | | $a_record[$col] = get_input_value($fname, RCUBE_INPUT_POST, true); |
| | | $a_record[$col] = rcube_utils::get_input_value($fname, rcube_utils::INPUT_POST, true); |
| | | |
| | | // normalize the submitted date strings |
| | | if ($colprop['type'] == 'date') { |
| | |
| | | // do input checks (delegated to $CONTACTS instance) |
| | | if (!$CONTACTS->validate($a_record)) { |
| | | $err = (array)$CONTACTS->get_error(); |
| | | $OUTPUT->show_message($err['message'] ? Q($err['message']) : 'formincomplete', 'warning'); |
| | | $OUTPUT->show_message($err['message'] ? rcube::Q($err['message']) : 'formincomplete', 'warning'); |
| | | $GLOBALS['EDIT_RECORD'] = $a_record; // store submitted data to be used in edit form |
| | | rcmail_overwrite_action($return_action); |
| | | $RCMAIL->overwrite_action($return_action); |
| | | return; |
| | | } |
| | | |
| | |
| | | $RCMAIL->session->remove('contacts'); |
| | | } |
| | | |
| | | $source = get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | |
| | | // update an existing contact |
| | | if (!empty($cid)) |
| | |
| | | $record['name'] = rcube_addressbook::compose_list_name($record); |
| | | |
| | | foreach (array('name') as $col) |
| | | $a_js_cols[] = Q((string)$record[$col]); |
| | | $a_js_cols[] = rcube::Q((string)$record[$col]); |
| | | |
| | | // update the changed col in list |
| | | $OUTPUT->command('parent.update_contact_row', $cid, $a_js_cols, $newcid, $source, $record); |
| | | |
| | | // show confirmation |
| | | $OUTPUT->show_message('successfullysaved', 'confirmation', null, false); |
| | | rcmail_overwrite_action('show'); |
| | | $RCMAIL->overwrite_action('show'); |
| | | } |
| | | else { |
| | | // show error message |
| | | $err = $CONTACTS->get_error(); |
| | | $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : ($err['message'] ? $err['message'] : 'errorsaving'), 'error', null, false); |
| | | rcmail_overwrite_action('show'); |
| | | $RCMAIL->overwrite_action('show'); |
| | | } |
| | | } |
| | | |
| | | // insert a new contact |
| | | else { |
| | | // Name of the addressbook already selected on the list |
| | | $orig_source = get_input_value('_orig_source', RCUBE_INPUT_GPC); |
| | | $orig_source = rcube_utils::get_input_value('_orig_source', rcube_utils::INPUT_GPC); |
| | | |
| | | if (!strlen($source)) |
| | | $source = $orig_source; |
| | |
| | | $result = $CONTACTS->search($CONTACTS->primary_key, $insert_id); |
| | | |
| | | rcmail_js_contacts_list($result, 'parent.'); |
| | | $OUTPUT->command('parent.contact_list.select', html_identifier($insert_id)); |
| | | $OUTPUT->command('parent.contact_list.select', rcube_utils::html_identifier($insert_id)); |
| | | |
| | | // update record count display |
| | | $CONTACTS->reset(); |
| | |
| | | // show error message |
| | | $err = $CONTACTS->get_error(); |
| | | $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : ($err['message'] ? $err['message'] : 'errorsaving'), 'error', null, false); |
| | | rcmail_overwrite_action('add'); |
| | | $RCMAIL->overwrite_action('add'); |
| | | } |
| | | } |
| | |
| | | */ |
| | | |
| | | if ($RCMAIL->action == 'search-create') { |
| | | $id = get_input_value('_search', RCUBE_INPUT_POST); |
| | | $name = get_input_value('_name', RCUBE_INPUT_POST, true); |
| | | $id = rcube_utils::get_input_value('_search', rcube_utils::INPUT_POST); |
| | | $name = rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true); |
| | | |
| | | if (($params = $_SESSION['search_params']) && $params['id'] == $id) { |
| | | |
| | |
| | | |
| | | if ($result) { |
| | | $OUTPUT->show_message('savedsearchcreated', 'confirmation'); |
| | | $OUTPUT->command('insert_saved_search', Q($name), Q($result)); |
| | | $OUTPUT->command('insert_saved_search', rcube::Q($name), rcube::Q($result)); |
| | | } |
| | | else |
| | | $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'savedsearchcreateerror', 'error'); |
| | |
| | | } |
| | | |
| | | if ($RCMAIL->action == 'search-delete') { |
| | | $id = get_input_value('_sid', RCUBE_INPUT_POST); |
| | | $id = rcube_utils::get_input_value('_sid', rcube_utils::INPUT_POST); |
| | | |
| | | $plugin = $RCMAIL->plugins->exec_hook('saved_search_delete', array('id' => $id)); |
| | | |
| | |
| | | |
| | | if ($result) { |
| | | $OUTPUT->show_message('savedsearchdeleted', 'confirmation'); |
| | | $OUTPUT->command('remove_search_item', Q($id)); |
| | | $OUTPUT->command('remove_search_item', rcube::Q($id)); |
| | | // contact list will be cleared, clear also page counter |
| | | $OUTPUT->command('set_rowcount', rcube_label('nocontactsfound')); |
| | | $OUTPUT->command('set_rowcount', $RCMAIL->gettext('nocontactsfound')); |
| | | $OUTPUT->set_env('pagecount', 0); |
| | | } |
| | | else |
| | |
| | | global $RCMAIL, $OUTPUT, $SEARCH_MODS_DEFAULT, $PAGE_SIZE; |
| | | |
| | | $adv = isset($_POST['_adv']); |
| | | $sid = get_input_value('_sid', RCUBE_INPUT_GET); |
| | | $sid = rcube_utils::get_input_value('_sid', rcube_utils::INPUT_GET); |
| | | |
| | | // get search criteria from saved search |
| | | if ($sid && ($search = $RCMAIL->user->get_search($sid))) { |
| | |
| | | // get fields/values from advanced search form |
| | | else if ($adv) { |
| | | foreach (array_keys($_POST) as $key) { |
| | | $s = trim(get_input_value($key, RCUBE_INPUT_POST, true)); |
| | | $s = trim(rcube_utils::get_input_value($key, rcube_utils::INPUT_POST, true)); |
| | | if (strlen($s) && preg_match('/^_search_([a-zA-Z0-9_-]+)$/', $key, $m)) { |
| | | $search[] = $s; |
| | | $fields[] = $m[1]; |
| | |
| | | } |
| | | // quick-search |
| | | else { |
| | | $search = trim(get_input_value('_q', RCUBE_INPUT_GET, true)); |
| | | $fields = explode(',', get_input_value('_headers', RCUBE_INPUT_GET)); |
| | | $search = trim(rcube_utils::get_input_value('_q', rcube_utils::INPUT_GET, true)); |
| | | $fields = explode(',', rcube_utils::get_input_value('_headers', rcube_utils::INPUT_GET)); |
| | | |
| | | if (empty($fields)) { |
| | | $fields = array_keys($SEARCH_MODS_DEFAULT); |
| | |
| | | |
| | | $form = array( |
| | | 'main' => array( |
| | | 'name' => rcube_label('properties'), |
| | | 'name' => $RCMAIL->gettext('properties'), |
| | | 'content' => array( |
| | | ), |
| | | ), |
| | | 'personal' => array( |
| | | 'name' => rcube_label('personalinfo'), |
| | | 'name' => $RCMAIL->gettext('personalinfo'), |
| | | 'content' => array( |
| | | ), |
| | | ), |
| | | 'other' => array( |
| | | 'name' => rcube_label('other'), |
| | | 'name' => $RCMAIL->gettext('other'), |
| | | 'content' => array( |
| | | ), |
| | | ), |
| | |
| | | if ($colprop['type'] != 'image' && !$colprop['nosearch']) |
| | | { |
| | | $ftype = $colprop['type'] == 'select' ? 'select' : 'text'; |
| | | $label = isset($colprop['label']) ? $colprop['label'] : rcube_label($col); |
| | | $label = isset($colprop['label']) ? $colprop['label'] : $RCMAIL->gettext($col); |
| | | $category = $colprop['category'] ? $colprop['category'] : 'other'; |
| | | |
| | | // load jquery UI datepicker for date fields |
| | |
| | | $colprop['size'] = $i_size; |
| | | |
| | | |
| | | $content = html::div('row', html::div('contactfieldlabel label', Q($label)) |
| | | . html::div('contactfieldcontent', rcmail_get_edit_field('search_'.$col, '', $colprop, $ftype))); |
| | | $content = html::div('row', html::div('contactfieldlabel label', rcube::Q($label)) |
| | | . html::div('contactfieldcontent', rcube_output::get_edit_field('search_'.$col, '', $colprop, $ftype))); |
| | | |
| | | $form[$category]['content'][] = $content; |
| | | } |
| | |
| | | $content = html::div('contactfieldgroup', join("\n", $f['content'])); |
| | | |
| | | $out .= html::tag('fieldset', $attrib, |
| | | html::tag('legend', null, Q($f['name'])) |
| | | html::tag('legend', null, rcube::Q($f['name'])) |
| | | . $content) . "\n"; |
| | | } |
| | | } |
| | |
| | | |
| | | $form = array( |
| | | 'contact' => array( |
| | | 'name' => rcube_label('properties'), |
| | | 'name' => $RCMAIL->gettext('properties'), |
| | | 'content' => array( |
| | | 'email' => array('size' => $i_size, 'render_func' => 'rcmail_render_email_value'), |
| | | 'phone' => array('size' => $i_size), |
| | |
| | | ), |
| | | ), |
| | | 'personal' => array( |
| | | 'name' => rcube_label('personalinfo'), |
| | | 'name' => $RCMAIL->gettext('personalinfo'), |
| | | 'content' => array( |
| | | 'gender' => array('size' => $i_size), |
| | | 'maidenname' => array('size' => $i_size), |
| | |
| | | ), |
| | | ), |
| | | ); |
| | | |
| | | |
| | | if (isset($CONTACT_COLTYPES['notes'])) { |
| | | $form['notes'] = array( |
| | | 'name' => rcube_label('notes'), |
| | | 'name' => $RCMAIL->gettext('notes'), |
| | | 'content' => array( |
| | | 'notes' => array('type' => 'textarea', 'label' => false), |
| | | ), |
| | | ); |
| | | } |
| | | |
| | | |
| | | if ($CONTACTS->groups) { |
| | | $form['groups'] = array( |
| | | 'name' => rcube_label('groups'), |
| | | 'name' => $RCMAIL->gettext('groups'), |
| | | 'content' => rcmail_contact_record_groups($record['ID']), |
| | | ); |
| | | } |
| | |
| | | |
| | | function rcmail_render_email_value($email) |
| | | { |
| | | global $RCMAIL; |
| | | |
| | | return html::a(array( |
| | | 'href' => 'mailto:' . $email, |
| | | 'onclick' => sprintf("return %s.command('compose','%s',this)", JS_OBJECT_NAME, JQ($email)), |
| | | 'title' => rcube_label('composeto'), |
| | | 'onclick' => sprintf("return %s.command('compose','%s',this)", rcmail_output::JS_OBJECT_NAME, rcube::JQ($email)), |
| | | 'title' => $RCMAIL->gettext('composeto'), |
| | | 'class' => 'email', |
| | | ), Q($email)); |
| | | ), rcube::Q($email)); |
| | | } |
| | | |
| | | |
| | |
| | | 'href' => $prefix . $url, |
| | | 'target' => '_blank', |
| | | 'class' => 'url', |
| | | ), Q($url)); |
| | | ), rcube::Q($url)); |
| | | } |
| | | |
| | | |
| | |
| | | $gid = $group['ID']; |
| | | $table->add(null, $checkbox->show($members[$gid] ? $gid : null, |
| | | array('value' => $gid, 'id' => 'ff_gid' . $gid))); |
| | | $table->add(null, html::label('ff_gid' . $gid, Q($group['name']))); |
| | | $table->add(null, html::label('ff_gid' . $gid, rcube::Q($group['name']))); |
| | | } |
| | | |
| | | $hiddenfields = new html_hiddenfield(array('name' => '_source', 'value' => get_input_value('_source', RCUBE_INPUT_GPC))); |
| | | $hiddenfields = new html_hiddenfield(array('name' => '_source', 'value' => rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC))); |
| | | $hiddenfields->add(array('name' => '_cid', 'value' => $contact_id)); |
| | | |
| | | $form_start = $RCMAIL->output->request_form(array( |
| | |
| | | )); |
| | | } |
| | | else { |
| | | $attachment['error'] = rcube_label('invalidimageformat'); |
| | | $attachment['error'] = $RCMAIL->gettext('invalidimageformat'); |
| | | } |
| | | |
| | | if ($attachment['status'] && !$attachment['abort']) { |
| | |
| | | $OUTPUT->command('replace_contact_photo', $file_id); |
| | | } |
| | | else { // upload failed |
| | | $err = $_FILES['_photo']['error']; |
| | | $err = $_FILES['_photo']['error']; |
| | | $size = $RCMAIL->show_bytes(parse_bytes(ini_get('upload_max_filesize'))); |
| | | |
| | | if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) |
| | | $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize')))))); |
| | | $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $size))); |
| | | else if ($attachment['error']) |
| | | $msg = $attachment['error']; |
| | | else |
| | | $msg = rcube_label('fileuploaderror'); |
| | | |
| | | $msg = $RCMAIL->gettext('fileuploaderror'); |
| | | |
| | | $OUTPUT->command('display_message', $msg, 'error'); |
| | | } |
| | | } |
| | |
| | | // if filesize exceeds post_max_size then $_FILES array is empty, |
| | | // show filesizeerror instead of fileuploaderror |
| | | if ($maxsize = ini_get('post_max_size')) |
| | | $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes($maxsize))))); |
| | | $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $RCMAIL->show_bytes(parse_bytes($maxsize))))); |
| | | else |
| | | $msg = rcube_label('fileuploaderror'); |
| | | $msg = $RCMAIL->gettext('fileuploaderror'); |
| | | |
| | | $OUTPUT->command('display_message', $msg, 'error'); |
| | | } |
| | |
| | | |
| | | if (!empty($_POST['_address']) && is_object($CONTACTS)) |
| | | { |
| | | $contact_arr = rcube_mime::decode_address_list(get_input_value('_address', RCUBE_INPUT_POST, true), 1, false); |
| | | $contact_arr = rcube_mime::decode_address_list(rcube_utils::get_input_value('_address', rcube_utils::INPUT_POST, true), 1, false); |
| | | |
| | | if (!empty($contact_arr[1]['mailto'])) { |
| | | $contact = array( |
| | |
| | | $OUTPUT->send(); |
| | | } |
| | | |
| | | $email = rcube_idn_to_ascii($contact['email']); |
| | | if (!check_email($email, false)) { |
| | | $email = rcube_utils::idn_to_ascii($contact['email']); |
| | | if (!rcube_utils::check_email($email, false)) { |
| | | $OUTPUT->show_message('emailformaterror', 'error', array('email' => $contact['email'])); |
| | | $OUTPUT->send(); |
| | | } |
| | | |
| | | $contact['email'] = rcube_idn_to_utf8($contact['email']); |
| | | $contact['email'] = rcube_utils::idn_to_utf8($contact['email']); |
| | | $contact = $RCMAIL->plugins->exec_hook('contact_displayname', $contact); |
| | | |
| | | if (empty($contact['firstname']) || empty($contact['surname'])) |
| | |
| | | |
| | | // Upload progress update |
| | | if (!empty($_GET['_progress'])) { |
| | | rcube_upload_progress(); |
| | | $RCMAIL->upload_progress(); |
| | | } |
| | | |
| | | $COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GPC); |
| | | $COMPOSE_ID = rcube_utils::get_input_value('_id', rcube_utils::INPUT_GPC); |
| | | $COMPOSE = null; |
| | | |
| | | if ($COMPOSE_ID && $_SESSION['compose_data_' . $COMPOSE_ID]) { |
| | |
| | | // clear all stored output properties (like scripts and env vars) |
| | | $OUTPUT->reset(); |
| | | |
| | | $uploadid = get_input_value('_uploadid', RCUBE_INPUT_GET); |
| | | $uploadid = rcube_utils::get_input_value('_uploadid', rcube_utils::INPUT_GET); |
| | | |
| | | if (is_array($_FILES['_attachments']['tmp_name'])) { |
| | | $multiple = count($_FILES['_attachments']['tmp_name']) > 1; |
| | |
| | | 'path' => $filepath, |
| | | 'size' => $_FILES['_attachments']['size'][$i], |
| | | 'name' => $_FILES['_attachments']['name'][$i], |
| | | 'mimetype' => rc_mime_content_type($filepath, $_FILES['_attachments']['name'][$i], $_FILES['_attachments']['type'][$i]), |
| | | 'mimetype' => rcube_mime::file_content_type($filepath, $_FILES['_attachments']['name'][$i], $_FILES['_attachments']['type'][$i]), |
| | | 'group' => $COMPOSE_ID, |
| | | ); |
| | | |
| | |
| | | if (($icon = $COMPOSE['deleteicon']) && is_file($icon)) { |
| | | $button = html::img(array( |
| | | 'src' => $icon, |
| | | 'alt' => rcube_label('delete') |
| | | 'alt' => $RCMAIL->gettext('delete') |
| | | )); |
| | | } |
| | | else if ($COMPOSE['textbuttons']) { |
| | | $button = Q(rcube_label('delete')); |
| | | $button = rcube::Q($RCMAIL->gettext('delete')); |
| | | } |
| | | else { |
| | | $button = ''; |
| | |
| | | |
| | | $content = html::a(array( |
| | | 'href' => "#delete", |
| | | 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id), |
| | | 'title' => rcube_label('delete'), |
| | | 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", rcmail_output::JS_OBJECT_NAME, $id), |
| | | 'title' => $RCMAIL->gettext('delete'), |
| | | 'class' => 'delete', |
| | | ), $button); |
| | | |
| | | $content .= Q($attachment['name']); |
| | | $content .= rcube::Q($attachment['name']); |
| | | |
| | | $OUTPUT->command('add2attachment_list', "rcmfile$id", array( |
| | | 'html' => $content, |
| | | 'name' => $attachment['name'], |
| | | 'mimetype' => $attachment['mimetype'], |
| | | 'classname' => rcmail_filetype2classname($attachment['mimetype'], $attachment['name']), |
| | | 'classname' => rcube_utils::file2class($attachment['mimetype'], $attachment['name']), |
| | | 'complete' => true), $uploadid); |
| | | } |
| | | else { // upload failed |
| | | if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) { |
| | | $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize')))))); |
| | | $size = $RCMAIL->show_bytes(parse_bytes(ini_get('upload_max_filesize'))); |
| | | $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $size))); |
| | | } |
| | | else if ($attachment['error']) { |
| | | $msg = $attachment['error']; |
| | | } |
| | | else { |
| | | $msg = rcube_label('fileuploaderror'); |
| | | $msg = $RCMAIL->gettext('fileuploaderror'); |
| | | } |
| | | |
| | | if ($attachment['error'] || $err != UPLOAD_ERR_NO_FILE) { |
| | |
| | | // if filesize exceeds post_max_size then $_FILES array is empty, |
| | | // show filesizeerror instead of fileuploaderror |
| | | if ($maxsize = ini_get('post_max_size')) |
| | | $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes($maxsize))))); |
| | | $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $RCMAIL->show_bytes(parse_bytes($maxsize))))); |
| | | else |
| | | $msg = rcube_label('fileuploaderror'); |
| | | $msg = $RCMAIL->gettext('fileuploaderror'); |
| | | $OUTPUT->command('display_message', $msg, 'error'); |
| | | $OUTPUT->command('remove_from_attachment_list', $uploadid); |
| | | } |
| | |
| | | */ |
| | | |
| | | if ($RCMAIL->action == 'group-expand') { |
| | | $abook = $RCMAIL->get_address_book(get_input_value('_source', RCUBE_INPUT_GPC)); |
| | | if ($gid = get_input_value('_gid', RCUBE_INPUT_GPC)) { |
| | | $abook = $RCMAIL->get_address_book(rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC)); |
| | | if ($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC)) { |
| | | $members = array(); |
| | | $abook->set_group($gid); |
| | | $abook->set_pagesize(1000); // TODO: limit number of group members by config |
| | |
| | | $MAXNUM = (int) $RCMAIL->config->get('autocomplete_max', 15); |
| | | $mode = (int) $RCMAIL->config->get('addressbook_search_mode'); |
| | | $single = (bool) $RCMAIL->config->get('autocomplete_single'); |
| | | $search = get_input_value('_search', RCUBE_INPUT_GPC, true); |
| | | $source = get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $sid = get_input_value('_id', RCUBE_INPUT_GPC); |
| | | $search = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC, true); |
| | | $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | $sid = rcube_utils::get_input_value('_id', rcube_utils::INPUT_GPC); |
| | | |
| | | if (strlen($source)) |
| | | $book_types = array($source); |
| | |
| | | |
| | | if ($status && $is_current) { |
| | | // refresh saved search set |
| | | $search_request = get_input_value('_search', RCUBE_INPUT_GPC); |
| | | $search_request = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC); |
| | | if ($search_request && isset($_SESSION['search']) |
| | | && $_SESSION['search_request'] == $search_request |
| | | ) { |
| | |
| | | } |
| | | |
| | | if (!empty($_GET['_quota'])) |
| | | $OUTPUT->command('set_quota', rcmail_quota_content()); |
| | | $OUTPUT->command('set_quota', $RCMAIL->quota_content()); |
| | | |
| | | $OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox_name, 'EXISTS')); |
| | | |
| | |
| | | define('RCUBE_COMPOSE_EDIT', 'edit'); |
| | | |
| | | $MESSAGE_FORM = null; |
| | | $COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GET); |
| | | $COMPOSE_ID = rcube_utils::get_input_value('_id', rcube_utils::INPUT_GET); |
| | | $COMPOSE = null; |
| | | |
| | | if ($COMPOSE_ID && $_SESSION['compose_data_'.$COMPOSE_ID]) |
| | |
| | | { |
| | | // Infinite redirect prevention in case of broken session (#1487028) |
| | | if ($COMPOSE_ID) |
| | | raise_error(array('code' => 500, 'type' => 'php', |
| | | rcube::raise_error(array('code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Invalid compose ID"), true, true); |
| | | |
| | | $COMPOSE_ID = uniqid(mt_rand()); |
| | | $_SESSION['compose_data_'.$COMPOSE_ID] = array( |
| | | 'id' => $COMPOSE_ID, |
| | | 'param' => rcube_utils::request2param(RCUBE_INPUT_GET, 'task|action', true), |
| | | 'param' => rcube_utils::request2param(rcube_utils::INPUT_GET, 'task|action', true), |
| | | 'mailbox' => $RCMAIL->storage->get_folder(), |
| | | ); |
| | | $COMPOSE =& $_SESSION['compose_data_'.$COMPOSE_ID]; |
| | |
| | | $attachment = array( |
| | | 'group' => $COMPOSE_ID, |
| | | 'name' => $filename, |
| | | 'mimetype' => rc_mime_content_type($attach, $filename), |
| | | 'mimetype' => rcube_mime::file_content_type($attach, $filename), |
| | | 'path' => $attach, |
| | | ); |
| | | } |
| | |
| | | |
| | | $OUTPUT->set_env('compose_id', $COMPOSE['id']); |
| | | $OUTPUT->set_env('session_id', session_id()); |
| | | $OUTPUT->set_pagetitle(rcube_label('compose')); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('compose')); |
| | | |
| | | // add config parameters to client script |
| | | if (!empty($CONFIG['drafts_mbox'])) { |
| | |
| | | $OUTPUT->set_env('recipients_separator', trim($RCMAIL->config->get('recipients_separator', ','))); |
| | | |
| | | // default font for HTML editor |
| | | $font = rcube_fontdefs($RCMAIL->config->get('default_font')); |
| | | $font = rcmail::font_defs($RCMAIL->config->get('default_font')); |
| | | if ($font && !is_array($font)) { |
| | | $OUTPUT->set_env('default_font', $font); |
| | | } |
| | |
| | | |
| | | // Set From field value |
| | | if (!empty($_POST['_from'])) { |
| | | $MESSAGE->compose['from'] = get_input_value('_from', RCUBE_INPUT_POST); |
| | | $MESSAGE->compose['from'] = rcube_utils::get_input_value('_from', rcube_utils::INPUT_POST); |
| | | } |
| | | else if (!empty($COMPOSE['param']['from'])) { |
| | | $MESSAGE->compose['from'] = $COMPOSE['param']['from']; |
| | |
| | | $COMPOSE['param']['to'] = $fvalue; |
| | | } |
| | | else if (!empty($_POST['_'.$header])) { |
| | | $fvalue = get_input_value('_'.$header, RCUBE_INPUT_POST, TRUE); |
| | | $fvalue = rcube_utils::get_input_value('_'.$header, rcube_utils::INPUT_POST, TRUE); |
| | | } |
| | | else if (!empty($COMPOSE['param'][$header])) { |
| | | $fvalue = $COMPOSE['param'][$header]; |
| | |
| | | if (empty($addr_part['mailto'])) |
| | | continue; |
| | | |
| | | $mailto = format_email(rcube_idn_to_utf8($addr_part['mailto'])); |
| | | $mailto = format_email(rcube_utils::idn_to_utf8($addr_part['mailto'])); |
| | | |
| | | if (!in_array($mailto, $a_recipients) |
| | | && ( |
| | |
| | | |
| | | function rcmail_compose_headers($attrib) |
| | | { |
| | | global $MESSAGE; |
| | | global $RCMAIL, $MESSAGE; |
| | | |
| | | list($form_start,) = get_form_tags($attrib); |
| | | |
| | |
| | | $out = $form_start.$out; |
| | | |
| | | // configure autocompletion |
| | | rcube_autocomplete_init(); |
| | | $RCMAIL->autocomplete_init(); |
| | | |
| | | return $out; |
| | | } |
| | |
| | | $separator = intval($RCMAIL->config->get('reply_mode')) > 0 |
| | | && ($compose_mode == RCUBE_COMPOSE_REPLY || $compose_mode == RCUBE_COMPOSE_FORWARD) ? '---' : '-- '; |
| | | |
| | | $field_attrib['onchange'] = JS_OBJECT_NAME.".change_identity(this)"; |
| | | $field_attrib['onchange'] = rcmail_output::JS_OBJECT_NAME.".change_identity(this)"; |
| | | $select_from = new html_select($field_attrib); |
| | | |
| | | // create SELECT element |
| | |
| | | $text = trim($h2t->get_text()); |
| | | } |
| | | else { |
| | | $html = htmlentities($html, ENT_NOQUOTES, RCMAIL_CHARSET); |
| | | $html = htmlentities($html, ENT_NOQUOTES, RCUBE_CHARSET); |
| | | } |
| | | |
| | | if (!preg_match('/^--[ -]\r?\n/m', $text)) { |
| | |
| | | |
| | | // use posted message body |
| | | if (!empty($_POST['_message'])) { |
| | | $body = get_input_value('_message', RCUBE_INPUT_POST, true); |
| | | $isHtml = (bool) get_input_value('_is_html', RCUBE_INPUT_POST); |
| | | $body = rcube_utils::get_input_value('_message', rcube_utils::INPUT_POST, true); |
| | | $isHtml = (bool) rcube_utils::get_input_value('_is_html', rcube_utils::INPUT_POST); |
| | | } |
| | | else if ($COMPOSE['param']['body']) { |
| | | $body = $COMPOSE['param']['body']; |
| | |
| | | |
| | | // Check if we have enough memory to handle the message in it |
| | | // #1487424: we need up to 10x more memory than the body |
| | | if (!rcmail_mem_check($part->size * 10)) { |
| | | if (!rcube_utils::mem_check($part->size * 10)) { |
| | | return ''; |
| | | } |
| | | |
| | |
| | | |
| | | // If desired, set this textarea to be editable by TinyMCE |
| | | if ($isHtml) { |
| | | $MESSAGE_BODY = htmlentities($MESSAGE_BODY, ENT_NOQUOTES, RCMAIL_CHARSET); |
| | | $MESSAGE_BODY = htmlentities($MESSAGE_BODY, ENT_NOQUOTES, RCUBE_CHARSET); |
| | | $attrib['class'] = 'mce_editor'; |
| | | $attrib['is_escaped'] = true; |
| | | $textarea = new html_textarea($attrib); |
| | |
| | | $OUTPUT->set_env('composebody', $attrib['id']); |
| | | |
| | | // include HTML editor |
| | | rcube_html_editor(); |
| | | $RCMAIL->html_editor(); |
| | | |
| | | // Set language list |
| | | if (!empty($CONFIG['enable_spellcheck'])) { |
| | |
| | | |
| | | $editor_lang_set = array(); |
| | | foreach ($spellcheck_langs as $key => $name) { |
| | | $editor_lang_set[] = ($key == $lang ? '+' : '') . JQ($name).'='.JQ($key); |
| | | $editor_lang_set[] = ($key == $lang ? '+' : '') . rcube::JQ($name).'='.rcube::JQ($key); |
| | | } |
| | | |
| | | // include GoogieSpell |
| | |
| | | $RCMAIL->output->get_skin_path(), |
| | | $RCMAIL->url(array('_task' => 'utils', '_action' => 'spell', '_remote' => 1)), |
| | | !empty($dictionary) ? 'true' : 'false', |
| | | JQ(Q(rcube_label('checkspelling'))), |
| | | JQ(Q(rcube_label('resumeediting'))), |
| | | JQ(Q(rcube_label('close'))), |
| | | JQ(Q(rcube_label('revertto'))), |
| | | JQ(Q(rcube_label('nospellerrors'))), |
| | | JQ(Q(rcube_label('addtodict'))), |
| | | json_serialize($spellcheck_langs), |
| | | rcube::JQ(rcube::Q($RCMAIL->gettext('checkspelling'))), |
| | | rcube::JQ(rcube::Q($RCMAIL->gettext('resumeediting'))), |
| | | rcube::JQ(rcube::Q($RCMAIL->gettext('close'))), |
| | | rcube::JQ(rcube::Q($RCMAIL->gettext('revertto'))), |
| | | rcube::JQ(rcube::Q($RCMAIL->gettext('nospellerrors'))), |
| | | rcube::JQ(rcube::Q($RCMAIL->gettext('addtodict'))), |
| | | rcube_output::json_serialize($spellcheck_langs), |
| | | $lang, |
| | | $attrib['id'], |
| | | JS_OBJECT_NAME), 'foot'); |
| | | rcmail_output::JS_OBJECT_NAME), 'foot'); |
| | | |
| | | $OUTPUT->add_label('checking'); |
| | | $OUTPUT->set_env('spellcheck_langs', join(',', $editor_lang_set)); |
| | |
| | | |
| | | // build reply prefix |
| | | $from = array_pop(rcube_mime::decode_address_list($MESSAGE->get_header('from'), 1, false, $MESSAGE->headers->charset)); |
| | | $prefix = rcube_label(array( |
| | | $prefix = $RCMAIL->gettext(array( |
| | | 'name' => 'mailreplyintro', |
| | | 'vars' => array( |
| | | 'date' => format_date($MESSAGE->headers->date, $RCMAIL->config->get('date_long')), |
| | | 'sender' => $from['name'] ? $from['name'] : rcube_idn_to_utf8($from['mailto']), |
| | | 'date' => $RCMAIL->format_date($MESSAGE->headers->date, $RCMAIL->config->get('date_long')), |
| | | 'sender' => $from['name'] ? $from['name'] : rcube_utils::idn_to_utf8($from['mailto']), |
| | | ) |
| | | )); |
| | | |
| | |
| | | $body = rcmail_wash_html($body, array('safe' => $MESSAGE->is_safe), $cid_map); |
| | | |
| | | // build reply (quote content) |
| | | $prefix = '<p>' . Q($prefix) . "</p>\n"; |
| | | $prefix = '<p>' . rcube::Q($prefix) . "</p>\n"; |
| | | $prefix .= '<blockquote>'; |
| | | |
| | | if (intval($RCMAIL->config->get('reply_mode')) > 0) { // top-posting |
| | |
| | | if (!isset($COMPOSE['forward_attachments']) && is_array($MESSAGE->mime_parts)) |
| | | $cid_map = rcmail_write_compose_attachments($MESSAGE, $bodyIsHtml); |
| | | |
| | | $date = format_date($MESSAGE->headers->date, $RCMAIL->config->get('date_long')); |
| | | $date = $RCMAIL->format_date($MESSAGE->headers->date, $RCMAIL->config->get('date_long')); |
| | | |
| | | if (!$bodyIsHtml) { |
| | | $prefix = "\n\n\n-------- " . rcube_label('originalmessage') . " --------\n"; |
| | | $prefix .= rcube_label('subject') . ': ' . $MESSAGE->subject . "\n"; |
| | | $prefix .= rcube_label('date') . ': ' . $date . "\n"; |
| | | $prefix .= rcube_label('from') . ': ' . $MESSAGE->get_header('from') . "\n"; |
| | | $prefix .= rcube_label('to') . ': ' . $MESSAGE->get_header('to') . "\n"; |
| | | $prefix = "\n\n\n-------- " . $RCMAIL->gettext('originalmessage') . " --------\n"; |
| | | $prefix .= $RCMAIL->gettext('subject') . ': ' . $MESSAGE->subject . "\n"; |
| | | $prefix .= $RCMAIL->gettext('date') . ': ' . $date . "\n"; |
| | | $prefix .= $RCMAIL->gettext('from') . ': ' . $MESSAGE->get_header('from') . "\n"; |
| | | $prefix .= $RCMAIL->gettext('to') . ': ' . $MESSAGE->get_header('to') . "\n"; |
| | | |
| | | if ($cc = $MESSAGE->headers->get('cc')) |
| | | $prefix .= rcube_label('cc') . ': ' . $cc . "\n"; |
| | | $prefix .= $RCMAIL->gettext('cc') . ': ' . $cc . "\n"; |
| | | if (($replyto = $MESSAGE->headers->get('reply-to')) && $replyto != $MESSAGE->get_header('from')) |
| | | $prefix .= rcube_label('replyto') . ': ' . $replyto . "\n"; |
| | | $prefix .= $RCMAIL->gettext('replyto') . ': ' . $replyto . "\n"; |
| | | |
| | | $prefix .= "\n"; |
| | | $body = trim($body, "\r\n"); |
| | |
| | | $body = rcmail_wash_html($body, array('safe' => $MESSAGE->is_safe), $cid_map); |
| | | |
| | | $prefix = sprintf( |
| | | "<br /><p>-------- " . rcube_label('originalmessage') . " --------</p>" . |
| | | "<br /><p>-------- " . $RCMAIL->gettext('originalmessage') . " --------</p>" . |
| | | "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody>" . |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" . |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" . |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" . |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>", |
| | | rcube_label('subject'), Q($MESSAGE->subject), |
| | | rcube_label('date'), Q($date), |
| | | rcube_label('from'), Q($MESSAGE->get_header('from'), 'replace'), |
| | | rcube_label('to'), Q($MESSAGE->get_header('to'), 'replace')); |
| | | $RCMAIL->gettext('subject'), rcube::Q($MESSAGE->subject), |
| | | $RCMAIL->gettext('date'), rcube::Q($date), |
| | | $RCMAIL->gettext('from'), rcube::Q($MESSAGE->get_header('from'), 'replace'), |
| | | $RCMAIL->gettext('to'), rcube::Q($MESSAGE->get_header('to'), 'replace')); |
| | | |
| | | if ($cc = $MESSAGE->headers->get('cc')) |
| | | $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>", |
| | | rcube_label('cc'), Q($cc, 'replace')); |
| | | $RCMAIL->gettext('cc'), rcube::Q($cc, 'replace')); |
| | | |
| | | if (($replyto = $MESSAGE->headers->get('reply-to')) && $replyto != $MESSAGE->get_header('from')) |
| | | $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>", |
| | | rcube_label('replyto'), Q($replyto, 'replace')); |
| | | $RCMAIL->gettext('replyto'), rcube::Q($replyto, 'replace')); |
| | | |
| | | $prefix .= "</tbody></table><br>"; |
| | | } |
| | |
| | | $attachment = array( |
| | | 'group' => $COMPOSE['id'], |
| | | 'name' => $name, |
| | | 'mimetype' => $mimetype ? $mimetype : rc_mime_content_type($path, $name), |
| | | 'mimetype' => $mimetype ? $mimetype : rcube_mime::file_content_type($path, $name), |
| | | 'data' => $data, |
| | | 'size' => strlen($data), |
| | | ); |
| | |
| | | |
| | | // use subject from post |
| | | if (isset($_POST['_subject'])) { |
| | | $subject = get_input_value('_subject', RCUBE_INPUT_POST, TRUE); |
| | | $subject = rcube_utils::get_input_value('_subject', rcube_utils::INPUT_POST, TRUE); |
| | | } |
| | | // create a reply-subject |
| | | else if ($compose_mode == RCUBE_COMPOSE_REPLY) { |
| | |
| | | |
| | | function rcmail_compose_attachment_list($attrib) |
| | | { |
| | | global $OUTPUT, $CONFIG, $COMPOSE; |
| | | global $RCMAIL, $OUTPUT, $CONFIG, $COMPOSE; |
| | | |
| | | // add ID if not given |
| | | if (!$attrib['id']) |
| | |
| | | if ($attrib['deleteicon']) { |
| | | $button = html::img(array( |
| | | 'src' => $CONFIG['skin_path'] . $attrib['deleteicon'], |
| | | 'alt' => rcube_label('delete') |
| | | 'alt' => $RCMAIL->gettext('delete') |
| | | )); |
| | | } |
| | | else if (rcube_utils::get_boolean($attrib['textbuttons'])) { |
| | | $button = Q(rcube_label('delete')); |
| | | $button = rcube::Q($RCMAIL->gettext('delete')); |
| | | } |
| | | |
| | | foreach ($COMPOSE['attachments'] as $id => $a_prop) { |
| | |
| | | $out .= html::tag('li', |
| | | array( |
| | | 'id' => 'rcmfile'.$id, |
| | | 'class' => rcmail_filetype2classname($a_prop['mimetype'], $a_prop['name']), |
| | | 'class' => rcube_utils::file2class($a_prop['mimetype'], $a_prop['name']), |
| | | 'onmouseover' => "rcube_webmail.long_subject_title_ex(this, 0)", |
| | | ), |
| | | html::a(array( |
| | | 'href' => "#delete", |
| | | 'title' => rcube_label('delete'), |
| | | 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id), |
| | | 'title' => $RCMAIL->gettext('delete'), |
| | | 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", rcmail_output::JS_OBJECT_NAME, $id), |
| | | 'class' => 'delete' |
| | | ), |
| | | $button |
| | | ) . Q($a_prop['name']) |
| | | ) . rcube::Q($a_prop['name']) |
| | | ); |
| | | |
| | | $jslist['rcmfile'.$id] = array('name' => $a_prop['name'], 'complete' => true, 'mimetype' => $a_prop['mimetype']); |
| | |
| | | |
| | | function rcmail_compose_attachment_form($attrib) |
| | | { |
| | | global $OUTPUT; |
| | | global $OUTPUT, $RCMAIL; |
| | | |
| | | // set defaults |
| | | $attrib += array('id' => 'rcmUploadbox', 'buttons' => 'yes'); |
| | | |
| | | // Get filesize, enable upload progress bar |
| | | $max_filesize = rcube_upload_init(); |
| | | $max_filesize = $RCMAIL->upload_init(); |
| | | |
| | | $button = new html_inputfield(array('type' => 'button')); |
| | | |
| | | $out = html::div($attrib, |
| | | $OUTPUT->form_tag(array('id' => $attrib['id'].'Frm', 'name' => 'uploadform', 'method' => 'post', 'enctype' => 'multipart/form-data'), |
| | | html::div(null, rcmail_compose_attachment_field()) . |
| | | html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) . |
| | | (get_boolean($attrib['buttons']) ? html::div('buttons', |
| | | $button->show(rcube_label('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' . |
| | | $button->show(rcube_label('upload'), array('class' => 'button mainaction', 'onclick' => JS_OBJECT_NAME . ".command('send-attachment', this.form)")) |
| | | html::div('hint', $RCMAIL->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) . |
| | | (rcube_utils::get_boolean($attrib['buttons']) ? html::div('buttons', |
| | | $button->show($RCMAIL->gettext('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' . |
| | | $button->show($RCMAIL->gettext('upload'), array('class' => 'button mainaction', 'onclick' => rcmail_output::JS_OBJECT_NAME . ".command('send-attachment', this.form)")) |
| | | ) : '') |
| | | ) |
| | | ); |
| | |
| | | |
| | | function rcmail_priority_selector($attrib) |
| | | { |
| | | global $MESSAGE; |
| | | global $RCMAIL, $MESSAGE; |
| | | |
| | | list($form_start, $form_end) = get_form_tags($attrib); |
| | | unset($attrib['form']); |
| | |
| | | $attrib['name'] = '_priority'; |
| | | $selector = new html_select($attrib); |
| | | |
| | | $selector->add(array(rcube_label('lowest'), |
| | | rcube_label('low'), |
| | | rcube_label('normal'), |
| | | rcube_label('high'), |
| | | rcube_label('highest')), |
| | | $selector->add(array($RCMAIL->gettext('lowest'), |
| | | $RCMAIL->gettext('low'), |
| | | $RCMAIL->gettext('normal'), |
| | | $RCMAIL->gettext('high'), |
| | | $RCMAIL->gettext('highest')), |
| | | array('5', '4', '0', '2', '1')); |
| | | |
| | | if (isset($_POST['_priority'])) |
| | |
| | | |
| | | function rcmail_editor_selector($attrib) |
| | | { |
| | | global $RCMAIL; |
| | | |
| | | // determine whether HTML or plain text should be checked |
| | | $useHtml = rcmail_compose_editor_mode(); |
| | | |
| | |
| | | |
| | | $select = new html_select($attrib); |
| | | |
| | | $select->add(Q(rcube_label('htmltoggle')), 'html'); |
| | | $select->add(Q(rcube_label('plaintoggle')), 'plain'); |
| | | $select->add(rcube::Q($RCMAIL->gettext('htmltoggle')), 'html'); |
| | | $select->add(rcube::Q($RCMAIL->gettext('plaintoggle')), 'plain'); |
| | | |
| | | return $select->show($useHtml ? 'html' : 'plain'); |
| | | /* |
| | | foreach ($choices as $value => $text) { |
| | | $attrib['id'] = '_' . $value; |
| | | $attrib['value'] = $value; |
| | | $selector .= $radio->show($chosenvalue, $attrib) . html::label($attrib['id'], Q(rcube_label($text))); |
| | | $selector .= $radio->show($chosenvalue, $attrib) . html::label($attrib['id'], rcube::Q($RCMAIL->gettext($text))); |
| | | } |
| | | |
| | | return $selector; |
| | |
| | | |
| | | function rcmail_store_target_selection($attrib) |
| | | { |
| | | global $COMPOSE; |
| | | global $COMPOSE, $RCMAIL; |
| | | |
| | | $attrib['name'] = '_store_target'; |
| | | $select = rcmail_mailbox_select(array_merge($attrib, array( |
| | | 'noselection' => '- '.rcube_label('dontsave').' -', |
| | | $select = $RCMAIL->folder_selector(array_merge($attrib, array( |
| | | 'noselection' => '- ' . $RCMAIL->gettext('dontsave') . ' -', |
| | | 'folder_filter' => 'mail', |
| | | 'folder_rights' => 'w', |
| | | ))); |
| | |
| | | 'id' => 'rcmli%s', 'class' => '%s'), |
| | | html::a(array('href' => '#list', |
| | | 'rel' => '%s', |
| | | 'onclick' => "return ".JS_OBJECT_NAME.".command('list-adresses','%s',this)"), '%s')); |
| | | 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('list-adresses','%s',this)"), '%s')); |
| | | |
| | | foreach ($RCMAIL->get_address_sources(false, true) as $j => $source) { |
| | | $id = strval(strlen($source['id']) ? $source['id'] : $j); |
| | | $js_id = JQ($id); |
| | | $js_id = rcube::JQ($id); |
| | | |
| | | // set class name(s) |
| | | $class_name = 'addressbook'; |
| | |
| | | $class_name .= ' ' . $source['class_name']; |
| | | |
| | | $out .= sprintf($line_templ, |
| | | html_identifier($id,true), |
| | | rcube_utils::html_identifier($id,true), |
| | | $class_name, |
| | | $source['id'], |
| | | $js_id, (!empty($source['name']) ? $source['name'] : $id)); |
| | |
| | | // return the contacts list as HTML table |
| | | function rcmail_contacts_list($attrib = array()) |
| | | { |
| | | global $OUTPUT; |
| | | global $RCMAIL, $OUTPUT; |
| | | |
| | | $attrib += array('id' => 'rcmAddressList'); |
| | | |
| | |
| | | $OUTPUT->set_env('current_page', 0); |
| | | $OUTPUT->include_script('list.js'); |
| | | |
| | | return rcube_table_output($attrib, array(), array('name'), 'ID'); |
| | | return $RCMAIL->table_output($attrib, array(), array('name'), 'ID'); |
| | | } |
| | | |
| | | |
| | |
| | | 'class' => rtrim('insertresponse ' . $attrib['itemclass']), |
| | | 'unselectable' => 'on', |
| | | 'rel' => $key, |
| | | ), Q($response['name'])); |
| | | ), rcube::Q($response['name'])); |
| | | |
| | | $jsenv[$key] = $response; |
| | | $list->add(array(), $item); |
| | |
| | | |
| | | // move messages |
| | | if (!empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) { |
| | | $uids = get_input_value('_uid', RCUBE_INPUT_POST); |
| | | $target = get_input_value('_target_mbox', RCUBE_INPUT_POST, true); |
| | | $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true); |
| | | $uids = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST); |
| | | $target = rcube_utils::get_input_value('_target_mbox', rcube_utils::INPUT_POST, true); |
| | | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true); |
| | | |
| | | $copied = $RCMAIL->storage->copy_message($uids, $target, $mbox); |
| | | |
| | | if (!$copied) { |
| | | // send error message |
| | | rcmail_display_server_error('errorcopying'); |
| | | $RCMAIL->display_server_error('errorcopying'); |
| | | $OUTPUT->send(); |
| | | exit; |
| | | } |
| | |
| | | |
| | | rcmail_send_unread_count($target, true); |
| | | |
| | | $OUTPUT->command('set_quota', rcmail_quota_content()); |
| | | $OUTPUT->command('set_quota', $RCMAIL->quota_content()); |
| | | } |
| | | // unknown action or missing query param |
| | | else { |
| | |
| | | if (!$OUTPUT->ajax_call) |
| | | return; |
| | | |
| | | $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true); |
| | | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true); |
| | | |
| | | // send EXPUNGE command |
| | | if ($RCMAIL->action == 'expunge') { |
| | |
| | | $OUTPUT->show_message('folderexpunged', 'confirmation'); |
| | | |
| | | if (!empty($_REQUEST['_reload'])) { |
| | | $OUTPUT->command('set_quota', rcmail_quota_content()); |
| | | $OUTPUT->command('set_quota', $RCMAIL->quota_content()); |
| | | $OUTPUT->command('message_list.clear'); |
| | | $RCMAIL->action = 'list'; |
| | | return; |
| | | } |
| | | } |
| | | else { |
| | | rcmail_display_server_error(); |
| | | $RCMAIL->display_server_error(); |
| | | } |
| | | } |
| | | |
| | |
| | | $OUTPUT->command('message_list.clear'); |
| | | $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text(), $mbox); |
| | | $OUTPUT->command('set_unread_count', $mbox, 0); |
| | | $OUTPUT->command('set_quota', rcmail_quota_content()); |
| | | $OUTPUT->command('set_quota', $RCMAIL->quota_content()); |
| | | rcmail_set_unseen_count($mbox, 0); |
| | | } |
| | | } |
| | | else { |
| | | rcmail_display_server_error(); |
| | | $RCMAIL->display_server_error(); |
| | | } |
| | | } |
| | | } |
| | |
| | | $RCMAIL->storage_init(); |
| | | |
| | | // set imap properties and session vars |
| | | if (strlen(trim($mbox = get_input_value('_mbox', RCUBE_INPUT_GPC, true)))) |
| | | if (strlen(trim($mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true)))) |
| | | $RCMAIL->storage->set_folder(($_SESSION['mbox'] = $mbox)); |
| | | else if ($RCMAIL->storage) |
| | | $_SESSION['mbox'] = $RCMAIL->storage->get_folder(); |
| | |
| | | if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') { |
| | | $search_request = md5($mbox_name.$_SESSION['search_filter']); |
| | | |
| | | $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, rcmail_sort_column()); |
| | | $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCUBE_CHARSET, rcmail_sort_column()); |
| | | $_SESSION['search'] = $RCMAIL->storage->get_search_set(); |
| | | $_SESSION['search_request'] = $search_request; |
| | | $OUTPUT->set_env('search_request', $search_request); |
| | |
| | | |
| | | // register UI objects |
| | | $OUTPUT->add_handlers(array( |
| | | 'mailboxlist' => 'rcmail_mailbox_list', |
| | | 'mailboxlist' => array($RCMAIL, 'folder_list'), |
| | | 'messages' => 'rcmail_message_list', |
| | | 'messagecountdisplay' => 'rcmail_messagecount_display', |
| | | 'quotadisplay' => 'rcmail_quota_display', |
| | | 'quotadisplay' => array($RCMAIL, 'quota_display'), |
| | | 'mailboxname' => 'rcmail_mailbox_name_display', |
| | | 'messageheaders' => 'rcmail_message_headers', |
| | | 'messagefullheaders' => 'rcmail_message_full_headers', |
| | |
| | | $OUTPUT->set_env('col_movable', !in_array('list_cols', (array)$CONFIG['dont_override'])); |
| | | } |
| | | else { |
| | | $a_show_cols = preg_split('/[\s,;]+/', strip_quotes($attrib['columns'])); |
| | | $a_show_cols = preg_split('/[\s,;]+/', str_replace(array("'", '"'), '', $attrib['columns'])); |
| | | $attrib['columns'] = $a_show_cols; |
| | | } |
| | | |
| | |
| | | } |
| | | else { |
| | | if (!is_array($a_show_cols)) |
| | | $a_show_cols = preg_split('/[\s,;]+/', strip_quotes($a_show_cols)); |
| | | $a_show_cols = preg_split('/[\s,;]+/', str_replace(array("'", '"'), '', $a_show_cols)); |
| | | $head_replace = true; |
| | | } |
| | | |
| | |
| | | $cont = rcmail_address_string($header->$col_name, 3, false, null, $header->charset); |
| | | else if ($col == 'subject') { |
| | | $cont = trim(rcube_mime::decode_header($header->$col, $header->charset)); |
| | | if (!$cont) $cont = rcube_label('nosubject'); |
| | | $cont = Q($cont); |
| | | if (!$cont) $cont = $RCMAIL->gettext('nosubject'); |
| | | $cont = rcube::Q($cont); |
| | | } |
| | | else if ($col == 'size') |
| | | $cont = show_bytes($header->$col); |
| | | else if ($col == 'date') |
| | | $cont = format_date($header->date); |
| | | $cont = $RCMAIL->format_date($header->date); |
| | | else |
| | | $cont = Q($header->$col); |
| | | $cont = rcube::Q($header->$col); |
| | | |
| | | $a_msg_cols[$col] = $cont; |
| | | } |
| | |
| | | if ($header->priority) |
| | | $a_msg_flags['prio'] = (int) $header->priority; |
| | | |
| | | $a_msg_flags['ctype'] = Q($header->ctype); |
| | | $a_msg_flags['ctype'] = rcube::Q($header->ctype); |
| | | $a_msg_flags['mbox'] = $mbox; |
| | | |
| | | // merge with plugin result (Deprecated, use $header->flags) |
| | |
| | | $a_sort_cols = array('subject', 'date', 'from', 'to', 'fromto', 'size', 'cc'); |
| | | |
| | | if (!empty($attrib['optionsmenuicon'])) { |
| | | $onclick = 'return ' . JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu')"; |
| | | $onclick = 'return ' . rcmail_output::JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu')"; |
| | | if ($attrib['optionsmenuicon'] === true || $attrib['optionsmenuicon'] == 'true') |
| | | $list_menu = html::div(array('onclick' => $onclick, 'class' => 'listmenu', |
| | | 'id' => 'listmenulink', 'title' => rcube_label('listoptions'))); |
| | | 'id' => 'listmenulink', 'title' => $RCMAIL->gettext('listoptions'))); |
| | | else |
| | | $list_menu = html::a(array('href' => '#', 'onclick' => $onclick), |
| | | html::img(array('src' => $skin_path . $attrib['optionsmenuicon'], |
| | | 'id' => 'listmenulink', 'title' => rcube_label('listoptions'))) |
| | | 'id' => 'listmenulink', 'title' => $RCMAIL->gettext('listoptions'))) |
| | | ); |
| | | } |
| | | else |
| | |
| | | $col_name = $list_menu; |
| | | break; |
| | | case 'fromto': |
| | | $col_name = Q(rcube_label($smart_col)); |
| | | $col_name = rcube::Q($RCMAIL->gettext($smart_col)); |
| | | break; |
| | | default: |
| | | $col_name = Q(rcube_label($col)); |
| | | $col_name = rcube::Q($RCMAIL->gettext($col)); |
| | | } |
| | | |
| | | // make sort links |
| | | if (in_array($col, $a_sort_cols)) |
| | | $col_name = html::a(array('href'=>"./#sort", 'onclick' => 'return '.JS_OBJECT_NAME.".command('sort','".$col."',this)", 'title' => rcube_label('sortby')), $col_name); |
| | | $col_name = html::a(array('href'=>"./#sort", 'onclick' => 'return '.rcmail_output::JS_OBJECT_NAME.".command('sort','".$col."',this)", 'title' => $RCMAIL->gettext('sortby')), $col_name); |
| | | else if ($col_name[0] != '<') |
| | | $col_name = '<span class="' . $col .'">' . $col_name . '</span>'; |
| | | |
| | |
| | | |
| | | $RCMAIL->output->add_gui_object('countdisplay', $attrib['id']); |
| | | |
| | | $content = $RCMAIL->action != 'show' ? rcmail_get_messagecount_text() : rcube_label('loading'); |
| | | $content = $RCMAIL->action != 'show' ? rcmail_get_messagecount_text() : $RCMAIL->gettext('loading'); |
| | | |
| | | return html::span($attrib, $content); |
| | | } |
| | |
| | | $max = $RCMAIL->storage->count(NULL, $RCMAIL->storage->get_threading() ? 'THREADS' : 'ALL'); |
| | | |
| | | if ($max==0) |
| | | $out = rcube_label('mailboxempty'); |
| | | $out = $RCMAIL->gettext('mailboxempty'); |
| | | else |
| | | $out = rcube_label(array('name' => $RCMAIL->storage->get_threading() ? 'threadsfromto' : 'messagesfromto', |
| | | $out = $RCMAIL->gettext(array('name' => $RCMAIL->storage->get_threading() ? 'threadsfromto' : 'messagesfromto', |
| | | 'vars' => array('from' => $start_msg, |
| | | 'to' => min($max, $start_msg + $page_size - 1), |
| | | 'count' => $max))); |
| | | |
| | | return Q($out); |
| | | return rcube::Q($out); |
| | | } |
| | | |
| | | |
| | |
| | | function rcmail_get_mailbox_name_text() |
| | | { |
| | | global $RCMAIL; |
| | | return rcmail_localize_foldername($RCMAIL->storage->get_folder()); |
| | | return $RCMAIL->localize_foldername($RCMAIL->storage->get_folder()); |
| | | } |
| | | |
| | | |
| | |
| | | // charset was converted to UTF-8 in rcube_storage::get_message_part(), |
| | | // change/add charset specification in HTML accordingly, |
| | | // washtml cannot work without that |
| | | $meta = '<meta http-equiv="Content-Type" content="text/html; charset='.RCMAIL_CHARSET.'" />'; |
| | | $meta = '<meta http-equiv="Content-Type" content="text/html; charset='.RCUBE_CHARSET.'" />'; |
| | | |
| | | // remove old meta tag and add the new one, making sure |
| | | // that it is placed in the head (#1488093) |
| | |
| | | 'show_washed' => false, |
| | | 'allow_remote' => $p['safe'], |
| | | 'blocked_src' => "./program/resources/blocked.gif", |
| | | 'charset' => RCMAIL_CHARSET, |
| | | 'charset' => RCUBE_CHARSET, |
| | | 'cid_map' => $cid_replaces, |
| | | 'html_elements' => array('body'), |
| | | ); |
| | |
| | | $washer->add_callback('style', 'rcmail_washtml_callback'); |
| | | |
| | | // Remove non-UTF8 characters (#1487813) |
| | | $html = rc_utf8_clean($html); |
| | | $html = rcube_charset::clean($html); |
| | | |
| | | $html = $washer->wash($html); |
| | | $REMOTE_OBJECTS = $washer->extlinks; |
| | |
| | | |
| | | $body = join("\n", $body); |
| | | |
| | | // quote plain text (don't use Q() here, to display entities "as is") |
| | | // quote plain text (don't use rcube::Q() here, to display entities "as is") |
| | | $table = get_html_translation_table(HTML_SPECIALCHARS); |
| | | unset($table['?']); |
| | | $body = strtr($body, $table); |
| | |
| | | |
| | | case 'style': |
| | | // decode all escaped entities and reduce to ascii strings |
| | | $stripped = preg_replace('/[^a-zA-Z\(:;]/', '', rcmail_xss_entity_decode($content)); |
| | | $stripped = preg_replace('/[^a-zA-Z\(:;]/', '', rcube_utils::xss_entity_decode($content)); |
| | | |
| | | // now check for evil strings like expression, behavior or url() |
| | | if (!preg_match('/expression|behavior|javascript:|import[^a]/i', $stripped)) { |
| | |
| | | if (in_array($hkey, $exclude_headers)) |
| | | continue; |
| | | |
| | | $header_title = rcube_label(preg_replace('/(^mail-|-)/', '', $hkey)); |
| | | $header_title = $RCMAIL->gettext(preg_replace('/(^mail-|-)/', '', $hkey)); |
| | | |
| | | if ($hkey == 'date') { |
| | | if ($PRINT_MODE) |
| | | $header_value = format_date($value, $RCMAIL->config->get('date_long', 'x')); |
| | | $header_value = $RCMAIL->format_date($value, $RCMAIL->config->get('date_long', 'x')); |
| | | else |
| | | $header_value = format_date($value); |
| | | $header_value = $RCMAIL->format_date($value); |
| | | } |
| | | else if ($hkey == 'priority') { |
| | | if ($value) { |
| | |
| | | $ishtml = true; |
| | | } |
| | | else if ($hkey == 'subject' && empty($value)) |
| | | $header_value = rcube_label('nosubject'); |
| | | $header_value = $RCMAIL->gettext('nosubject'); |
| | | else |
| | | $header_value = trim(rcube_mime::decode_header($value, $headers['charset'])); |
| | | |
| | |
| | | |
| | | // single header value is requested |
| | | if (!empty($attrib['valueof'])) |
| | | return Q($plugin['output'][$attrib['valueof']]['value'], ($attrib['valueof'] == 'subject' ? 'strict' : 'show')); |
| | | return rcube::Q($plugin['output'][$attrib['valueof']]['value'], ($attrib['valueof'] == 'subject' ? 'strict' : 'show')); |
| | | |
| | | // compose html table |
| | | $table = new html_table(array('cols' => 2)); |
| | | |
| | | foreach ($plugin['output'] as $hkey => $row) { |
| | | $table->add(array('class' => 'header-title'), Q($row['title'])); |
| | | $table->add(array('class' => 'header '.$hkey), $row['html'] ? $row['value'] : Q($row['value'], ($hkey == 'subject' ? 'strict' : 'show'))); |
| | | $table->add(array('class' => 'header-title'), rcube::Q($row['title'])); |
| | | $table->add(array('class' => 'header '.$hkey), $row['html'] ? $row['value'] : rcube::Q($row['value'], ($hkey == 'subject' ? 'strict' : 'show'))); |
| | | } |
| | | |
| | | return $table->show($attrib); |
| | |
| | | */ |
| | | function rcmail_localized_priority($value) |
| | | { |
| | | global $RCMAIL; |
| | | |
| | | $labels_map = array( |
| | | '1' => 'highest', |
| | | '2' => 'high', |
| | |
| | | ); |
| | | |
| | | if ($value && $labels_map[$value]) |
| | | return rcube_label($labels_map[$value]); |
| | | return $RCMAIL->gettext($labels_map[$value]); |
| | | |
| | | return ''; |
| | | } |
| | |
| | | */ |
| | | function rcmail_message_full_headers($attrib, $headers=NULL) |
| | | { |
| | | global $OUTPUT; |
| | | global $OUTPUT, $RCMAIL; |
| | | |
| | | $html = html::div(array('id' => "all-headers", 'class' => "all", 'style' => 'display:none'), html::div(array('id' => 'headers-source'), '')); |
| | | $html .= html::div(array('class' => "more-headers show-headers", 'onclick' => "return ".JS_OBJECT_NAME.".command('show-headers','',this)", 'title' => rcube_label('togglefullheaders')), ''); |
| | | $html .= html::div(array('class' => "more-headers show-headers", 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('show-headers','',this)", 'title' => $RCMAIL->gettext('togglefullheaders')), ''); |
| | | |
| | | $OUTPUT->add_gui_object('all_headers_row', 'all-headers'); |
| | | $OUTPUT->add_gui_object('all_headers_box', 'headers-source'); |
| | |
| | | // unsupported (e.g. encrypted) |
| | | if ($part->realtype) { |
| | | if ($part->realtype == 'multipart/encrypted' || $part->realtype == 'application/pkcs7-mime') { |
| | | $out .= html::span('part-notice', rcube_label('encryptedmessage')); |
| | | $out .= html::span('part-notice', $RCMAIL->gettext('encryptedmessage')); |
| | | } |
| | | continue; |
| | | } |
| | |
| | | } |
| | | // Check if we have enough memory to handle the message in it |
| | | // #1487424: we need up to 10x more memory than the body |
| | | else if (!rcmail_mem_check($part->size * 10)) { |
| | | $out .= html::span('part-notice', rcube_label('messagetoobig'). ' ' |
| | | else if (!rcube_utils::mem_check($part->size * 10)) { |
| | | $out .= html::span('part-notice', $RCMAIL->gettext('messagetoobig'). ' ' |
| | | . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part='.$part->mime_id |
| | | .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), rcube_label('download'))); |
| | | .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), $RCMAIL->gettext('download'))); |
| | | continue; |
| | | } |
| | | |
| | |
| | | else { |
| | | // Check if we have enough memory to handle the message in it |
| | | // #1487424: we need up to 10x more memory than the body |
| | | if (!rcmail_mem_check(strlen($MESSAGE->body) * 10)) { |
| | | $out .= html::span('part-notice', rcube_label('messagetoobig'). ' ' |
| | | if (!rcube_utils::mem_check(strlen($MESSAGE->body) * 10)) { |
| | | $out .= html::span('part-notice', $RCMAIL->gettext('messagetoobig'). ' ' |
| | | . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part=0' |
| | | .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), rcube_label('download'))); |
| | | .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), $RCMAIL->gettext('download'))); |
| | | } |
| | | else { |
| | | $plugin = $RCMAIL->plugins->exec_hook('message_body_prefix', array( |
| | | 'part' => $MESSAGE, 'prefix' => '')); |
| | | |
| | | $out .= html::div('message-part', $plugin['prefix'] . html::tag('pre', array(), |
| | | rcmail_plain_body(Q($MESSAGE->body, 'strict', false)))); |
| | | rcmail_plain_body(rcube::Q($MESSAGE->body, 'strict', false)))); |
| | | } |
| | | } |
| | | |
| | |
| | | 'href' => $MESSAGE->get_part_url($attach_prop->mime_id, false), |
| | | 'onclick' => sprintf( |
| | | 'return %s.command(\'load-attachment\',\'%s\',this)', |
| | | JS_OBJECT_NAME, |
| | | rcmail_output::JS_OBJECT_NAME, |
| | | $attach_prop->mime_id) |
| | | ); |
| | | $out .= html::p('image-attachment', |
| | |
| | | 'style' => sprintf('max-width:%dpx; max-height:%dpx', $thumbnail_size, $thumbnail_size), |
| | | )) |
| | | ) . |
| | | html::span('image-filename', Q($attach_prop->filename)) . |
| | | html::span('image-filesize', Q($RCMAIL->message_part_size($attach_prop))) . |
| | | html::span('image-filename', rcube::Q($attach_prop->filename)) . |
| | | html::span('image-filesize', rcube::Q($RCMAIL->message_part_size($attach_prop))) . |
| | | html::span('attachment-links', |
| | | (in_array($mimetype, $client_mimetypes) ? html::a($show_link, rcube_label('showattachment')) . ' ' : '') . |
| | | html::a($show_link['href'] . '&_download=1', rcube_label('download')) |
| | | (in_array($mimetype, $client_mimetypes) ? html::a($show_link, $RCMAIL->gettext('showattachment')) . ' ' : '') . |
| | | html::a($show_link['href'] . '&_download=1', $RCMAIL->gettext('download')) |
| | | ) . |
| | | html::br(array('style' => 'clear:both')) |
| | | ); |
| | | } |
| | | else { |
| | | $out .= html::tag('fieldset', 'image-attachment', |
| | | html::tag('legend', 'image-filename', Q($attach_prop->filename)) . |
| | | html::tag('legend', 'image-filename', rcube::Q($attach_prop->filename)) . |
| | | html::p(array('align' => "center"), |
| | | html::img(array( |
| | | 'src' => $MESSAGE->get_part_url($attach_prop->mime_id, 'image'), |
| | |
| | | |
| | | // replace all css definitions with #container [def] |
| | | $styles = substr($body, $pos, $len); |
| | | $styles = rcmail_mod_css_styles($styles, $cont_id, $allow_remote); |
| | | $styles = rcube_utils::mod_css_styles($styles, $cont_id, $allow_remote); |
| | | |
| | | $body = substr_replace($body, $styles, $pos, $len); |
| | | $last_style_pos = $pos2 + strlen($styles) - $len; |
| | |
| | | global $RCMAIL; |
| | | |
| | | $tag = strtolower($matches[1]); |
| | | $attrib = parse_attrib_string($matches[2]); |
| | | $attrib = html::parse_attrib_string($matches[2]); |
| | | $end = '>'; |
| | | |
| | | // Remove non-printable characters in URL (#1487805) |
| | |
| | | $attrib['href'] = 'mailto:' . implode(',', $addresses); |
| | | $attrib['onclick'] = sprintf( |
| | | "return %s.command('compose','%s',this)", |
| | | JS_OBJECT_NAME, |
| | | JQ(implode(',', $mailto) . ($url ? "?$url" : ''))); |
| | | rcmail_output::JS_OBJECT_NAME, |
| | | rcube::JQ(implode(',', $mailto) . ($url ? "?$url" : ''))); |
| | | } |
| | | else { |
| | | $attrib['href'] = '#NOP'; |
| | |
| | | $name = $part['name']; |
| | | $mailto = $part['mailto']; |
| | | $string = $part['string']; |
| | | $valid = check_email($mailto, false); |
| | | $valid = rcube_utils::check_email($mailto, false); |
| | | |
| | | // phishing email prevention (#1488981), e.g. "valid@email.addr <phishing@email.addr>" |
| | | if (!$show_email && $valid && $name && $name != $mailto && strpos($name, '@')) { |
| | |
| | | |
| | | // IDNA ASCII to Unicode |
| | | if ($name == $mailto) |
| | | $name = rcube_idn_to_utf8($name); |
| | | $name = rcube_utils::idn_to_utf8($name); |
| | | if ($string == $mailto) |
| | | $string = rcube_idn_to_utf8($string); |
| | | $mailto = rcube_idn_to_utf8($mailto); |
| | | $string = rcube_utils::idn_to_utf8($string); |
| | | $mailto = rcube_utils::idn_to_utf8($mailto); |
| | | |
| | | if ($PRINT_MODE) { |
| | | $address = sprintf('%s <%s>', Q($name), Q($mailto)); |
| | | $address = sprintf('%s <%s>', rcube::Q($name), rcube::Q($mailto)); |
| | | } |
| | | else if ($valid) { |
| | | if ($linked) { |
| | | $attrs = array( |
| | | 'href' => 'mailto:' . $mailto, |
| | | 'onclick' => sprintf("return %s.command('compose','%s',this)", JS_OBJECT_NAME, JQ(format_email_recipient($mailto, $name))), |
| | | 'onclick' => sprintf("return %s.command('compose','%s',this)", rcmail_output::JS_OBJECT_NAME, rcube::JQ(format_email_recipient($mailto, $name))), |
| | | 'class' => "rcmContactAddress", |
| | | ); |
| | | |
| | | if ($show_email && $name && $mailto) { |
| | | $content = Q($name ? sprintf('%s <%s>', $name, $mailto) : $mailto); |
| | | $content = rcube::Q($name ? sprintf('%s <%s>', $name, $mailto) : $mailto); |
| | | } |
| | | else { |
| | | $content = Q($name ? $name : $mailto); |
| | | $content = rcube::Q($name ? $name : $mailto); |
| | | $attrs['title'] = $mailto; |
| | | } |
| | | |
| | |
| | | } |
| | | else { |
| | | $address = html::span(array('title' => $mailto, 'class' => "rcmContactAddress"), |
| | | Q($name ? $name : $mailto)); |
| | | rcube::Q($name ? $name : $mailto)); |
| | | } |
| | | |
| | | if ($addicon && $_SESSION['writeable_abook']) { |
| | | $address .= html::a(array( |
| | | 'href' => "#add", |
| | | 'onclick' => sprintf("return %s.command('add-contact','%s',this)", JS_OBJECT_NAME, JQ($string)), |
| | | 'title' => rcube_label('addtoaddressbook'), |
| | | 'onclick' => sprintf("return %s.command('add-contact','%s',this)", rcmail_output::JS_OBJECT_NAME, rcube::JQ($string)), |
| | | 'title' => $RCMAIL->gettext('addtoaddressbook'), |
| | | 'class' => 'rcmaddcontact', |
| | | ), |
| | | html::img(array( |
| | |
| | | else { |
| | | $address = ''; |
| | | if ($name) |
| | | $address .= Q($name); |
| | | $address .= rcube::Q($name); |
| | | if ($mailto) |
| | | $address = trim($address . ' ' . Q($name ? sprintf('<%s>', $mailto) : $mailto)); |
| | | $address = trim($address . ' ' . rcube::Q($name ? sprintf('<%s>', $mailto) : $mailto)); |
| | | } |
| | | |
| | | $address = html::span('adr', $address); |
| | |
| | | 'href' => '#more', |
| | | 'class' => 'morelink', |
| | | 'onclick' => '$(this).hide().next().show()', |
| | | ), Q(rcube_label(array('name' => 'andnmore', 'vars' => array('nr' => $moreadrs))))) . |
| | | ), rcube::Q($RCMAIL->gettext(array('name' => 'andnmore', 'vars' => array('nr' => $moreadrs))))) . |
| | | html::span(array('style' => 'display:none'), join(', ', $allvalues)); |
| | | } |
| | | else { |
| | |
| | | 'href' => '#more', |
| | | 'class' => 'morelink', |
| | | 'onclick' => sprintf("return %s.show_popup_dialog('%s','%s')", |
| | | JS_OBJECT_NAME, |
| | | JQ(join(', ', $allvalues)), |
| | | JQ($title)) |
| | | rcmail_output::JS_OBJECT_NAME, |
| | | rcube::JQ(join(', ', $allvalues)), |
| | | rcube::JQ($title)) |
| | | ), |
| | | Q(rcube_label(array('name' => 'andnmore', 'vars' => array('nr' => $moreadrs))))); |
| | | rcube::Q($RCMAIL->gettext(array('name' => 'andnmore', 'vars' => array('nr' => $moreadrs))))); |
| | | } |
| | | } |
| | | |
| | |
| | | $line = '>' . rtrim($line); |
| | | else if (mb_strlen($line) > $max) { |
| | | $newline = ''; |
| | | foreach (explode("\n", rc_wordwrap($line, $length - 2)) as $l) { |
| | | foreach (explode("\n", rcube_mime::wordwrap($line, $length - 2)) as $l) { |
| | | if (strlen($l)) |
| | | $newline .= '> ' . $l . "\n"; |
| | | else |
| | |
| | | $compose->setParam('text_encoding', 'quoted-printable'); |
| | | $compose->setParam('html_encoding', 'quoted-printable'); |
| | | $compose->setParam('head_encoding', 'quoted-printable'); |
| | | $compose->setParam('head_charset', RCMAIL_CHARSET); |
| | | $compose->setParam('html_charset', RCMAIL_CHARSET); |
| | | $compose->setParam('text_charset', RCMAIL_CHARSET); |
| | | $compose->setParam('head_charset', RCUBE_CHARSET); |
| | | $compose->setParam('html_charset', RCUBE_CHARSET); |
| | | $compose->setParam('text_charset', RCUBE_CHARSET); |
| | | |
| | | // compose headers array |
| | | $headers = array( |
| | | 'Date' => rcmail_user_date(), |
| | | 'Date' => $RCMAIL->user_date(), |
| | | 'From' => $sender, |
| | | 'To' => $message->headers->mdn_to, |
| | | 'Subject' => rcube_label('receiptread') . ': ' . $message->subject, |
| | | 'Message-ID' => rcmail_gen_message_id(), |
| | | 'Subject' => $RCMAIL->gettext('receiptread') . ': ' . $message->subject, |
| | | 'Message-ID' => $RCMAIL->gen_message_id(), |
| | | 'X-Sender' => $identity['email'], |
| | | 'References' => trim($message->headers->references . ' ' . $message->headers->messageID), |
| | | ); |
| | |
| | | $report .= "Reporting-UA: $agent\r\n"; |
| | | } |
| | | |
| | | $body = rcube_label("yourmessage") . "\r\n\r\n" . |
| | | "\t" . rcube_label("to") . ': ' . rcube_mime::decode_mime_string($message->headers->to, $message->headers->charset) . "\r\n" . |
| | | "\t" . rcube_label("subject") . ': ' . $message->subject . "\r\n" . |
| | | "\t" . rcube_label("sent") . ': ' . format_date($message->headers->date, $RCMAIL->config->get('date_long')) . "\r\n" . |
| | | "\r\n" . rcube_label("receiptnote"); |
| | | $body = $RCMAIL->gettext("yourmessage") . "\r\n\r\n" . |
| | | "\t" . $RCMAIL->gettext("to") . ': ' . rcube_mime::decode_mime_string($message->headers->to, $message->headers->charset) . "\r\n" . |
| | | "\t" . $RCMAIL->gettext("subject") . ': ' . $message->subject . "\r\n" . |
| | | "\t" . $RCMAIL->gettext("sent") . ': ' . $RCMAIL->format_date($message->headers->date, $RCMAIL->config->get('date_long')) . "\r\n" . |
| | | "\r\n" . $RCMAIL->gettext("receiptnote"); |
| | | |
| | | $compose->headers($headers); |
| | | $compose->setContentType('multipart/report', array('report-type'=> 'disposition-notification')); |
| | | $compose->setTXTBody(rc_wordwrap($body, 75, "\r\n")); |
| | | $compose->setTXTBody(rcube_mime::wordwrap($body, 75, "\r\n")); |
| | | $compose->addAttachment($report, 'message/disposition-notification', 'MDNPart2.txt', false, '7bit', 'inline'); |
| | | |
| | | if ($RCMAIL->config->get('mdn_use_from')) |
| | | $options['mdn_use_from'] = true; |
| | | |
| | | $sent = rcmail_deliver_message($compose, $identity['email'], $mailto, $smtp_error, $body_file, $options); |
| | | $sent = $RCMAIL->deliver_message($compose, $identity['email'], $mailto, $smtp_error, $body_file, $options); |
| | | |
| | | if ($sent) { |
| | | $RCMAIL->storage->set_flag($message->uid, 'MDNSENT'); |
| | |
| | | // return attachment filename, handle empty filename case |
| | | function rcmail_attachment_name($attachment, $display = false) |
| | | { |
| | | global $RCMAIL; |
| | | |
| | | $filename = $attachment->filename; |
| | | |
| | | if ($filename === null || $filename === '') { |
| | | if ($attachment->mimetype == 'text/html') { |
| | | $filename = rcube_label('htmlmessage'); |
| | | $filename = $RCMAIL->gettext('htmlmessage'); |
| | | } |
| | | else { |
| | | $ext = (array) rcube_mime::get_mime_extensions($attachment->mimetype); |
| | | $ext = array_shift($ext); |
| | | $filename = rcube_label('messagepart') . ' ' . $attachment->mime_id; |
| | | $filename = $RCMAIL->gettext('messagepart') . ' ' . $attachment->mime_id; |
| | | if ($ext) { |
| | | $filename .= '.' . $ext; |
| | | } |
| | |
| | | // Display smart names for some known mimetypes |
| | | if ($display) { |
| | | if (preg_match('/application\/(pgp|pkcs7)-signature/i', $attachment->mimetype)) { |
| | | $filename = rcube_label('digitalsig'); |
| | | $filename = $RCMAIL->gettext('digitalsig'); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | function rcmail_search_filter($attrib) |
| | | { |
| | | global $OUTPUT, $CONFIG; |
| | | global $RCMAIL, $OUTPUT, $CONFIG; |
| | | |
| | | if (!strlen($attrib['id'])) |
| | | $attrib['id'] = 'rcmlistfilter'; |
| | | |
| | | $attrib['onchange'] = JS_OBJECT_NAME.'.filter_mailbox(this.value)'; |
| | | $attrib['onchange'] = rcmail_output::JS_OBJECT_NAME.'.filter_mailbox(this.value)'; |
| | | |
| | | // Content-Type values of messages with attachments |
| | | // the same as in app.js:add_message_row() |
| | |
| | | } |
| | | |
| | | $select_filter = new html_select($attrib); |
| | | $select_filter->add(rcube_label('all'), 'ALL'); |
| | | $select_filter->add(rcube_label('unread'), 'UNSEEN'); |
| | | $select_filter->add(rcube_label('flagged'), 'FLAGGED'); |
| | | $select_filter->add(rcube_label('unanswered'), 'UNANSWERED'); |
| | | $select_filter->add($RCMAIL->gettext('all'), 'ALL'); |
| | | $select_filter->add($RCMAIL->gettext('unread'), 'UNSEEN'); |
| | | $select_filter->add($RCMAIL->gettext('flagged'), 'FLAGGED'); |
| | | $select_filter->add($RCMAIL->gettext('unanswered'), 'UNANSWERED'); |
| | | if (!$CONFIG['skip_deleted']) { |
| | | $select_filter->add(rcube_label('deleted'), 'DELETED'); |
| | | $select_filter->add(rcube_label('undeleted'), 'UNDELETED'); |
| | | $select_filter->add($RCMAIL->gettext('deleted'), 'DELETED'); |
| | | $select_filter->add($RCMAIL->gettext('undeleted'), 'UNDELETED'); |
| | | } |
| | | $select_filter->add(rcube_label('withattachment'), $attachment); |
| | | $select_filter->add(rcube_label('priority').': '.rcube_label('highest'), 'HEADER X-PRIORITY 1'); |
| | | $select_filter->add(rcube_label('priority').': '.rcube_label('high'), 'HEADER X-PRIORITY 2'); |
| | | $select_filter->add(rcube_label('priority').': '.rcube_label('normal'), 'NOT HEADER X-PRIORITY 1 NOT HEADER X-PRIORITY 2 NOT HEADER X-PRIORITY 4 NOT HEADER X-PRIORITY 5'); |
| | | $select_filter->add(rcube_label('priority').': '.rcube_label('low'), 'HEADER X-PRIORITY 4'); |
| | | $select_filter->add(rcube_label('priority').': '.rcube_label('lowest'), 'HEADER X-PRIORITY 5'); |
| | | $select_filter->add($RCMAIL->gettext('withattachment'), $attachment); |
| | | $select_filter->add($RCMAIL->gettext('priority').': '.$RCMAIL->gettext('highest'), 'HEADER X-PRIORITY 1'); |
| | | $select_filter->add($RCMAIL->gettext('priority').': '.$RCMAIL->gettext('high'), 'HEADER X-PRIORITY 2'); |
| | | $select_filter->add($RCMAIL->gettext('priority').': '.$RCMAIL->gettext('normal'), 'NOT HEADER X-PRIORITY 1 NOT HEADER X-PRIORITY 2 NOT HEADER X-PRIORITY 4 NOT HEADER X-PRIORITY 5'); |
| | | $select_filter->add($RCMAIL->gettext('priority').': '.$RCMAIL->gettext('low'), 'HEADER X-PRIORITY 4'); |
| | | $select_filter->add($RCMAIL->gettext('priority').': '.$RCMAIL->gettext('lowest'), 'HEADER X-PRIORITY 5'); |
| | | |
| | | $out = $select_filter->show($_SESSION['search_filter']); |
| | | |
| | |
| | | |
| | | function rcmail_message_import_form($attrib = array()) |
| | | { |
| | | global $OUTPUT; |
| | | global $OUTPUT, $RCMAIL; |
| | | |
| | | // set defaults |
| | | $attrib += array('id' => 'rcmImportform', 'buttons' => 'yes'); |
| | | |
| | | // Get filesize, enable upload progress bar |
| | | $max_filesize = rcube_upload_init(); |
| | | $max_filesize = $RCMAIL->upload_init(); |
| | | |
| | | $button = new html_inputfield(array('type' => 'button')); |
| | | $fileinput = new html_inputfield(array( |
| | |
| | | $OUTPUT->form_tag(array('id' => $attrib['id'].'Frm', 'method' => 'post', 'enctype' => 'multipart/form-data'), |
| | | html::tag('input', array('type' => 'hidden', 'name' => '_unlock', 'value' => '')) . |
| | | html::div(null, $fileinput->show()) . |
| | | html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) . |
| | | (get_boolean($attrib['buttons']) ? html::div('buttons', |
| | | $button->show(rcube_label('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' . |
| | | $button->show(rcube_label('upload'), array('class' => 'button mainaction', 'onclick' => JS_OBJECT_NAME . ".command('import-messages', this.form)")) |
| | | html::div('hint', $RCMAIL->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) . |
| | | (rcube_utils::get_boolean($attrib['buttons']) ? html::div('buttons', |
| | | $button->show($RCMAIL->gettext('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' . |
| | | $button->show($RCMAIL->gettext('upload'), array('class' => 'button mainaction', 'onclick' => rcmail_output::JS_OBJECT_NAME . ".command('import-messages', this.form)")) |
| | | ) : '') |
| | | ) |
| | | ); |
| | |
| | | // show loading page |
| | | if (!empty($_GET['_preload'])) { |
| | | $url = preg_replace('/([&?]+)_preload=/', '\\1_mimewarning=1&_embed=', $_SERVER['REQUEST_URI']); |
| | | $message = rcube_label('loadingdata'); |
| | | $message = $RCMAIL->gettext('loadingdata'); |
| | | |
| | | header('Content-Type: text/html; charset=' . RCMAIL_CHARSET); |
| | | header('Content-Type: text/html; charset=' . RCUBE_CHARSET); |
| | | print "<html>\n<head>\n" |
| | | . '<meta http-equiv="refresh" content="0; url='.Q($url).'">' . "\n" |
| | | . '<meta http-equiv="content-type" content="text/html; charset='.RCMAIL_CHARSET.'">' . "\n" |
| | | . '<meta http-equiv="refresh" content="0; url='.rcube::Q($url).'">' . "\n" |
| | | . '<meta http-equiv="content-type" content="text/html; charset='.RCUBE_CHARSET.'">' . "\n" |
| | | . "</head>\n<body>\n$message\n</body>\n</html>"; |
| | | exit; |
| | | } |
| | |
| | | |
| | | // similar code as in program/steps/mail/show.inc |
| | | if (!empty($_GET['_uid'])) { |
| | | $uid = get_input_value('_uid', RCUBE_INPUT_GET); |
| | | $uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_GET); |
| | | $RCMAIL->config->set('prefer_html', true); |
| | | $MESSAGE = new rcube_message($uid); |
| | | } |
| | |
| | | // check connection status |
| | | check_storage_status(); |
| | | |
| | | $part_id = get_input_value('_part', RCUBE_INPUT_GPC); |
| | | $part_id = rcube_utils::get_input_value('_part', rcube_utils::INPUT_GPC); |
| | | |
| | | // show part page |
| | | if (!empty($_GET['_frame'])) { |
| | |
| | | |
| | | // render thumbnail of an image attachment |
| | | else if ($_GET['_thumb']) { |
| | | $pid = get_input_value('_part', RCUBE_INPUT_GET); |
| | | $pid = rcube_utils::get_input_value('_part', rcube_utils::INPUT_GET); |
| | | if ($part = $MESSAGE->mime_parts[$pid]) { |
| | | $thumbnail_size = $RCMAIL->config->get('image_thumbnail_size', 240); |
| | | $temp_dir = $RCMAIL->config->get('temp_dir'); |
| | |
| | | $OUTPUT = new rcmail_html_page(); |
| | | $OUTPUT->write(html::tag('html', null, html::tag('body', 'embed', |
| | | html::div(array('class' => 'rcmail-inline-message rcmail-inline-warning'), |
| | | rcube_label(array( |
| | | $RCMAIL->gettext(array( |
| | | 'name' => 'attachmentvalidationerror', |
| | | 'vars' => array( |
| | | 'expected' => $mimetype . ($file_extension ? " (.$file_extension)" : ''), |
| | |
| | | html::p(array('class' => 'rcmail-inline-buttons'), |
| | | html::tag('button', |
| | | array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_nocheck' => 1))) . "'"), |
| | | rcube_label('showanyway'))) |
| | | $RCMAIL->gettext('showanyway'))) |
| | | ) |
| | | ))); |
| | | } |
| | |
| | | list($ctype_primary, $ctype_secondary) = explode('/', $mimetype); |
| | | |
| | | if (!$plugin['download'] && $ctype_primary == 'text') { |
| | | header("Content-Type: text/$ctype_secondary; charset=" . ($part->charset ? $part->charset : RCMAIL_CHARSET)); |
| | | header("Content-Type: text/$ctype_secondary; charset=" . ($part->charset ? $part->charset : RCUBE_CHARSET)); |
| | | } |
| | | else { |
| | | header("Content-Type: $mimetype"); |
| | |
| | | if ($ctype_primary == 'text' && $ctype_secondary == 'html' && empty($plugin['download'])) { |
| | | // Check if we have enough memory to handle the message in it |
| | | // #1487424: we need up to 10x more memory than the body |
| | | if (!rcmail_mem_check($part->size * 10)) { |
| | | $out = '<body>' . rcube_label('messagetoobig'). ' ' |
| | | if (!rcube_utils::mem_check($part->size * 10)) { |
| | | $out = '<body>' . $RCMAIL->gettext('messagetoobig'). ' ' |
| | | . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part='.$part->mime_id |
| | | .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), rcube_label('download')) . '</body></html>'; |
| | | .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), $RCMAIL->gettext('download')) . '</body></html>'; |
| | | } |
| | | else { |
| | | // get part body if not available |
| | |
| | | } |
| | | $out = substr($out, 0, $body_start) . |
| | | html::div(array('class' => 'rcmail-inline-message rcmail-inline-warning'), |
| | | Q(rcube_label('blockedimages')) . ' ' . |
| | | rcube::Q($RCMAIL->gettext('blockedimages')) . ' ' . |
| | | html::tag('button', |
| | | array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_safe' => 1))) . "'"), |
| | | Q(rcube_label('showimages'))) |
| | | rcube::Q($RCMAIL->gettext('showimages'))) |
| | | ) . |
| | | substr($out, $body_start); |
| | | } |
| | |
| | | check_storage_status(); |
| | | } |
| | | |
| | | $OUTPUT = new rcube_html_page(); |
| | | $OUTPUT = new rcmail_html_page(); |
| | | $OUTPUT->write($out); |
| | | } |
| | | else { |
| | |
| | | $cont .= rcmail_message_body(array()); |
| | | $cont .= "\n</body>\n</html>"; |
| | | |
| | | $OUTPUT = new rcube_html_page(); |
| | | $OUTPUT = new rcmail_html_page(); |
| | | $OUTPUT->write($cont); |
| | | |
| | | exit; |
| | |
| | | header('Location: ' . $_SERVER['REQUEST_URI'] . '&_redirected=1'); |
| | | } |
| | | else { |
| | | raise_error(array( |
| | | rcube::raise_error(array( |
| | | 'code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => 'Unable to get/display message part. IMAP connection error'), |
| | |
| | | { |
| | | global $MESSAGE, $RCMAIL; |
| | | |
| | | $part = asciiwords(get_input_value('_part', RCUBE_INPUT_GPC)); |
| | | $part = asciiwords(rcube_utils::get_input_value('_part', rcube_utils::INPUT_GPC)); |
| | | if (!is_object($MESSAGE) || !is_array($MESSAGE->parts) |
| | | || !($_GET['_uid'] && $_GET['_part']) || !$MESSAGE->mime_parts[$part] |
| | | ) { |
| | |
| | | $part = $MESSAGE->mime_parts[$part]; |
| | | $table = new html_table(array('cols' => 2)); |
| | | |
| | | $table->add('title', Q(rcube_label('namex')).':'); |
| | | $table->add('header', Q(rcmail_attachment_name($part))); |
| | | $table->add('title', rcube::Q($RCMAIL->gettext('namex')).':'); |
| | | $table->add('header', rcube::Q(rcmail_attachment_name($part))); |
| | | |
| | | $table->add('title', Q(rcube_label('type')).':'); |
| | | $table->add('header', Q($part->mimetype)); |
| | | $table->add('title', rcube::Q($RCMAIL->gettext('type')).':'); |
| | | $table->add('header', rcube::Q($part->mimetype)); |
| | | |
| | | $table->add('title', Q(rcube_label('size')).':'); |
| | | $table->add('header', Q($RCMAIL->message_part_size($part))); |
| | | $table->add('title', rcube::Q($RCMAIL->gettext('size')).':'); |
| | | $table->add('header', rcube::Q($RCMAIL->message_part_size($part))); |
| | | |
| | | return $table->show($attrib); |
| | | } |
| | |
| | | { |
| | | global $MESSAGE, $RCMAIL; |
| | | |
| | | $part = $MESSAGE->mime_parts[asciiwords(get_input_value('_part', RCUBE_INPUT_GPC))]; |
| | | $part = $MESSAGE->mime_parts[asciiwords(rcube_utils::get_input_value('_part', rcube_utils::INPUT_GPC))]; |
| | | $ctype_primary = strtolower($part->ctype_primary); |
| | | |
| | | $attrib['src'] = './?' . str_replace('_frame=', ($ctype_primary=='text' ? '_embed=' : '_preload='), $_SERVER['QUERY_STRING']); |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | if ($uid = get_input_value('_uid', RCUBE_INPUT_POST)) |
| | | if ($uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST)) |
| | | { |
| | | $source = $RCMAIL->storage->get_raw_headers($uid); |
| | | |
| | |
| | | |
| | | if (!$err) { |
| | | // check file content type first |
| | | list($mtype_primary,) = explode('/', rc_mime_content_type($filepath, $_FILES['_file']['name'][$i], $_FILES['_file']['type'][$i])); |
| | | list($mtype_primary,) = explode('/', rcube_mime::file_content_type($filepath, $_FILES['_file']['name'][$i], $_FILES['_file']['type'][$i])); |
| | | if (!in_array($mtype_primary, array('text','message'))) { |
| | | $OUTPUT->show_message('importmessageerror', 'error'); |
| | | continue; |
| | |
| | | } |
| | | |
| | | if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) { |
| | | $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize')))))); |
| | | $size = $RCMAIL->show_bytes(parse_bytes(ini_get('upload_max_filesize'))); |
| | | $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $size))); |
| | | } |
| | | else if ($err) { |
| | | $OUTPUT->show_message('fileuploaderror', 'error'); |
| | |
| | | } // end foreach |
| | | |
| | | if ($imported) { |
| | | $OUTPUT->show_message(rcube_label(array('name' => 'importmessagesuccess', 'nr' => $imported, 'vars' => array('nr' => $imported))), 'confirmation'); |
| | | $OUTPUT->show_message($RCMAIL->gettext(array('name' => 'importmessagesuccess', 'nr' => $imported, 'vars' => array('nr' => $imported))), 'confirmation'); |
| | | $OUTPUT->command('command', 'list'); |
| | | } |
| | | else { |
| | |
| | | // if filesize exceeds post_max_size then $_FILES array is empty, |
| | | // show filesizeerror instead of fileuploaderror |
| | | if ($maxsize = ini_get('post_max_size')) |
| | | $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes($maxsize))))); |
| | | $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $RCMAIL->show_bytes(parse_bytes($maxsize))))); |
| | | else |
| | | $msg = rcube_label('fileuploaderror'); |
| | | $msg = $RCMAIL->gettext('fileuploaderror'); |
| | | |
| | | $OUTPUT->command('display_message', $msg, 'error'); |
| | | } |
| | |
| | | $dont_override = (array) $RCMAIL->config->get('dont_override'); |
| | | |
| | | // is there a sort type for this request? |
| | | if ($sort = get_input_value('_sort', RCUBE_INPUT_GET)) { |
| | | if ($sort = rcube_utils::get_input_value('_sort', rcube_utils::INPUT_GET)) { |
| | | // yes, so set the sort vars |
| | | list($sort_col, $sort_order) = explode('_', $sort); |
| | | |
| | |
| | | } |
| | | |
| | | // is there a set of columns for this request? |
| | | if ($cols = get_input_value('_cols', RCUBE_INPUT_GET)) { |
| | | if ($cols = rcube_utils::get_input_value('_cols', rcube_utils::INPUT_GET)) { |
| | | if (!in_array('list_cols', $dont_override)) { |
| | | $save_arr['list_cols'] = explode(',', $cols); |
| | | } |
| | |
| | | // initialize searching result if search_filter is used |
| | | if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') { |
| | | $search_request = md5($mbox_name.$_SESSION['search_filter']); |
| | | $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, rcmail_sort_column()); |
| | | $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCUBE_CHARSET, rcmail_sort_column()); |
| | | $_SESSION['search'] = $RCMAIL->storage->get_search_set(); |
| | | $_SESSION['search_request'] = $search_request; |
| | | $OUTPUT->set_env('search_request', $search_request); |
| | |
| | | else { |
| | | // handle IMAP errors (e.g. #1486905) |
| | | if ($err_code = $RCMAIL->storage->get_error_code()) { |
| | | rcmail_display_server_error(); |
| | | $RCMAIL->display_server_error(); |
| | | } |
| | | else if ($search_request) |
| | | $OUTPUT->show_message('searchnomatch', 'notice'); |
| | |
| | | } |
| | | // list contacts from selected source |
| | | else { |
| | | $source = get_input_value('_source', RCUBE_INPUT_GPC); |
| | | $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | $CONTACTS = $RCMAIL->get_address_book($source); |
| | | |
| | | if ($CONTACTS && $CONTACTS->ready) { |
| | |
| | | $CONTACTS->set_pagesize($page_size); |
| | | $CONTACTS->set_page($list_page); |
| | | |
| | | if ($group_id = get_input_value('_gid', RCUBE_INPUT_GPC)) { |
| | | if ($group_id = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC)) { |
| | | $CONTACTS->set_group($group_id); |
| | | } |
| | | // list groups of this source (on page one) |
| | |
| | | $row_id = 'G'.$group['ID']; |
| | | $jsresult[$row_id] = format_email_recipient($email, $group['name']); |
| | | $OUTPUT->command('add_contact_row', $row_id, array( |
| | | 'contactgroup' => html::span(array('title' => $email), Q($group['name']))), 'group'); |
| | | 'contactgroup' => html::span(array('title' => $email), rcube::Q($group['name']))), 'group'); |
| | | } |
| | | } |
| | | // make virtual groups clickable to list their members |
| | |
| | | 'contactgroup' => html::a(array( |
| | | 'href' => '#list', |
| | | 'rel' => $row['ID'], |
| | | 'title' => rcube_label('listgroup'), |
| | | 'onclick' => sprintf("return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)", JS_OBJECT_NAME, $source, $group['ID']), |
| | | ), Q($group['name']) . ' ' . html::span('action', '»'))), |
| | | 'title' => $RCMAIL->gettext('listgroup'), |
| | | 'onclick' => sprintf("return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)", rcmail_output::JS_OBJECT_NAME, $source, $group['ID']), |
| | | ), rcube::Q($group['name']) . ' ' . html::span('action', '»'))), |
| | | 'group', |
| | | array('ID' => $group['ID'], 'name' => $group['name'], 'virtual' => true)); |
| | | } |
| | |
| | | $row_id = 'E'.$group['ID']; |
| | | $jsresult[$row_id] = $group['name']; |
| | | $OUTPUT->command('add_contact_row', $row_id, array( |
| | | 'contactgroup' => Q($group['name'] . ' (' . intval($result->count) . ')')), 'group'); |
| | | 'contactgroup' => rcube::Q($group['name'] . ' (' . intval($result->count) . ')')), 'group'); |
| | | } |
| | | } |
| | | |
| | |
| | | $keyname = $row['_type'] == 'group' ? 'contactgroup' : 'contact'; |
| | | |
| | | $OUTPUT->command('add_contact_row', $row_id, array( |
| | | $keyname => html::span(array('title' => $email), Q($name ? $name : $email) . |
| | | ($name && count($emails) > 1 ? ' ' . html::span('email', Q($email)) : '') |
| | | $keyname => html::span(array('title' => $email), rcube::Q($name ? $name : $email) . |
| | | ($name && count($emails) > 1 ? ' ' . html::span('email', rcube::Q($email)) : '') |
| | | )), $classname); |
| | | } |
| | | } |
| | |
| | | |
| | | $threading = (bool) $RCMAIL->storage->get_threading(); |
| | | |
| | | if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_value('_flag', RCUBE_INPUT_POST))) |
| | | if (($uids = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST)) && ($flag = rcube_utils::get_input_value('_flag', rcube_utils::INPUT_POST))) |
| | | { |
| | | $flag = $a_flags_map[$flag] ? $a_flags_map[$flag] : strtoupper($flag); |
| | | |
| | |
| | | // send error message |
| | | if ($_POST['_from'] != 'show') |
| | | $OUTPUT->command('list_mailbox'); |
| | | rcmail_display_server_error('errormarking'); |
| | | $RCMAIL->display_server_error('errormarking'); |
| | | $OUTPUT->send(); |
| | | exit; |
| | | } |
| | |
| | | } |
| | | |
| | | if ($flag == 'DELETED' && $CONFIG['read_when_deleted'] && !empty($_POST['_ruid'])) { |
| | | $ruids = get_input_value('_ruid', RCUBE_INPUT_POST); |
| | | $ruids = rcube_utils::get_input_value('_ruid', rcube_utils::INPUT_POST); |
| | | $read = $RCMAIL->storage->set_flag($ruids, 'SEEN'); |
| | | |
| | | if ($read && !$CONFIG['skip_deleted']) |
| | |
| | | } |
| | | else if ($flag == 'DELETED' && $CONFIG['skip_deleted']) { |
| | | if ($_POST['_from'] == 'show') { |
| | | if ($next = get_input_value('_next_uid', RCUBE_INPUT_GPC)) |
| | | if ($next = rcube_utils::get_input_value('_next_uid', rcube_utils::INPUT_GPC)) |
| | | $OUTPUT->command('show_message', $next); |
| | | else |
| | | $OUTPUT->command('command', 'list'); |
| | | } else { |
| | | $search_request = get_input_value('_search', RCUBE_INPUT_GPC); |
| | | $search_request = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC); |
| | | // refresh saved search set after moving some messages |
| | | if ($search_request && $RCMAIL->storage->get_search_set()) { |
| | | $_SESSION['search'] = $RCMAIL->storage->refresh_search(); |
| | |
| | | $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox); |
| | | |
| | | if ($threading) { |
| | | $count = get_input_value('_count', RCUBE_INPUT_POST); |
| | | $count = rcube_utils::get_input_value('_count', rcube_utils::INPUT_POST); |
| | | } |
| | | |
| | | // add new rows from next page (if any) |
| | |
| | | |
| | | // move messages |
| | | if ($RCMAIL->action == 'move' && !empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) { |
| | | $count = sizeof(explode(',', ($uids = get_input_value('_uid', RCUBE_INPUT_POST)))); |
| | | $target = get_input_value('_target_mbox', RCUBE_INPUT_POST, true); |
| | | $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true); |
| | | $count = sizeof(explode(',', ($uids = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST)))); |
| | | $target = rcube_utils::get_input_value('_target_mbox', rcube_utils::INPUT_POST, true); |
| | | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true); |
| | | $trash = $RCMAIL->config->get('trash_mbox'); |
| | | |
| | | $moved = $RCMAIL->storage->move_message($uids, $target, $mbox); |
| | |
| | | // send error message |
| | | if ($_POST['_from'] != 'show') |
| | | $OUTPUT->command('list_mailbox'); |
| | | rcmail_display_server_error('errormoving', null, $target == $trash ? 'delete' : ''); |
| | | $RCMAIL->display_server_error('errormoving', null, $target == $trash ? 'delete' : ''); |
| | | $OUTPUT->send(); |
| | | exit; |
| | | } |
| | |
| | | } |
| | | // delete messages |
| | | else if ($RCMAIL->action=='delete' && !empty($_POST['_uid'])) { |
| | | $count = sizeof(explode(',', ($uids = get_input_value('_uid', RCUBE_INPUT_POST)))); |
| | | $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true); |
| | | $count = sizeof(explode(',', ($uids = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST)))); |
| | | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true); |
| | | |
| | | $del = $RCMAIL->storage->delete_message($uids, $mbox); |
| | | |
| | |
| | | // send error message |
| | | if ($_POST['_from'] != 'show') |
| | | $OUTPUT->command('list_mailbox'); |
| | | rcmail_display_server_error('errordeleting'); |
| | | $RCMAIL->display_server_error('errordeleting'); |
| | | $OUTPUT->send(); |
| | | exit; |
| | | } |
| | |
| | | exit; |
| | | } |
| | | |
| | | $search_request = get_input_value('_search', RCUBE_INPUT_GPC); |
| | | $search_request = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC); |
| | | |
| | | // refresh saved search set after moving some messages |
| | | if ($search_request && $RCMAIL->storage->get_search_set()) { |
| | |
| | | |
| | | if ($_POST['_from'] == 'show') |
| | | { |
| | | if ($next = get_input_value('_next_uid', RCUBE_INPUT_GPC)) |
| | | if ($next = rcube_utils::get_input_value('_next_uid', rcube_utils::INPUT_GPC)) |
| | | $OUTPUT->command('show_message', $next); |
| | | else |
| | | $OUTPUT->command('command', 'list'); |
| | |
| | | rcmail_send_unread_count($target, true); |
| | | } |
| | | |
| | | $OUTPUT->command('set_quota', rcmail_quota_content()); |
| | | $OUTPUT->command('set_quota', $RCMAIL->quota_content()); |
| | | $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox); |
| | | |
| | | if ($threading) { |
| | | $count = get_input_value('_count', RCUBE_INPUT_POST); |
| | | $count = rcube_utils::get_input_value('_count', rcube_utils::INPUT_POST); |
| | | } |
| | | |
| | | // add new rows from next page (if any) |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | $uid = get_input_value('_uid', RCUBE_INPUT_GET); |
| | | $uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_GET); |
| | | $index = $RCMAIL->storage->index(null, rcmail_sort_column(), rcmail_sort_order()); |
| | | $cnt = $index->count_messages(); |
| | | |
| | |
| | | $OUTPUT->set_env('messagecount', 1); |
| | | |
| | | // Set rowcount text |
| | | $OUTPUT->command('set_rowcount', rcube_label(array( |
| | | $OUTPUT->command('set_rowcount', $RCMAIL->gettext(array( |
| | | 'name' => 'messagenrof', |
| | | 'vars' => array('nr' => $pos+1, 'count' => $cnt) |
| | | ))); |
| | |
| | | |
| | | // using encodeURI with javascript "should" give us |
| | | // a correctly encoded query string |
| | | $imap_charset = RCMAIL_CHARSET; |
| | | $imap_charset = RCUBE_CHARSET; |
| | | |
| | | // get search string |
| | | $str = get_input_value('_q', RCUBE_INPUT_GET, true); |
| | | $mbox = get_input_value('_mbox', RCUBE_INPUT_GET, true); |
| | | $filter = get_input_value('_filter', RCUBE_INPUT_GET); |
| | | $headers = get_input_value('_headers', RCUBE_INPUT_GET); |
| | | $str = rcube_utils::get_input_value('_q', rcube_utils::INPUT_GET, true); |
| | | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GET, true); |
| | | $filter = rcube_utils::get_input_value('_filter', rcube_utils::INPUT_GET); |
| | | $headers = rcube_utils::get_input_value('_headers', rcube_utils::INPUT_GET); |
| | | $subject = array(); |
| | | |
| | | $search_request = md5($mbox.$filter.$str); |
| | |
| | | } |
| | | // handle IMAP errors (e.g. #1486905) |
| | | else if ($err_code = $RCMAIL->storage->get_error_code()) { |
| | | rcmail_display_server_error(); |
| | | $RCMAIL->display_server_error(); |
| | | } |
| | | else { |
| | | $OUTPUT->show_message('searchnomatch', 'notice'); |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | $search = get_input_value('_q', RCUBE_INPUT_GPC, true); |
| | | $search = rcube_utils::get_input_value('_q', rcube_utils::INPUT_GPC, true); |
| | | $sources = $RCMAIL->get_address_sources(); |
| | | $search_mode = (int) $RCMAIL->config->get('addressbook_search_mode'); |
| | | $addr_sort_col = $RCMAIL->config->get('addressbook_sort_col', 'name'); |
| | |
| | | $row_id = $row['ID'].'-'.$i; |
| | | $jsresult[$row_id] = format_email_recipient($email, $name); |
| | | $OUTPUT->command('add_contact_row', $row_id, array( |
| | | 'contact' => html::span(array('title' => $email), Q($name ? $name : $email) . |
| | | ($name && count($emails) > 1 ? ' ' . html::span('email', Q($email)) : '') |
| | | 'contact' => html::span(array('title' => $email), rcube::Q($name ? $name : $email) . |
| | | ($name && count($emails) > 1 ? ' ' . html::span('email', rcube::Q($email)) : '') |
| | | )), 'person'); |
| | | } |
| | | } |
| | |
| | | |
| | | $savedraft = !empty($_POST['_draft']) ? true : false; |
| | | |
| | | $COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GPC); |
| | | $COMPOSE_ID = rcube_utils::get_input_value('_id', rcube_utils::INPUT_GPC); |
| | | $COMPOSE =& $_SESSION['compose_data_'.$COMPOSE_ID]; |
| | | |
| | | /****** checks ********/ |
| | | |
| | | if (!isset($COMPOSE['id'])) { |
| | | raise_error(array('code' => 500, 'type' => 'php', |
| | | rcube::raise_error(array('code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Invalid compose ID"), true, false); |
| | | |
| | |
| | | if ($sql_arr = $RCMAIL->user->get_identity($id)) { |
| | | $out = $sql_arr; |
| | | |
| | | if ($message_charset != RCMAIL_CHARSET) { |
| | | if ($message_charset != RCUBE_CHARSET) { |
| | | foreach ($out as $k => $v) |
| | | $out[$k] = rcube_charset_convert($v, RCMAIL_CHARSET, $message_charset); |
| | | $out[$k] = rcube_charset::convert($v, RCUBE_CHARSET, $message_charset); |
| | | } |
| | | |
| | | $out['mailto'] = $sql_arr['email']; |
| | |
| | | $mailto = trim(preg_replace($regexp, $replace, $mailto)); |
| | | |
| | | $result = array(); |
| | | $items = rcube_explode_quoted_string($delim, $mailto); |
| | | $items = rcube_utils::explode_quoted_string($delim, $mailto); |
| | | |
| | | foreach($items as $item) { |
| | | $item = trim($item); |
| | | // address in brackets without name (do nothing) |
| | | if (preg_match('/^<'.$email_regexp.'>$/', $item)) { |
| | | $item = rcube_idn_to_ascii(trim($item, '<>')); |
| | | $item = rcube_utils::idn_to_ascii(trim($item, '<>')); |
| | | $result[] = $item; |
| | | // address without brackets and without name (add brackets) |
| | | } else if (preg_match('/^'.$email_regexp.'$/', $item)) { |
| | | $item = rcube_idn_to_ascii($item); |
| | | $item = rcube_utils::idn_to_ascii($item); |
| | | $result[] = $item; |
| | | // address with name (handle name) |
| | | } else if (preg_match('/<*'.$email_regexp.'>*$/', $item, $matches)) { |
| | |
| | | $name = substr($name, 1, -1); |
| | | } |
| | | $name = stripcslashes($name); |
| | | $address = rcube_idn_to_ascii(trim($address, '<>')); |
| | | $address = rcube_utils::idn_to_ascii(trim($address, '<>')); |
| | | $result[] = format_email_recipient($address, $name); |
| | | $item = $address; |
| | | } else if (trim($item)) { |
| | |
| | | |
| | | // check address format |
| | | $item = trim($item, '<>'); |
| | | if ($item && $check && !check_email($item)) { |
| | | if ($item && $check && !rcube_utils::check_email($item)) { |
| | | $EMAIL_FORMAT_ERROR = $item; |
| | | return; |
| | | } |
| | |
| | | /****** compose message ********/ |
| | | |
| | | if (strlen($_POST['_draft_saveid']) > 3) |
| | | $olddraftmessageid = get_input_value('_draft_saveid', RCUBE_INPUT_POST); |
| | | $olddraftmessageid = rcube_utils::get_input_value('_draft_saveid', rcube_utils::INPUT_POST); |
| | | |
| | | $message_id = rcmail_gen_message_id(); |
| | | $message_id = $RCMAIL->gen_message_id(); |
| | | |
| | | // set default charset |
| | | $message_charset = isset($_POST['_charset']) ? $_POST['_charset'] : $OUTPUT->get_charset(); |
| | |
| | | $EMAIL_FORMAT_ERROR = NULL; |
| | | $RECIPIENT_COUNT = 0; |
| | | |
| | | $mailto = rcmail_email_input_format(get_input_value('_to', RCUBE_INPUT_POST, TRUE, $message_charset), true); |
| | | $mailcc = rcmail_email_input_format(get_input_value('_cc', RCUBE_INPUT_POST, TRUE, $message_charset), true); |
| | | $mailbcc = rcmail_email_input_format(get_input_value('_bcc', RCUBE_INPUT_POST, TRUE, $message_charset), true); |
| | | $mailto = rcmail_email_input_format(rcube_utils::get_input_value('_to', rcube_utils::INPUT_POST, TRUE, $message_charset), true); |
| | | $mailcc = rcmail_email_input_format(rcube_utils::get_input_value('_cc', rcube_utils::INPUT_POST, TRUE, $message_charset), true); |
| | | $mailbcc = rcmail_email_input_format(rcube_utils::get_input_value('_bcc', rcube_utils::INPUT_POST, TRUE, $message_charset), true); |
| | | |
| | | if ($EMAIL_FORMAT_ERROR) { |
| | | $OUTPUT->show_message('emailformaterror', 'error', array('email' => $EMAIL_FORMAT_ERROR)); |
| | |
| | | $mailto = 'undisclosed-recipients:;'; |
| | | |
| | | // Get sender name and address... |
| | | $from = get_input_value('_from', RCUBE_INPUT_POST, true, $message_charset); |
| | | $from = rcube_utils::get_input_value('_from', rcube_utils::INPUT_POST, true, $message_charset); |
| | | // ... from identity... |
| | | if (is_numeric($from)) { |
| | | if (is_array($identity_arr = rcmail_get_identity($from))) { |
| | |
| | | $headers['Received'] = $http_header; |
| | | } |
| | | |
| | | $headers['Date'] = rcmail_user_date(); |
| | | $headers['From'] = rcube_charset_convert($from_string, RCMAIL_CHARSET, $message_charset); |
| | | $headers['Date'] = $RCMAIL->user_date(); |
| | | $headers['From'] = rcube_charset::convert($from_string, RCUBE_CHARSET, $message_charset); |
| | | $headers['To'] = $mailto; |
| | | |
| | | // additional recipients |
| | |
| | | } |
| | | |
| | | // add subject |
| | | $headers['Subject'] = trim(get_input_value('_subject', RCUBE_INPUT_POST, TRUE, $message_charset)); |
| | | $headers['Subject'] = trim(rcube_utils::get_input_value('_subject', rcube_utils::INPUT_POST, TRUE, $message_charset)); |
| | | |
| | | if (!empty($identity_arr['organization'])) { |
| | | $headers['Organization'] = $identity_arr['organization']; |
| | | } |
| | | if (!empty($_POST['_replyto'])) { |
| | | $headers['Reply-To'] = rcmail_email_input_format(get_input_value('_replyto', RCUBE_INPUT_POST, TRUE, $message_charset)); |
| | | $headers['Reply-To'] = rcmail_email_input_format(rcube_utils::get_input_value('_replyto', rcube_utils::INPUT_POST, TRUE, $message_charset)); |
| | | } |
| | | if (!empty($headers['Reply-To'])) { |
| | | $headers['Mail-Reply-To'] = $headers['Reply-To']; |
| | | } |
| | | if (!empty($_POST['_followupto'])) { |
| | | $headers['Mail-Followup-To'] = rcmail_email_input_format(get_input_value('_followupto', RCUBE_INPUT_POST, TRUE, $message_charset)); |
| | | $headers['Mail-Followup-To'] = rcmail_email_input_format(rcube_utils::get_input_value('_followupto', rcube_utils::INPUT_POST, TRUE, $message_charset)); |
| | | } |
| | | |
| | | // remember reply/forward UIDs in special headers |
| | |
| | | $headers = $data['headers']; |
| | | |
| | | |
| | | $isHtml = (bool) get_input_value('_is_html', RCUBE_INPUT_POST); |
| | | $isHtml = (bool) rcube_utils::get_input_value('_is_html', rcube_utils::INPUT_POST); |
| | | |
| | | // fetch message body |
| | | $message_body = get_input_value('_message', RCUBE_INPUT_POST, TRUE, $message_charset); |
| | | $message_body = rcube_utils::get_input_value('_message', rcube_utils::INPUT_POST, TRUE, $message_charset); |
| | | |
| | | if ($isHtml) { |
| | | $bstyle = array(); |
| | |
| | | && empty($COMPOSE['spell_checked']) && !empty($message_body) |
| | | ) { |
| | | $message_body = str_replace("\r\n", "\n", $message_body); |
| | | $spellchecker = new rcube_spellchecker(get_input_value('_lang', RCUBE_INPUT_GPC)); |
| | | $spellchecker = new rcube_spellchecker(rcube_utils::get_input_value('_lang', rcube_utils::INPUT_GPC)); |
| | | $spell_result = $spellchecker->check($message_body, $isHtml); |
| | | |
| | | $COMPOSE['spell_checked'] = true; |
| | |
| | | |
| | | // generic footer for all messages |
| | | if ($footer = rcmail_generic_message_footer($isHtml)) { |
| | | $footer = rcube_charset_convert($footer, RCMAIL_CHARSET, $message_charset); |
| | | $footer = rcube_charset::convert($footer, RCUBE_CHARSET, $message_charset); |
| | | $message_body .= "\r\n" . $footer; |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | // sort attachments to make sure the order is the same as in the UI (#1488423) |
| | | $files = get_input_value('_attachments', RCUBE_INPUT_POST); |
| | | $files = rcube_utils::get_input_value('_attachments', rcube_utils::INPUT_POST); |
| | | if ($files) { |
| | | $files = explode(',', $files); |
| | | $files = array_flip($files); |
| | |
| | | $MAIL_MIME->setHTMLBody($plugin['body']); |
| | | |
| | | // replace emoticons |
| | | $plugin['body'] = rcmail_replace_emoticons($plugin['body']); |
| | | $plugin['body'] = $RCMAIL->replace_emoticons($plugin['body']); |
| | | |
| | | // add a plain text version of the e-mail as an alternative part. |
| | | $h2t = new rcube_html2text($plugin['body'], false, true, 0, $message_charset); |
| | | $plainTextPart = rc_wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n", false, $message_charset); |
| | | $plainTextPart = rcube_mime::wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n", false, $message_charset); |
| | | $plainTextPart = wordwrap($plainTextPart, 998, "\r\n", true); |
| | | |
| | | // make sure all line endings are CRLF (#1486712) |
| | |
| | | if ($flowed = ($savedraft || $RCMAIL->config->get('send_format_flowed', true))) |
| | | $message_body = rcube_mime::format_flowed($message_body, min($LINE_LENGTH+2, 79), $message_charset); |
| | | else |
| | | $message_body = rc_wordwrap($message_body, $LINE_LENGTH, "\r\n", false, $message_charset); |
| | | $message_body = rcube_mime::wordwrap($message_body, $LINE_LENGTH, "\r\n", false, $message_charset); |
| | | |
| | | $message_body = wordwrap($message_body, 998, "\r\n", true); |
| | | |
| | |
| | | '', '', '', |
| | | $CONFIG['mime_param_folding'] ? 'quoted-printable' : NULL, |
| | | $CONFIG['mime_param_folding'] == 2 ? 'quoted-printable' : NULL, |
| | | '', RCMAIL_CHARSET |
| | | '', RCUBE_CHARSET |
| | | ); |
| | | } |
| | | } |
| | |
| | | mb_internal_encoding($message_charset); |
| | | $headers['Subject'] = mb_encode_mimeheader($headers['Subject'], |
| | | $message_charset, 'Q', "\r\n", 8); |
| | | mb_internal_encoding(RCMAIL_CHARSET); |
| | | mb_internal_encoding(RCUBE_CHARSET); |
| | | } |
| | | |
| | | // pass headers to message object |
| | |
| | | $smtp_opts['dsn'] = true; |
| | | } |
| | | |
| | | $sent = rcmail_deliver_message($MAIL_MIME, $from, $mailto, |
| | | $sent = $RCMAIL->deliver_message($MAIL_MIME, $from, $mailto, |
| | | $smtp_error, $mailbody_file, $smtp_opts); |
| | | |
| | | // return to compose page if sending failed |
| | |
| | | if ($savedraft) |
| | | $store_target = $CONFIG['drafts_mbox']; |
| | | else if (!$RCMAIL->config->get('no_save_sent_messages')) |
| | | $store_target = isset($_POST['_store_target']) ? get_input_value('_store_target', RCUBE_INPUT_POST) : $CONFIG['sent_mbox']; |
| | | $store_target = isset($_POST['_store_target']) ? rcube_utils::get_input_value('_store_target', rcube_utils::INPUT_POST) : $CONFIG['sent_mbox']; |
| | | |
| | | if ($store_target) { |
| | | // check if folder is subscribed |
| | |
| | | } |
| | | |
| | | if (PEAR::isError($msg)) |
| | | raise_error(array('code' => 650, 'type' => 'php', |
| | | rcube::raise_error(array('code' => 650, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Could not create message: ".$msg->getMessage()), |
| | | TRUE, FALSE); |
| | |
| | | |
| | | // raise error if saving failed |
| | | if (!$saved) { |
| | | raise_error(array('code' => 800, 'type' => 'imap', |
| | | rcube::raise_error(array('code' => 800, 'type' => 'imap', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Could not save message in $store_target"), TRUE, FALSE); |
| | | |
| | |
| | | |
| | | // raise error if deletion of old draft failed |
| | | if (!$deleted) |
| | | raise_error(array('code' => 800, 'type' => 'imap', |
| | | rcube::raise_error(array('code' => 800, 'type' => 'imap', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Could not delete message from ".$CONFIG['drafts_mbox']), TRUE, FALSE); |
| | | } |
| | |
| | | $OUTPUT->command('remove_compose_data', $COMPOSE_ID); |
| | | |
| | | if ($store_folder && !$saved) |
| | | $OUTPUT->command('sent_successfully', 'error', rcube_label('errorsavingsent'), $folders); |
| | | $OUTPUT->command('sent_successfully', 'error', $RCMAIL->gettext('errorsavingsent'), $folders); |
| | | else { |
| | | if ($store_folder) { |
| | | $folders[] = $store_target; |
| | | } |
| | | |
| | | $OUTPUT->command('sent_successfully', 'confirmation', rcube_label('messagesent'), $folders); |
| | | $OUTPUT->command('sent_successfully', 'confirmation', $RCMAIL->gettext('messagesent'), $folders); |
| | | } |
| | | } |
| | | |
| | |
| | | return; |
| | | |
| | | if (!empty($_POST['_uid'])) { |
| | | $sent = rcmail_send_mdn(get_input_value('_uid', RCUBE_INPUT_POST), $smtp_error); |
| | | $sent = rcmail_send_mdn(rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST), $smtp_error); |
| | | } |
| | | |
| | | // show either confirm or error message |
| | |
| | | $PRINT_MODE = $RCMAIL->action == 'print' ? TRUE : FALSE; |
| | | |
| | | // Read browser capabilities and store them in session |
| | | if ($caps = get_input_value('_caps', RCUBE_INPUT_GET)) { |
| | | if ($caps = rcube_utils::get_input_value('_caps', rcube_utils::INPUT_GET)) { |
| | | $browser_caps = array(); |
| | | foreach (explode(',', $caps) as $cap) { |
| | | $cap = explode('=', $cap); |
| | |
| | | $_SESSION['browser_caps'] = $browser_caps; |
| | | } |
| | | |
| | | $uid = get_input_value('_uid', RCUBE_INPUT_GET); |
| | | $uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_GET); |
| | | $mbox_name = $RCMAIL->storage->get_folder(); |
| | | |
| | | // similar code as in program/steps/mail/get.inc |
| | |
| | | // set environement |
| | | $OUTPUT->set_env('safemode', $MESSAGE->is_safe); |
| | | $OUTPUT->set_env('sender', $MESSAGE->sender['string']); |
| | | $OUTPUT->set_env('permaurl', rcmail_url('show', array('_uid' => $MESSAGE->uid, '_mbox' => $mbox_name))); |
| | | $OUTPUT->set_env('permaurl', $RCMAIL->url(array('_action' => 'show', '_uid' => $MESSAGE->uid, '_mbox' => $mbox_name))); |
| | | $OUTPUT->set_env('delimiter', $RCMAIL->storage->get_hierarchy_delimiter()); |
| | | $OUTPUT->set_env('mailbox', $mbox_name); |
| | | $OUTPUT->set_env('compose_extwin', $RCMAIL->config->get('compose_extwin',false)); |
| | |
| | | |
| | | if ($PRINT_MODE) { |
| | | $size = $RCMAIL->message_part_size($attach_prop); |
| | | $ol .= html::tag('li', null, Q(sprintf("%s (%s)", $filename, $size))); |
| | | $ol .= html::tag('li', null, rcube::Q(sprintf("%s (%s)", $filename, $size))); |
| | | } |
| | | else { |
| | | if ($attrib['maxlength'] && mb_strlen($filename) > $attrib['maxlength']) { |
| | |
| | | } |
| | | |
| | | $mimetype = rcmail_fix_mimetype($attach_prop->mimetype); |
| | | $class = rcmail_filetype2classname($mimetype, $filename); |
| | | $class = rcube_utils::file2class($mimetype, $filename); |
| | | $id = 'attach' . $attach_prop->mime_id; |
| | | $link = html::a(array( |
| | | 'href' => $MESSAGE->get_part_url($attach_prop->mime_id, false), |
| | | 'onclick' => sprintf('return %s.command(\'load-attachment\',\'%s\',this)', |
| | | JS_OBJECT_NAME, $attach_prop->mime_id), |
| | | rcmail_output::JS_OBJECT_NAME, $attach_prop->mime_id), |
| | | 'onmouseover' => $title ? '' : 'rcube_webmail.long_subject_title_ex(this, 0)', |
| | | 'title' => Q($title), |
| | | ), Q($filename)); |
| | | 'title' => rcube::Q($title), |
| | | ), rcube::Q($filename)); |
| | | $ol .= html::tag('li', array('class' => $class, 'id' => $id), $link); |
| | | |
| | | $attachments[$attach_prop->mime_id] = $mimetype; |
| | |
| | | $attrib['class'] = 'notice'; |
| | | $attrib['style'] = 'display: none'; |
| | | |
| | | $msg = Q(rcube_label('blockedimages')) . ' '; |
| | | $msg .= html::a(array('href' => "#loadimages", 'onclick' => JS_OBJECT_NAME.".command('load-images')"), Q(rcube_label('showimages'))); |
| | | $msg = rcube::Q($RCMAIL->gettext('blockedimages')) . ' '; |
| | | $msg .= html::a(array('href' => "#loadimages", 'onclick' => rcmail_output::JS_OBJECT_NAME.".command('load-images')"), rcube::Q($RCMAIL->gettext('showimages'))); |
| | | |
| | | // add link to save sender in addressbook and reload message |
| | | if ($MESSAGE->sender['mailto'] && $RCMAIL->config->get('show_images') == 1) { |
| | | $msg .= ' ' . html::a(array('href' => "#alwaysload", 'onclick' => JS_OBJECT_NAME.".command('always-load')", 'style' => "white-space:nowrap"), |
| | | Q(rcube_label(array('name' => 'alwaysshow', 'vars' => array('sender' => $MESSAGE->sender['mailto']))))); |
| | | $msg .= ' ' . html::a(array('href' => "#alwaysload", 'onclick' => rcmail_output::JS_OBJECT_NAME.".command('always-load')", 'style' => "white-space:nowrap"), |
| | | rcube::Q($RCMAIL->gettext(array('name' => 'alwaysshow', 'vars' => array('sender' => $MESSAGE->sender['mailto']))))); |
| | | } |
| | | |
| | | $RCMAIL->output->add_gui_object('remoteobjectsmsg', $attrib['id']); |
| | |
| | | $attrib['id'] = 'message-buttons'; |
| | | $attrib['class'] = 'notice'; |
| | | |
| | | $msg = Q(rcube_label('isdraft')) . ' '; |
| | | $msg .= html::a(array('href' => "#edit", 'onclick' => JS_OBJECT_NAME.".command('edit')"), Q(rcube_label('edit'))); |
| | | $msg = rcube::Q($RCMAIL->gettext('isdraft')) . ' '; |
| | | $msg .= html::a(array('href' => "#edit", 'onclick' => rcmail_output::JS_OBJECT_NAME.".command('edit')"), rcube::Q($RCMAIL->gettext('edit'))); |
| | | |
| | | return html::div($attrib, $msg); |
| | | } |
| | |
| | | ob_end_clean(); |
| | | |
| | | // similar code as in program/steps/mail/get.inc |
| | | if ($uid = get_input_value('_uid', RCUBE_INPUT_GET)) |
| | | if ($uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_GET)) |
| | | { |
| | | $headers = $RCMAIL->storage->get_message_headers($uid); |
| | | $charset = $headers->charset ? $headers->charset : $CONFIG['default_charset']; |
| | |
| | | } |
| | | else |
| | | { |
| | | raise_error(array( |
| | | rcube::raise_error(array( |
| | | 'code' => 500, |
| | | 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | |
| | | if ($url = $RCMAIL->config->get('support_url')) { |
| | | $label = $attrib['label'] ? $attrib['label'] : 'support'; |
| | | $attrib['href'] = $url; |
| | | return html::a($attrib, rcube_label($label)); |
| | | return html::a($attrib, $RCMAIL->gettext($label)); |
| | | } |
| | | } |
| | | |
| | |
| | | $table = new html_table($attrib); |
| | | |
| | | // add table header |
| | | $table->add_header('name', rcube_label('plugin')); |
| | | $table->add_header('version', rcube_label('version')); |
| | | $table->add_header('license', rcube_label('license')); |
| | | $table->add_header('source', rcube_label('source')); |
| | | $table->add_header('name', $RCMAIL->gettext('plugin')); |
| | | $table->add_header('version', $RCMAIL->gettext('version')); |
| | | $table->add_header('license', $RCMAIL->gettext('license')); |
| | | $table->add_header('source', $RCMAIL->gettext('source')); |
| | | |
| | | foreach ($plugin_info as $name => $data) { |
| | | $uri = $data['src_uri'] ? $data['src_uri'] : $data['uri']; |
| | |
| | | } |
| | | |
| | | $table->add_row(); |
| | | $table->add('name', Q($data['name'] ? $data['name'] : $name)); |
| | | $table->add('version', Q($data['version'])); |
| | | $table->add('license', $data['license_uri'] ? html::a(array('target' => '_blank', href=> Q($data['license_uri'])), |
| | | Q($data['license'])) : $data['license']); |
| | | $table->add('source', $uri ? html::a(array('target' => '_blank', href=> Q($uri)), |
| | | Q(rcube_label('download'))) : ''); |
| | | $table->add('name', rcube::Q($data['name'] ? $data['name'] : $name)); |
| | | $table->add('version', rcube::Q($data['version'])); |
| | | $table->add('license', $data['license_uri'] ? html::a(array('target' => '_blank', href=> rcube::Q($data['license_uri'])), |
| | | rcube::Q($data['license'])) : $data['license']); |
| | | $table->add('source', $uri ? html::a(array('target' => '_blank', href=> rcube::Q($uri)), |
| | | rcube::Q($RCMAIL->gettext('download'))) : ''); |
| | | } |
| | | |
| | | return $table->show(); |
| | | } |
| | | |
| | | |
| | | $OUTPUT->set_pagetitle(rcube_label('about')); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('about')); |
| | | |
| | | $OUTPUT->add_handler('supportlink', 'rcmail_supportlink'); |
| | | $OUTPUT->add_handler('pluginlist', 'rcmail_plugins_list'); |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | $iid = get_input_value('_iid', RCUBE_INPUT_GPC); |
| | | $iid = rcube_utils::get_input_value('_iid', rcube_utils::INPUT_GPC); |
| | | |
| | | // check request token |
| | | if (!$OUTPUT->ajax_call && !$RCMAIL->check_request(RCUBE_INPUT_GPC)) { |
| | | if (!$OUTPUT->ajax_call && !$RCMAIL->check_request(rcube_utils::INPUT_GPC)) { |
| | | $OUTPUT->show_message('invalidrequest', 'error'); |
| | | rcmail_overwrite_action('identities'); |
| | | $RCMAIL->overwrite_action('identities'); |
| | | return; |
| | | } |
| | | |
| | | if ($iid && preg_match('/^[0-9]+(,[0-9]+)*$/', $iid)) |
| | | { |
| | | $plugin = $RCMAIL->plugins->exec_hook('identity_delete', array('id' => $iid)); |
| | | |
| | | |
| | | $deleted = !$plugin['abort'] ? $RCMAIL->user->delete_identity($iid) : $plugin['result']; |
| | | |
| | | if ($deleted > 0 && $deleted !== false) |
| | |
| | | exit; |
| | | |
| | | // go to identities page |
| | | rcmail_overwrite_action('identities'); |
| | | $RCMAIL->overwrite_action('identities'); |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | // WARNING: folder names in UI are encoded with RCMAIL_CHARSET |
| | | // WARNING: folder names in UI are encoded with RCUBE_CHARSET |
| | | |
| | | function rcmail_folder_form($attrib) |
| | | { |
| | |
| | | $storage = $RCMAIL->get_storage(); |
| | | |
| | | // edited folder name (empty in create-folder mode) |
| | | $mbox = get_input_value('_mbox', RCUBE_INPUT_GPC, true); |
| | | $mbox_imap = rcube_charset_convert($mbox, RCMAIL_CHARSET, 'UTF7-IMAP'); |
| | | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true); |
| | | $mbox_imap = rcube_charset::convert($mbox, RCUBE_CHARSET, 'UTF7-IMAP'); |
| | | |
| | | // predefined path for new folder |
| | | $parent = get_input_value('_path', RCUBE_INPUT_GPC, true); |
| | | $parent_imap = rcube_charset_convert($parent, RCMAIL_CHARSET, 'UTF7-IMAP'); |
| | | $parent = rcube_utils::get_input_value('_path', rcube_utils::INPUT_GPC, true); |
| | | $parent_imap = rcube_charset::convert($parent, RCUBE_CHARSET, 'UTF7-IMAP'); |
| | | |
| | | $threading_supported = $storage->get_capability('THREAD'); |
| | | $delimiter = $storage->get_hierarchy_delimiter(); |
| | |
| | | $path = explode($delimiter, $mbox_imap); |
| | | $folder = array_pop($path); |
| | | $path = implode($delimiter, $path); |
| | | $folder = rcube_charset_convert($folder, 'UTF7-IMAP'); |
| | | $folder = rcube_charset::convert($folder, 'UTF7-IMAP'); |
| | | |
| | | $hidden_fields = array('name' => '_mbox', 'value' => $mbox); |
| | | } |
| | |
| | | |
| | | // General tab |
| | | $form['props'] = array( |
| | | 'name' => rcube_label('properties'), |
| | | 'name' => $RCMAIL->gettext('properties'), |
| | | ); |
| | | |
| | | // Location (name) |
| | | if ($options['protected']) { |
| | | $foldername = str_replace($delimiter, ' » ', Q(rcmail_localize_folderpath($mbox_imap))); |
| | | $foldername = str_replace($delimiter, ' » ', rcube::Q($RCMAIL->localize_folderpath($mbox_imap))); |
| | | } |
| | | else if ($options['norename']) { |
| | | $foldername = Q($folder); |
| | | $foldername = rcube::Q($folder); |
| | | } |
| | | else { |
| | | if (isset($_POST['_name'])) |
| | | $folder = trim(get_input_value('_name', RCUBE_INPUT_POST, true)); |
| | | $folder = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true)); |
| | | |
| | | $foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30)); |
| | | $foldername = $foldername->show($folder); |
| | | |
| | | if ($options['special']) { |
| | | $foldername .= ' (' . Q(rcmail_localize_foldername($mbox_imap)) .')'; |
| | | $foldername .= ' (' . rcube::Q($RCMAIL->localize_foldername($mbox_imap)) .')'; |
| | | } |
| | | } |
| | | |
| | | $form['props']['fieldsets']['location'] = array( |
| | | 'name' => rcube_label('location'), |
| | | 'name' => $RCMAIL->gettext('location'), |
| | | 'content' => array( |
| | | 'name' => array( |
| | | 'label' => rcube_label('foldername'), |
| | | 'label' => $RCMAIL->gettext('foldername'), |
| | | 'value' => $foldername, |
| | | ), |
| | | ), |
| | |
| | | $exceptions[] = substr($prefix, 0, -1); |
| | | } |
| | | |
| | | $select = rcmail_mailbox_select(array( |
| | | $select = $RCMAIL->folder_selector(array( |
| | | 'name' => '_parent', |
| | | 'noselection' => '---', |
| | | 'realnames' => false, |
| | |
| | | )); |
| | | |
| | | $form['props']['fieldsets']['location']['content']['path'] = array( |
| | | 'label' => rcube_label('parentfolder'), |
| | | 'label' => $RCMAIL->gettext('parentfolder'), |
| | | 'value' => $select->show($selected), |
| | | ); |
| | | } |
| | | |
| | | // Settings |
| | | $form['props']['fieldsets']['settings'] = array( |
| | | 'name' => rcube_label('settings'), |
| | | 'name' => $RCMAIL->gettext('settings'), |
| | | ); |
| | | |
| | | // Settings: threading |
| | | if ($threading_supported && ($mbox_imap == 'INBOX' || (!$options['noselect'] && !$options['is_root']))) { |
| | | $select = new html_select(array('name' => '_viewmode', 'id' => '_listmode')); |
| | | $select->add(rcube_label('list'), 0); |
| | | $select->add(rcube_label('threads'), 1); |
| | | $select->add($RCMAIL->gettext('list'), 0); |
| | | $select->add($RCMAIL->gettext('threads'), 1); |
| | | |
| | | if (isset($_POST['_viewmode'])) { |
| | | $value = (int) $_POST['_viewmode']; |
| | |
| | | } |
| | | |
| | | $form['props']['fieldsets']['settings']['content']['viewmode'] = array( |
| | | 'label' => rcube_label('listmode'), |
| | | 'label' => $RCMAIL->gettext('listmode'), |
| | | 'value' => $select->show($value), |
| | | ); |
| | | } |
| | | /* |
| | | // Settings: sorting column |
| | | $select = new html_select(array('name' => '_sortcol', 'id' => '_sortcol')); |
| | | $select->add(rcube_label('nonesort'), ''); |
| | | $select->add(rcube_label('arrival'), 'arrival'); |
| | | $select->add(rcube_label('sentdate'), 'date'); |
| | | $select->add(rcube_label('subject'), 'subject'); |
| | | $select->add(rcube_label('fromto'), 'from'); |
| | | $select->add(rcube_label('replyto'), 'replyto'); |
| | | $select->add(rcube_label('cc'), 'cc'); |
| | | $select->add(rcube_label('size'), 'size'); |
| | | $select->add($RCMAIL->gettext('nonesort'), ''); |
| | | $select->add($RCMAIL->gettext('arrival'), 'arrival'); |
| | | $select->add($RCMAIL->gettext('sentdate'), 'date'); |
| | | $select->add($RCMAIL->gettext('subject'), 'subject'); |
| | | $select->add($RCMAIL->gettext('fromto'), 'from'); |
| | | $select->add($RCMAIL->gettext('replyto'), 'replyto'); |
| | | $select->add($RCMAIL->gettext('cc'), 'cc'); |
| | | $select->add($RCMAIL->gettext('size'), 'size'); |
| | | |
| | | $value = isset($_POST['_sortcol']) ? $_POST['_sortcol'] : ''; |
| | | |
| | | $form['props']['fieldsets']['settings']['content']['sortcol'] = array( |
| | | 'label' => rcube_label('listsorting'), |
| | | 'label' => $RCMAIL->gettext('listsorting'), |
| | | 'value' => $select->show($value), |
| | | ); |
| | | |
| | | // Settings: sorting order |
| | | $select = new html_select(array('name' => '_sortord', 'id' => '_sortord')); |
| | | $select->add(rcube_label('asc'), 'ASC'); |
| | | $select->add(rcube_label('desc'), 'DESC'); |
| | | $select->add($RCMAIL->gettext('asc'), 'ASC'); |
| | | $select->add($RCMAIL->gettext('desc'), 'DESC'); |
| | | |
| | | $value = isset($_POST['_sortord']) ? $_POST['_sortord'] : ''; |
| | | |
| | | $form['props']['fieldsets']['settings']['content']['sortord'] = array( |
| | | 'label' => rcube_label('listorder'), |
| | | 'label' => $RCMAIL->gettext('listorder'), |
| | | 'value' => $select->show(), |
| | | ); |
| | | */ |
| | |
| | | if (strlen($mbox)) { |
| | | // Number of messages |
| | | $form['props']['fieldsets']['info'] = array( |
| | | 'name' => rcube_label('info'), |
| | | 'name' => $RCMAIL->gettext('info'), |
| | | 'content' => array() |
| | | ); |
| | | |
| | |
| | | if ($msgcount) { |
| | | // create link with folder-size command |
| | | $onclick = sprintf("return %s.command('folder-size', '%s', this)", |
| | | JS_OBJECT_NAME, JQ($mbox_imap)); |
| | | rcmail_output::JS_OBJECT_NAME, rcube::JQ($mbox_imap)); |
| | | $size = html::a(array('href' => '#', 'onclick' => $onclick, |
| | | 'id' => 'folder-size'), rcube_label('getfoldersize')); |
| | | 'id' => 'folder-size'), $RCMAIL->gettext('getfoldersize')); |
| | | } |
| | | else { |
| | | // no messages -> zero size |
| | |
| | | } |
| | | |
| | | $form['props']['fieldsets']['info']['content']['count'] = array( |
| | | 'label' => rcube_label('messagecount'), |
| | | 'label' => $RCMAIL->gettext('messagecount'), |
| | | 'value' => (int) $msgcount |
| | | ); |
| | | $form['props']['fieldsets']['info']['content']['size'] = array( |
| | | 'label' => rcube_label('size'), |
| | | 'label' => $RCMAIL->gettext('size'), |
| | | 'value' => $size, |
| | | ); |
| | | } |
| | |
| | | // show folder type only if we have non-private namespaces |
| | | if (!empty($namespace['shared']) || !empty($namespace['others'])) { |
| | | $form['props']['fieldsets']['info']['content']['foldertype'] = array( |
| | | 'label' => rcube_label('foldertype'), |
| | | 'value' => rcube_label($options['namespace'] . 'folder')); |
| | | 'label' => $RCMAIL->gettext('foldertype'), |
| | | 'value' => $RCMAIL->gettext($options['namespace'] . 'folder')); |
| | | } |
| | | } |
| | | |
| | |
| | | foreach ($tab['fieldsets'] as $fieldset) { |
| | | $subcontent = rcmail_get_form_part($fieldset, $attrib); |
| | | if ($subcontent) { |
| | | $content .= html::tag('fieldset', null, html::tag('legend', null, Q($fieldset['name'])) . $subcontent) ."\n"; |
| | | $content .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($fieldset['name'])) . $subcontent) ."\n"; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | if ($content && sizeof($form) > 1) { |
| | | $out .= html::tag('fieldset', null, html::tag('legend', null, Q($tab['name'])) . $content) ."\n"; |
| | | $out .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($tab['name'])) . $content) ."\n"; |
| | | } |
| | | else { |
| | | $out .= $content ."\n"; |
| | |
| | | $table = new html_table(array('cols' => 2)); |
| | | foreach ($form['content'] as $col => $colprop) { |
| | | $colprop['id'] = '_'.$col; |
| | | $label = !empty($colprop['label']) ? $colprop['label'] : rcube_label($col); |
| | | $label = !empty($colprop['label']) ? $colprop['label'] : $RCMAIL->gettext($col); |
| | | |
| | | $table->add('title', html::label($colprop['id'], Q($label))); |
| | | $table->add('title', html::label($colprop['id'], rcube::Q($label))); |
| | | $table->add(null, $colprop['value']); |
| | | } |
| | | $content = $table->show($attrib); |
| | |
| | | } |
| | | |
| | | |
| | | //$OUTPUT->set_pagetitle(rcube_label('folders')); |
| | | //$OUTPUT->set_pagetitle($RCMAIL->gettext('folders')); |
| | | |
| | | // register UI objects |
| | | $OUTPUT->add_handlers(array( |
| | |
| | | |
| | | // edit-identity |
| | | if (($_GET['_iid'] || $_POST['_iid']) && $RCMAIL->action=='edit-identity') { |
| | | $IDENTITY_RECORD = $RCMAIL->user->get_identity(get_input_value('_iid', RCUBE_INPUT_GPC)); |
| | | $IDENTITY_RECORD = $RCMAIL->user->get_identity(rcube_utils::get_input_value('_iid', rcube_utils::INPUT_GPC)); |
| | | |
| | | if (is_array($IDENTITY_RECORD)) |
| | | $OUTPUT->set_env('iid', $IDENTITY_RECORD['identity_id']); |
| | | else { |
| | | $OUTPUT->show_message('dberror', 'error'); |
| | | // go to identities page |
| | | rcmail_overwrite_action('identities'); |
| | | $RCMAIL->overwrite_action('identities'); |
| | | return; |
| | | } |
| | | } |
| | |
| | | if (IDENTITIES_LEVEL > 1) { |
| | | $OUTPUT->show_message('opnotpermitted', 'error'); |
| | | // go to identities page |
| | | rcmail_overwrite_action('identities'); |
| | | $RCMAIL->overwrite_action('identities'); |
| | | return; |
| | | } |
| | | else if (IDENTITIES_LEVEL == 1) { |
| | |
| | | global $IDENTITY_RECORD, $RCMAIL, $OUTPUT; |
| | | |
| | | // Add HTML editor script(s) |
| | | rcube_html_editor('identity'); |
| | | $RCMAIL->html_editor('identity'); |
| | | |
| | | // add some labels to client |
| | | $OUTPUT->add_label('noemailwarning', 'nonamewarning', 'converting', 'editorwarning'); |
| | |
| | | // list of available cols |
| | | $form = array( |
| | | 'addressing' => array( |
| | | 'name' => rcube_label('settings'), |
| | | 'name' => $RCMAIL->gettext('settings'), |
| | | 'content' => array( |
| | | 'name' => array('type' => 'text', 'size' => $i_size), |
| | | 'email' => array('type' => 'text', 'size' => $i_size), |
| | | 'organization' => array('type' => 'text', 'size' => $i_size), |
| | | 'reply-to' => array('type' => 'text', 'size' => $i_size), |
| | | 'bcc' => array('type' => 'text', 'size' => $i_size), |
| | | 'standard' => array('type' => 'checkbox', 'label' => rcube_label('setdefault')), |
| | | 'standard' => array('type' => 'checkbox', 'label' => $RCMAIL->gettext('setdefault')), |
| | | )), |
| | | 'signature' => array( |
| | | 'name' => rcube_label('signature'), |
| | | 'name' => $RCMAIL->gettext('signature'), |
| | | 'content' => array( |
| | | 'signature' => array('type' => 'textarea', 'size' => $t_cols, 'rows' => $t_rows, |
| | | 'spellcheck' => true), |
| | | 'html_signature' => array('type' => 'checkbox', 'label' => rcube_label('htmlsignature'), |
| | | 'html_signature' => array('type' => 'checkbox', 'label' => $RCMAIL->gettext('htmlsignature'), |
| | | 'onclick' => 'return rcmail_toggle_editor(this, \'rcmfd_signature\');'), |
| | | )) |
| | | ); |
| | |
| | | $form['signature']['content']['signature']['is_escaped'] = true; |
| | | |
| | | // Correctly handle HTML entities in HTML editor (#1488483) |
| | | $IDENTITY_RECORD['signature'] = htmlspecialchars($IDENTITY_RECORD['signature'], ENT_NOQUOTES, RCMAIL_CHARSET); |
| | | $IDENTITY_RECORD['signature'] = htmlspecialchars($IDENTITY_RECORD['signature'], ENT_NOQUOTES, RCUBE_CHARSET); |
| | | } |
| | | |
| | | // disable some field according to access level |
| | |
| | | } |
| | | } |
| | | |
| | | $IDENTITY_RECORD['email'] = rcube_idn_to_utf8($IDENTITY_RECORD['email']); |
| | | $IDENTITY_RECORD['email'] = rcube_utils::idn_to_utf8($IDENTITY_RECORD['email']); |
| | | |
| | | // Allow plugins to modify identity form content |
| | | $plugin = $RCMAIL->plugins->exec_hook('identity_form', array( |
| | |
| | | $colprop['id'] = 'rcmfd_'.$col; |
| | | |
| | | $label = !empty($colprop['label']) ? $colprop['label'] : |
| | | rcube_label(str_replace('-', '', $col)); |
| | | $RCMAIL->gettext(str_replace('-', '', $col)); |
| | | |
| | | $value = !empty($colprop['value']) ? $colprop['value'] : |
| | | rcmail_get_edit_field($col, $IDENTITY_RECORD[$col], $colprop, $colprop['type']); |
| | | rcube_output::get_edit_field($col, $IDENTITY_RECORD[$col], $colprop, $colprop['type']); |
| | | |
| | | $table->add('title', html::label($colprop['id'], Q($label))); |
| | | $table->add('title', html::label($colprop['id'], rcube::Q($label))); |
| | | $table->add(null, $value); |
| | | } |
| | | $content = $table->show($attrib); |
| | |
| | | $content = $fieldset['content']; |
| | | } |
| | | |
| | | $out .= html::tag('fieldset', null, html::tag('legend', null, Q($fieldset['name'])) . $content) ."\n"; |
| | | $out .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($fieldset['name'])) . $content) ."\n"; |
| | | } |
| | | |
| | | $out .= $form_end; |
| | |
| | | $OUTPUT->set_env('identities_level', IDENTITIES_LEVEL); |
| | | $OUTPUT->add_label('deleteidentityconfirm'); |
| | | |
| | | $OUTPUT->set_pagetitle(rcube_label(($RCMAIL->action=='add-identity' ? 'newidentity' : 'edititem'))); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext(($RCMAIL->action=='add-identity' ? 'newidentity' : 'edititem'))); |
| | | |
| | | if ($RCMAIL->action=='add-identity' && $OUTPUT->template_exists('identityadd')) |
| | | $OUTPUT->send('identityadd'); |
| | |
| | | */ |
| | | |
| | | if (!$OUTPUT->ajax_call) |
| | | $OUTPUT->set_pagetitle(rcube_label('preferences')); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('preferences')); |
| | | |
| | | |
| | | $CURR_SECTION = get_input_value('_section', RCUBE_INPUT_GPC); |
| | | $CURR_SECTION = rcube_utils::get_input_value('_section', rcube_utils::INPUT_GPC); |
| | | list($SECTIONS,) = rcmail_user_prefs($CURR_SECTION); |
| | | |
| | | function rcmail_user_prefs_form($attrib) |
| | |
| | | $responses = $RCMAIL->get_compose_responses(); |
| | | |
| | | // edit-response |
| | | if (($key = get_input_value('_key', RCUBE_INPUT_GPC))) { |
| | | if (($key = rcube_utils::get_input_value('_key', rcube_utils::INPUT_GPC))) { |
| | | foreach ($responses as $i => $response) { |
| | | if ($response['key'] == $key) { |
| | | $RESPONSE_RECORD = $response; |
| | |
| | | |
| | | // save response |
| | | if ($RCMAIL->action == 'save-response' && isset($_POST['_name']) && !$RESPONSE_RECORD['static']) { |
| | | $name = trim(get_input_value('_name', RCUBE_INPUT_POST)); |
| | | $text = trim(get_input_value('_text', RCUBE_INPUT_POST)); |
| | | $name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST)); |
| | | $text = trim(rcube_utils::get_input_value('_text', rcube_utils::INPUT_POST)); |
| | | |
| | | if (!empty($name) && !empty($text)) { |
| | | $dupes = 0; |
| | |
| | | $out = "$form_start\n"; |
| | | |
| | | $table = new html_table(array('cols' => 2)); |
| | | $label = rcube_label('responsename'); |
| | | $label = $RCMAIL->gettext('responsename'); |
| | | |
| | | $table->add('title', html::label('ffname', Q(rcube_label('responsename')))); |
| | | $table->add('title', html::label('ffname', rcube::Q($RCMAIL->gettext('responsename')))); |
| | | $table->add(null, rcube_output::get_edit_field('name', $RESPONSE_RECORD['name'], array('id' => 'ffname', 'size' => $attrib['size'], 'disabled' => $disabled), 'text')); |
| | | |
| | | $table->add('title', html::label('fftext', Q(rcube_label('responsetext')))); |
| | | $table->add('title', html::label('fftext', rcube::Q($RCMAIL->gettext('responsetext')))); |
| | | $table->add(null, rcube_output::get_edit_field('text', $RESPONSE_RECORD['text'], array('id' => 'fftext', 'size' => $attrib['textareacols'], 'rows' => $attrib['textarearows'], 'disabled' => $disabled), 'textarea')); |
| | | |
| | | $out .= $table->show($attrib); |
| | |
| | | |
| | | $OUTPUT->set_env('readonly', !empty($RESPONSE_RECORD['static'])); |
| | | $OUTPUT->add_handler('responseform', 'rcube_response_form'); |
| | | $OUTPUT->set_pagetitle(rcube_label(($RCMAIL->action=='add-response' ? 'savenewresponse' : 'editresponse'))); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext($RCMAIL->action == 'add-response' ? 'savenewresponse' : 'editresponse')); |
| | | |
| | | $OUTPUT->send('responseedit'); |
| | | |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | // WARNING: folder names in UI are encoded with RCMAIL_CHARSET |
| | | // WARNING: folder names in UI are encoded with RCUBE_CHARSET |
| | | |
| | | // init IMAP connection |
| | | $STORAGE = $RCMAIL->get_storage(); |
| | |
| | | // subscribe mailbox |
| | | if ($RCMAIL->action == 'subscribe') |
| | | { |
| | | $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP'); |
| | | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true, 'UTF7-IMAP'); |
| | | if (strlen($mbox)) { |
| | | $result = $STORAGE->subscribe(array($mbox)); |
| | | |
| | |
| | | $OUTPUT->show_message('foldersubscribed', 'confirmation'); |
| | | } |
| | | else |
| | | rcmail_display_server_error('errorsaving'); |
| | | $RCMAIL->display_server_error('errorsaving'); |
| | | } |
| | | } |
| | | |
| | | // unsubscribe mailbox |
| | | else if ($RCMAIL->action == 'unsubscribe') |
| | | { |
| | | $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP'); |
| | | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true, 'UTF7-IMAP'); |
| | | if (strlen($mbox)) { |
| | | $result = $STORAGE->unsubscribe(array($mbox)); |
| | | if ($result) |
| | | $OUTPUT->show_message('folderunsubscribed', 'confirmation'); |
| | | else |
| | | rcmail_display_server_error('errorsaving'); |
| | | $RCMAIL->display_server_error('errorsaving'); |
| | | } |
| | | } |
| | | |
| | | // delete an existing mailbox |
| | | else if ($RCMAIL->action == 'delete-folder') |
| | | { |
| | | $mbox_utf8 = get_input_value('_mbox', RCUBE_INPUT_POST, true); |
| | | $mbox = rcube_charset_convert($mbox_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); |
| | | $mbox_utf8 = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true); |
| | | $mbox = rcube_charset::convert($mbox_utf8, RCUBE_CHARSET, 'UTF7-IMAP'); |
| | | |
| | | if (strlen($mbox)) { |
| | | $plugin = $RCMAIL->plugins->exec_hook('folder_delete', array('name' => $mbox)); |
| | |
| | | $OUTPUT->show_message('folderdeleted', 'confirmation'); |
| | | // Clear content frame |
| | | $OUTPUT->command('subscription_select'); |
| | | $OUTPUT->command('set_quota', rcmail_quota_content()); |
| | | $OUTPUT->command('set_quota', $RCMAIL->quota_content()); |
| | | } |
| | | else if (!$deleted) { |
| | | rcmail_display_server_error('errorsaving'); |
| | | $RCMAIL->display_server_error('errorsaving'); |
| | | } |
| | | } |
| | | |
| | | // rename an existing mailbox |
| | | else if ($RCMAIL->action == 'rename-folder') |
| | | { |
| | | $name_utf8 = trim(get_input_value('_folder_newname', RCUBE_INPUT_POST, true)); |
| | | $oldname_utf8 = get_input_value('_folder_oldname', RCUBE_INPUT_POST, true); |
| | | $name_utf8 = trim(rcube_utils::get_input_value('_folder_newname', rcube_utils::INPUT_POST, true)); |
| | | $oldname_utf8 = rcube_utils::get_input_value('_folder_oldname', rcube_utils::INPUT_POST, true); |
| | | |
| | | if (strlen($name_utf8) && strlen($oldname_utf8)) { |
| | | $name = rcube_charset_convert($name_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); |
| | | $oldname = rcube_charset_convert($oldname_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); |
| | | $name = rcube_charset::convert($name_utf8, RCUBE_CHARSET, 'UTF7-IMAP'); |
| | | $oldname = rcube_charset::convert($oldname_utf8, RCUBE_CHARSET, 'UTF7-IMAP'); |
| | | |
| | | $rename = rcmail_rename_folder($oldname, $name); |
| | | } |
| | |
| | | rcmail_update_folder_row($name, $oldname); |
| | | } |
| | | else if (!$rename) { |
| | | rcmail_display_server_error('errorsaving'); |
| | | $RCMAIL->display_server_error('errorsaving'); |
| | | } |
| | | } |
| | | |
| | | // clear mailbox |
| | | else if ($RCMAIL->action == 'purge') |
| | | { |
| | | $mbox_utf8 = get_input_value('_mbox', RCUBE_INPUT_POST, true); |
| | | $mbox = rcube_charset_convert($mbox_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); |
| | | $mbox_utf8 = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true); |
| | | $mbox = rcube_charset::convert($mbox_utf8, RCUBE_CHARSET, 'UTF7-IMAP'); |
| | | $delimiter = $STORAGE->get_hierarchy_delimiter(); |
| | | $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/'; |
| | | |
| | |
| | | $OUTPUT->set_env('messagecount', 0); |
| | | if ($delete) { |
| | | $OUTPUT->show_message('folderpurged', 'confirmation'); |
| | | $OUTPUT->command('set_quota', rcmail_quota_content()); |
| | | $OUTPUT->command('set_quota', $RCMAIL->quota_content()); |
| | | } |
| | | else { |
| | | $OUTPUT->show_message('messagemoved', 'confirmation'); |
| | |
| | | $OUTPUT->command('show_folder', $mbox_utf8, null, true); |
| | | } |
| | | else { |
| | | rcmail_display_server_error('errorsaving'); |
| | | $RCMAIL->display_server_error('errorsaving'); |
| | | } |
| | | } |
| | | |
| | | // get mailbox size |
| | | else if ($RCMAIL->action == 'folder-size') |
| | | { |
| | | $name = get_input_value('_mbox', RCUBE_INPUT_POST, true); |
| | | $name = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true); |
| | | |
| | | $size = $STORAGE->folder_size($name); |
| | | |
| | | // @TODO: check quota and show percentage usage of specified mailbox? |
| | | |
| | | if ($size !== false) { |
| | | $OUTPUT->command('folder_size_update', show_bytes($size)); |
| | | $OUTPUT->command('folder_size_update', $RCMAIL->show_bytes($size)); |
| | | } |
| | | else { |
| | | rcmail_display_server_error(); |
| | | $RCMAIL->display_server_error(); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | if ($attrib['noheader'] !== true && $attrib['noheader'] != "true") { |
| | | // add table header |
| | | $table->add_header('name', rcube_label('foldername')); |
| | | $table->add_header('name', $RCMAIL->gettext('foldername')); |
| | | $table->add_header('subscribed', ''); |
| | | } |
| | | |
| | |
| | | $folder_id = $folder; |
| | | $folder = $STORAGE->mod_folder($folder); |
| | | $foldersplit = explode($delimiter, $folder); |
| | | $name = rcube_charset_convert(array_pop($foldersplit), 'UTF7-IMAP'); |
| | | $name = rcube_charset::convert(array_pop($foldersplit), 'UTF7-IMAP'); |
| | | $parent_folder = join($delimiter, $foldersplit); |
| | | $level = count($foldersplit); |
| | | |
| | |
| | | for ($i=1; $i<=$level; $i++) { |
| | | $ancestor_folder = join($delimiter, array_slice($foldersplit, 0, $i)); |
| | | if ($ancestor_folder && !$seen[$ancestor_folder]++) { |
| | | $ancestor_name = rcube_charset_convert($foldersplit[$i-1], 'UTF7-IMAP'); |
| | | $ancestor_name = rcube_charset::convert($foldersplit[$i-1], 'UTF7-IMAP'); |
| | | $list_folders[] = array( |
| | | 'id' => $ancestor_folder, |
| | | 'name' => $ancestor_name, |
| | |
| | | |
| | | $checkbox_subscribe = new html_checkbox(array( |
| | | 'name' => '_subscribed[]', |
| | | 'title' => rcube_label('changesubscription'), |
| | | 'onclick' => JS_OBJECT_NAME.".command(this.checked?'subscribe':'unsubscribe',this.value)", |
| | | 'title' => $RCMAIL->gettext('changesubscription'), |
| | | 'onclick' => rcmail_output::JS_OBJECT_NAME.".command(this.checked?'subscribe':'unsubscribe',this.value)", |
| | | )); |
| | | |
| | | // create list of available folders |
| | |
| | | $noselect = false; |
| | | $classes = array($i%2 ? 'even' : 'odd'); |
| | | |
| | | $folder_utf8 = rcube_charset_convert($folder['id'], 'UTF7-IMAP'); |
| | | $folder_utf8 = rcube_charset::convert($folder['id'], 'UTF7-IMAP'); |
| | | $display_folder = str_repeat(' ', $folder['level']) |
| | | . Q($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']); |
| | | . rcube::Q($protected ? $RCMAIL->localize_foldername($folder['id']) : $folder['name']); |
| | | |
| | | if ($folder['virtual']) { |
| | | $classes[] = 'virtual'; |
| | |
| | | } |
| | | |
| | | |
| | | $OUTPUT->set_pagetitle(rcube_label('folders')); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('folders')); |
| | | $OUTPUT->include_script('list.js'); |
| | | $OUTPUT->set_env('prefix_ns', $STORAGE->get_namespace('prefix')); |
| | | if ($STORAGE->get_capability('QUOTA')) { |
| | |
| | | // register UI objects |
| | | $OUTPUT->add_handlers(array( |
| | | 'foldersubscription' => 'rcube_subscription_form', |
| | | 'folderframe' => 'rcmail_folder_frame', |
| | | 'quotadisplay' => 'rcmail_quota_display', |
| | | 'folderframe' => 'rcmail_folder_frame', |
| | | 'quotadisplay' => array($RCMAIL, 'quota_display'), |
| | | )); |
| | | |
| | | $OUTPUT->send('folders'); |
| | | |
| | |
| | | */ |
| | | |
| | | if (!$OUTPUT->ajax_call) { |
| | | $OUTPUT->set_pagetitle(rcube_label('preferences')); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('preferences')); |
| | | } |
| | | |
| | | // similar function as /steps/settings/identities.inc::rcmail_identity_frame() |
| | |
| | | list($list, $cols) = rcmail_user_prefs(); |
| | | |
| | | // create XHTML table |
| | | $out = rcube_table_output($attrib, $list, $cols, 'id'); |
| | | $out = $RCMAIL->table_output($attrib, $list, $cols, 'id'); |
| | | |
| | | // set client env |
| | | $RCMAIL->output->add_gui_object('sectionslist', $attrib['id']); |
| | |
| | | // get identities list and define 'mail' column |
| | | $list = $RCMAIL->user->list_identities(); |
| | | foreach ($list as $idx => $row) { |
| | | $list[$idx]['mail'] = trim($row['name'] . ' <' . rcube_idn_to_utf8($row['email']) .'>'); |
| | | $list[$idx]['mail'] = trim($row['name'] . ' <' . rcube_utils::idn_to_utf8($row['email']) .'>'); |
| | | } |
| | | |
| | | // get all identites from DB and define list of cols to be displayed |
| | |
| | | |
| | | // @TODO: use <UL> instead of <TABLE> for identities list |
| | | // create XHTML table |
| | | $out = rcube_table_output($attrib, $plugin['list'], $plugin['cols'], 'identity_id'); |
| | | $out = $RCMAIL->table_output($attrib, $plugin['list'], $plugin['cols'], 'identity_id'); |
| | | |
| | | // set client env |
| | | $OUTPUT->add_gui_object('identitieslist', $attrib['id']); |
| | |
| | | { |
| | | global $RCMAIL; |
| | | |
| | | $sections['general'] = array('id' => 'general', 'section' => rcube_label('uisettings')); |
| | | $sections['mailbox'] = array('id' => 'mailbox', 'section' => rcube_label('mailboxview')); |
| | | $sections['mailview'] = array('id' => 'mailview','section' => rcube_label('messagesdisplaying')); |
| | | $sections['compose'] = array('id' => 'compose', 'section' => rcube_label('messagescomposition')); |
| | | $sections['addressbook'] = array('id' => 'addressbook','section' => rcube_label('addressbook')); |
| | | $sections['folders'] = array('id' => 'folders', 'section' => rcube_label('specialfolders')); |
| | | $sections['server'] = array('id' => 'server', 'section' => rcube_label('serversettings')); |
| | | $sections['general'] = array('id' => 'general', 'section' => $RCMAIL->gettext('uisettings')); |
| | | $sections['mailbox'] = array('id' => 'mailbox', 'section' => $RCMAIL->gettext('mailboxview')); |
| | | $sections['mailview'] = array('id' => 'mailview','section' => $RCMAIL->gettext('messagesdisplaying')); |
| | | $sections['compose'] = array('id' => 'compose', 'section' => $RCMAIL->gettext('messagescomposition')); |
| | | $sections['addressbook'] = array('id' => 'addressbook','section' => $RCMAIL->gettext('addressbook')); |
| | | $sections['folders'] = array('id' => 'folders', 'section' => $RCMAIL->gettext('specialfolders')); |
| | | $sections['server'] = array('id' => 'server', 'section' => $RCMAIL->gettext('serversettings')); |
| | | |
| | | // hook + define list cols |
| | | $plugin = $RCMAIL->plugins->exec_hook('preferences_sections_list', |
| | |
| | | // general |
| | | case 'general': |
| | | $blocks = array( |
| | | 'main' => array('name' => Q(rcube_label('mainoptions'))), |
| | | 'skin' => array('name' => Q(rcube_label('skin'))), |
| | | 'browser' => array('name' => Q(rcube_label('browseroptions'))), |
| | | 'advanced'=> array('name' => Q(rcube_label('advancedoptions'))), |
| | | 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))), |
| | | 'skin' => array('name' => rcube::Q($RCMAIL->gettext('skin'))), |
| | | 'browser' => array('name' => rcube::Q($RCMAIL->gettext('browseroptions'))), |
| | | 'advanced'=> array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))), |
| | | ); |
| | | |
| | | // language selection |
| | |
| | | $select->add(array_values($a_lang), array_keys($a_lang)); |
| | | |
| | | $blocks['main']['options']['language'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('language'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('language'))), |
| | | 'content' => $select->show($RCMAIL->user->language), |
| | | ); |
| | | } |
| | |
| | | |
| | | $field_id = 'rcmfd_timezone'; |
| | | $select = new html_select(array('name' => '_timezone', 'id' => $field_id)); |
| | | $select->add(rcube_label('autodetect'), 'auto'); |
| | | $select->add($RCMAIL->gettext('autodetect'), 'auto'); |
| | | |
| | | $zones = array(); |
| | | foreach (DateTimeZone::listIdentifiers() as $i => $tzs) { |
| | |
| | | } |
| | | |
| | | $blocks['main']['options']['timezone'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('timezone'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('timezone'))), |
| | | 'content' => $select->show((string)$config['timezone']), |
| | | ); |
| | | } |
| | |
| | | } |
| | | |
| | | $blocks['main']['options']['time_format'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('timeformat'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('timeformat'))), |
| | | 'content' => $select->show($RCMAIL->config->get('time_format')), |
| | | ); |
| | | } |
| | |
| | | } |
| | | |
| | | $blocks['main']['options']['date_format'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('dateformat'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('dateformat'))), |
| | | 'content' => $select->show($config['date_format']), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_pretty_date', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['prettydate'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('prettydate'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('prettydate'))), |
| | | 'content' => $input->show($config['prettydate']?1:0), |
| | | ); |
| | | } |
| | |
| | | $field_id = 'rcmfd_refresh_interval'; |
| | | $select = new html_select(array('name' => '_refresh_interval', 'id' => $field_id)); |
| | | |
| | | $select->add(rcube_label('never'), 0); |
| | | $select->add($RCMAIL->gettext('never'), 0); |
| | | foreach (array(1, 3, 5, 10, 15, 30, 60) as $min) { |
| | | if (!$config['min_refresh_interval'] || $config['min_refresh_interval'] <= $min * 60) { |
| | | $label = rcube_label(array('name' => 'everynminutes', 'vars' => array('n' => $min))); |
| | | $label = $RCMAIL->gettext(array('name' => 'everynminutes', 'vars' => array('n' => $min))); |
| | | $select->add($label, $min); |
| | | } |
| | | } |
| | | |
| | | $blocks['main']['options']['refresh_interval'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('refreshinterval'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('refreshinterval'))), |
| | | 'content' => $select->show($config['refresh_interval']/60), |
| | | ); |
| | | } |
| | |
| | | |
| | | if (is_array($meta) && $meta['name']) { |
| | | $skinname = $meta['name']; |
| | | $author_link = $meta['url'] ? html::a(array('href' => $meta['url'], 'target' => '_blank'), Q($meta['author'])) : Q($meta['author']); |
| | | $license_link = $meta['license-url'] ? html::a(array('href' => $meta['license-url'], 'target' => '_blank'), Q($meta['license'])) : Q($meta['license']); |
| | | $author_link = $meta['url'] ? html::a(array('href' => $meta['url'], 'target' => '_blank'), rcube::Q($meta['author'])) : rcube::Q($meta['author']); |
| | | $license_link = $meta['license-url'] ? html::a(array('href' => $meta['license-url'], 'target' => '_blank'), rcube::Q($meta['license'])) : rcube::Q($meta['license']); |
| | | } |
| | | |
| | | $blocks['skin']['options'][$skin]['content'] = html::label(array('class' => 'skinselection'), |
| | | html::span('skinitem', $input->show($config['skin'], array('value' => $skin, 'id' => $field_id.$skin))) . |
| | | html::span('skinitem', html::img(array('src' => $thumbnail, 'class' => 'skinthumbnail', 'alt' => $skin, 'width' => 64, 'height' => 64))) . |
| | | html::span('skinitem', html::span('skinname', Q($skinname)) . html::br() . |
| | | html::span('skinitem', html::span('skinname', rcube::Q($skinname)) . html::br() . |
| | | html::span('skinauthor', $author_link ? 'by ' . $author_link : '') . html::br() . |
| | | html::span('skinlicense', $license_link ? rcube_label('license').': ' . $license_link : '')) |
| | | html::span('skinlicense', $license_link ? $RCMAIL->gettext('license').': ' . $license_link : '')) |
| | | ); |
| | | } |
| | | } |
| | |
| | | $checkbox = new html_checkbox(array('name' => '_standard_windows', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['browser']['options']['standard_windows'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('standardwindows'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('standardwindows'))), |
| | | 'content' => $checkbox->show($config['standard_windows']?1:0), |
| | | ); |
| | | } |
| | |
| | | if ($current) { |
| | | $product_name = $RCMAIL->config->get('product_name', 'Roundcube Webmail'); |
| | | $RCMAIL->output->add_script(sprintf("%s.check_protocol_handler('%s', '#mailtoprotohandler');", |
| | | JS_OBJECT_NAME, JQ($product_name)), 'foot'); |
| | | rcmail_output::JS_OBJECT_NAME, rcube::JQ($product_name)), 'foot'); |
| | | } |
| | | |
| | | $blocks['browser']['options']['mailtoprotohandler'] = array( |
| | | 'content' => html::a(array( |
| | | 'href' => '#', |
| | | 'id' => 'mailtoprotohandler'), Q(rcube_label('mailtoprotohandler'))), |
| | | 'id' => 'mailtoprotohandler'), rcube::Q($RCMAIL->gettext('mailtoprotohandler'))), |
| | | ); |
| | | |
| | | break; |
| | |
| | | // Mailbox view (mail screen) |
| | | case 'mailbox': |
| | | $blocks = array( |
| | | 'main' => array('name' => Q(rcube_label('mainoptions'))), |
| | | 'new_message' => array('name' => Q(rcube_label('newmessage'))), |
| | | 'advanced' => array('name' => Q(rcube_label('advancedoptions'))), |
| | | 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))), |
| | | 'new_message' => array('name' => rcube::Q($RCMAIL->gettext('newmessage'))), |
| | | 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))), |
| | | ); |
| | | |
| | | // show config parameter for preview pane |
| | |
| | | 'onchange' => "$('#rcmfd_preview_pane_mark_read').prop('disabled', !this.checked)")); |
| | | |
| | | $blocks['main']['options']['preview_pane'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('previewpane'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('previewpane'))), |
| | | 'content' => $input->show($config['preview_pane']?1:0), |
| | | ); |
| | | } |
| | |
| | | $select = new html_select(array('name' => '_preview_pane_mark_read', 'id' => $field_id, |
| | | 'disabled' => $config['preview_pane']?0:1)); |
| | | |
| | | $select->add(rcube_label('never'), '-1'); |
| | | $select->add(rcube_label('immediately'), 0); |
| | | $select->add($RCMAIL->gettext('never'), '-1'); |
| | | $select->add($RCMAIL->gettext('immediately'), 0); |
| | | |
| | | foreach (array(5, 10, 20, 30) as $sec) { |
| | | $label = rcube_label(array('name' => 'afternseconds', 'vars' => array('n' => $sec))); |
| | | $label = $RCMAIL->gettext(array('name' => 'afternseconds', 'vars' => array('n' => $sec))); |
| | | $select->add($label, $sec); |
| | | } |
| | | |
| | | $blocks['main']['options']['preview_pane_mark_read'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('previewpanemarkread'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('previewpanemarkread'))), |
| | | 'content' => $select->show(intval($config['preview_pane_mark_read'])), |
| | | ); |
| | | } |
| | |
| | | |
| | | $field_id = 'rcmfd_mdn_requests'; |
| | | $select = new html_select(array('name' => '_mdn_requests', 'id' => $field_id)); |
| | | $select->add(rcube_label('askuser'), 0); |
| | | $select->add(rcube_label('autosend'), 1); |
| | | $select->add(rcube_label('autosendknown'), 3); |
| | | $select->add(rcube_label('autosendknownignore'), 4); |
| | | $select->add(rcube_label('ignore'), 2); |
| | | $select->add($RCMAIL->gettext('askuser'), 0); |
| | | $select->add($RCMAIL->gettext('autosend'), 1); |
| | | $select->add($RCMAIL->gettext('autosendknown'), 3); |
| | | $select->add($RCMAIL->gettext('autosendknownignore'), 4); |
| | | $select->add($RCMAIL->gettext('ignore'), 2); |
| | | |
| | | $blocks['main']['options']['mdn_requests'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('mdnrequests'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('mdnrequests'))), |
| | | 'content' => $select->show($config['mdn_requests']), |
| | | ); |
| | | } |
| | |
| | | if ($supported) { |
| | | $field_id = 'rcmfd_autoexpand_threads'; |
| | | $select = new html_select(array('name' => '_autoexpand_threads', 'id' => $field_id)); |
| | | $select->add(rcube_label('never'), 0); |
| | | $select->add(rcube_label('do_expand'), 1); |
| | | $select->add(rcube_label('expand_only_unread'), 2); |
| | | $select->add($RCMAIL->gettext('never'), 0); |
| | | $select->add($RCMAIL->gettext('do_expand'), 1); |
| | | $select->add($RCMAIL->gettext('expand_only_unread'), 2); |
| | | |
| | | $blocks['main']['options']['autoexpand_threads'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('autoexpand_threads'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('autoexpand_threads'))), |
| | | 'content' => $select->show($config['autoexpand_threads']), |
| | | ); |
| | | } |
| | |
| | | $size = intval($config['mail_pagesize'] ? $config['mail_pagesize'] : $config['pagesize']); |
| | | |
| | | $blocks['main']['options']['pagesize'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('pagesize'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('pagesize'))), |
| | | 'content' => $input->show($size ? $size : 50), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_check_all_folders', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['new_message']['options']['check_all_folders'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('checkallfolders'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('checkallfolders'))), |
| | | 'content' => $input->show($config['check_all_folders']?1:0), |
| | | ); |
| | | } |
| | |
| | | // Message viewing |
| | | case 'mailview': |
| | | $blocks = array( |
| | | 'main' => array('name' => Q(rcube_label('mainoptions'))), |
| | | 'advanced' => array('name' => Q(rcube_label('advancedoptions'))), |
| | | 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))), |
| | | 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))), |
| | | ); |
| | | |
| | | // show checkbox to open message view in new window |
| | |
| | | $input = new html_checkbox(array('name' => '_message_extwin', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['message_extwin'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('showinextwin'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('showinextwin'))), |
| | | 'content' => $input->show($config['message_extwin']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_message_show_email', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['message_show_email'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('showemail'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('showemail'))), |
| | | 'content' => $input->show($config['message_show_email']?1:0), |
| | | ); |
| | | } |
| | |
| | | 'onchange' => "$('#rcmfd_show_images').prop('disabled', !this.checked).val(0)")); |
| | | |
| | | $blocks['main']['options']['prefer_html'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('preferhtml'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('preferhtml'))), |
| | | 'content' => $input->show($config['prefer_html']?1:0), |
| | | ); |
| | | } |
| | |
| | | $field_id = 'rcmfd_default_charset'; |
| | | |
| | | $blocks['advanced']['options']['default_charset'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('defaultcharset'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('defaultcharset'))), |
| | | 'content' => $RCMAIL->output->charset_selector(array( |
| | | 'id' => $field_id, 'name' => '_default_charset', 'selected' => $config['default_charset'] |
| | | ))); |
| | |
| | | $input = new html_select(array('name' => '_show_images', 'id' => $field_id, |
| | | 'disabled' => !$config['prefer_html'])); |
| | | |
| | | $input->add(rcube_label('never'), 0); |
| | | $input->add(rcube_label('fromknownsenders'), 1); |
| | | $input->add(rcube_label('always'), 2); |
| | | $input->add($RCMAIL->gettext('never'), 0); |
| | | $input->add($RCMAIL->gettext('fromknownsenders'), 1); |
| | | $input->add($RCMAIL->gettext('always'), 2); |
| | | |
| | | $blocks['main']['options']['show_images'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('showremoteimages'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('showremoteimages'))), |
| | | 'content' => $input->show($config['prefer_html'] ? $config['show_images'] : 0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_inline_images', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['inline_images'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('showinlineimages'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('showinlineimages'))), |
| | | 'content' => $input->show($config['inline_images']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_display_next', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['display_next'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('displaynext'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('displaynext'))), |
| | | 'content' => $input->show($config['display_next']?1:0), |
| | | ); |
| | | } |
| | |
| | | // Mail composition |
| | | case 'compose': |
| | | $blocks = array( |
| | | 'main' => array('name' => Q(rcube_label('mainoptions'))), |
| | | 'sig' => array('name' => Q(rcube_label('signatureoptions'))), |
| | | 'spellcheck' => array('name' => Q(rcube_label('spellcheckoptions'))), |
| | | 'advanced' => array('name' => Q(rcube_label('advancedoptions'))), |
| | | 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))), |
| | | 'sig' => array('name' => rcube::Q($RCMAIL->gettext('signatureoptions'))), |
| | | 'spellcheck' => array('name' => rcube::Q($RCMAIL->gettext('spellcheckoptions'))), |
| | | 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))), |
| | | ); |
| | | |
| | | // show checkbox to compose messages in a new window |
| | |
| | | $input = new html_checkbox(array('name' => '_compose_extwin', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['compose_extwin'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('composeextwin'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('composeextwin'))), |
| | | 'content' => $input->show($config['compose_extwin']?1:0), |
| | | ); |
| | | } |
| | |
| | | $field_id = 'rcmfd_htmleditor'; |
| | | $select = new html_select(array('name' => '_htmleditor', 'id' => $field_id)); |
| | | |
| | | $select->add(rcube_label('never'), 0); |
| | | $select->add(rcube_label('always'), 1); |
| | | $select->add(rcube_label('htmlonreply'), 2); |
| | | $select->add(rcube_label('htmlonreplyandforward'), 3); |
| | | $select->add($RCMAIL->gettext('never'), 0); |
| | | $select->add($RCMAIL->gettext('always'), 1); |
| | | $select->add($RCMAIL->gettext('htmlonreply'), 2); |
| | | $select->add($RCMAIL->gettext('htmlonreplyandforward'), 3); |
| | | |
| | | $blocks['main']['options']['htmleditor'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('htmleditor'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('htmleditor'))), |
| | | 'content' => $select->show(intval($config['htmleditor'])), |
| | | ); |
| | | } |
| | |
| | | $field_id = 'rcmfd_autosave'; |
| | | $select = new html_select(array('name' => '_draft_autosave', 'id' => $field_id, 'disabled' => empty($config['drafts_mbox']))); |
| | | |
| | | $select->add(rcube_label('never'), 0); |
| | | $select->add($RCMAIL->gettext('never'), 0); |
| | | foreach (array(1, 3, 5, 10) as $i => $min) { |
| | | $label = rcube_label(array('name' => 'everynminutes', 'vars' => array('n' => $min))); |
| | | $label = $RCMAIL->gettext(array('name' => 'everynminutes', 'vars' => array('n' => $min))); |
| | | $select->add($label, $min*60); |
| | | } |
| | | |
| | | $blocks['main']['options']['draft_autosave'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('autosavedraft'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('autosavedraft'))), |
| | | 'content' => $select->show($config['draft_autosave']), |
| | | ); |
| | | } |
| | |
| | | $field_id = 'rcmfd_param_folding'; |
| | | $select = new html_select(array('name' => '_mime_param_folding', 'id' => $field_id)); |
| | | |
| | | $select->add(rcube_label('2231folding'), 0); |
| | | $select->add(rcube_label('miscfolding'), 1); |
| | | $select->add(rcube_label('2047folding'), 2); |
| | | $select->add($RCMAIL->gettext('2231folding'), 0); |
| | | $select->add($RCMAIL->gettext('miscfolding'), 1); |
| | | $select->add($RCMAIL->gettext('2047folding'), 2); |
| | | |
| | | $blocks['advanced']['options']['mime_param_folding'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('mimeparamfolding'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('mimeparamfolding'))), |
| | | 'content' => $select->show($config['mime_param_folding']), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_force_7bit', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['advanced']['options']['force_7bit'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('force7bit'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('force7bit'))), |
| | | 'content' => $input->show($config['force_7bit']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_mdn_default', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['mdn_default'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('reqmdn'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('reqmdn'))), |
| | | 'content' => $input->show($config['mdn_default']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_dsn_default', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['dsn_default'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('reqdsn'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('reqdsn'))), |
| | | 'content' => $input->show($config['dsn_default']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_reply_same_folder', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['reply_same_folder'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('replysamefolder'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('replysamefolder'))), |
| | | 'content' => $input->show($config['reply_same_folder']?1:0), |
| | | ); |
| | | } |
| | |
| | | $field_id = 'rcmfd_reply_mode'; |
| | | $select = new html_select(array('name' => '_reply_mode', 'id' => $field_id)); |
| | | |
| | | $select->add(rcube_label('replyempty'), -1); |
| | | $select->add(rcube_label('replybottomposting'), 0); |
| | | $select->add(rcube_label('replytopposting'), 1); |
| | | $select->add($RCMAIL->gettext('replyempty'), -1); |
| | | $select->add($RCMAIL->gettext('replybottomposting'), 0); |
| | | $select->add($RCMAIL->gettext('replytopposting'), 1); |
| | | |
| | | $blocks['main']['options']['reply_mode'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('whenreplying'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('whenreplying'))), |
| | | 'content' => $select->show(intval($config['reply_mode'])), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_spellcheck_before_send', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['spellcheck']['options']['spellcheck_before_send'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('spellcheckbeforesend'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('spellcheckbeforesend'))), |
| | | 'content' => $input->show($config['spellcheck_before_send']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_'.$key, 'id' => 'rcmfd_'.$key, 'value' => 1)); |
| | | |
| | | $blocks['spellcheck']['options'][$key] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label(str_replace('_', '', $key)))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext(str_replace('_', '', $key)))), |
| | | 'content' => $input->show($config[$key]?1:0), |
| | | ); |
| | | } |
| | |
| | | $field_id = 'rcmfd_show_sig'; |
| | | $select = new html_select(array('name' => '_show_sig', 'id' => $field_id)); |
| | | |
| | | $select->add(rcube_label('never'), 0); |
| | | $select->add(rcube_label('always'), 1); |
| | | $select->add(rcube_label('newmessageonly'), 2); |
| | | $select->add(rcube_label('replyandforwardonly'), 3); |
| | | $select->add($RCMAIL->gettext('never'), 0); |
| | | $select->add($RCMAIL->gettext('always'), 1); |
| | | $select->add($RCMAIL->gettext('newmessageonly'), 2); |
| | | $select->add($RCMAIL->gettext('replyandforwardonly'), 3); |
| | | |
| | | $blocks['sig']['options']['show_sig'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('autoaddsignature'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('autoaddsignature'))), |
| | | 'content' => $select->show($RCMAIL->config->get('show_sig', 1)), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_strip_existing_sig', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['sig']['options']['strip_existing_sig'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('replyremovesignature'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('replyremovesignature'))), |
| | | 'content' => $input->show($config['strip_existing_sig']?1:0), |
| | | ); |
| | | } |
| | |
| | | $field_id = 'rcmfd_forward_attachment'; |
| | | $select = new html_select(array('name' => '_forward_attachment', 'id' => $field_id)); |
| | | |
| | | $select->add(rcube_label('inline'), 0); |
| | | $select->add(rcube_label('asattachment'), 1); |
| | | $select->add($RCMAIL->gettext('inline'), 0); |
| | | $select->add($RCMAIL->gettext('asattachment'), 1); |
| | | |
| | | $blocks['main']['options']['forward_attachment'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('forwardmode'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('forwardmode'))), |
| | | 'content' => $select->show(intval($config['forward_attachment'])), |
| | | ); |
| | | } |
| | |
| | | $select_default_font = new html_select(array('name' => '_default_font', 'id' => $field_id)); |
| | | $select_default_font->add('', ''); |
| | | |
| | | $fonts = rcube_fontdefs(); |
| | | $fonts = rcmail::font_defs(); |
| | | foreach ($fonts as $fname => $font) { |
| | | $select_default_font->add($fname, $fname); |
| | | } |
| | | |
| | | $blocks['main']['options']['default_font'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('defaultfont'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('defaultfont'))), |
| | | 'content' => $select_default_font->show($RCMAIL->config->get('default_font', 1)) . |
| | | $select_default_font_size->show($RCMAIL->config->get('default_font_size', 1)) |
| | | ); |
| | |
| | | $field_id = 'rcmfd_reply_all_mode'; |
| | | $select = new html_select(array('name' => '_reply_all_mode', 'id' => $field_id)); |
| | | |
| | | $select->add(rcube_label('replyalldefault'), 0); |
| | | $select->add(rcube_label('replyalllist'), 1); |
| | | $select->add($RCMAIL->gettext('replyalldefault'), 0); |
| | | $select->add($RCMAIL->gettext('replyalllist'), 1); |
| | | |
| | | $blocks['main']['options']['reply_all_mode'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('replyallmode'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('replyallmode'))), |
| | | 'content' => $select->show(intval($config['reply_all_mode'])), |
| | | ); |
| | | } |
| | |
| | | // Addressbook config |
| | | case 'addressbook': |
| | | $blocks = array( |
| | | 'main' => array('name' => Q(rcube_label('mainoptions'))), |
| | | 'advanced' => array('name' => Q(rcube_label('advancedoptions'))), |
| | | 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))), |
| | | 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))), |
| | | ); |
| | | |
| | | if (!isset($no_override['default_addressbook']) |
| | |
| | | } |
| | | |
| | | $blocks['main']['options']['default_addressbook'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('defaultabook'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('defaultabook'))), |
| | | 'content' => $select->show($config['default_addressbook']), |
| | | ); |
| | | } |
| | |
| | | $field_id = 'rcmfd_addressbook_name_listing'; |
| | | $select = new html_select(array('name' => '_addressbook_name_listing', 'id' => $field_id)); |
| | | |
| | | $select->add(rcube_label('name'), 0); |
| | | $select->add(rcube_label('firstname') . ' ' . rcube_label('surname'), 1); |
| | | $select->add(rcube_label('surname') . ' ' . rcube_label('firstname'), 2); |
| | | $select->add(rcube_label('surname') . ', ' . rcube_label('firstname'), 3); |
| | | $select->add($RCMAIL->gettext('name'), 0); |
| | | $select->add($RCMAIL->gettext('firstname') . ' ' . $RCMAIL->gettext('surname'), 1); |
| | | $select->add($RCMAIL->gettext('surname') . ' ' . $RCMAIL->gettext('firstname'), 2); |
| | | $select->add($RCMAIL->gettext('surname') . ', ' . $RCMAIL->gettext('firstname'), 3); |
| | | |
| | | $blocks['main']['options']['list_name_listing'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('listnamedisplay'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('listnamedisplay'))), |
| | | 'content' => $select->show($config['addressbook_name_listing']), |
| | | ); |
| | | } |
| | |
| | | $field_id = 'rcmfd_addressbook_sort_col'; |
| | | $select = new html_select(array('name' => '_addressbook_sort_col', 'id' => $field_id)); |
| | | |
| | | $select->add(rcube_label('name'), 'name'); |
| | | $select->add(rcube_label('firstname'), 'firstname'); |
| | | $select->add(rcube_label('surname'), 'surname'); |
| | | $select->add($RCMAIL->gettext('name'), 'name'); |
| | | $select->add($RCMAIL->gettext('firstname'), 'firstname'); |
| | | $select->add($RCMAIL->gettext('surname'), 'surname'); |
| | | |
| | | $blocks['main']['options']['sort_col'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('listsorting'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('listsorting'))), |
| | | 'content' => $select->show($config['addressbook_sort_col']), |
| | | ); |
| | | } |
| | |
| | | $size = intval($config['addressbook_pagesize'] ? $config['addressbook_pagesize'] : $config['pagesize']); |
| | | |
| | | $blocks['main']['options']['pagesize'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('pagesize'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('pagesize'))), |
| | | 'content' => $input->show($size ? $size : 50), |
| | | ); |
| | | } |
| | |
| | | $checkbox = new html_checkbox(array('name' => '_autocomplete_single', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['autocomplete_single'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('autocompletesingle'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('autocompletesingle'))), |
| | | 'content' => $checkbox->show($config['autocomplete_single']?1:0), |
| | | ); |
| | | } |
| | |
| | | // Special IMAP folders |
| | | case 'folders': |
| | | $blocks = array( |
| | | 'main' => array('name' => Q(rcube_label('mainoptions'))), |
| | | 'advanced' => array('name' => Q(rcube_label('advancedoptions'))), |
| | | 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))), |
| | | 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))), |
| | | ); |
| | | |
| | | if (!isset($no_override['show_real_foldernames'])) { |
| | |
| | | $input = new html_checkbox(array('name' => '_show_real_foldernames', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['show_real_foldernames'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('show_real_foldernames'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('show_real_foldernames'))), |
| | | 'content' => $input->show($config['show_real_foldernames']?1:0), |
| | | ); |
| | | } |
| | | |
| | | // Configure special folders |
| | | if (!isset($no_override['default_folders']) && $current) { |
| | | $select = rcmail_mailbox_select(array( |
| | | $select = $RCMAIL->folder_selector(array( |
| | | 'noselection' => '---', |
| | | 'realnames' => true, |
| | | 'maxlength' => 30, |
| | |
| | | } |
| | | |
| | | $blocks['main']['options']['drafts_mbox'] = array( |
| | | 'title' => Q(rcube_label('drafts')), |
| | | 'title' => rcube::Q($RCMAIL->gettext('drafts')), |
| | | 'content' => $select->show($config['drafts_mbox'], array('name' => "_drafts_mbox", 'onchange' => $onchange)), |
| | | ); |
| | | } |
| | |
| | | } |
| | | |
| | | $blocks['main']['options']['sent_mbox'] = array( |
| | | 'title' => Q(rcube_label('sent')), |
| | | 'title' => rcube::Q($RCMAIL->gettext('sent')), |
| | | 'content' => $select->show($config['sent_mbox'], array('name' => "_sent_mbox", 'onchange' => '')), |
| | | ); |
| | | } |
| | |
| | | } |
| | | |
| | | $blocks['main']['options']['junk_mbox'] = array( |
| | | 'title' => Q(rcube_label('junk')), |
| | | 'title' => rcube::Q($RCMAIL->gettext('junk')), |
| | | 'content' => $select->show($config['junk_mbox'], array('name' => "_junk_mbox", 'onchange' => $onchange)), |
| | | ); |
| | | } |
| | |
| | | } |
| | | |
| | | $blocks['main']['options']['trash_mbox'] = array( |
| | | 'title' => Q(rcube_label('trash')), |
| | | 'title' => rcube::Q($RCMAIL->gettext('trash')), |
| | | 'content' => $select->show($config['trash_mbox'], array('name' => "_trash_mbox", 'onchange' => $onchange)), |
| | | ); |
| | | } |
| | |
| | | // Server settings |
| | | case 'server': |
| | | $blocks = array( |
| | | 'main' => array('name' => Q(rcube_label('mainoptions'))), |
| | | 'maintenance' => array('name' => Q(rcube_label('maintenance'))), |
| | | 'advanced' => array('name' => Q(rcube_label('advancedoptions'))), |
| | | 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))), |
| | | 'maintenance' => array('name' => rcube::Q($RCMAIL->gettext('maintenance'))), |
| | | 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))), |
| | | ); |
| | | |
| | | if (!isset($no_override['read_when_deleted'])) { |
| | |
| | | $input = new html_checkbox(array('name' => '_read_when_deleted', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['read_when_deleted'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('readwhendeleted'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('readwhendeleted'))), |
| | | 'content' => $input->show($config['read_when_deleted']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_flag_for_deletion', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['flag_for_deletion'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('flagfordeletion'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('flagfordeletion'))), |
| | | 'content' => $input->show($config['flag_for_deletion']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_skip_deleted', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['skip_deleted'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('skipdeleted'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('skipdeleted'))), |
| | | 'content' => $input->show($config['skip_deleted']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_delete_always', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['delete_always'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('deletealways'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('deletealways'))), |
| | | 'content' => $input->show($config['delete_always']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_delete_junk', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['main']['options']['delete_junk'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('deletejunk'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('deletejunk'))), |
| | | 'content' => $input->show($config['delete_junk']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_logout_purge', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['maintenance']['options']['logout_purge'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('logoutclear'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('logoutclear'))), |
| | | 'content' => $input->show($config['logout_purge']?1:0), |
| | | ); |
| | | } |
| | |
| | | $input = new html_checkbox(array('name' => '_logout_expunge', 'id' => $field_id, 'value' => 1)); |
| | | |
| | | $blocks['maintenance']['options']['logout_expunge'] = array( |
| | | 'title' => html::label($field_id, Q(rcube_label('logoutcompact'))), |
| | | 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('logoutcompact'))), |
| | | 'content' => $input->show($config['logout_expunge']?1:0), |
| | | ); |
| | | } |
| | |
| | | |
| | | $storage = $RCMAIL->get_storage(); |
| | | $delimiter = $storage->get_hierarchy_delimiter(); |
| | | $name_utf8 = rcube_charset_convert($name, 'UTF7-IMAP'); |
| | | $name_utf8 = rcube_charset::convert($name, 'UTF7-IMAP'); |
| | | $protected = $protect_folders && in_array($name, $default_folders); |
| | | |
| | | $foldersplit = explode($delimiter, $storage->mod_folder($name)); |
| | | $level = count($foldersplit) - 1; |
| | | $display_name = str_repeat(' ', $level) |
| | | . Q($protected ? rcmail_localize_foldername($name) : rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP')); |
| | | . rcube::Q($protected ? $RCMAIL->localize_foldername($name) : rcube_charset::convert($foldersplit[$level], 'UTF7-IMAP')); |
| | | |
| | | if ($oldname === null) |
| | | $OUTPUT->command('add_folder_row', $name_utf8, $display_name, $protected, $subscribe, |
| | | false, $class_name); |
| | | else |
| | | $OUTPUT->command('replace_folder_row', rcube_charset_convert($oldname, 'UTF7-IMAP'), |
| | | $OUTPUT->command('replace_folder_row', rcube_charset::convert($oldname, 'UTF7-IMAP'), |
| | | $name_utf8, $display_name, $protected, $class_name); |
| | | } |
| | | |
| | |
| | | |
| | | define('IDENTITIES_LEVEL', intval($RCMAIL->config->get('identities_level', 0))); |
| | | |
| | | $OUTPUT->set_pagetitle(rcube_label('identities')); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('identities')); |
| | | $OUTPUT->include_script('list.js'); |
| | | |
| | | |
| | |
| | | |
| | | |
| | | if (!empty($_POST['_insert'])) { |
| | | $name = trim(get_input_value('_name', RCUBE_INPUT_POST)); |
| | | $text = trim(get_input_value('_text', RCUBE_INPUT_POST)); |
| | | $name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST)); |
| | | $text = trim(rcube_utils::get_input_value('_text', rcube_utils::INPUT_POST)); |
| | | |
| | | if (!empty($name) && !empty($text)) { |
| | | $dupes = 0; |
| | |
| | | |
| | | if ($RCMAIL->user->save_prefs(array('compose_responses' => $responses))) { |
| | | $RCMAIL->output->command('add_response_item', $response); |
| | | $RCMAIL->output->command('display_message', rcube_label('successfullysaved'), 'confirmation'); |
| | | $RCMAIL->output->command('display_message', $RCMAIL->gettext('successfullysaved'), 'confirmation'); |
| | | } |
| | | else { |
| | | $RCMAIL->output->command('display_message', rcube_label('errorsaving'), 'error'); |
| | | $RCMAIL->output->command('display_message', $RCMAIL->gettext('errorsaving'), 'error'); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | if ($RCMAIL->action == 'delete-response') { |
| | | if ($key = get_input_value('_key', RCUBE_INPUT_GPC)) { |
| | | if ($key = rcube_utils::get_input_value('_key', rcube_utils::INPUT_GPC)) { |
| | | $responses = $RCMAIL->get_compose_responses(false, true); |
| | | foreach ($responses as $i => $response) { |
| | | if (empty($response['key'])) |
| | |
| | | } |
| | | |
| | | if ($deleted) { |
| | | $RCMAIL->output->command('display_message', rcube_label('deletedsuccessfully'), 'confirmation'); |
| | | $RCMAIL->output->command('display_message', $RCMAIL->gettext('deletedsuccessfully'), 'confirmation'); |
| | | $RCMAIL->output->command('remove_response', $key); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | $OUTPUT->set_pagetitle(rcube_label('responses')); |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('responses')); |
| | | $OUTPUT->include_script('list.js'); |
| | | |
| | | |
| | |
| | | 'cols' => array('name') |
| | | )); |
| | | |
| | | $out = rcube_table_output($attrib, $plugin['list'], $plugin['cols'], 'key'); |
| | | $out = $RCMAIL->table_output($attrib, $plugin['list'], $plugin['cols'], 'key'); |
| | | |
| | | // set client env |
| | | $OUTPUT->add_gui_object('responseslist', $attrib['id']); |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | // WARNING: folder names in UI are encoded with RCMAIL_CHARSET |
| | | // WARNING: folder names in UI are encoded with RCUBE_CHARSET |
| | | |
| | | // init IMAP connection |
| | | $STORAGE = $RCMAIL->get_storage(); |
| | | |
| | | |
| | | $name = trim(get_input_value('_name', RCUBE_INPUT_POST, true)); |
| | | $old = get_input_value('_mbox', RCUBE_INPUT_POST, true); |
| | | $path = get_input_value('_parent', RCUBE_INPUT_POST, true); |
| | | $name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true)); |
| | | $old = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true); |
| | | $path = rcube_utils::get_input_value('_parent', rcube_utils::INPUT_POST, true); |
| | | |
| | | $name_imap = rcube_charset_convert($name, RCMAIL_CHARSET, 'UTF7-IMAP'); |
| | | $old_imap = rcube_charset_convert($old, RCMAIL_CHARSET, 'UTF7-IMAP'); |
| | | $name_imap = rcube_charset::convert($name, RCUBE_CHARSET, 'UTF7-IMAP'); |
| | | $old_imap = rcube_charset::convert($old, RCUBE_CHARSET, 'UTF7-IMAP'); |
| | | // $path is in UTF7-IMAP already |
| | | |
| | | $delimiter = $STORAGE->get_hierarchy_delimiter(); |
| | |
| | | if ($options['protected'] || $options['norename']) { |
| | | } |
| | | else if (!strlen($name)) { |
| | | $error = rcube_label('namecannotbeempty'); |
| | | $error = $RCMAIL->gettext('namecannotbeempty'); |
| | | } |
| | | else if (mb_strlen($name) > 128) { |
| | | $error = rcube_label('nametoolong'); |
| | | $error = $RCMAIL->gettext('nametoolong'); |
| | | } |
| | | else { |
| | | // these characters are problematic e.g. when used in LIST/LSUB |
| | | foreach (array($delimiter, '%', '*') as $char) { |
| | | if (strpos($name, $delimiter) !== false) { |
| | | $error = rcube_label('forbiddencharacter') . " ($char)"; |
| | | $error = $RCMAIL->gettext('forbiddencharacter') . " ($char)"; |
| | | break; |
| | | } |
| | | } |
| | |
| | | if ($parent_opts['namespace'] != 'personal' |
| | | && (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts['rights']))) |
| | | ) { |
| | | $error = rcube_label('parentnotwritable'); |
| | | $error = $RCMAIL->gettext('parentnotwritable'); |
| | | } |
| | | } |
| | | |
| | |
| | | $folder['options'] = $options; |
| | | $folder['settings'] = array( |
| | | // List view mode: 0-list, 1-threads |
| | | 'view_mode' => (int) get_input_value('_viewmode', RCUBE_INPUT_POST), |
| | | 'sort_column' => get_input_value('_sortcol', RCUBE_INPUT_POST), |
| | | 'sort_order' => get_input_value('_sortord', RCUBE_INPUT_POST), |
| | | 'view_mode' => (int) rcube_utils::get_input_value('_viewmode', rcube_utils::INPUT_POST), |
| | | 'sort_column' => rcube_utils::get_input_value('_sortcol', rcube_utils::INPUT_POST), |
| | | 'sort_order' => rcube_utils::get_input_value('_sortord', rcube_utils::INPUT_POST), |
| | | ); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | rcmail_overwrite_action('edit-folder'); |
| | | $RCMAIL->overwrite_action('edit-folder'); |
| | |
| | | // check input |
| | | if (IDENTITIES_LEVEL != 4 && (empty($_POST['_name']) || (empty($_POST['_email']) && IDENTITIES_LEVEL != 1 && IDENTITIES_LEVEL != 3))) { |
| | | $OUTPUT->show_message('formincomplete', 'warning'); |
| | | rcmail_overwrite_action('edit-identity'); |
| | | $RCMAIL->overwrite_action('edit-identity'); |
| | | return; |
| | | } |
| | | |
| | |
| | | foreach ($a_save_cols as $col) { |
| | | $fname = '_'.$col; |
| | | if (isset($_POST[$fname])) |
| | | $save_data[$col] = get_input_value($fname, RCUBE_INPUT_POST, true); |
| | | $save_data[$col] = rcube_utils::get_input_value($fname, rcube_utils::INPUT_POST, true); |
| | | } |
| | | |
| | | // set "off" values for checkboxes that were not checked, and therefore |
| | |
| | | } |
| | | |
| | | // Validate e-mail addresses |
| | | $email_checks = array(rcube_idn_to_ascii($save_data['email'])); |
| | | $email_checks = array(rcube_utils::idn_to_ascii($save_data['email'])); |
| | | foreach (array('reply-to', 'bcc') as $item) { |
| | | foreach (rcube_mime::decode_address_list($save_data[$item], null, false) as $rcpt) |
| | | $email_checks[] = rcube_idn_to_ascii($rcpt['mailto']); |
| | | $email_checks[] = rcube_utils::idn_to_ascii($rcpt['mailto']); |
| | | } |
| | | |
| | | foreach ($email_checks as $email) { |
| | | if ($email && !check_email($email)) { |
| | | if ($email && !rcube_utils::check_email($email)) { |
| | | // show error message |
| | | $OUTPUT->show_message('emailformaterror', 'error', array('email' => rcube_idn_to_utf8($email)), false); |
| | | rcmail_overwrite_action('edit-identity'); |
| | | $OUTPUT->show_message('emailformaterror', 'error', array('email' => rcube_utils::idn_to_utf8($email)), false); |
| | | $RCMAIL->overwrite_action('edit-identity'); |
| | | return; |
| | | } |
| | | } |
| | |
| | | |
| | | // update an existing contact |
| | | if ($_POST['_iid']) { |
| | | $iid = get_input_value('_iid', RCUBE_INPUT_POST); |
| | | $iid = rcube_utils::get_input_value('_iid', rcube_utils::INPUT_POST); |
| | | |
| | | if (in_array(IDENTITIES_LEVEL, array(1,3,4))) { |
| | | // merge with old identity data, fixes #1488834 |
| | |
| | | $save_data = $plugin['record']; |
| | | |
| | | if ($save_data['email']) |
| | | $save_data['email'] = rcube_idn_to_ascii($save_data['email']); |
| | | $save_data['email'] = rcube_utils::idn_to_ascii($save_data['email']); |
| | | if (!$plugin['abort']) |
| | | $updated = $RCMAIL->user->update_identity($iid, $save_data); |
| | | else |
| | |
| | | |
| | | if ($_POST['_framed']) { |
| | | // update the changed col in list |
| | | $OUTPUT->command('parent.update_identity_row', $iid, Q(trim($save_data['name'] . ' <' . rcube_idn_to_utf8($save_data['email']) .'>'))); |
| | | $OUTPUT->command('parent.update_identity_row', $iid, rcube::Q(trim($save_data['name'] . ' <' . rcube_utils::idn_to_utf8($save_data['email']) .'>'))); |
| | | } |
| | | } |
| | | else { |
| | | // show error message |
| | | $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false); |
| | | rcmail_overwrite_action('edit-identity'); |
| | | $RCMAIL->overwrite_action('edit-identity'); |
| | | return; |
| | | } |
| | | } |
| | |
| | | $save_data = $plugin['record']; |
| | | |
| | | if ($save_data['email']) |
| | | $save_data['email'] = rcube_idn_to_ascii($save_data['email']); |
| | | $save_data['email'] = rcube_utils::idn_to_ascii($save_data['email']); |
| | | |
| | | if (!$plugin['abort']) |
| | | $insert_id = $save_data['email'] ? $RCMAIL->user->insert_identity($save_data) : null; |
| | |
| | | |
| | | if ($_POST['_framed']) { |
| | | // add a new row to the list |
| | | $OUTPUT->command('parent.update_identity_row', $insert_id, Q(trim($save_data['name'] . ' <' . rcube_idn_to_utf8($save_data['email']) .'>')), true); |
| | | $OUTPUT->command('parent.update_identity_row', $insert_id, rcube::Q(trim($save_data['name'] . ' <' . rcube_utils::idn_to_utf8($save_data['email']) .'>')), true); |
| | | } |
| | | } |
| | | else { |
| | | // show error message |
| | | $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false); |
| | | rcmail_overwrite_action('edit-identity'); |
| | | $RCMAIL->overwrite_action('edit-identity'); |
| | | return; |
| | | } |
| | | } |
| | |
| | | |
| | | // go to next step |
| | | if (!empty($_REQUEST['_framed'])) { |
| | | rcmail_overwrite_action('edit-identity'); |
| | | $RCMAIL->overwrite_action('edit-identity'); |
| | | } |
| | | else |
| | | rcmail_overwrite_action('identities'); |
| | | $RCMAIL->overwrite_action('identities'); |
| | | |
| | | |
| | | /** |
| | |
| | | { |
| | | // Add header with charset spec., washtml cannot work without that |
| | | $html = '<html><head>' |
| | | . '<meta http-equiv="Content-Type" content="text/html; charset='.RCMAIL_CHARSET.'" />' |
| | | . '<meta http-equiv="Content-Type" content="text/html; charset='.RCUBE_CHARSET.'" />' |
| | | . '</head><body>' . $html . '</body></html>'; |
| | | |
| | | // clean HTML with washhtml by Frederic Motte |
| | | $wash_opts = array( |
| | | 'show_washed' => false, |
| | | 'allow_remote' => 1, |
| | | 'charset' => RCMAIL_CHARSET, |
| | | 'charset' => RCUBE_CHARSET, |
| | | 'html_elements' => array('body', 'link'), |
| | | 'html_attribs' => array('rel', 'type'), |
| | | ); |
| | |
| | | //$washer->add_callback('style', 'rcmail_washtml_callback'); |
| | | |
| | | // Remove non-UTF8 characters (#1487813) |
| | | $html = rc_utf8_clean($html); |
| | | $html = rcube_charset::clean($html); |
| | | |
| | | $html = $washer->wash($html); |
| | | |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | $CURR_SECTION = get_input_value('_section', RCUBE_INPUT_POST); |
| | | $CURR_SECTION = rcube_utils::get_input_value('_section', rcube_utils::INPUT_POST); |
| | | |
| | | $a_user_prefs = array(); |
| | | |
| | |
| | | { |
| | | case 'general': |
| | | $a_user_prefs = array( |
| | | 'language' => isset($_POST['_language']) ? get_input_value('_language', RCUBE_INPUT_POST) : $CONFIG['language'], |
| | | 'timezone' => isset($_POST['_timezone']) ? get_input_value('_timezone', RCUBE_INPUT_POST) : $CONFIG['timezone'], |
| | | 'date_format' => isset($_POST['_date_format']) ? get_input_value('_date_format', RCUBE_INPUT_POST) : $CONFIG['date_format'], |
| | | 'time_format' => isset($_POST['_time_format']) ? get_input_value('_time_format', RCUBE_INPUT_POST) : ($CONFIG['time_format'] ? $CONFIG['time_format'] : 'H:i'), |
| | | 'language' => isset($_POST['_language']) ? rcube_utils::get_input_value('_language', rcube_utils::INPUT_POST) : $CONFIG['language'], |
| | | 'timezone' => isset($_POST['_timezone']) ? rcube_utils::get_input_value('_timezone', rcube_utils::INPUT_POST) : $CONFIG['timezone'], |
| | | 'date_format' => isset($_POST['_date_format']) ? rcube_utils::get_input_value('_date_format', rcube_utils::INPUT_POST) : $CONFIG['date_format'], |
| | | 'time_format' => isset($_POST['_time_format']) ? rcube_utils::get_input_value('_time_format', rcube_utils::INPUT_POST) : ($CONFIG['time_format'] ? $CONFIG['time_format'] : 'H:i'), |
| | | 'prettydate' => isset($_POST['_pretty_date']) ? TRUE : FALSE, |
| | | 'refresh_interval' => isset($_POST['_refresh_interval']) ? intval($_POST['_refresh_interval'])*60 : $CONFIG['refresh_interval'], |
| | | 'standard_windows' => isset($_POST['_standard_windows']) ? TRUE : FALSE, |
| | | 'skin' => isset($_POST['_skin']) ? get_input_value('_skin', RCUBE_INPUT_POST) : $CONFIG['skin'], |
| | | 'skin' => isset($_POST['_skin']) ? rcube_utils::get_input_value('_skin', rcube_utils::INPUT_POST) : $CONFIG['skin'], |
| | | ); |
| | | |
| | | // compose derived date/time format strings |
| | |
| | | 'inline_images' => isset($_POST['_inline_images']) ? TRUE : FALSE, |
| | | 'show_images' => isset($_POST['_show_images']) ? intval($_POST['_show_images']) : 0, |
| | | 'display_next' => isset($_POST['_display_next']) ? TRUE : FALSE, |
| | | 'default_charset' => get_input_value('_default_charset', RCUBE_INPUT_POST), |
| | | 'default_charset' => rcube_utils::get_input_value('_default_charset', rcube_utils::INPUT_POST), |
| | | ); |
| | | |
| | | break; |
| | |
| | | 'show_sig' => isset($_POST['_show_sig']) ? intval($_POST['_show_sig']) : 1, |
| | | 'reply_mode' => isset($_POST['_reply_mode']) ? intval($_POST['_reply_mode']) : 0, |
| | | 'strip_existing_sig' => isset($_POST['_strip_existing_sig']), |
| | | 'default_font' => get_input_value('_default_font', RCUBE_INPUT_POST), |
| | | 'default_font_size' => get_input_value('_default_font_size', RCUBE_INPUT_POST), |
| | | 'default_font' => rcube_utils::get_input_value('_default_font', rcube_utils::INPUT_POST), |
| | | 'default_font_size' => rcube_utils::get_input_value('_default_font_size', rcube_utils::INPUT_POST), |
| | | 'reply_all_mode' => intval($_POST['_reply_all_mode']), |
| | | 'forward_attachment' => !empty($_POST['_forward_attachment']), |
| | | ); |
| | |
| | | |
| | | case 'addressbook': |
| | | $a_user_prefs = array( |
| | | 'default_addressbook' => get_input_value('_default_addressbook', RCUBE_INPUT_POST, true), |
| | | 'default_addressbook' => rcube_utils::get_input_value('_default_addressbook', rcube_utils::INPUT_POST, true), |
| | | 'autocomplete_single' => isset($_POST['_autocomplete_single']) ? TRUE : FALSE, |
| | | 'addressbook_sort_col' => get_input_value('_addressbook_sort_col', RCUBE_INPUT_POST), |
| | | 'addressbook_name_listing' => intval(get_input_value('_addressbook_name_listing', RCUBE_INPUT_POST)), |
| | | 'addressbook_sort_col' => rcube_utils::get_input_value('_addressbook_sort_col', rcube_utils::INPUT_POST), |
| | | 'addressbook_name_listing' => intval(rcube_utils::get_input_value('_addressbook_name_listing', rcube_utils::INPUT_POST)), |
| | | 'addressbook_pagesize' => is_numeric($_POST['_addressbook_pagesize']) ? max(2, intval($_POST['_addressbook_pagesize'])) : $CONFIG['addressbook_pagesize'], |
| | | ); |
| | | |
| | |
| | | $a_user_prefs = array( |
| | | 'show_real_foldernames' => |
| | | isset($_POST['_show_real_foldernames']) ? TRUE : FALSE, |
| | | 'drafts_mbox' => get_input_value('_drafts_mbox', RCUBE_INPUT_POST, true), |
| | | 'sent_mbox' => get_input_value('_sent_mbox', RCUBE_INPUT_POST, true), |
| | | 'junk_mbox' => get_input_value('_junk_mbox', RCUBE_INPUT_POST, true), |
| | | 'trash_mbox' => get_input_value('_trash_mbox', RCUBE_INPUT_POST, true), |
| | | 'drafts_mbox' => rcube_utils::get_input_value('_drafts_mbox', rcube_utils::INPUT_POST, true), |
| | | 'sent_mbox' => rcube_utils::get_input_value('_sent_mbox', rcube_utils::INPUT_POST, true), |
| | | 'junk_mbox' => rcube_utils::get_input_value('_junk_mbox', rcube_utils::INPUT_POST, true), |
| | | 'trash_mbox' => rcube_utils::get_input_value('_trash_mbox', rcube_utils::INPUT_POST, true), |
| | | ); |
| | | |
| | | break; |
| | |
| | | $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error'); |
| | | |
| | | // display the form again |
| | | rcmail_overwrite_action('edit-prefs'); |
| | | |
| | | $RCMAIL->overwrite_action('edit-prefs'); |
| | |
| | | $html = $HTTP_RAW_POST_DATA; |
| | | |
| | | // Replace emoticon images with its text representation |
| | | $html = rcmail_replace_emoticons($html); |
| | | $html = $RCMAIL->replace_emoticons($html); |
| | | |
| | | $converter = new rcube_html2text($html, false, true, 0); |
| | | |
| | |
| | | |
| | | if ($source !== false && preg_match($ctype, $headers)) { |
| | | header('Content-Type: text/css'); |
| | | echo rcmail_mod_css_styles($source, preg_replace('/[^a-z0-9]/i', '', $_GET['_c'])); |
| | | echo rcube_utils::mod_css_styles($source, preg_replace('/[^a-z0-9]/i', '', $_GET['_c'])); |
| | | exit; |
| | | } |
| | | |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | $name = get_input_value('_name', RCUBE_INPUT_POST); |
| | | $value = get_input_value('_value', RCUBE_INPUT_POST); |
| | | $sessname = get_input_value('_session', RCUBE_INPUT_POST); |
| | | $name = rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST); |
| | | $value = rcube_utils::get_input_value('_value', rcube_utils::INPUT_POST); |
| | | $sessname = rcube_utils::get_input_value('_session', rcube_utils::INPUT_POST); |
| | | |
| | | // Whitelisted preferences and session variables, others |
| | | // can be added by plugins |
| | |
| | | $whitelist_sess = array_merge($whitelist_sess, $RCMAIL->plugins->allowed_session_prefs); |
| | | |
| | | if (!in_array($name, $whitelist) || ($sessname && !in_array($sessname, $whitelist_sess))) { |
| | | raise_error(array('code' => 500, 'type' => 'php', |
| | | rcube::raise_error(array('code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => sprintf("Hack attempt detected (user: %s)", $RCMAIL->get_user_name())), |
| | | true, false); |
| | |
| | | */ |
| | | |
| | | // read input |
| | | $lang = get_input_value('lang', RCUBE_INPUT_GET); |
| | | $lang = rcube_utils::get_input_value('lang', rcube_utils::INPUT_GET); |
| | | $data = file_get_contents('php://input'); |
| | | |
| | | $learn_word = strpos($data, '<learnword>'); |
| | |
| | | $left = strpos($data, '<text>'); |
| | | $right = strrpos($data, '</text>'); |
| | | $data = substr($data, $left+6, $right-($left+6)); |
| | | $data = html_entity_decode($data, ENT_QUOTES, RCMAIL_CHARSET); |
| | | $data = html_entity_decode($data, ENT_QUOTES, RCUBE_CHARSET); |
| | | |
| | | $spellchecker = new rcube_spellchecker($lang); |
| | | |
| | | if ($learn_word) { |
| | | $spellchecker->add_word($data); |
| | | $result = '<?xml version="1.0" encoding="'.RCMAIL_CHARSET.'"?><learnwordresult></learnwordresult>'; |
| | | $result = '<?xml version="1.0" encoding="'.RCUBE_CHARSET.'"?><learnwordresult></learnwordresult>'; |
| | | } |
| | | else { |
| | | $spellchecker->check($data); |
| | |
| | | header("Content-Length: " . strlen($result)); |
| | | |
| | | // Don't use server's default Content-Type charset (#1486406) |
| | | header("Content-Type: text/xml; charset=" . RCMAIL_CHARSET); |
| | | header("Content-Type: text/xml; charset=" . RCUBE_CHARSET); |
| | | print $result; |
| | | exit; |
| | |
| | | } |
| | | |
| | | // send output |
| | | header("Content-Type: text/xml; charset=".RCMAIL_CHARSET); |
| | | header("Content-Type: text/xml; charset=".RCUBE_CHARSET); |
| | | echo json_encode($result); |
| | | exit; |
| | | |