示例#1
0
 public function process(Vtiger_Request $request)
 {
     $result = Vtiger_Util_Helper::transformUploadedFiles($_FILES, true);
     $_FILES = $result['imagename'];
     //To stop saveing the value of salutation as '--None--'
     $salutationType = $request->get('salutationtype');
     if ($salutationType === '--None--') {
         $request->set('salutationtype', '');
     }
     parent::process($request);
 }
示例#2
0
 public function process(Vtiger_Request $request)
 {
     $result = Vtiger_Util_Helper::transformUploadedFiles($_FILES, true);
     $_FILES = $result['imagename'];
     $recordModel = $this->saveRecord($request);
     if ($request->get('relationOperation')) {
         $parentRecordModel = Vtiger_Record_Model::getInstanceById($request->get('sourceRecord'), $request->get('sourceModule'));
         $loadUrl = $parentRecordModel->getDetailViewUrl();
     } else {
         if ($request->get('isPreference')) {
             $loadUrl = $recordModel->getPreferenceDetailViewUrl();
         } else {
             $loadUrl = $recordModel->getDetailViewUrl();
         }
     }
     header("Location: {$loadUrl}");
 }
示例#3
0
 /**
  * Function Sends/Saves mass emails
  * @param <Vtiger_Request> $request
  */
 public function massSave(Vtiger_Request $request)
 {
     global $upload_badext;
     $adb = PearDatabase::getInstance();
     $moduleName = $request->getModule();
     $currentUserModel = Users_Record_Model::getCurrentUserModel();
     $recordIds = $this->getRecordsListFromRequest($request);
     $documentIds = $request->get('documentids');
     // This is either SENT or SAVED
     $flag = $request->get('flag');
     $result = Vtiger_Util_Helper::transformUploadedFiles($_FILES, true);
     $_FILES = $result['file'];
     $recordId = $request->get('record');
     if (!empty($recordId)) {
         $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
         $recordModel->set('mode', 'edit');
     } else {
         $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
         $recordModel->set('mode', '');
     }
     $parentEmailId = $request->get('parent_id', null);
     $attachmentsWithParentEmail = array();
     if (!empty($parentEmailId) && !empty($recordId)) {
         $parentEmailModel = Vtiger_Record_Model::getInstanceById($parentEmailId);
         $attachmentsWithParentEmail = $parentEmailModel->getAttachmentDetails();
     }
     $existingAttachments = $request->get('attachments', array());
     if (empty($recordId)) {
         if (is_array($existingAttachments)) {
             foreach ($existingAttachments as $index => $existingAttachInfo) {
                 $existingAttachInfo['tmp_name'] = $existingAttachInfo['name'];
                 $existingAttachments[$index] = $existingAttachInfo;
                 if (array_key_exists('docid', $existingAttachInfo)) {
                     $documentIds[] = $existingAttachInfo['docid'];
                     unset($existingAttachments[$index]);
                 }
             }
         }
     } else {
         //If it is edit view unset the exising attachments
         //remove the exising attachments if it is in edit view
         $attachmentsToUnlink = array();
         $documentsToUnlink = array();
         foreach ($attachmentsWithParentEmail as $i => $attachInfo) {
             $found = false;
             foreach ($existingAttachments as $index => $existingAttachInfo) {
                 if ($attachInfo['fileid'] == $existingAttachInfo['fileid']) {
                     $found = true;
                     break;
                 }
             }
             //Means attachment is deleted
             if (!$found) {
                 if (array_key_exists('docid', $attachInfo)) {
                     $documentsToUnlink[] = $attachInfo['docid'];
                 } else {
                     $attachmentsToUnlink[] = $attachInfo;
                 }
             }
             unset($attachmentsWithParentEmail[$i]);
         }
         //Make the attachments as empty for edit view since all the attachments will already be there
         $existingAttachments = array();
         if (!empty($documentsToUnlink)) {
             $recordModel->deleteDocumentLink($documentsToUnlink);
         }
         if (!empty($attachmentsToUnlink)) {
             $recordModel->deleteAttachment($attachmentsToUnlink);
         }
     }
     // This will be used for sending mails to each individual
     $toMailInfo = $request->get('toemailinfo');
     $to = $request->get('to');
     if (is_array($to)) {
         $to = implode(',', $to);
     }
     $recordModel->set('description', $request->get('description'));
     $recordModel->set('subject', $request->get('subject'));
     $recordModel->set('toMailNamesList', $request->get('toMailNamesList'));
     $recordModel->set('saved_toid', $to);
     $recordModel->set('ccmail', $request->get('cc'));
     $recordModel->set('bccmail', $request->get('bcc'));
     $recordModel->set('assigned_user_id', $currentUserModel->getId());
     $recordModel->set('email_flag', $flag);
     $recordModel->set('documentids', $documentIds);
     $recordModel->set('toemailinfo', $toMailInfo);
     foreach ($toMailInfo as $recordId => $emailValueList) {
         if ($recordModel->getEntityType($recordId) == 'Users') {
             $parentIds .= $recordId . '@-1|';
         } else {
             $parentIds .= $recordId . '@1|';
         }
     }
     $recordModel->set('parent_id', $parentIds);
     //save_module still depends on the $_REQUEST, need to clean it up
     $_REQUEST['parent_id'] = $parentIds;
     $success = false;
     $viewer = $this->getViewer($request);
     if ($recordModel->checkUploadSize($documentIds)) {
         $recordModel->save();
         //To Handle existing attachments
         $current_user = Users_Record_Model::getCurrentUserModel();
         $ownerId = $recordModel->get('assigned_user_id');
         $date_var = date("Y-m-d H:i:s");
         if (is_array($existingAttachments)) {
             foreach ($existingAttachments as $index => $existingAttachInfo) {
                 $file_name = $existingAttachInfo['attachment'];
                 $path = $existingAttachInfo['path'];
                 $fileId = $existingAttachInfo['fileid'];
                 $oldFileName = $file_name;
                 //SEND PDF mail will not be having file id
                 if (!empty($fileId)) {
                     $oldFileName = $existingAttachInfo['fileid'] . '_' . $file_name;
                 }
                 $oldFilePath = $path . '/' . $oldFileName;
                 $binFile = sanitizeUploadFileName($file_name, $upload_badext);
                 $current_id = $adb->getUniqueID("vtiger_crmentity");
                 $filename = ltrim(basename(" " . $binFile));
                 //allowed filename like UTF-8 characters
                 $filetype = $existingAttachInfo['type'];
                 $filesize = $existingAttachInfo['size'];
                 //get the file path inwhich folder we want to upload the file
                 $upload_file_path = decideFilePath();
                 $newFilePath = $upload_file_path . $current_id . "_" . $binFile;
                 copy($oldFilePath, $newFilePath);
                 $sql1 = "insert into vtiger_crmentity (crmid,smcreatorid,smownerid,setype,description,createdtime,modifiedtime) values(?, ?, ?, ?, ?, ?, ?)";
                 $params1 = array($current_id, $current_user->getId(), $ownerId, $moduleName . " Attachment", $recordModel->get('description'), $adb->formatDate($date_var, true), $adb->formatDate($date_var, true));
                 $adb->pquery($sql1, $params1);
                 $sql2 = "insert into vtiger_attachments(attachmentsid, name, description, type, path) values(?, ?, ?, ?, ?)";
                 $params2 = array($current_id, $filename, $recordModel->get('description'), $filetype, $upload_file_path);
                 $result = $adb->pquery($sql2, $params2);
                 $sql3 = 'insert into vtiger_seattachmentsrel values(?,?)';
                 $adb->pquery($sql3, array($recordModel->getId(), $current_id));
             }
         }
         $success = true;
         if ($flag == 'SENT') {
             $status = $recordModel->send();
             if ($status === true) {
                 // This is needed to set vtiger_email_track table as it is used in email reporting
                 $recordModel->setAccessCountValue();
             } else {
                 $success = false;
                 $message = $status;
             }
         }
     } else {
         $message = vtranslate('LBL_MAX_UPLOAD_SIZE', $moduleName) . ' ' . vtranslate('LBL_EXCEEDED', $moduleName);
     }
     $viewer->assign('SUCCESS', $success);
     $viewer->assign('MESSAGE', $message);
     $loadRelatedList = $request->get('related_load');
     if (!empty($loadRelatedList)) {
         $viewer->assign('RELATED_LOAD', true);
     }
     $viewer->view('SendEmailResult.tpl', $moduleName);
 }
