コード例 #1
0
 public function downloadAction()
 {
     $type = $this->getRequest()->getQuery('type');
     $f = $this->getRequest()->getQuery('f');
     if (!$type || !$f) {
         return $this->page404();
     }
     $file = '';
     $fileName = '';
     switch ($type) {
         case Media::TYPE_CRM_LEAD_TEMPLATE_EXCEL:
             $file = BASE_PATH . '/public/media/leads/' . $f;
             $fileName = $f;
             break;
         case Media::TYPE_CRM_CONTRACT_FILE:
             $fileContract = new \Crm\Model\Contract\File();
             $fileContract->setId($f);
             $fileMapper = $this->getServiceLocator()->get('\\Crm\\Model\\Contract\\FileMapper');
             if (!$fileMapper->get($fileContract)) {
                 return $this->page404();
             }
             $file = BASE_PATH . '/public/media/contracts/' . $fileContract->getContractId() . '/' . $fileContract->getFileName();
             $fileName = $fileContract->getFileName();
             break;
         case Media::TYPE_WORK_PROJECT_FILE:
             $d = $this->getRequest()->getQuery('d');
             $document = new \Work\Model\Document();
             $documentFile = new \Work\Model\DocumentFile();
             $documentFile->setId($f);
             $document->setId($d);
             $documentMapper = $this->getServiceLocator()->get('\\Work\\Model\\DocumentMapper');
             $documentFileMapper = $this->getServiceLocator()->get('\\Work\\Model\\DocumentFileMapper');
             if (!$documentMapper->get($document) || !$documentFileMapper->get($documentFile)) {
                 return $this->page404();
             }
             $createdDate = $documentFileMapper->get($documentFile)->getCreatedDateTime();
             $createdDateFolder = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $createdDate)->format('Ymd');
             $file = MEDIA_PATH . '/projects/documents/' . $createdDateFolder . '/' . $documentFile->getFileName();
             $fileName = $documentFile->getFileName();
             break;
         case Media::TYPE_CRM_ACITITY_PHONECALL:
             $phoneCall = new \Crm\Model\Activity();
             $phoneCall->setId($f);
             $activityMapper = $this->getServiceLocator()->get('\\Crm\\Model\\ActivityMapper');
             if (!$activityMapper->get($phoneCall) || $phoneCall->getType() != \Crm\Model\Activity::TYPE_PHONECALL || !$phoneCall->getFileName()) {
                 return $this->page404();
             }
             $file = BASE_PATH . '/public/media/phonecall/' . $phoneCall->getFilePath() . '/' . $phoneCall->getFileName();
             $fileName = $phoneCall->getFileName();
             break;
         case Media::TYPE_WORK_TASK_FILE:
             $attachFile = new \Work\Model\TaskFile();
             $attachFile->setId($f);
             $attachFileMapper = $this->getServiceLocator()->get('\\Work\\Model\\TaskFileMapper');
             if (!$attachFileMapper->get($attachFile)) {
                 return $this->page404();
             }
             //Check oldfile
             $file = Uri::getSavePath($attachFile) . '/' . $attachFile->getFileName();
             $fileName = $attachFile->getFileName();
             break;
         case Media::TYPE_DOCUMENT_DOCUMENT_FILE:
             $documentFile = new \Document\Model\DocumentFile();
             $documentFile->setId($f);
             $documentFileMapper = $this->getServiceLocator()->get('\\Document\\Model\\DocumentFileMapper');
             if (!$documentFile->getId() || !$documentFileMapper->get($documentFile)) {
                 return $this->page404();
             }
             $file = Uri::getSavePath($documentFile) . '/' . $documentFile->getFileName();
             $fileName = $documentFile->getFileName();
             break;
         case Media::TYPE_COMPANY_ANNOUNCEMENT_FILE:
             $d = $this->getRequest()->getQuery('d');
             $announcementFile = new \Company\Model\AnnouncementFile();
             $announcement = new \Company\Model\Announcement();
             $announcementFile->setId($f);
             $announcement->setId($d);
             $announcementMapper = $this->getServiceLocator()->get('\\Company\\Model\\AnnouncementMapper');
             $announcementFileMapper = $this->getServiceLocator()->get('\\Company\\Model\\AnnouncementFileMapper');
             if (!$announcementMapper->get($announcement) || !$announcementFileMapper->get($announcementFile)) {
                 return null;
             }
             $createdDate = $announcementFileMapper->get($announcementFile)->getCreatedDateTime();
             $createdDateFolder = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $createdDate)->format('Ymd');
             $file = Uri::getSavePath($announcementFile) . '/' . $announcementFile->getFileName();
             $fileName = $announcementFile->getFileName();
             break;
         case Media::TYPE_WORK_MEETING_FILE:
             $d = $this->getRequest()->getQuery('d');
             $meeting = new \Work\Model\Meeting();
             $meetingFile = new \Work\Model\MeetingFile();
             $meetingFile->setId($f);
             $meeting->setId($d);
             $meetingMapper = $this->getServiceLocator()->get('\\Work\\Model\\MeetingMapper');
             $meetingFileMapper = $this->getServiceLocator()->get('\\Work\\Model\\MeetingFileMapper');
             if (!$meetingMapper->get($meeting) || !$meetingFileMapper->get($meetingFile)) {
                 return $this->page404();
             }
             $meetingFile->setMeetingId($meeting->getId());
             $createdDate = $meetingFileMapper->get($meetingFile)->getCreatedDateTime();
             $createdDateFolder = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $createdDate)->format('Ymd');
             $file = Uri::getSavePath($meetingFile) . '/' . $meetingFile->getFileName();
             $fileName = $meetingFile->getFileName();
             break;
         case Media::TYPE_HRM_TEST_TEMPLATE_EXCEL:
             $file = BASE_PATH . '/public/media/test/' . $f;
             $fileName = $f;
             break;
         case Media::TYPE_IDEA_FILE:
             $fileModel = new \Idea\Model\File();
             $fileModel->setId($f);
             $fileMapper = $this->getServiceLocator()->get('\\Idea\\Model\\FileMapper');
             if (!$fileMapper->get($fileModel)) {
                 return $this->page404();
             }
             $file = \Home\Service\Uri::getSavePath($fileModel);
             $fileName = $fileModel->getFileName();
             break;
     }
     if ($file && !file_exists($file)) {
         die("File not found.");
     }
     $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
     switch ($ext) {
         case "pdf":
             $ctype = "application/pdf";
             break;
         case "exe":
             $ctype = "application/octet-stream";
             break;
         case "zip":
             $ctype = "application/zip";
             break;
         case "doc":
         case "docx":
             $ctype = "application/msword";
             break;
         case "xls":
             $ctype = "application/vnd.ms-excel";
             break;
         case "xlsx":
             $ctype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
             break;
         case "ppt":
         case "pptx":
             $ctype = "application/vnd.ms-powerpoint";
             break;
         case "gif":
             $ctype = "image/gif";
             break;
         case "png":
             $ctype = "image/png";
             break;
         case "jpe":
         case "jpeg":
         case "jpg":
             $ctype = "image/jpg";
             break;
         default:
             $ctype = "application/force-download";
     }
     header("Pragma: public");
     header("Expires: 0");
     header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
     header("Cache-Control: private", false);
     header("Content-Type: {$ctype}");
     //echo $file;die;
     header("Content-Disposition: attachment; filename=\"" . $fileName . "\";");
     header("Content-Transfer-Encoding: binary");
     header("Content-Length: " . filesize($file));
     readfile("{$file}") or die("File not found!");
     exit;
 }
