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); } }
/** * @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 "> </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; } }
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>"); }
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; }
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; }