public function setSubmissionArchiveByRelation(\DataContainer &$dc)
 {
     if ($dc->objModule === null || !$dc->objModule->addSubmissionRelation || $dc->objModule->type != \HeimrichHannot\Submissions\Creator\SubmissionCreator::MODULE_SUBMISSION_READER) {
         return;
     }
     $objSubmission = SubmissionModel::findByPk($dc->id);
     if ($objSubmission === null) {
         return;
     }
     $arrRelation = $GLOBALS['SUBMISSION_RELATIONS'][$dc->objModule->submissionRelation];
     if (!is_array($arrRelation)) {
         return;
     }
     if (!$arrRelation['table'] || !$arrRelation['submissionField']) {
         return;
     }
     if (($objRelatedItem = SubmissionCreator::findRelatedEntity($objSubmission->{$arrRelation['submissionField']}, $arrRelation, $dc->objModule)) === null) {
         return;
     }
     if (!$objRelatedItem->addSubmissionRelation) {
         return;
     }
     if (($objArchive = SubmissionArchiveModel::findByPk($objRelatedItem->submissionRelation)) === null) {
         return;
     }
     // overwrite submission archive by related item submission archive
     $objSubmission->pid = $objArchive->id;
     $objSubmission->save();
 }
 public function getSubmissionArchives(\DataContainer $dc)
 {
     $arrOptions = array();
     if (($objArchives = SubmissionArchiveModel::findAll()) !== null) {
         $arrOptions = $objArchives->fetchEach('title');
     }
     return $arrOptions;
 }
 public static function findSubmissionsByParent($strTable, $intPid, $blnPublishedOnly = false, array $arrOptions = array())
 {
     if (($objSubmissionArchives = SubmissionArchiveModel::findByParent($strTable, $intPid)) !== null) {
         if (!$blnPublishedOnly) {
             return static::findByPid($objSubmissionArchives->id, $arrOptions);
         } else {
             return static::findBy(array('tl_submission.published=1', 'tl_submission.pid=?'), array($objSubmissionArchives->id), $arrOptions);
         }
     }
     return null;
 }
 public static function getParentEntitiesAsOptions(\DataContainer $objDc)
 {
     $arrOptions = array();
     if ($objDc->activeRecord->parentTable && $objDc->activeRecord->parentField && ($objSubmissionArchives = \HeimrichHannot\Submissions\SubmissionArchiveModel::findByParentTable($objDc->activeRecord->parentTable)) !== null) {
         $arrUsedPids = $objSubmissionArchives->fetchEach('pid');
         if ($intPosition = array_search($objDc->activeRecord->pid, $arrUsedPids)) {
             unset($arrUsedPids[$intPosition]);
         }
         $strWhere = '';
         if (!empty($arrUsedPids)) {
             $strWhere = ' WHERE id NOT IN (' . implode(',', $arrUsedPids) . ')';
         }
         $objItems = \Database::getInstance()->execute('SELECT id, ' . $objDc->activeRecord->parentField . ' FROM ' . $objDc->activeRecord->parentTable . $strWhere);
         $arrOptions = array_combine($objItems->fetchEach('id'), $objItems->fetchEach($objDc->activeRecord->parentField));
     }
     return $arrOptions;
 }