/**
  * Export All Forms
  *
  */
 public function actionExportAllEntries()
 {
     // TODO: Make EXPORTS WORK
     $this->requirePostRequest();
     $entries = FormBuilder2_EntryRecord::model()->findAll();
     $attributes = [];
     $submission = [];
     $files = [];
     foreach ($entries as $key => $entry) {
         $entry = $entry->getAttributes();
         foreach ($entry['submission'] as $index => $value) {
             $field = craft()->fields->getFieldByHandle($index);
             $submission[$index] = $field->name . ':' . $value;
         }
         if ($entry['files']) {
             foreach ($entry['files'] as $index => $value) {
                 $file = craft()->assets->getFileById($value);
                 $submission[$index] = 'File:' . $file->getUrl();
             }
         }
         $attributes[$key]['id'] = $entry['id'];
         $attributes[$key]['formId'] = $entry['formId'];
         $attributes[$key]['title'] = $entry['title'];
         $attributes[$key]['submission'] = StringHelper::arrayToString($submission, ',');
     }
     $date = uniqid(gmdate('Y-m-d-'));
     $filename = 'formbuilder2_entries_' . $date . '.csv';
     header('Content-Type: application/csv; charset=utf-8');
     header('Content-Disposition: attachment; filename=' . $filename);
     $output = fopen('php://output', 'w');
     fputcsv($output, array('ID', 'Form ID', 'Form Name', 'Submission'));
     foreach ($attributes as $line) {
         fputcsv($output, $line, ',');
     }
     exit;
     // craft()->request->sendFile('filename.csv', $output, array('forceDownload' => true));
 }
 /**
  * Process Submission Entry
  *
  */
 public function processSubmissionEntry(FormBuilder2_EntryModel $submission)
 {
     // Fire Before Save Event
     $this->onBeforeSave(new Event($this, array('entry' => $submission)));
     $form = craft()->formBuilder2_form->getFormById($submission->formId);
     $formFields = $form->fieldLayout->getFieldLayout()->getFields();
     $attributes = $form->getAttributes();
     $formSettings = $attributes['formSettings'];
     $submissionRecord = new FormBuilder2_EntryRecord();
     // File Uploads
     if ($submission->files) {
         $fileIds = [];
         foreach ($submission->files as $key => $value) {
             if ($value->size) {
                 $folder = $value->getFolder();
                 // Make sure folder excist
                 $source = $folder->getSource()['settings'];
                 IOHelper::ensureFolderExists($source['path'], $suppressErrors = true);
                 // Save/Store Files
                 $fileName = IOHelper::getFileName($value->filename, true);
                 $response = craft()->assets->insertFileByLocalPath($value->originalName, $fileName, $value->folderId, AssetConflictResolution::KeepBoth);
                 $fileIds[] = $response->getDataItem('fileId');
                 // Delete Temp Files
                 IOHelper::deleteFile($value->originalName, true);
                 if ($response->isError()) {
                     $response->setError(Craft::t('There was an error with file uploads.'));
                 }
             }
             $submissionRecord->files = $fileIds;
         }
     }
     // Build Entry Record
     $submissionRecord->formId = $submission->formId;
     $submissionRecord->title = $submission->title;
     $submissionRecord->submission = $submission->submission;
     $submissionRecord->validate();
     $submission->addErrors($submissionRecord->getErrors());
     // Save To Database
     if (!$submission->hasErrors()) {
         $transaction = craft()->db->getCurrentTransaction() === null ? craft()->db->beginTransaction() : null;
         try {
             if (craft()->elements->saveElement($submission)) {
                 $submissionRecord->id = $submission->id;
                 $submissionRecord->save(false);
                 if ($transaction !== null) {
                     $transaction->commit();
                 }
                 return $submissionRecord->id;
             } else {
                 return false;
             }
         } catch (\Exception $e) {
             if ($transaction !== null) {
                 $transaction->rollback();
             }
             throw $e;
         }
         return true;
     } else {
         return false;
     }
 }
 /**
  * Process Submission Entry
  *
  */
 public function processSubmissionEntry(FormBuilder2_EntryModel $submission)
 {
     // Fire Before Save Event
     $this->onBeforeSave(new Event($this, array('entry' => $submission)));
     $form = craft()->formBuilder2_form->getFormById($submission->formId);
     $formFields = $form->fieldLayout->getFieldLayout()->getFields();
     $attributes = $form->getAttributes();
     $formSettings = $attributes['formSettings'];
     $submissionRecord = new FormBuilder2_EntryRecord();
     // Build Entry Record
     $submissionRecord->formId = $submission->formId;
     $submissionRecord->title = $submission->title;
     $submissionRecord->files = $submission->files;
     $submissionRecord->submission = $submission->submission;
     $submissionRecord->validate();
     $submission->addErrors($submissionRecord->getErrors());
     // Save To Database
     if (!$submission->hasErrors()) {
         $transaction = craft()->db->getCurrentTransaction() === null ? craft()->db->beginTransaction() : null;
         try {
             if (craft()->elements->saveElement($submission)) {
                 $submissionRecord->id = $submission->id;
                 $submissionRecord->save(false);
                 if ($transaction !== null) {
                     $transaction->commit();
                 }
                 return $submissionRecord->id;
             } else {
                 return false;
             }
         } catch (\Exception $e) {
             if ($transaction !== null) {
                 $transaction->rollback();
             }
             throw $e;
         }
         return true;
     } else {
         return false;
     }
 }