/** * Generate the compose data package consumed by the full and quick compose screens. * * @param Array $data * @param Bool $forFullCompose If full compose is set to TRUE, then continue execution and include the full Emails UI. Otherwise * the data generated is returned. * @param SugarBean $bean Optional - parent object with data */ function generateComposeDataPackage($data, $forFullCompose = TRUE, $bean = null) { // we will need the following: if (isset($data['parent_type']) && !empty($data['parent_type']) && isset($data['parent_id']) && !empty($data['parent_id']) && !isset($data['ListView']) && !isset($data['replyForward'])) { if (empty($bean)) { global $beanList; global $beanFiles; global $mod_strings; $parentName = ''; $class = $beanList[$data['parent_type']]; require_once $beanFiles[$class]; $bean = new $class(); $bean->retrieve($data['parent_id']); } if (isset($bean->full_name)) { $parentName = $bean->full_name; } elseif (isset($bean->name)) { $parentName = $bean->name; } else { $parentName = ''; } $parentName = from_html($parentName); $namePlusEmail = ''; if (isset($data['to_email_addrs'])) { $namePlusEmail = $data['to_email_addrs']; $namePlusEmail = from_html(str_replace(" ", " ", $namePlusEmail)); } else { if (isset($bean->full_name)) { $namePlusEmail = from_html($bean->full_name) . " <" . from_html($bean->emailAddress->getPrimaryAddress($bean)) . ">"; } else { if (isset($bean->emailAddress)) { $namePlusEmail = "<" . from_html($bean->emailAddress->getPrimaryAddress($bean)) . ">"; } } } $subject = ""; $body = ""; $email_id = ""; $attachments = array(); if ($bean->module_dir == 'Cases') { $subject = str_replace('%1', $bean->case_number, $bean->getEmailSubjectMacro() . " " . from_html($bean->name)); //bug 41928 $bean->load_relationship("contacts"); $contact_ids = $bean->contacts->get(); $contact = new Contact(); foreach ($contact_ids as $cid) { $contact->retrieve($cid); $namePlusEmail .= empty($namePlusEmail) ? "" : ", "; $namePlusEmail .= from_html($contact->full_name) . " <" . from_html($contact->emailAddress->getPrimaryAddress($contact)) . ">"; } } if ($bean->module_dir == 'KBDocuments') { require_once "modules/Emails/EmailUI.php"; $subject = $bean->kbdocument_name; $article_body = str_replace('/cache/images/', $GLOBALS['sugar_config']['site_url'] . '/cache/images/', KBDocument::get_kbdoc_body_without_incrementing_count($bean->id)); $body = from_html($article_body); $attachments = KBDocument::get_kbdoc_attachments_for_newemail($bean->id); $attachments = $attachments['attachments']; } // if if ($bean->module_dir == 'Quotes' && isset($data['recordId'])) { $quotesData = getQuotesRelatedData($bean, $data); global $current_language; $namePlusEmail = $quotesData['toAddress']; $subject = $quotesData['subject']; $body = $quotesData['body']; $attachments = $quotesData['attachments']; $email_id = $quotesData['email_id']; } // if $ret = array('to_email_addrs' => $namePlusEmail, 'parent_type' => $data['parent_type'], 'parent_id' => $data['parent_id'], 'parent_name' => $parentName, 'subject' => $subject, 'body' => $body, 'attachments' => $attachments, 'email_id' => $email_id); } else { if (isset($_REQUEST['ListView'])) { $email = new Email(); $namePlusEmail = $email->getNamePlusEmailAddressesForCompose($_REQUEST['action_module'], explode(",", $_REQUEST['uid'])); $ret = array('to_email_addrs' => $namePlusEmail); } else { if (isset($data['replyForward'])) { require_once "modules/Emails/EmailUI.php"; $ret = array(); $ie = new InboundEmail(); $ie->email = new Email(); $ie->email->email2init(); $replyType = $data['reply']; $email_id = $data['record']; $ie->email->retrieve($email_id); $emailType = ""; if ($ie->email->type == 'draft') { $emailType = $ie->email->type; } $ie->email->from_addr = $ie->email->from_addr_name; $ie->email->to_addrs = to_html($ie->email->to_addrs_names); $ie->email->cc_addrs = to_html($ie->email->cc_addrs_names); $ie->email->bcc_addrs = $ie->email->bcc_addrs_names; $ie->email->from_name = $ie->email->from_addr; $preBodyHTML = " <div><hr></div>"; if ($ie->email->type != 'draft') { $email = $ie->email->et->handleReplyType($ie->email, $replyType); } else { $email = $ie->email; $preBodyHTML = ""; } // else if ($ie->email->type != 'draft') { $emailHeader = $email->description; } $ret = $ie->email->et->displayComposeEmail($email); if ($ie->email->type != 'draft') { $ret['description'] = $emailHeader; } if ($replyType == 'forward' || $emailType == 'draft') { $ret = $ie->email->et->getDraftAttachments($ret); } $return = $ie->email->et->getFromAllAccountsArray($ie, $ret); if ($replyType == "forward") { $return['to'] = ''; } else { if ($email->type != 'draft') { $return['to'] = from_html($ie->email->from_addr); } } // else $ret = array('to_email_addrs' => $return['to'], 'parent_type' => $return['parent_type'], 'parent_id' => $return['parent_id'], 'parent_name' => $return['parent_name'], 'subject' => $return['name'], 'body' => $preBodyHTML . $return['description'], 'attachments' => isset($return['attachments']) ? $return['attachments'] : array(), 'email_id' => $email_id, 'fromAccounts' => $return['fromAccounts']); // If it's a 'Reply All' action, append the CC addresses if ($data['reply'] == 'replyAll') { $ret['cc_addrs'] = from_html($ie->email->to_addrs); } } else { $ret = array('to_email_addrs' => ''); } } } if ($forFullCompose) { initFullCompose($ret); } else { return $ret; } }
} if ($load_signed) { $xtpl->assign("RELATED_DOCUMENT_REVISION_DISABLED", "disabled"); $xtpl->assign("RELATED_DOCUMENT_BUTTON_AVAILABILITY", "hidden"); $xtpl->assign("LOAD_SIGNED_ID", $_REQUEST['load_signed_id']); } else { $xtpl->assign("RELATED_DOCUMENT_BUTTON_AVAILABILITY", "button"); } ///////////////////////// require_once 'include/SugarTinyMCE.php'; $tiny = new SugarTinyMCE(); $tiny->defaultConfig['cleanup_on_startup'] = true; $ed = $tiny->getInstance('body_html'); $xtpl->assign("tiny", $ed); $edValue = ''; $kbDocBody = from_html(KBDocument::get_kbdoc_body_without_incrementing_count($kbId)); if (!empty($kbDocBody)) { $edValue = $kbDocBody; } else { if (!empty($from_case)) { //set the kb fields from case i.e. kb name if (!empty($from_case->case_number)) { $edValue = '<p>Case Number: ' . $from_case->case_number . '</p>'; } if (!empty($from_case->name)) { $edValue .= '<p>Subject: ' . $from_case->name . '</p>'; } if (!empty($from_case->description)) { $edValue .= '<p>Description: ' . $from_case->description . '</p>'; } if (!empty($from_case->resolution)) {
$namePlusEmail = "<" . $bean->emailAddress->getPrimaryAddress($bean) . ">"; } } } $subject = ""; $body = ""; $email_id = ""; $attachments = array(); if ($bean->module_dir == 'Cases') { $subject = $mod_strings['LBL_RE'] . " " . str_replace('%1', $bean->case_number, $bean->getEmailSubjectMacro() . " " . $bean->name); } if ($bean->module_dir == 'KBDocuments') { require_once 'modules/KBDocuments/KBDocument.php'; require_once "modules/Emails/EmailUI.php"; $subject = $bean->kbdocument_name; $article_body = str_replace('/cache/images/', $sugar_config['site_url'] . '/cache/images/', KBDocument::get_kbdoc_body_without_incrementing_count($bean->id)); $body = from_html($article_body); $attachments = KBDocument::get_kbdoc_attachments_for_newemail($bean->id); $attachments = $attachments['attachments']; } // if if ($bean->module_dir == 'Quotes' && isset($_REQUEST['recordId'])) { $quotesData = getQuotesRelatedData($bean); global $current_language; $namePlusEmail = $quotesData['toAddress']; $subject = $quotesData['subject']; $body = $quotesData['body']; $attachments = $quotesData['attachments']; $email_id = $quotesData['email_id']; } // if
if (isset($bean->emailAddress)) { $namePlusEmail = "<" . $bean->emailAddress->getPrimaryAddress($bean) . ">"; } } } $subject = ""; $body = ""; $email_id = ""; $attachments = array(); if ($bean->module_dir == 'Cases') { $subject = $mod_strings['LBL_RE'] . " " . str_replace('%1', $bean->case_number, $bean->getEmailSubjectMacro() . " " . $bean->name); } if ($bean->module_dir == 'KBDocuments') { require_once "modules/Emails/EmailUI.php"; $subject = $bean->kbdocument_name; $article_body = str_replace('/' . $GLOBALS['sugar_config']['cache_dir'] . 'images/', $sugar_config['site_url'] . '/' . $GLOBALS['sugar_config']['cache_dir'] . 'images/', KBDocument::get_kbdoc_body_without_incrementing_count($bean->id)); $body = from_html($article_body); $attachments = KBDocument::get_kbdoc_attachments_for_newemail($bean->id); $attachments = $attachments['attachments']; } // if if ($bean->module_dir == 'Quotes' && isset($_REQUEST['recordId'])) { $quotesData = getQuotesRelatedData($bean); global $current_language; $namePlusEmail = $quotesData['toAddress']; $subject = $quotesData['subject']; $body = $quotesData['body']; $attachments = $quotesData['attachments']; $email_id = $quotesData['email_id']; } // if
$xtpl->assign("ADVANCED_SEARCH_IMAGE", SugarThemeRegistry::current()->getImageURL('advanced_search.gif')); $xtpl->assign("BASIC_SEARCH_IMAGE", SugarThemeRegistry::current()->getImageURL('basic_search.gif')); $xtpl->assign("GRIDLINE", $gridline); $xtpl->assign("PRINT_URL", "index.php?" . $GLOBALS['request_string']); $xtpl->assign("ID", $focus->id); $xtpl->assign("DOCUMENT_NAME", $focus->kbdocument_name); //$xtpl->assign("REVISION", $focus->latest_revision); $xtpl->assign("REVISION", $focus->kbdocument_revision_number); if ($focus->parent_id != null) { $xtpl->assign("CASE_NAME", $focus->case_name); $xtpl->assign("CASE_ID", $focus->parent_id); } global $locale; $xtpl->assign("KBDOC_TAGS", KBDocument::get_kbdoc_tags_heirarchy($focus->id, "Detail")); //get the document body $article_body = KBDocument::get_kbdoc_body_without_incrementing_count($focus->id); $xtpl->assign("KBDOC_BODY", from_html($article_body)); $xtpl->assign("KBDOC_ATTS", KBDocument::get_kbdoc_attachments($focus->id, "Detail")); if (isset($focus->status_id) && isset($app_list_strings['kbdocument_status_dom']) && isset($app_list_strings['kbdocument_status_dom'][$focus->status_id])) { $xtpl->assign("STATUS", $app_list_strings['kbdocument_status_dom'][$focus->status_id]); } $xtpl->assign("FILE_URL", $focus->file_url); $xtpl->assign("ACTIVE_DATE", $focus->active_date); $xtpl->assign("EXP_DATE", $focus->exp_date); $xtpl->assign("FILE_NAME", $focus->filename); $xtpl->assign("FILE_URL_NOIMAGE", $focus->file_url_noimage); $xtpl->assign("LAST_REV_CREATOR", $focus->last_rev_created_name); $buttons = array(<<<EOD <input title="{$app_strings['LBL_EDIT_BUTTON_TITLE']}" id="edit_button" accessKey="{$app_strings['LBL_EDIT_BUTTON_KEY']}" class="button primary" onclick="this.form.return_module.value='KBDocuments'; this.form.return_action.value='DetailView'; this.form.return_id.value='{$focus->id}'; this.form.action.value='EditView'" type="submit" name="Edit" value="{$app_strings['LBL_EDIT_BUTTON_LABEL']}"> EOD , <<<EOD
function fill_in_additional_detail_fields() { global $theme; global $current_language; global $timedate; parent::fill_in_additional_detail_fields(); $mod_strings = return_module_language($current_language, 'KBDocuments'); $query = "SELECT filename,revision,file_ext FROM kbdocument_revisions WHERE id='{$this->kbdocument_revision_id}'"; $result = $this->db->query($query); $row = $this->db->fetchByAssoc($result); //popuplate filename $this->filename = $row['filename']; $this->latest_revision = $row['revision']; //populate the file url. //image is selected based on the extension name <ext>_icon_inline, extension is stored in document_revisions. //if file is not found then default image file will be used. global $img_name; global $img_name_bare; if (!empty($row['file_ext'])) { $img_name = SugarThemeRegistry::current()->getImageURL(strtolower($row['file_ext']) . "_image_inline.gif"); $img_name_bare = strtolower($row['file_ext']) . "_image_inline"; } //set default file name. if (!empty($img_name) && file_exists($img_name)) { $img_name = $img_name_bare; } else { $img_name = "def_image_inline"; //todo change the default image. } $this->file_url = "<a href='index.php?entryPoint=download&id={$this->document_revision_id}&type=Documents' target='_blank'>" . SugarThemeRegistry::current()->getImage($img_name, 'border="0"', null, null, '.gif', $mod_strings['LBL_LIST_VIEW_DOCUMENT']) . "</a>"; $this->file_url_noimage = "index.php?entryPoint=download&type=Documents&id={$this->document_revision_id}"; //get last_rev_by user name. $query = "SELECT first_name,last_name, document_revisions.date_entered as rev_date FROM users, document_revisions WHERE users.id = document_revisions.created_by and document_revisions.id = '{$this->document_revision_id}'"; $result = $this->db->query($query, true, "Eror fetching user name: "); $row = $this->db->fetchByAssoc($result); if (!empty($row)) { $this->last_rev_created_name = $row['first_name'] . ' ' . $row['last_name']; $this->last_rev_create_date = $timedate->to_display_date_time($row['rev_date']); } $this->name = $this->kbdocument_name; $this->body = html_entity_decode(KBDocument::get_kbdoc_body_without_incrementing_count($this->id), ENT_COMPAT | ENT_QUOTES, 'UTF-8'); }