Example #1
0
 public function deleteUploadFiles()
 {
     $list = MAILBOX_BOL_FileUploadService::getInstance()->findExpireFileList(self::UPLOAD_FILES_REMOVE_TIMEOUT);
     foreach ($list as $dto) {
         MAILBOX_BOL_FileUploadService::getInstance()->deleteUploadFile($dto->hash, $dto->userId);
     }
 }
Example #2
0
 /**
  * Returns class instance
  *
  * @return MAILBOX_BOL_FileUploadService
  */
 public static function getInstance()
 {
     if (self::$classInstance === null) {
         self::$classInstance = new self();
     }
     return self::$classInstance;
 }
Example #3
0
 /**
  * @see FormElement::renderInput()
  *
  * @param array $params
  * @return string
  */
 public function renderInput($params = null)
 {
     parent::renderInput($params);
     $fileElementId = $this->getId() . '_file';
     $entityId = $this->getValue();
     if (empty($entityId)) {
         $entityId = uniqid('upload');
     }
     $iframeUrl = OW::getRouter()->urlFor('MAILBOX_CTRL_Mailbox', 'fileUpload', array('entityId' => $entityId, 'formElementId' => $fileElementId));
     $attachFileHtml = '<div id="file_attachment" class="ow_mailbox_attachment">
                            <span class="ow_mailbox_attachment_icon ow_ic_attach ">&nbsp;</span>
                            <a class="file" href="javascript://"></a> (<span class="filesize"></span>)
                            <a rel="40" class="ow_delete_attachment ow_lbutton ow_hidden" href="javascript://" style="display: none;">' . OW::getLanguage()->text('mailbox', 'attache_file_delete_button') . '</a>
                        </div>';
     $fileList = array();
     if (!empty($entityId)) {
         $fileService = MAILBOX_BOL_FileUploadService::getInstance();
         $uploadFileDtoList = $fileService->findUploadFileList($entityId);
         foreach ($uploadFileDtoList as $uploadFileDto) {
             $file = array();
             $file['hash'] = $uploadFileDto->hash;
             $file['filesize'] = round($uploadFileDto->fileSize / 1024, 2) . 'Kb';
             $file['filename'] = $uploadFileDto->fileName;
             $file['fileUrl'] = $fileService->getUploadFileUrl($uploadFileDto->hash, UTIL_File::getExtension($uploadFileDto->fileName));
             $fileList[] = $file;
         }
     }
     $params = array('elementId' => $fileElementId, 'ajaxResponderUrl' => OW::getRouter()->urlFor("MAILBOX_CTRL_Mailbox", "responder"), 'fileResponderUrl' => $iframeUrl, 'attachFileHtml' => $attachFileHtml, 'fileList' => $fileList);
     $script = "  window.fileUpload_" . $this->getId() . " = new fileUpload(" . json_encode($params) . ");\n                        window.fileUpload_" . $this->getId() . ".init();";
     OW::getDocument()->addOnloadScript($script);
     OW::getDocument()->addScript(OW::getPluginManager()->getPlugin("mailbox")->getStaticJsUrl() . 'ajax_file_upload.js');
     $hiddenAttr = array('id' => $this->getId(), 'type' => 'hidden', 'name' => $this->getName(), 'value' => $entityId);
     $fileAttr = $this->attributes;
     unset($fileAttr['name']);
     $fileAttr['id'] = $fileElementId;
     return UTIL_HtmlTag::generateTag('input', $hiddenAttr) . '<span class="' . $fileElementId . '_class">' . UTIL_HtmlTag::generateTag('input', $fileAttr) . '</span>
             <div id="' . $fileElementId . '_list" class="ow_small ow_smallmargin">
                 <div class="ow_attachments_label mailbox_attachments_label ow_hidden">' . OW::getLanguage()->text('mailbox', 'attachments') . ' :</div>
             </div>';
 }
 /**
  * Creates new conversation
  *
  * @param int $initiatorId
  * @param int $interlocutorId
  */
 public function process($initiatorId, $interlocutorId)
 {
     if (OW::getRequest()->isAjax()) {
         if (empty($initiatorId) || empty($interlocutorId)) {
             echo json_encode(array('result' => false));
             exit;
         }
         $isAuthorized = OW::getUser()->isAuthorized('mailbox', 'send_message');
         if (!$isAuthorized) {
             echo json_encode(array('result' => 'permission_denied'));
             exit;
         }
         // credits check
         $eventParams = array('pluginKey' => 'mailbox', 'action' => 'send_message', 'extra' => array('senderId' => $initiatorId, 'recipientId' => $interlocutorId));
         $credits = OW::getEventManager()->call('usercredits.check_balance', $eventParams);
         if ($credits === false) {
             $error = OW::getEventManager()->call('usercredits.error_message', $eventParams);
             echo json_encode(array('result' => 'permission_denied', 'message' => $error));
             exit;
         }
         $captcha = $this->getElement('captcha');
         $captcha->setRequired();
         if ($this->displayCapcha && (!$captcha->isValid() || !UTIL_Validator::isCaptchaValid($captcha->getValue()))) {
             echo json_encode(array('result' => 'display_captcha'));
             exit;
         }
         $values = $this->getValues();
         $conversationService = MAILBOX_BOL_ConversationService::getInstance();
         $uploadFiles = MAILBOX_BOL_FileUploadService::getInstance();
         $conversation = $conversationService->createConversation($initiatorId, $interlocutorId, htmlspecialchars($values['subject']), $values['message']);
         $message = $conversationService->getLastMessages($conversation->id);
         $fileDtoList = $uploadFiles->findUploadFileList($values['attachments']);
         foreach ($fileDtoList as $fileDto) {
             $attachmentDto = new MAILBOX_BOL_Attachment();
             $attachmentDto->messageId = $message->initiatorMessageId;
             $attachmentDto->fileName = htmlspecialchars($fileDto->fileName);
             $attachmentDto->fileSize = $fileDto->fileSize;
             $attachmentDto->hash = $fileDto->hash;
             if ($conversationService->fileExtensionIsAllowed(UTIL_File::getExtension($fileDto->fileName))) {
                 $conversationService->addAttachment($attachmentDto, $fileDto->filePath);
             }
             $uploadFiles->deleteUploadFile($fileDto->hash, $fileDto->userId);
         }
         // credits track
         if ($credits === true) {
             OW::getEventManager()->call('usercredits.track_action', $eventParams);
         }
         BOL_PreferenceService::getInstance()->savePreferenceValue('mailbox_create_conversation_display_capcha', false, OW::getUser()->getId());
         $timestamp = 0;
         if ($this->displayCapcha == false) {
             $timestamp = time();
         }
         BOL_PreferenceService::getInstance()->savePreferenceValue('mailbox_create_conversation_stamp', $timestamp, OW::getUser()->getId());
         echo json_encode(array('result' => true));
         exit;
     }
 }