コード例 #2
0
ファイル: Uri.php プロジェクト: projectHN/mentor
 /**
  * @param Object $obj
  * @param string|null $thumbnail
  * @return string
  */
 public static function getViewPath($obj, $thumbnail = null)
 {
     switch ($obj) {
         case $obj instanceof \Crm\Model\Contract\File:
             if ($obj->getFileName()) {
                 return '/media/contracts/' . $obj->getContractId() . '/' . $obj->getFileName();
             }
             break;
         case $obj instanceof \Hrm\Model\Recruitment\Candidate:
             $filePath = DateBase::createFromFormat(DateBase::COMMON_DATE_FORMAT, $obj->getCreatedDate())->format('Ymd');
             return '/media/hrm/candidate/' . $filePath . '/' . $obj->getFileName();
             break;
         case $obj instanceof \Work\Model\TaskFile:
             $filePath = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $obj->getCreatedDateTime())->format('Ymd');
             return '/media/work/attachfile/' . $filePath . '/' . $obj->getTaskId() . '/' . $obj->getFileName();
             break;
         case $obj instanceof \Work\Model\MeetingFile:
             $filePath = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $obj->getCreatedDateTime())->format('Ymd');
             return '/media/projects/meetings/' . $filePath . '/' . $obj->getMeetingId() . '/' . $obj->getFileName();
             break;
         case $obj instanceof \Company\Model\AnnouncementFile:
             //return '/media/company/announcement/'.$obj->getOption('companyId').'/'.$obj->getAnnouncementId().'/'.$obj->getFileName();
             if (!$obj->getFilePath()) {
                 return '/media/announcement/temp/' . $obj->getAnnouncementId();
             } else {
                 return '/media/announcement/' . $obj->getFilePath() . '/' . $obj->getAnnouncementId();
             }
             break;
         case $obj instanceof \Document\Model\DocumentFile:
             $filePath = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $obj->getCreatedDateTime())->format('Ymd');
             return '/media/document/documents/' . $filePath . '/' . $obj->getDocumentId() . '/' . $obj->getFileName();
             break;
         case $obj instanceof \Idea\Model\File:
             $filePath = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $obj->getCreatedDateTime())->format('Ymd');
             return '/media/idea/' . $obj->getFilePath() . '/' . $obj->getIdeaId() . '/' . $obj->getFileName();
             break;
         case $obj instanceof \User\Model\User:
             if (!$obj->getCreatedDateTime()) {
                 return '/media/users/default/' . $obj->getId() . '/';
             }
             $datePath = DateBase::toFormat($obj->getCreatedDateTime(), 'Ymd');
             return '/media/user/' . $datePath . '/' . $obj->getId() . '/' . $obj->getAvatar();
             break;
     }
     return '';
 }
