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; }