示例#4
0
 public function process(Vtiger_Request $request)
 {
     $result = Vtiger_Util_Helper::transformUploadedFiles($_FILES, true);
     $_FILES = $result['imagename'];
     $moduleModel = Vtiger_Module_Model::getInstance('Users');
     if (!$moduleModel->checkMailExist($request->get('email1'), $request->get('record'))) {
         $recordModel = $this->saveRecord($request);
         $settingsModuleModel = Settings_Users_Module_Model::getInstance();
         $settingsModuleModel->refreshSwitchUsers();
         $sharedIds = $request->get('sharedusers');
         $sharedType = $request->get('calendarsharedtype');
         $currentUserModel = Users_Record_Model::getCurrentUserModel();
         $calendarModuleModel = Vtiger_Module_Model::getInstance('Calendar');
         $accessibleUsers = $currentUserModel->getAccessibleUsersForModule('Calendar');
         if ($sharedType == 'private') {
             $calendarModuleModel->deleteSharedUsers($currentUserModel->id);
         } else {
             if ($sharedType == 'public') {
                 $allUsers = $currentUserModel->getAll(true);
                 $accessibleUsers = array();
                 foreach ($allUsers as $id => $userModel) {
                     $accessibleUsers[$id] = $id;
                 }
                 $calendarModuleModel->deleteSharedUsers($currentUserModel->id);
                 $calendarModuleModel->insertSharedUsers($currentUserModel->id, array_keys($accessibleUsers));
             } else {
                 if (!empty($sharedIds)) {
                     $calendarModuleModel->deleteSharedUsers($currentUserModel->id);
                     $calendarModuleModel->insertSharedUsers($currentUserModel->id, $sharedIds);
                 } else {
                     $calendarModuleModel->deleteSharedUsers($currentUserModel->id);
                 }
             }
         }
         if ($request->get('relationOperation')) {
             $parentRecordModel = Vtiger_Record_Model::getInstanceById($request->get('sourceRecord'), $request->get('sourceModule'));
             $loadUrl = $parentRecordModel->getDetailViewUrl();
         } else {
             if ($request->get('isPreference')) {
                 $loadUrl = $recordModel->getPreferenceDetailViewUrl();
             } else {
                 $loadUrl = $recordModel->getDetailViewUrl();
             }
         }
     } else {
         echo vtranslate('USER_MAIL_EXIST', 'Users');
         header('Location: index.php?module=Users&parent=Settings&view=Edit');
     }
     header("Location: {$loadUrl}");
 }
示例#5
0
 public function process(Vtiger_Request $request)
 {
     $result = Vtiger_Util_Helper::transformUploadedFiles($_FILES, true);
     $_FILES = $result['imagename'];
     parent::process($request);
 }