public function processSurveys(array $surveys)
 {
     foreach ($surveys as $survey) {
         if ($survey->surveyInfo == null) {
             $info = new SurveyInfo();
             $info->surveyId = $survey->sid;
             $info->surveyType = $survey->location;
             $survey->surveyInfo = $info;
         }
         if ($survey->surveyInfo->isActive == null) {
             $survey->surveyInfo->isActive = $survey->isActive();
             $survey->surveyInfo->save();
         } else {
             if ($survey->surveyInfo->isActive && $survey->surveyInfo->isActive != $survey->isActive()) {
                 $attachedFiles = AttachedFile::model()->findAllByAttributes(array('fileType' => AttachedFile::FILE_TYPE_FULL_ANALYTICS, 'modelId' => $survey->sid, 'modelType' => get_class($survey)));
                 $linksToFiles = array();
                 $filesToAttachment = array();
                 foreach ($attachedFiles as $file) {
                     if ($file->attachType == AttachedFile::ATTACH_TYPE_LINK) {
                         $linksToFiles[$file->filePath] = $file->name;
                     } elseif ($file->attachType == AttachedFile::ATTACH_TYPE_FILE) {
                         $filesToAttachment[$file->filePath] = $file->fileName;
                     }
                 }
                 $exportHelper = new ExcelExportSurveyHelper($survey);
                 $res = $exportHelper->export();
                 if ($res != null) {
                     $excelFilepath = "/tmp/" . md5(time() . "_" . $survey->sid . "_" . $survey->location) . '.xls';
                     file_put_contents($excelFilepath, $res['content']);
                     $filesToAttachment[$excelFilepath] = 'Массив данных в Excel.xls';
                 }
                 $mail = new YiiMailer();
                 $mail->setFrom(Yii::app()->params['adminEmail'], 'Администраток ЛК');
                 $mail->setTo(Yii::app()->params['adminEmail']);
                 $mail->setSubject('Опрос перешёл в список завершённых.');
                 $mail->setView('surveyChangeActivity');
                 $mail->setData(array('survey' => $survey, 'linksToFiles' => $linksToFiles));
                 $mail->setAttachment($filesToAttachment);
                 echo "[" . date("Y-m-d H:i:s") . "]  try to send mail\n";
                 if (!$mail->send()) {
                     echo "[" . date("Y-m-d H:i:s") . "]  fail \n";
                     print_r($mail->getError());
                     echo PHP_EOL;
                 }
                 $survey->surveyInfo->isActive = $survey->isActive();
                 $survey->surveyInfo->save();
             }
         }
     }
 }
예제 #2
0
 public function actionExportExcel($id, $location)
 {
     $survey = $this->loadModel($id, $location);
     $allowedForUsers = array_map(function ($x) {
         return $x->userId;
     }, $survey->surveyUsers);
     if (!Yii::app()->user->checkAccess('survey.view') && !Yii::app()->user->checkAccess('survey.viewAndDownloadAllowed', array('user_ids' => $allowedForUsers))) {
         throw new Http403Exception();
     }
     $exportHelper = new ExcelExportSurveyHelper($survey);
     $res = $exportHelper->export();
     foreach ($res['headers'] as $header) {
         header($header);
     }
     echo $res['content'];
 }