Example #5
0
 public function fileUpload($params)
 {
     if (OW::getRequest()->isAjax()) {
         exit;
     }
     $configs = OW::getConfig()->getValues('mailbox');
     $entityId = isset($params['entityId']) ? $params['entityId'] : null;
     $formElementId = isset($params['formElementId']) ? $params['formElementId'] : null;
     $language = OW::getLanguage();
     $fileService = MAILBOX_BOL_FileUploadService::getInstance();
     $file = array();
     $message = $language->text('mailbox', 'upload_file_fail');
     $error = true;
     switch (true) {
         case empty($configs['enable_attachments']):
             $message = $language->text('mailbox', 'file_attachment_disabled');
             break;
         case !empty($formElementId) && !empty($_FILES['attachmet']) && !empty($entityId) && OW::getUser()->isAuthorized('mailbox', 'send_message'):
             $list = $fileService->findUploadFileList($entityId);
             if (count($list) < 5) {
                 $fileDto = new MAILBOX_BOL_FileUpload();
                 $fileDto->fileName = $_FILES['attachmet']['name'];
                 $fileDto->entityId = $entityId;
                 $fileDto->fileSize = $_FILES['attachmet']['size'];
                 $fileDto->timestamp = time();
                 $fileDto->userId = OW::getUser()->getId();
                 $fileDto->hash = uniqid();
                 $uploadError = $_FILES['attachmet']['error'];
                 switch ($uploadError) {
                     case UPLOAD_ERR_INI_SIZE:
                         $message = $language->text('mailbox', 'upload_file_max_upload_filesize_error');
                         break;
                     case UPLOAD_ERR_PARTIAL:
                         $message = $language->text('mailbox', 'upload_file_file_partially_uploaded_error');
                         break;
                     case UPLOAD_ERR_NO_FILE:
                         $message = $language->text('mailbox', 'upload_file_no_file_error');
                         break;
                     case UPLOAD_ERR_NO_TMP_DIR:
                         $message = $language->text('mailbox', 'upload_file_no_tmp_dir_error');
                         break;
                     case UPLOAD_ERR_CANT_WRITE:
                         $message = $language->text('mailbox', 'upload_file_cant_write_file_error');
                         break;
                     case UPLOAD_ERR_EXTENSION:
                         $message = $language->text('mailbox', 'upload_file_invalid_extention_error');
                         break;
                     case UPLOAD_ERR_OK:
                         $ext = UTIL_File::getExtension($fileDto->fileName);
                         if (!$fileService->fileExtensionIsAllowed($ext)) {
                             $message = $language->text('mailbox', 'upload_file_extension_is_not_allowed');
                         } else {
                             if ($fileDto->fileSize > (double) $configs['upload_max_file_size'] * 1024 * 1024) {
                                 $message = $language->text('mailbox', 'upload_file_max_upload_filesize_error');
                             } else {
                                 if ($fileService->addFile($fileDto, $_FILES['attachmet']['tmp_name'])) {
                                     $error = false;
                                     $message = '';
                                     $file = array('error' => false, 'filename' => $fileDto->fileName, 'filesize' => round($fileDto->fileSize / 1024, 2) . ' Kb', 'hash' => $fileDto->hash, 'url' => $fileService->getUploadFileUrl($fileDto->hash, UTIL_File::getExtension($fileDto->fileName)));
                                 }
                             }
                         }
                         break;
                 }
             } else {
                 $message = $language->text('mailbox', 'upload_file_count_files_error');
             }
             break;
     }
     $file['input_id'] = $formElementId;
     $file['error'] = $error;
     $file['message'] = $message;
     exit("<script>\n                    parent.window.OW.trigger('mailbox.attach_file_complete', [" . json_encode($file) . "]);\n              </script>");
 }
