protected function initFreeModelOfTheMonth()
 {
     $year = date("Y");
     $month = date("n");
     $modelOfTheMonthDAO = new ModelOfTheMonthDAO();
     $modelOfTheMonthInfoRecord = $modelOfTheMonthDAO->getFreeModelOfTheMonth($year, $month);
     if (!empty($modelOfTheMonthInfoRecord['modelId'])) {
         $this->freeModelOfTheMonth = $this->modelDAO->getRecordById($modelOfTheMonthInfoRecord['modelId']);
         $ids = array($modelOfTheMonthInfoRecord['modelId']);
         if (empty($this->freeModelOfTheMonth['id']) || !empty($this->freeModelOfTheMonth['id']) && $this->freeModelOfTheMonth['modelState'] == 'hidden') {
             $this->freeModelOfTheMonth = null;
         } else {
             $this->freeModelOfTheMonthImagesList = $this->fileDAO->getFirstImageListByRecordList('model', $ids, 'gallery');
         }
     }
 }
 public function isCurrentUserAllowed(&$record, $updateDownloadObject)
 {
     CoreUtils::checkConstraint($record['id']);
     CoreUtils::checkConstraint($record['recordId']);
     $recordId = $record['id'];
     if (!$this->isProtectedFile($record)) {
         return true;
     }
     $this->freeModelsOfTheMonth[$record['recordId']] = false;
     $this->setMessage($recordId, false);
     $this->setErrorMessage($recordId, false);
     $sessionName = CoreServices2::getRequest()->getSessionName();
     if (empty($sessionName)) {
         $this->setErrorMessage($recordId, 'emptySessionDownloadError');
         return false;
     }
     $currentUser = CoreServices2::getAccess()->getCurrentUserData();
     if (empty($currentUser['id'])) {
         $this->setErrorMessage($recordId, 'noUserDownloadError');
         return false;
     }
     if ($sessionName == 'CMSSession') {
         return $this->isAdminAllowed($record);
     }
     $year = date("Y");
     $month = date("n");
     $modelOfTheMonthDAO = new ModelOfTheMonthDAO();
     $modelOfTheMonthInfoRecord = $modelOfTheMonthDAO->getFreeModelOfTheMonth($year, $month);
     if (!empty($modelOfTheMonthInfoRecord['modelId']) && $modelOfTheMonthInfoRecord['modelId'] == $record['recordId']) {
         $this->freeModelsOfTheMonth[$record['recordId']] = true;
         if (!empty($updateDownloadObject)) {
             $downloadDAO = new DownloadDAO();
             $downloadRecord = $downloadDAO->getRecordTemplate();
             $modelDAO = new ModelDAO();
             $modelRecord = $modelDAO->getRecordById($modelOfTheMonthInfoRecord['modelId']);
             CoreUtils::checkConstraint(!empty($modelRecord['id']));
             $downloadRecord['userId'] = $currentUser['id'];
             $downloadRecord['modelId'] = $modelRecord['id'];
             $downloadRecord['fileId'] = $record['id'];
             $downloadRecord['downloadStartTime'] = CoreUtils::getDateTime();
             $downloadRecord['downloadAttempts'] = 0;
             $downloadRecord['downloadCreditsCost'] = 0;
             $downloadRecord['downloadModelName'] = $modelRecord['modelName'];
             $downloadRecord['downloadFileTypeName'] = $record['modelFileTypeName'];
             $downloadRecord['downloadPaid'] = 0;
             $downloadRecord['downloadFree'] = 1;
             $downloadDAO->save($downloadRecord);
         }
         return true;
     }
     $downloadLogic = new DownloadLogic();
     if (!empty($updateDownloadObject)) {
         $result = $downloadLogic->checkAndUpdateDownloadObject($currentUser['id'], $record);
     } else {
         $result = $downloadLogic->checkDownloadObject($currentUser['id'], $record);
     }
     if (!$result) {
         $this->setErrorMessage($recordId, $downloadLogic->getErrorMessage());
     } else {
         $this->setMessage($recordId, $downloadLogic->getMessage());
     }
     return $result;
 }