public function process(Vtiger_Request $request) { $qualifiedModuleName = $request->getModule(false); $moduleModel = Settings_Vtiger_CompanyDetails_Model::getInstance(); $status = false; if ($request->get('organizationname')) { $saveLogo = $status = true; if (!empty($_FILES['logo']['name'])) { $logoDetails = $_FILES['logo']; $fileType = explode('/', $logoDetails['type']); $fileType = $fileType[1]; if (!$logoDetails['size'] || !in_array($fileType, Settings_Vtiger_CompanyDetails_Model::$logoSupportedFormats)) { $saveLogo = false; } //mime type check $mimeType = Vtiger_Functions::getMimeContentType($logoDetails['tmp_name']); $mimeTypeContents = explode('/', $mimeType); if (!$logoDetails['size'] || $mimeTypeContents[0] != 'image' || !in_array($mimeTypeContents[1], Settings_Vtiger_CompanyDetails_Model::$logoSupportedFormats)) { $saveLogo = false; } // Check for php code injection $imageContents = file_get_contents($_FILES["logo"]["tmp_name"]); if (preg_match('/(<\?php?(.*?))/i', $imageContents) == 1) { $saveLogo = false; } if ($saveLogo) { $moduleModel->saveLogo(); } } else { $saveLogo = true; } $fields = $moduleModel->getFields(); foreach ($fields as $fieldName => $fieldType) { $fieldValue = $request->get($fieldName); if ($fieldName === 'logoname') { if (!empty($logoDetails['name'])) { $fieldValue = ltrim(basename(" " . $logoDetails['name'])); } else { $fieldValue = $moduleModel->get($fieldName); } } $moduleModel->set($fieldName, $fieldValue); } $moduleModel->save(); } $reloadUrl = $moduleModel->getIndexViewUrl(); if ($saveLogo && $status) { } else if (!$saveLogo) { $reloadUrl .= '&error=LBL_INVALID_IMAGE'; } else { $reloadUrl = $moduleModel->getEditViewUrl() . '&error=LBL_FIELDS_INFO_IS_EMPTY'; } header('Location: ' . $reloadUrl); }
public function process(Vtiger_Request $request) { $qualifiedModuleName = $request->getModule(false); $moduleModel = Settings_Vtiger_CompanyDetails_Model::getInstance(); $saveLogo = $securityError = false; $logoDetails = $_FILES['logo']; $fileType = explode('/', $logoDetails['type']); $fileType = $fileType[1]; $logoContent = file_get_contents($logoDetails['tmp_name']); if (preg_match('(<\\?php?(.*?))', $imageContent) != 0) { $securityError = true; } if (!$securityError) { if ($logoDetails['size'] && in_array($fileType, Settings_Vtiger_CompanyDetails_Model::$logoSupportedFormats)) { $saveLogo = true; } if ($saveLogo) { $moduleModel->saveLogo(); $moduleModel->set('logoname', ltrim(basename(' ' . Vtiger_Util_Helper::sanitizeUploadFileName($logoDetails['name'], vglobal('upload_badext'))))); $moduleModel->save(); } } $reloadUrl = $moduleModel->getIndexViewUrl(); if ($securityError) { $reloadUrl .= '&error=LBL_IMAGE_CORRUPTED'; } else { if (!$saveLogo) { $reloadUrl .= '&error=LBL_INVALID_IMAGE'; } } header('Location: ' . $reloadUrl); }
public function process(Vtiger_Request $request) { $qualifiedModuleName = $request->getModule(false); $moduleModel = Settings_Vtiger_CompanyDetails_Model::getInstance(); $viewer = $this->getViewer($request); $viewer->assign('MODULE_MODEL', $moduleModel); $viewer->assign('ERROR_MESSAGE', $request->get('error')); $viewer->view('CompanyDetails.tpl', $qualifiedModuleName); }
public function process(Vtiger_Request $request) { $qualifiedModuleName = $request->getModule(false); //SalesPlatform.ru begin $selectedCompany = htmlspecialchars($request->get('company'), ENT_QUOTES); if ($selectedCompany == '') { $selectedCompany = 'Default'; } $moduleModel = Settings_Vtiger_CompanyDetails_Model::getInstance($selectedCompany); //$moduleModel = Settings_Vtiger_CompanyDetails_Model::getInstance(); //SalesPlatform.ru end $viewer = $this->getViewer($request); //SalesPlatform.ru begin $viewer->assign('SELECTED_COMPANY', htmlspecialchars($selectedCompany)); //SalesPlatform.ru end $viewer->assign('MODULE_MODEL', $moduleModel); $viewer->assign('ERROR_MESSAGE', $request->get('error')); $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName); $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel()); $viewer->view('CompanyDetails.tpl', $qualifiedModuleName); }
/** * Function sends mail */ public function send() { $currentUserModel = Users_Record_Model::getCurrentUserModel(); $rootDirectory = vglobal('root_directory'); $mailer = Emails_Mailer_Model::getInstance(); $mailer->IsHTML(true); $fromEmail = $this->getFromEmailAddress(); $replyTo = $currentUserModel->get('email1'); $userName = $currentUserModel->getName(); // To eliminate the empty value of an array $toEmailInfo = array_filter($this->get('toemailinfo')); $toMailNamesList = array_filter($this->get('toMailNamesList')); foreach ($toMailNamesList as $id => $emailData) { foreach ($emailData as $key => $email) { if ($toEmailInfo[$id]) { array_push($toEmailInfo[$id], $email['value']); } } } $emailsInfo = array(); foreach ($toEmailInfo as $id => $emails) { foreach ($emails as $key => $value) { array_push($emailsInfo, $value); } } $toFieldData = array_diff(explode(',', $this->get('saved_toid')), $emailsInfo); $toEmailsData = array(); $i = 1; foreach ($toFieldData as $value) { $toEmailInfo['to' . $i++] = array($value); } $attachments = $this->getAttachmentDetails(); $status = false; // Merge Users module merge tags based on current user. $mergedDescription = getMergedDescription($this->get('description'), $currentUserModel->getId(), 'Users'); foreach ($toEmailInfo as $id => $emails) { $mailer->reinitialize(); $mailer->ConfigSenderInfo($fromEmail, $userName, $replyTo); $old_mod_strings = vglobal('mod_strings'); $description = $this->get('description'); $parentModule = $this->getEntityType($id); if ($parentModule) { $currentLanguage = Vtiger_Language_Handler::getLanguage(); $moduleLanguageStrings = Vtiger_Language_Handler::getModuleStringsFromFile($currentLanguage, $parentModule); vglobal('mod_strings', $moduleLanguageStrings['languageStrings']); if ($parentModule != 'Users') { // Apply merge for non-Users module merge tags. $description = getMergedDescription($mergedDescription, $id, $parentModule); } else { // Re-merge the description for user tags based on actual user. $description = getMergedDescription($description, $id, 'Users'); vglobal('mod_strings', $old_mod_strings); } } if (strpos($description, '$logo$')) { $description = str_replace('$logo$', "<img src='cid:logo' />", $description); $logo = true; } foreach ($emails as $email) { $mailer->Body = $description; $mailer->Signature = str_replace(array('\\r\\n', '\\n'), '<br>', $currentUserModel->get('signature')); if ($mailer->Signature != '') { $mailer->Body .= '<br><br>' . decode_html($mailer->Signature); } $mailer->Subject = $this->get('subject'); $mailer->AddAddress($email); //Adding attachments to mail if (is_array($attachments)) { foreach ($attachments as $attachment) { $fileNameWithPath = $rootDirectory . $attachment['path'] . $attachment['fileid'] . "_" . $attachment['attachment']; if (is_file($fileNameWithPath)) { $mailer->AddAttachment($fileNameWithPath, $attachment['attachment']); } } } if ($logo) { //While sending email template and which has '$logo$' then it should replace with company logo $company = Settings_Vtiger_CompanyDetails_Model::getInstance(); $logo = $company->getLogoPath('logoname'); $mailer->AddEmbeddedImage(dirname(__FILE__) . '/../../../' . $logo, 'logo', 'logo.jpg', 'base64', 'image/jpg'); } $ccs = array_filter(explode(',', $this->get('ccmail'))); $bccs = array_filter(explode(',', $this->get('bccmail'))); if (!empty($ccs)) { foreach ($ccs as $cc) { $mailer->AddCC($cc); } } if (!empty($bccs)) { foreach ($bccs as $bcc) { $mailer->AddBCC($bcc); } } } $status = $mailer->Send(true); if (!$status) { $status = $mailer->getError(); } else { $mailString = $mailer->getMailString(); $mailBoxModel = MailManager_Mailbox_Model::activeInstance(); $folderName = $mailBoxModel->folder(); if (!empty($folderName) && !empty($mailString)) { $connector = MailManager_Connector_Connector::connectorWithModel($mailBoxModel, ''); imap_append($connector->mBox, $connector->mBoxUrl . $folderName, $mailString, "\\Seen"); } } } return $status; }