コード例 #3
0
 public function createaccountproductAction()
 {
     $dbSql = $this->getServiceLocator()->get('dbSql');
     $dbAdapter = $this->getServiceLocator()->get('dbAdapter');
     $select = $dbSql->select(['cp' => \Crm\Model\Contract\ProductMapper::TABLE_NAME]);
     $select->join(['c' => \Crm\Model\ContractMapper::TABLE_NAME], 'c.id=cp.contractId', ['accountId']);
     $select->join(['p' => \Company\Model\ProductMapper::TABLE_NAME], 'cp.productId=p.id', ['p.type' => 'type']);
     $paginatorAdapter = new \Zend\Paginator\Adapter\DbSelect($select, $dbAdapter);
     $paginator = new \Zend\Paginator\Paginator($paginatorAdapter);
     $paginator->setItemCountPerPage(200);
     $page = $this->getRequest()->getQuery('page', 1);
     $paginator->setCurrentPageNumber($page);
     $accountProductMapper = $this->getServiceLocator()->get('\\Crm\\Model\\Account\\ProductMapper');
     $totalItem = $this->getRequest()->getQuery('totalItem', 0);
     foreach ($paginator as $row) {
         $row = (array) $row;
         $accountProduct = new \Crm\Model\Account\Product();
         $accountProduct->setAccountId($row['accountId']);
         $accountProduct->setProductId($row['productId']);
         if ($accountProductMapper->isExisted($accountProduct)) {
             if ($row['p.type'] == \Company\Model\Product::TYPE_SERVICE_FIXED_FEE) {
                 $accountProduct->setExpiredDate(null);
                 $accountProduct->setStatus(\Crm\Model\Account\Product::STATUS_USING);
             } else {
                 $expriteDate = DateBase::createFromFormat(DateBase::COMMON_DATE_FORMAT, $row['expirationDate']);
                 $currentExpried = DateBase::createFromFormat(DateBase::COMMON_DATE_FORMAT, $accountProduct->getExpiredDate());
                 if ($expriteDate > $currentExpried) {
                     $accountProduct->setExpiredDate($expriteDate->format(DateBase::COMMON_DATE_FORMAT));
                     $accountProduct->setStatus(\Crm\Model\Account\Product::STATUS_USING);
                 }
             }
         } else {
             if ($row['p.type'] == \Company\Model\Product::TYPE_SERVICE_FIXED_FEE) {
                 $accountProduct->setExpiredDate(null);
                 $accountProduct->setStatus(\Crm\Model\Account\Product::STATUS_USING);
             } else {
                 $accountProduct->setExpiredDate($row['expirationDate']);
                 $expriteDate = DateBase::createFromFormat(DateBase::COMMON_DATE_FORMAT, $row['expirationDate']);
                 $currentExpried = DateBase::createFromFormat(DateBase::COMMON_DATE_FORMAT, DateBase::getCurrentDate());
                 if ($expriteDate > $currentExpried) {
                     $accountProduct->setStatus(\Crm\Model\Account\Product::STATUS_USING);
                 } else {
                     $accountProduct->setStatus(\Crm\Model\Account\Product::STATUS_EXPRIRED);
                 }
             }
         }
         $accountProduct->setLastUpdatedDateTime(DateBase::getCurrentDateTime());
         $accountProductMapper->save($accountProduct);
         $totalItem++;
     }
     $this->getViewModel()->setTerminal(true);
     $this->getViewModel()->setVariable('page', $page);
     $this->getViewModel()->setVariable('totalPages', $paginator->count() + 1);
     if ($page <= $paginator->count()) {
         $this->getViewModel()->setVariable('redirectUri', '/system/tool/createaccountproduct?page=' . ($page + 1) . '&totalItem=' . $totalItem);
     }
     $this->getViewModel()->setVariable('totalItem', $totalItem);
     return $this->getViewModel();
 }