Example #6
0
 public function process()
 {
     $language = OW::getLanguage();
     $uploadFiles = MAILBOX_BOL_FileUploadService::getInstance();
     $isAuthorized = OW::getUser()->isAuthorized('mailbox', 'send_message');
     if (!$isAuthorized) {
         return array('result' => 'permission_denied');
     }
     if (!$this->checkCaptcha()) {
         return array('result' => 'display_captcha');
     }
     $values = $this->getValues();
     $recipients = $values['recipients'];
     $fileDtoList = array();
     if (!empty($values['attachments'])) {
         $fileDtoList = $uploadFiles->findUploadFileList($values['attachments']);
     }
     $event = new BASE_CLASS_EventCollector(MCOMPOSE_BOL_Service::EVENT_ON_SEND, array("recipients" => $recipients, "userId" => $this->userId, "context" => $this->context));
     OW::getEventManager()->trigger($event);
     $userIds = array_unique($event->getData());
     $error = null;
     $sentCount = 0;
     foreach ($userIds as $uid) {
         try {
             $this->sendMessage($uid, $values['subject'], $values['message'], $fileDtoList);
             $sentCount++;
         } catch (LogicException $e) {
             $error = $e->getMessage();
             break;
         }
     }
     foreach ($fileDtoList as $fileDto) {
         $uploadFiles->deleteUploadFile($fileDto->hash, $fileDto->userId);
     }
     BOL_PreferenceService::getInstance()->savePreferenceValue('mailbox_create_conversation_display_capcha', false, $this->userId);
     BOL_PreferenceService::getInstance()->savePreferenceValue('mailbox_create_conversation_stamp', time(), $this->userId);
     $result = array('result' => true);
     if ($sentCount > 0 && $error !== null) {
         $result['warning'] = $language->text('mcompose', 'some_messages_not_sent', array('sentCount' => $sentCount));
     } else {
         if ($sentCount > 0) {
             $result['message'] = $language->text('mailbox', 'create_conversation_message');
         }
     }
     if ($error !== null) {
         $result['error'] = $error;
     }
     return $result;
 }
Example #7
0
 public function deleteUploadFile($params)
 {
     $language = OW::getLanguage();
     $hash = $params['hash'];
     $userId = OW::getUser()->getId();
     if (empty($hash)) {
         $this->error = $language->text('mailbox', 'upload_file_not_found');
         return false;
     }
     try {
         MAILBOX_BOL_FileUploadService::getInstance()->deleteUploadFile($hash, $userId);
     } catch (Exception $ex) {
         $this->error = $language->text('mailbox', 'upload_file_delete_fail');
         return false;
     }
     $this->notice = $language->text('mailbox', 'upload_file_delete_success');
     return true;
 }