本文整理汇总了PHP中Note::retrieve方法的典型用法代码示例。如果您正苦于以下问题:PHP Note::retrieve方法的具体用法?PHP Note::retrieve怎么用?PHP Note::retrieve使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Note
的用法示例。
在下文中一共展示了Note::retrieve方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: saveFile
function saveFile($note, $portal = false)
{
global $sugar_config;
$focus = new Note();
if (!empty($note['id'])) {
$focus->retrieve($note['id']);
} else {
return '-1';
}
if (!empty($note['file'])) {
$decodedFile = base64_decode($note['file']);
$this->upload_file->set_for_soap($note['filename'], $decodedFile);
$ext_pos = strrpos($this->upload_file->stored_file_name, ".");
$this->upload_file->file_ext = substr($this->upload_file->stored_file_name, $ext_pos + 1);
if (in_array($this->upload_file->file_ext, $sugar_config['upload_badext'])) {
$this->upload_file->stored_file_name .= ".txt";
$this->upload_file->file_ext = "txt";
}
$focus->filename = $this->upload_file->get_stored_file_name();
$focus->file_mime_type = $this->upload_file->getMimeSoap($focus->filename);
$focus->id = $note['id'];
$return_id = $focus->save();
$this->upload_file->final_move($focus->id);
} else {
return '-1';
}
return $return_id;
}
示例2: newSaveFile
function newSaveFile($note, $portal = false)
{
global $sugar_config;
$focus = new Note();
if (!empty($note['id'])) {
$focus->retrieve($note['id']);
if (empty($focus->id)) {
return '-1';
}
} else {
return '-1';
}
if (!empty($note['file'])) {
$decodedFile = base64_decode($note['file']);
$this->upload_file->set_for_soap($note['filename'], $decodedFile);
$ext_pos = strrpos($this->upload_file->stored_file_name, ".");
$this->upload_file->file_ext = substr($this->upload_file->stored_file_name, $ext_pos + 1);
if (in_array($this->upload_file->file_ext, $sugar_config['upload_badext'])) {
$this->upload_file->stored_file_name .= ".txt";
$this->upload_file->file_ext = "txt";
}
$focus->filename = $this->upload_file->get_stored_file_name();
$focus->file_mime_type = $this->upload_file->getMimeSoap($focus->filename);
$focus->save();
}
$return_id = $focus->id;
if (!empty($note['file'])) {
$this->upload_file->final_move($focus->id);
}
if (!empty($note['related_module_id']) && !empty($note['related_module_name'])) {
$focus->process_save_dates = false;
$module_name = $note['related_module_name'];
$module_id = $note['related_module_id'];
if ($module_name != 'Contacts') {
$focus->parent_type = $module_name;
$focus->parent_id = $module_id;
} else {
$focus->contact_id = $module_id;
}
$focus->save();
}
// if
return $return_id;
}
示例3: sendEmail
function sendEmail($mail, $save_emails = 1, $testmode = false)
{
$this->test = $testmode;
global $beanList, $beanFiles, $sugar_config;
global $mod_strings;
global $locale;
$OBCharset = $locale->getPrecedentPreference('default_email_charset');
$mod_strings = return_module_language($sugar_config['default_language'], 'EmailMan');
//get tracking entities locations.
if (!isset($this->tracking_url)) {
if (!class_exists('Administration')) {
}
$admin = new Administration();
$admin->retrieveSettings('massemailer');
//retrieve all admin settings.
if (isset($admin->settings['massemailer_tracking_entities_location_type']) and $admin->settings['massemailer_tracking_entities_location_type'] == '2' and isset($admin->settings['massemailer_tracking_entities_location'])) {
$this->tracking_url = $admin->settings['massemailer_tracking_entities_location'];
} else {
$this->tracking_url = $sugar_config['site_url'];
}
}
//make sure tracking url ends with '/' character
$strLen = strlen($this->tracking_url);
if ($this->tracking_url[$strLen - 1] != '/') {
$this->tracking_url .= '/';
}
if (!isset($beanList[$this->related_type])) {
return false;
}
$class = $beanList[$this->related_type];
if (!class_exists($class)) {
require_once $beanFiles[$class];
}
if (!class_exists('Email')) {
}
$module = new $class();
$module->retrieve($this->related_id);
$module->emailAddress->handleLegacyRetrieve($module);
//check to see if bean has a primary email address
if (!$this->is_primary_email_address($module)) {
//no primary email address designated, do not send out email, create campaign log
//of type send error to denote that this user was not emailed
$this->set_as_sent($module->email1, true, null, null, 'send error');
//create fatal logging for easy review of cause.
$GLOBALS['log']->fatal('Email Address provided is not Primary Address for email with id ' . $module->email1 . "' Emailman id={$this->id}");
return true;
}
if (!$this->valid_email_address($module->email1)) {
$this->set_as_sent($module->email1, true, null, null, 'invalid email');
$GLOBALS['log']->fatal('Encountered invalid email address' . $module->email1 . " Emailman id={$this->id}");
return true;
}
if ((!isset($module->email_opt_out) || $module->email_opt_out !== 'on' && $module->email_opt_out !== 1 && $module->email_opt_out !== '1') && (!isset($module->invalid_email) || $module->invalid_email !== 'on' && $module->invalid_email !== 1 && $module->invalid_email !== '1')) {
$lower_email_address = strtolower($module->email1);
//test against indivdual address.
if (isset($this->restricted_addresses) and isset($this->restricted_addresses[$lower_email_address])) {
$this->set_as_sent($lower_email_address, true, null, null, 'blocked');
return true;
}
//test against restricted domains
$at_pos = strrpos($lower_email_address, '@');
if ($at_pos !== false) {
foreach ($this->restricted_domains as $domain => $value) {
$pos = strrpos($lower_email_address, $domain);
if ($pos !== false && $pos > $at_pos) {
//found
$this->set_as_sent($lower_email_address, true, null, null, 'blocked');
return true;
}
}
}
//test for duplicate email address by marketing id.
$dup_query = "select id from campaign_log where more_information='" . $module->email1 . "' and marketing_id='" . $this->marketing_id . "'";
$dup = $this->db->query($dup_query);
$dup_row = $this->db->fetchByAssoc($dup);
if (!empty($dup_row)) {
//we have seen this email address before
$this->set_as_sent($module->email1, true, null, null, 'blocked');
return true;
}
$this->target_tracker_key = create_guid();
//fetch email marketing.
if (empty($this->current_emailmarketing) or !isset($this->current_emailmarketing)) {
if (!class_exists('EmailMarketing')) {
}
$this->current_emailmarketing = new EmailMarketing();
}
if (empty($this->current_emailmarketing->id) or $this->current_emailmarketing->id !== $this->marketing_id) {
$this->current_emailmarketing->retrieve($this->marketing_id);
$this->newmessage = true;
}
//fetch email template associate with the marketing message.
if (empty($this->current_emailtemplate) or $this->current_emailtemplate->id !== $this->current_emailmarketing->template_id) {
if (!class_exists('EmailTemplate')) {
}
$this->current_emailtemplate = new EmailTemplate();
$this->current_emailtemplate->retrieve($this->current_emailmarketing->template_id);
//escape email template contents.
$this->current_emailtemplate->subject = from_html($this->current_emailtemplate->subject);
$this->current_emailtemplate->body_html = from_html($this->current_emailtemplate->body_html);
//.........这里部分代码省略.........
示例4: handleSave
//.........这里部分代码省略.........
$note = new Note();
//Images are presaved above so we need to prevent duplicate files from being created.
if (isset($preProcessedImages[$file['name']])) {
$oldId = $preProcessedImages[$file['name']];
$note->id = $oldId;
$note->new_with_id = TRUE;
$GLOBALS['log']->debug("Image {$file['name']} has already been processed.");
}
$i = preg_replace("/email_attachment(.+)/", '$1', $key);
$upload_file = new UploadFile($key);
if (isset($_FILES[$key]) && $upload_file->confirm_upload() && preg_match("/^email_attachment/", $key)) {
$note->filename = $upload_file->get_stored_file_name();
$note->file = $upload_file;
$note->name = $mod_strings['LBL_EMAIL_ATTACHMENT'] . ': ' . $note->file->original_file_name;
if (isset($_REQUEST['embedded' . $i]) && !empty($_REQUEST['embedded' . $i])) {
if ($_REQUEST['embedded' . $i] == 'true') {
$note->embed_flag = true;
} else {
$note->embed_flag = false;
}
}
array_push($focus->attachments, $note);
}
}
$focus->saved_attachments = array();
foreach ($focus->attachments as $note) {
if (!empty($note->id) && $note->new_with_id === FALSE) {
if (empty($_REQUEST['old_id'])) {
array_push($focus->saved_attachments, $note);
} else {
// we're duplicating a template with attachments
// dupe the file, create a new note, assign the note to the new template
$newNote = new Note();
$newNote->retrieve($note->id);
$newNote->id = create_guid();
$newNote->parent_id = $focus->id;
$newNote->new_with_id = true;
$newNote->date_modified = '';
$newNote->date_entered = '';
$newNoteId = $newNote->save();
UploadFile::duplicate_file($note->id, $newNoteId, $note->filename);
}
continue;
}
$note->parent_id = $focus->id;
$note->parent_type = 'Emails';
$note->file_mime_type = $note->file->mime_type;
$note_id = $note->save();
array_push($focus->saved_attachments, $note);
$note->id = $note_id;
if ($note->new_with_id === FALSE) {
$note->file->final_move($note->id);
} else {
$GLOBALS['log']->debug("Not performing final move for note id {$note->id} as it has already been processed");
}
}
//// END NEW ATTACHMENTS
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//// ATTACHMENTS FROM DOCUMENTS
$count = '';
//_pp($_REQUEST);
//_ppd(count($_REQUEST['document']));
if (!empty($_REQUEST['document'])) {
$count = count($_REQUEST['document']);
} else {
示例5: get_note_attachment
/**
* Retrieve an attachment from a note
* @param String $session -- Session ID returned by a previous call to login.
* @param Binary $note -- The flie contents of the attachment.
* @return Array 'id' -- The ID of the new note or -1 on error
* 'error' -- The SOAP error if any.
*
* @param String $session -- Session ID returned by a previous call to login.
* @param String $id -- The ID of the appropriate Note.
* @return Array 'note_attachment' -- Array String 'id' -- The ID of the Note containing the attachment
* String 'filename' -- The file name of the attachment
* Binary 'file' -- The binary contents of the file.
* 'error' -- The SOAP error if any.
*/
function get_note_attachment($session, $id)
{
$error = new SoapError();
if (!validate_authenticated($session)) {
$error->set_error('invalid_login');
return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
}
$note = new Note();
$note->retrieve($id);
if (!$note->ACLAccess('DetailView')) {
$error->set_error('no_access');
return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
}
require_once 'modules/Notes/NoteSoap.php';
$ns = new NoteSoap();
if (!isset($note->filename)) {
$note->filename = '';
}
$file = $ns->retrieveFile($id, $note->filename);
if ($file == -1) {
$error->set_error('no_file');
$file = '';
}
return array('note_attachment' => array('id' => $id, 'filename' => $note->filename, 'file' => $file), 'error' => $error->get_soap_array());
}
示例6: handleAttachments
/**
* handles attachments of various kinds when sending email
*/
function handleAttachments()
{
require_once 'modules/Documents/Document.php';
require_once 'modules/DocumentRevisions/DocumentRevision.php';
require_once 'modules/Notes/Note.php';
global $mod_strings;
///////////////////////////////////////////////////////////////////////////
//// ATTACHMENTS FROM DRAFTS
if (($this->type == 'out' || $this->type == 'draft') && $this->status == 'draft' && isset($_REQUEST['record'])) {
$this->getNotes($_REQUEST['record']);
// cn: get notes from OLD email for use in new email
}
//// END ATTACHMENTS FROM DRAFTS
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//// ATTACHMENTS FROM FORWARDS
// Bug 8034 Jenny - Need the check for type 'draft' here to handle cases where we want to save
// forwarded messages as drafts. We still need to save the original message's attachments.
if (($this->type == 'out' || $this->type == 'draft') && isset($_REQUEST['origType']) && $_REQUEST['origType'] == 'forward' && isset($_REQUEST['return_id']) && !empty($_REQUEST['return_id'])) {
$this->getNotes($_REQUEST['return_id'], true);
}
//// END ATTACHMENTS FROM FORWARDS
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//// ATTACHMENTS FROM TEMPLATES
// to preserve individual email integrity, we must dupe Notes and associated files
// for each outbound email - good for integrity, bad for filespace
if (isset($_REQUEST['template_attachment']) && !empty($_REQUEST['template_attachment'])) {
$removeArr = array();
$noteArray = array();
if (isset($_REQUEST['temp_remove_attachment']) && !empty($_REQUEST['temp_remove_attachment'])) {
$removeArr = $_REQUEST['temp_remove_attachment'];
}
foreach ($_REQUEST['template_attachment'] as $noteId) {
if (in_array($noteId, $removeArr)) {
continue;
}
$noteTemplate = new Note();
$noteTemplate->retrieve($noteId);
$noteTemplate->id = create_guid();
$noteTemplate->new_with_id = true;
// duplicating the note with files
$noteTemplate->parent_id = $this->id;
$noteTemplate->parent_type = $this->module_dir;
$noteTemplate->save();
$noteFile = new UploadFile('none');
$noteFile->duplicate_file($noteId, $noteTemplate->id, $noteTemplate->filename);
$noteArray[] = $noteTemplate;
}
$this->attachments = array_merge($this->attachments, $noteArray);
}
//// END ATTACHMENTS FROM TEMPLATES
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//// ADDING NEW ATTACHMENTS
$max_files_upload = 10;
// Jenny - Bug 8211 Since attachments for drafts have already been processed,
// we don't need to re-process them.
if ($this->status != "draft") {
$notes_list = array();
if (!empty($this->id) && !$this->new_with_id) {
$note = new Note();
$where = "notes.parent_id='{$this->id}'";
$notes_list = $note->get_full_list("", $where, true);
}
$this->attachments = array_merge($this->attachments, $notes_list);
}
// cn: Bug 5995 - rudimentary error checking
$filesError = array(0 => 'UPLOAD_ERR_OK - There is no error, the file uploaded with success.', 1 => 'UPLOAD_ERR_INI_SIZE - The uploaded file exceeds the upload_max_filesize directive in php.ini.', 2 => 'UPLOAD_ERR_FORM_SIZE - The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.', 3 => 'UPLOAD_ERR_PARTIAL - The uploaded file was only partially uploaded.', 4 => 'UPLOAD_ERR_NO_FILE - No file was uploaded.', 5 => 'UNKNOWN ERROR', 6 => 'UPLOAD_ERR_NO_TMP_DIR - Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.', 7 => 'UPLOAD_ERR_CANT_WRITE - Failed to write file to disk. Introduced in PHP 5.1.0.');
for ($i = 0; $i < $max_files_upload; $i++) {
// cn: Bug 5995 - rudimentary error checking
if ($_FILES['email_attachment' . $i]['error'] != 0 && $_FILES['email_attachment' . $i]['error'] != 4) {
$GLOBALS['log']->fatal('Email Attachment could not be attach due to error: ' . $filesError[$_FILES['email_attachment' . $i]['error']]);
continue;
}
$note = new Note();
$note->parent_id = $this->id;
$note->parent_type = $this->module_dir;
$upload_file = new UploadFile('email_attachment' . $i);
if (empty($upload_file)) {
continue;
}
if (isset($_FILES['email_attachment' . $i]) && $upload_file->confirm_upload()) {
$note->filename = $upload_file->get_stored_file_name();
$note->file = $upload_file;
$note->name = $mod_strings['LBL_EMAIL_ATTACHMENT'] . ': ' . $note->file->original_file_name;
$this->attachments[] = $note;
}
}
$this->saved_attachments = array();
foreach ($this->attachments as $note) {
if (!empty($note->id)) {
array_push($this->saved_attachments, $note);
continue;
}
$note->parent_id = $this->id;
$note->parent_type = 'Emails';
//.........这里部分代码省略.........
示例7: portal_get_note_attachment
function portal_get_note_attachment($session, $id)
{
$error = new SoapError();
if (!portal_validate_authenticated($session)) {
$error->set_error('invalid_session');
return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
}
if ($_SESSION['type'] == 'lead' || !isset($_SESSION['viewable']['Notes'][$id])) {
$error->set_error('no_access');
return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
}
$current_user = $seed_user;
$note = new Note();
$note->retrieve($id);
require_once 'modules/Notes/NoteSoap.php';
$ns = new NoteSoap();
if (!isset($note->filename)) {
$note->filename = '';
}
$file = $ns->retrieveFile($id, $note->filename);
if ($file == -1) {
$error->set_error('no_file');
$file = '';
}
return array('note_attachment' => array('id' => $id, 'filename' => $note->filename, 'file' => $file), 'error' => $error->get_soap_array());
}
示例8: handleSave
//.........这里部分代码省略.........
$focus->attachments = array_merge($focus->attachments, $notes_list);
//for($i = 0; $i < $max_files_upload; $i++) {
foreach ($_FILES as $key => $file) {
$note = new Note();
$i = preg_replace("/email_attachment(.+)/", '$1', $key);
$upload_file = new UploadFile($key);
if ($upload_file == -1) {
continue;
}
if (isset($_FILES[$key]) && $upload_file->confirm_upload() && preg_match("/^email_attachment/", $key)) {
$note->filename = $upload_file->get_stored_file_name();
$note->file = $upload_file;
$note->name = $mod_strings['LBL_EMAIL_ATTACHMENT'] . ': ' . $note->file->original_file_name;
if (isset($_REQUEST['embedded' . $i]) && !empty($_REQUEST['embedded' . $i])) {
if ($_REQUEST['embedded' . $i] == 'true') {
$note->embed_flag = true;
} else {
$note->embed_flag = false;
}
}
array_push($focus->attachments, $note);
}
}
$focus->saved_attachments = array();
foreach ($focus->attachments as $note) {
if (!empty($note->id)) {
if (empty($_REQUEST['old_id'])) {
// to support duplication of email templates
array_push($focus->saved_attachments, $note);
} else {
// we're duplicating a template with attachments
// dupe the file, create a new note, assign the note to the new template
$newNote = new Note();
$newNote->retrieve($note->id);
$newNote->id = create_guid();
$newNote->parent_id = $focus->id;
$newNote->new_with_id = true;
$newNote->date_modified = '';
$newNote->date_entered = '';
$newNoteId = $newNote->save();
$dupeFile = new UploadFile('duplicate');
$dupeFile->duplicate_file($note->id, $newNoteId, $note->filename);
}
continue;
}
$note->parent_id = $focus->id;
$note->parent_type = 'Emails';
$note->file_mime_type = $note->file->mime_type;
$note_id = $note->save();
array_push($focus->saved_attachments, $note);
$note->id = $note_id;
$note->file->final_move($note->id);
}
//// END NEW ATTACHMENTS
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//// ATTACHMENTS FROM DOCUMENTS
$count = '';
//_pp($_REQUEST);
//_ppd(count($_REQUEST['document']));
if (!empty($_REQUEST['document'])) {
$count = count($_REQUEST['document']);
} else {
$count = 10;
}
for ($i = 0; $i < $count; $i++) {
示例9: sendEmail
function sendEmail($mail, $testmode = false)
{
$this->test = $testmode;
global $beanList, $beanFiles, $sugar_config;
global $mod_strings;
$mod_strings = return_module_language($sugar_config['default_language'], 'EmailMan');
//get tracking entities locations.
if (!isset($this->tracking_url)) {
if (!class_exists('Administration')) {
require_once 'modules/Administration/Administration.php';
}
$admin = new Administration();
$admin->retrieveSettings('massemailer');
//retrieve all admin settings.
if (isset($admin->settings['massemailer_tracking_entities_location_type']) and $admin->settings['massemailer_tracking_entities_location_type'] == '2' and isset($admin->settings['massemailer_tracking_entities_location'])) {
$this->tracking_url = $admin->settings['massemailer_tracking_entities_location'];
} else {
$this->tracking_url = $sugar_config['site_url'];
}
}
if (!isset($beanList[$this->related_type])) {
return false;
}
$class = $beanList[$this->related_type];
if (!class_exists($class)) {
require_once $beanFiles[$class];
}
if (!class_exists('Email')) {
require_once 'modules/Emails/Email.php';
}
$module = new $class();
$module->retrieve($this->related_id);
if ((!isset($module->email_opt_out) || $module->email_opt_out != 'on') && (!isset($module->invalid_email) || $module->invalid_email != 1)) {
$lower_email_address = strtolower($module->email1);
//test against indivdual address.
if (isset($this->restricted_addresses) and isset($this->restricted_addresses[$lower_email_address])) {
$this->set_as_sent($lower_email_address, true, true, null, null, null, true);
return true;
}
//test against restricted domains
$at_pos = strrpos($lower_email_address, '@');
if ($at_pos !== false) {
foreach ($this->restricted_domains as $domain => $value) {
$pos = strrpos($lower_email_address, $domain);
if ($pos !== false && $pos > $at_pos) {
//found
$this->set_as_sent($lower_email_address, true, true, null, null, null, true);
return true;
}
}
}
//test for duplicate email address.
if (!empty($module->email1) and !empty($this->campaign_id)) {
$dup_query = "select id from campaign_log where more_information='" . $module->email1 . "' and campaign_id='" . $this->campaign_id . "'";
$dup = $this->db->query($dup_query);
$dup_row = $this->db->fetchByAssoc($dup);
if (!empty($dup_row)) {
//email address was processed //silent delete this entry.
$this->set_as_sent($module->email1, true, true, null, null, null, true);
return true;
}
}
$start = microtime();
$this->target_tracker_key = create_guid();
//fetch email marketing.
if (empty($this->current_emailmarketing) or !isset($this->current_emailmarketing)) {
if (!class_exists('EmailMarketing')) {
require_once 'modules/EmailMarketing/EmailMarketing.php';
}
$this->current_emailmarketing = new EmailMarketing();
}
if (empty($this->current_emailmarketing->id) or $this->current_emailmarketing->id !== $this->marketing_id) {
$this->current_emailmarketing->retrieve($this->marketing_id);
}
//fetch email template associate with the marketing message.
if (empty($this->current_emailtemplate) or $this->current_emailtemplate->id !== $this->current_emailmarketing->template_id) {
if (!class_exists('EmailTemplate')) {
require_once 'modules/EmailTemplates/EmailTemplate.php';
}
$this->current_emailtemplate = new EmailTemplate();
$this->current_emailtemplate->retrieve($this->current_emailmarketing->template_id);
//escape email template contents.
$this->current_emailtemplate->subject = from_html($this->current_emailtemplate->subject);
$this->current_emailtemplate->body_html = from_html($this->current_emailtemplate->body_html);
$this->current_emailtemplate->body = from_html($this->current_emailtemplate->body);
$q = "SELECT * FROM notes WHERE parent_id = '" . $this->current_emailtemplate->id . "' AND deleted = 0";
$r = $this->db->query($q);
// cn: bug 4684 - initialize the notes array, else old data is still around for the next round
$this->notes_array = array();
while ($a = $this->db->fetchByAssoc($r)) {
$noteTemplate = new Note();
$noteTemplate->retrieve($a['id']);
$this->notes_array[] = $noteTemplate;
}
}
//fetch mailbox details..
if (empty($this->current_mailbox)) {
if (!class_exists('InboundEmail')) {
require_once 'modules/InboundEmail/InboundEmail.php';
}
//.........这里部分代码省略.........
示例10: handleAttachments
public function handleAttachments($focus, $redirect, $return_id)
{
///////////////////////////////////////////////////////////////////////////////
//// ATTACHMENT HANDLING
///////////////////////////////////////////////////////////////////////////
//// ADDING NEW ATTACHMENTS
global $mod_strings;
$max_files_upload = count($_FILES);
if (!empty($focus->id)) {
$note = new Note();
$where = "notes.parent_id='{$focus->id}'";
if (!empty($_REQUEST['old_id'])) {
// to support duplication of email templates
$where .= " OR notes.parent_id='" . htmlspecialchars($_REQUEST['old_id'], ENT_QUOTES) . "'";
}
$notes_list = $note->get_full_list("", $where, true);
}
if (!isset($notes_list)) {
$notes_list = array();
}
if (!is_array($focus->attachments)) {
// PHP5 does not auto-create arrays(). Need to initialize it here.
$focus->attachments = array();
}
$focus->attachments = array_merge($focus->attachments, $notes_list);
//for($i = 0; $i < $max_files_upload; $i++) {
foreach ($_FILES as $key => $file) {
$note = new Note();
//Images are presaved above so we need to prevent duplicate files from being created.
if (isset($preProcessedImages[$file['name']])) {
$oldId = $preProcessedImages[$file['name']];
$note->id = $oldId;
$note->new_with_id = TRUE;
$GLOBALS['log']->debug("Image {$file['name']} has already been processed.");
}
$i = preg_replace("/email_attachment(.+)/", '$1', $key);
$upload_file = new UploadFile($key);
if (isset($_FILES[$key]) && $upload_file->confirm_upload() && preg_match("/^email_attachment/", $key)) {
$note->filename = $upload_file->get_stored_file_name();
$note->file = $upload_file;
$note->name = $mod_strings['LBL_EMAIL_ATTACHMENT'] . ': ' . $note->file->original_file_name;
if (isset($_REQUEST['embedded' . $i]) && !empty($_REQUEST['embedded' . $i])) {
if ($_REQUEST['embedded' . $i] == 'true') {
$note->embed_flag = true;
} else {
$note->embed_flag = false;
}
}
array_push($focus->attachments, $note);
}
}
$focus->saved_attachments = array();
foreach ($focus->attachments as $note) {
if (!empty($note->id) && $note->new_with_id === FALSE) {
if (empty($_REQUEST['old_id'])) {
array_push($focus->saved_attachments, $note);
} else {
// we're duplicating a template with attachments
// dupe the file, create a new note, assign the note to the new template
$newNote = new Note();
$newNote->retrieve($note->id);
$newNote->id = create_guid();
$newNote->parent_id = $focus->id;
$newNote->new_with_id = true;
$newNote->date_modified = '';
$newNote->date_entered = '';
/* BEGIN - SECURITY GROUPS */
//Need to do this so that attachments show under an EmailTemplate correctly for a normal user
global $current_user;
$newNote->assigned_user_id = $current_user->id;
/* END - SECURITY GROUPS */
$newNoteId = $newNote->save();
UploadFile::duplicate_file($note->id, $newNoteId, $note->filename);
}
continue;
}
$note->parent_id = $focus->id;
$note->parent_type = 'Emails';
$note->file_mime_type = $note->file->mime_type;
/* BEGIN - SECURITY GROUPS */
//Need to do this so that attachments show under an EmailTemplate correctly for a normal user
global $current_user;
$note->assigned_user_id = $current_user->id;
/* END - SECURITY GROUPS */
$note_id = $note->save();
array_push($focus->saved_attachments, $note);
$note->id = $note_id;
if ($note->new_with_id === FALSE) {
$note->file->final_move($note->id);
} else {
$GLOBALS['log']->debug("Not performing final move for note id {$note->id} as it has already been processed");
}
}
//// END NEW ATTACHMENTS
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//// ATTACHMENTS FROM DOCUMENTS
$count = '';
//_pp($_REQUEST);
//_ppd(count($_REQUEST['document']));
//.........这里部分代码省略.........
示例11: handleSave
function handleSave($prefix, $redirect = true, $useRequired = false)
{
require_once 'modules/EmailTemplates/EmailTemplate.php';
require_once 'modules/Documents/Document.php';
require_once 'modules/DocumentRevisions/DocumentRevision.php';
require_once 'modules/Notes/Note.php';
require_once 'include/formbase.php';
require_once 'include/upload_file.php';
global $upload_maxsize, $upload_dir;
global $mod_strings;
$focus = new EmailTemplate();
if ($useRequired && !checkRequired($prefix, array_keys($focus->required_fields))) {
return null;
}
$focus = populateFromPost($prefix, $focus);
if (!$focus->ACLAccess('Save')) {
ACLController::displayNoAccess(true);
sugar_cleanup(true);
}
if (!isset($_REQUEST['published'])) {
$focus->published = 'off';
}
$return_id = $focus->save();
///////////////////////////////////////////////////////////////////////////////
//// ATTACHMENT HANDLING
///////////////////////////////////////////////////////////////////////////
//// ADDING NEW ATTACHMENTS
$max_files_upload = 10;
if (!empty($focus->id)) {
$note = new Note();
$where = "notes.parent_id='{$focus->id}'";
if (!empty($_REQUEST['old_id'])) {
// to support duplication of email templates
$where .= " OR notes.parent_id='" . $_REQUEST['old_id'] . "'";
}
$notes_list = $note->get_full_list("", $where, true);
}
if (!isset($notes_list)) {
$notes_list = array();
}
if (!is_array($focus->attachments)) {
// PHP5 does not auto-create arrays(). Need to initialize it here.
$focus->attachments = array();
}
$focus->attachments = array_merge($focus->attachments, $notes_list);
for ($i = 0; $i < $max_files_upload; $i++) {
$note = new Note();
$upload_file = new UploadFile('email_attachment' . $i);
if ($upload_file == -1) {
continue;
}
if (isset($_FILES['email_attachment' . $i]) && $upload_file->confirm_upload()) {
$note->filename = $upload_file->get_stored_file_name();
$note->file = $upload_file;
$note->name = $mod_strings['LBL_EMAIL_ATTACHMENT'] . ': ' . $note->file->original_file_name;
array_push($focus->attachments, $note);
}
}
$focus->saved_attachments = array();
foreach ($focus->attachments as $note) {
if (!empty($note->id)) {
if (empty($_REQUEST['old_id'])) {
// to support duplication of email templates
array_push($focus->saved_attachments, $note);
} else {
// we're duplicating a template with attachments
// dupe the file, create a new note, assign the note to the new template
$newNote = new Note();
$newNote->retrieve($note->id);
$newNote->id = create_guid();
$newNote->parent_id = $focus->id;
$newNote->new_with_id = true;
$newNoteId = $newNote->save();
$dupeFile = new UploadFile('duplicate');
$dupeFile->duplicate_file($note->id, $newNoteId, $note->filename);
}
continue;
}
$note->parent_id = $focus->id;
$note->parent_type = 'Emails';
$note->file_mime_type = $note->file->mime_type;
$note_id = $note->save();
array_push($focus->saved_attachments, $note);
$note->id = $note_id;
$note->file->final_move($note->id);
}
//// END NEW ATTACHMENTS
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//// ATTACHMENTS FROM DOCUMENTS
for ($i = 0; $i < 10; $i++) {
if (isset($_REQUEST['documentId' . $i]) && !empty($_REQUEST['documentId' . $i])) {
$doc = new Document();
$docRev = new DocumentRevision();
$docNote = new Note();
$noteFile = new UploadFile('none');
$doc->retrieve($_REQUEST['documentId' . $i]);
$docRev->retrieve($doc->document_revision_id);
array_push($focus->saved_attachments, $docRev);
$docNote->name = $doc->document_name;
//.........这里部分代码省略.........
示例12: handleAttachments
/**
* @param notes array of note beans
*/
function handleAttachments($notes)
{
global $sugar_config;
//replace references to cache/images with cid tag
$this->Body = str_replace($GLOBALS['sugar_config']['cache_dir'] . 'images/', 'cid:', $this->Body);
if (empty($notes)) {
return;
}
// cn: bug 4864 - reusing same SugarPHPMailer class, need to clear attachments
$this->ClearAttachments();
require_once 'include/upload_file.php';
//Handle legacy attachments
$fileBasePath = "{$sugar_config['upload_dir']}";
$filePatternSearch = "{$sugar_config['upload_dir']}";
$filePatternSearch = str_replace("/", "\\/", $filePatternSearch);
if (strpos($this->Body, "\"{$fileBasePath}")) {
$matches = array();
preg_match_all("/{$filePatternSearch}.+?\"/i", $this->Body, $matches);
foreach ($matches[0] as $match) {
$filename = str_replace($fileBasePath, '', $match);
$filename = urldecode(substr($filename, 0, -1));
$cid = $filename;
$file_location = clean_path(getcwd() . "/{$sugar_config['upload_dir']}{$filename}");
$mime_type = "image/" . strtolower(substr($filename, strrpos($filename, ".") + 1, strlen($filename)));
if (file_exists($file_location)) {
$this->AddEmbeddedImage($file_location, $cid, $filename, 'base64', $mime_type);
}
}
//replace references to cache with cid tag
$this->Body = str_replace($fileBasePath, 'cid:', $this->Body);
}
//Handle secure embeded images.
$noteImgRegex = "/<img[^>]*[\\s]+src[^=]*=\"index.php\\?entryPoint=download(\\&|\\&)id=([^\\&]*)[^>]*>/im";
$embededImageMatches = array();
preg_match_all($noteImgRegex, $this->Body, $embededImageMatches, PREG_SET_ORDER);
foreach ($embededImageMatches as $singleMatch) {
$fullMatch = $singleMatch[0];
$noteId = $singleMatch[2];
$cid = $noteId;
$filename = $noteId;
//Retrieve note for mimetype
$tmpNote = new Note();
$tmpNote->retrieve($noteId);
//Replace the src part of img tag with new cid tag
$cidRegex = "/src=\"([^\"]*)\"/im";
$replaceMatch = preg_replace($cidRegex, "src=\"cid:{$noteId}\"", $fullMatch);
//Replace the body, old tag for new tag
$this->Body = str_replace($fullMatch, $replaceMatch, $this->Body);
//Attach the file
$file_location = clean_path(getcwd() . "/{$sugar_config['upload_dir']}{$noteId}");
if (file_exists($file_location)) {
$this->AddEmbeddedImage($file_location, $cid, $filename, 'base64', $tmpNote->file_mime_type);
}
}
//Handle regular attachments.
foreach ($notes as $note) {
$mime_type = 'text/plain';
$file_location = '';
$filename = '';
if ($note->object_name == 'Note') {
if (!empty($note->file->temp_file_location) && is_file($note->file->temp_file_location)) {
$file_location = $note->file->temp_file_location;
$filename = $note->file->original_file_name;
$mime_type = $note->file->mime_type;
} else {
$file_location = rawurldecode(UploadFile::get_file_path($note->filename, $note->id));
$filename = $note->id . $note->filename;
$mime_type = $note->file_mime_type;
}
} elseif ($note->object_name == 'DocumentRevision') {
// from Documents
$filename = $note->id . $note->filename;
$file_location = getcwd() . '/' . $GLOBALS['sugar_config']['upload_dir'] . $filename;
$mime_type = $note->file_mime_type;
}
$filename = substr($filename, 36, strlen($filename));
// strip GUID for PHPMailer class to name outbound file
if (!$note->embed_flag) {
$this->AddAttachment($file_location, $filename, 'base64', $mime_type);
}
// else
}
}
示例13: new_get_note_attachment
/**
* Retrieve an attachment from a note
* @param String $session -- Session ID returned by a previous call to login.
* @param String $id -- The ID of the appropriate Note.
* @return Array 'note_attachment' -- Array String 'id' -- The ID of the Note containing the attachment
* String 'filename' -- The file name of the attachment
* Binary 'file' -- The binary contents of the file.
* String 'related_module_id' -- module id to which this note is related
* String 'related_module_name' - module name to which this note is related
* @exception 'SoapFault' -- The SOAP error, if any
*/
function new_get_note_attachment($session, $id)
{
$error = new SoapError();
if (!checkSessionAndModuleAccess($session, 'invalid_session', '', '', '', $error)) {
return;
}
// if
$note = new Note();
$note->retrieve($id);
if (!checkACLAccess($note, 'DetailView', $error, 'no_access')) {
return;
}
// if
require_once 'modules/Notes/NoteSoap.php';
$ns = new NoteSoap();
if (!isset($note->filename)) {
$note->filename = '';
}
$file = $ns->retrieveFile($id, $note->filename);
if ($file == -1) {
$file = '';
}
return array('note_attachment' => array('id' => $id, 'filename' => $note->filename, 'file' => $file, 'related_module_id' => $note->parent_id, 'related_module_name' => $note->parent_type));
}
示例14: handleBodyInHTMLformat
/**
* Retrieve function from handlebody() to unit test easily
* @param $mail
* @return formatted $mail body
*/
function handleBodyInHTMLformat($mail)
{
global $current_user;
global $sugar_config;
// wp: if body is html, then insert new lines at 996 characters. no effect on client side
// due to RFC 2822 which limits email lines to 998
$mail->IsHTML(true);
$body = from_html(wordwrap($this->description_html, 996));
$mail->Body = $body;
// cn: bug 9725
// new plan is to use the selected type (html or plain) to fill the other
$plainText = from_html($this->description_html);
$plainText = strip_tags(br2nl($plainText));
$mail->AltBody = $plainText;
$this->description = $plainText;
$fileBasePath = "{$sugar_config['cache_dir']}images/";
$filePatternSearch = "{$sugar_config['cache_dir']}";
$filePatternSearch = str_replace("/", "\\/", $filePatternSearch);
$filePatternSearch = $filePatternSearch . "images\\/";
if (strpos($mail->Body, "\"{$fileBasePath}") !== FALSE) {
//cache/images
$matches = array();
preg_match_all("/{$filePatternSearch}.+?\"/i", $mail->Body, $matches);
foreach ($matches[0] as $match) {
$filename = str_replace($fileBasePath, '', $match);
$filename = urldecode(substr($filename, 0, -1));
$cid = $filename;
$file_location = clean_path(getcwd() . "/{$sugar_config['cache_dir']}images/{$filename}");
$mime_type = "image/" . strtolower(substr($filename, strrpos($filename, ".") + 1, strlen($filename)));
if (file_exists($file_location)) {
$mail->AddEmbeddedImage($file_location, $cid, $filename, 'base64', $mime_type);
}
}
//replace references to cache with cid tag
$mail->Body = str_replace("/" . $fileBasePath, 'cid:', $mail->Body);
$mail->Body = str_replace($fileBasePath, 'cid:', $mail->Body);
// remove bad img line from outbound email
$regex = '#<img[^>]+src[^=]*=\\"\\/([^>]*?[^>]*)>#sim';
$mail->Body = preg_replace($regex, '', $mail->Body);
}
$fileBasePath = "{$sugar_config['upload_dir']}";
$filePatternSearch = "{$sugar_config['upload_dir']}";
$filePatternSearch = str_replace("/", "\\/", $filePatternSearch);
if (strpos($mail->Body, "\"{$fileBasePath}") !== FALSE) {
$matches = array();
preg_match_all("/{$filePatternSearch}.+?\"/i", $mail->Body, $matches);
foreach ($matches[0] as $match) {
$filename = str_replace($fileBasePath, '', $match);
$filename = urldecode(substr($filename, 0, -1));
$cid = $filename;
$file_location = clean_path(getcwd() . "/{$sugar_config['upload_dir']}{$filename}");
$mime_type = "image/" . strtolower(substr($filename, strrpos($filename, ".") + 1, strlen($filename)));
if (file_exists($file_location)) {
$mail->AddEmbeddedImage($file_location, $cid, $filename, 'base64', $mime_type);
}
}
//replace references to cache with cid tag
$mail->Body = str_replace("/" . $fileBasePath, 'cid:', $mail->Body);
$mail->Body = str_replace($fileBasePath, 'cid:', $mail->Body);
// remove bad img line from outbound email
$regex = '#<img[^>]+src[^=]*=\\"\\/([^>]*?[^>]*)>#sim';
$mail->Body = preg_replace($regex, '', $mail->Body);
}
//Replace any embeded images using the secure entryPoint for src url.
$noteImgRegex = "/<img[^>]*[\\s]+src[^=]*=\"index.php\\?entryPoint=download\\&id=([^\\&]*)[^>]*>/im";
$embededImageMatches = array();
preg_match_all($noteImgRegex, $mail->Body, $embededImageMatches, PREG_SET_ORDER);
foreach ($embededImageMatches as $singleMatch) {
$fullMatch = $singleMatch[0];
$noteId = $singleMatch[1];
$cid = $noteId;
$filename = $noteId;
//Retrieve note for mimetype
$tmpNote = new Note();
$tmpNote->retrieve($noteId);
//Replace the src part of img tag with new cid tag
$cidRegex = "/src=\"([^\"]*)\"/im";
$replaceMatch = preg_replace($cidRegex, "src=\"cid:{$noteId}\"", $fullMatch);
//Replace the body, old tag for new tag
$mail->Body = str_replace($fullMatch, $replaceMatch, $mail->Body);
//Attach the file
$file_location = clean_path(getcwd() . "/{$sugar_config['upload_dir']}{$noteId}");
if (file_exists($file_location)) {
$mail->AddEmbeddedImage($file_location, $cid, $filename, 'base64', $tmpNote->file_mime_type);
}
}
//End Replace
$mail->Body = from_html($mail->Body);
}
示例15: Note
* Description: TODO: To be written.
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
* All Rights Reserved.
* Contributor(s): ______________________________________..
********************************************************************************/
require_once 'XTemplate/xtpl.php';
require_once 'data/Tracker.php';
require_once 'modules/Notes/Note.php';
require_once 'modules/Notes/Forms.php';
global $app_strings;
global $app_list_strings;
global $mod_strings;
global $sugar_version, $sugar_config;
$focus = new Note();
if (isset($_REQUEST['record'])) {
$focus->retrieve($_REQUEST['record']);
}
$old_id = '';
if (isset($_REQUEST['isDuplicate']) && $_REQUEST['isDuplicate'] == 'true') {
if (!empty($focus->filename)) {
$old_id = $focus->id;
}
$focus->id = "";
}
if (isset($_REQUEST['name'])) {
$focus->name = $_REQUEST['name'];
}
if (isset($_REQUEST['description'])) {
$focus->description = $_REQUEST['description'];
}
//setting default flag value so due date and time not required