⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.50
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
psa-horde
/
imp
/
lib
/
Dynamic
/
Compose
/
Edit File: Common.php
<?php /** * Copyright 2005-2017 Horde LLC (http://www.horde.org/) * * See the enclosed file COPYING for license information (GPL). If you * did not receive this file, see http://www.horde.org/licenses/gpl. * * @category Horde * @copyright 2005-2017 Horde LLC * @license http://www.horde.org/licenses/gpl GPL * @package IMP */ /** * Compose code common to various dynamic views. * * @author Michael Slusarz <slusarz@horde.org> * @category Horde * @copyright 2005-2017 Horde LLC * @license http://www.horde.org/licenses/gpl GPL * @package IMP */ class IMP_Dynamic_Compose_Common { /** * Create content needed to output the compose page. * * @param IMP_Dynamic_Base $base Base dynamic view object. * @param array $args Configuration parameters: * - redirect: (boolean) Display the redirect interface? If true, * display only redirect. If false, don't add redirect * interface to page. * - resume: (boolean) Are we resuming a saved draft? * - show_editor: (boolean) Show the HTML editor? * - template: (string) Display the edit template interface? * * @return string The compose HTML text. */ public function compose(IMP_Dynamic_Base $base, array $args = array()) { global $injector, $page_output, $prefs; $page_output->addScriptPackage('Horde_Core_Script_Package_Keynavlist'); $page_output->addScriptPackage('IMP_Script_Package_ComposeBase'); $page_output->addScriptFile('compose-dimp.js'); $page_output->addScriptFile('draghandler.js'); $page_output->addScriptFile('editor.js'); $page_output->addScriptFile('imp.js'); if (!$prefs->isLocked('default_encrypt') && ($prefs->getValue('use_pgp') || $prefs->getValue('use_smime'))) { $page_output->addScriptPackage('Horde_Core_Script_Package_Dialog'); $page_output->addScriptFile('passphrase.js'); } $this->_addComposeVars($base); $view = $base->getEmptyView(); $view->addHelper('Tag'); $view->addHelper('FormTag'); $view->compose_enable = IMP_Compose::canCompose(); /* Attach spellchecker & auto completer. */ $imp_ui = $injector->getInstance('IMP_Compose_Ui'); if (!empty($args['redirect'])) { $base->js_conf['redirect'] = 1; $imp_ui->attachAutoCompleter(array('redirect_to')); return $view->render('redirect'); } $ac = array('to', 'cc', 'bcc'); if (!isset($args['redirect'])) { $ac[] = 'redirect_to'; } $imp_ui->attachAutoCompleter($ac); $view->spellcheck = $imp_ui->attachSpellChecker(); $this->_compose($base, $view, $args); return $view->render('compose') . (isset($args['redirect']) ? '' : $view->render('redirect')); } /** */ protected function _compose($base, $view, $args) { global $injector, $registry, $page_output, $prefs, $session; $view->title = $args['title']; /* Load Identity. */ $identity = $injector->getInstance('IMP_Identity'); $selected_identity = intval($identity->getDefault()); /* Generate identities list. */ $injector->getInstance('IMP_Compose_Ui')->addIdentityJs(); if ($session->get('imp', 'rteavail')) { $view->compose_html = !empty($args['show_editor']); $view->rte = true; $page_output->addScriptPackage('IMP_Script_Package_Editor'); $page_output->addScriptFile('external/base64.js'); } /* Create list for sent-mail selection. */ $imp_imap = $injector->getInstance('IMP_Factory_Imap')->create(); if ($imp_imap->access(IMP_Imap::ACCESS_FOLDERS) && !$prefs->isLocked('save_sent_mail')) { $view->save_sent_mail = true; $view->save_sent_mail_select = !$prefs->isLocked(IMP_Mailbox::MBOX_SENT); } $view->drafts = ($imp_imap->access(IMP_Imap::ACCESS_DRAFTS) && ($draft = IMP_Mailbox::getPref(IMP_Mailbox::MBOX_DRAFTS)) && !$draft->readonly); $view->compose_link = $registry->getServiceLink('ajax', 'imp')->url . 'addAttachment'; $view->resume = !empty($args['resume']); $view->is_template = !empty($args['template']); $view->read_receipt_set = (strcasecmp($prefs->getValue('request_mdn'), 'always') === 0); $view->user = $registry->getAuth(); if (IMP_Compose::canUploadAttachment()) { $view->attach = true; $view->max_size = $session->get('imp', 'file_upload'); $view->save_attach_set = (strcasecmp($prefs->getValue('save_attachments'), 'always') === 0); } else { $view->attach = false; } if ($prefs->getValue('use_pgp') && $prefs->getValue('pgp_public_key')) { $view->pgp_pubkey = $prefs->getValue('pgp_attach_pubkey'); } if ($registry->hasMethod('contacts/ownVCard')) { $view->vcard_attach = true; } $view->priority = $prefs->getValue('set_priority'); if (!$prefs->isLocked('default_encrypt') && ($prefs->getValue('use_pgp') || $prefs->getValue('use_smime'))) { $view->encrypt = $prefs->getValue('default_encrypt'); } $from_list = array(); foreach ($identity->getSelectList() as $id => $from) { $from_list[] = array( 'label' => $from, 'sel' => ($id == $selected_identity), 'val' => $id ); } $view->from_list = $from_list; $view->signature = $identity->hasSignature(true); $view->sigExpanded = $prefs->getValue('signature_expanded'); } /** * Add compose javascript variables to the page. */ protected function _addComposeVars($base) { global $browser, $injector, $prefs, $registry; /* Context menu definitions. */ $base->js_context['ctx_other'] = new stdClass; if (!$prefs->isLocked('request_mdn')) { $base->js_context['ctx_other']->rr = _("Read Receipt"); } $base->js_context['ctx_atc'] = new stdClass; if (IMP_Compose::canUploadAttachment()) { if (!$prefs->isLocked('save_attachments') && (!$prefs->isLocked('save_sent_mail') || $prefs->getValue('save_sent_mail'))) { $base->js_context['ctx_atc']->save = _("Save Attachments in Sent Mailbox"); } $atcfile = new stdClass; $atcfile->delete = _("Delete"); $base->js_context['ctx_atcfile'] = $atcfile; } if ($prefs->getValue('use_pgp') && $prefs->getValue('pgp_public_key')) { $base->js_context['ctx_atc']->pgppubkey = _("Attach Personal PGP Public Key"); } if ($registry->hasMethod('contacts/ownVCard')) { $base->js_context['ctx_atc']->vcard = _("Attach contact information"); } /* Variables used in compose page. */ $compose_cursor = $prefs->getValue('compose_cursor'); $templates_mbox = IMP_Mailbox::getPref(IMP_Mailbox::MBOX_TEMPLATES); $base->js_conf += array_filter(array( 'compose_cursor' => ($compose_cursor ? $compose_cursor : 'top'), 'rte_avail' => intval($browser->hasFeature('rte')), 'spellcheck' => intval($prefs->getValue('compose_spellcheck')), 'templates_mbox' => $templates_mbox ? $templates_mbox->form_to : null )); if ($injector->getInstance('IMP_Factory_Imap')->create()->access(IMP_Imap::ACCESS_DRAFTS) && ($drafts_mbox = IMP_Mailbox::getPref(IMP_Mailbox::MBOX_DRAFTS)) && !$drafts_mbox->readonly) { $base->js_conf += array_filter(array( 'auto_save_interval_val' => intval($prefs->getValue('auto_save_drafts')), 'close_draft' => intval($prefs->getValue('close_draft')), 'drafts_mbox' => $drafts_mbox->form_to )); } if ($registry->hasMethod('contacts/search')) { $base->js_conf['URI_ABOOK'] = strval(IMP_Basic_Contacts::url()->setRaw(true)); } if ($prefs->getValue('set_priority')) { $base->js_conf['priority'] = array( array( 'l' => _("High"), 'v' => 'high' ), array( 'l' => _("Normal"), 's' => true, 'v' => 'normal' ), array( 'l' => _("Low"), 'v' => 'low' ) ); } if (!$prefs->isLocked('default_encrypt')) { $encrypt = array(); foreach ($injector->getInstance('IMP_Compose_Ui')->encryptList(null, true) as $key => $val) { $encrypt[] = array( 'l' => htmlspecialchars($val), 'v' => $key ); } if (!empty($encrypt)) { $base->js_conf['encrypt'] = $encrypt; } } /* Gettext strings used in compose page. */ $base->js_text += array( 'change_identity' => _("You have edited your signature. Change the identity and lose your changes?"), 'compose_cancel' => _("Cancelling this message will permanently discard its contents and will delete auto-saved drafts.\nAre you sure you want to do this?"), 'compose_close' => _("Compose action completed. You may now safely close this window."), 'dragdropimg_error' => _("Could not add %d file(s) to message: only images are supported."), 'multiple_atc' => _("%d Attachments"), 'nosubject' => _("The message does not have a subject entered.") . "\n" . _("Send message without a subject?"), 'paste_error' => _("Could not paste image as the clipboard data is invalid."), 'replyall' => _("%d recipients"), 'spell_noerror' => _("No spelling errors found."), 'toggle_html' => _("Discard all text formatting information (by converting from HTML to plain text)? This conversion cannot be reversed."), 'uploading' => _("Uploading..."), ); } }
Simpan