private function applySettingsToParticipants() { //only checked attributes are processed //returns FALSE if no attribute and/or no participant is checked //works only for single-Select-Inputs! //checked value = COL_NAME //form control name = COL_NAME //form control value = CELL_VALUE $partAttrs = $this->getRequest()->getParam('participantAttributeChecked'); if ($partAttrs == NULL) { //no attribute checked return FALSE; } $data = array(); foreach ($partAttrs as $attr => $attrName) { $attrValue = $this->getRequest()->getParam($attrName); //boolean: write 1 instead of "on" to database if ($attrName == Participant::COL_STOCK_ASSESSMENT && $attrValue == "on") { $attrValue = 1; } $data = $data + array($attrName => $attrValue); } //echo $data; $partIds = $this->getRequest()->getParam(Participant::COL_ID); if ($partIds == NULL) { //no participant checked return FALSE; } $part = new Participant(); foreach ($partIds as $partId) { $where = $part->getAdapter()->quoteInto(Participant::COL_ID . ' = ?', $partId); $part->update($data, $where); } $this->redirectTo('index'); return TRUE; }
public function replicateAction() { $ceTable = new CalibrationExercise(); $partTable = new Participant(); $cehimTable = new CeHasImage(); $imagesetTable = new ImagesetAttributes(); $shownAtTable = new CeHasAttributeDescriptor(); /** * calibration exercises */ $ceArray = $ceTable->find($this->callingCeId)->current()->toArray(); /** * participants */ $partSelect = $partTable->getAdapter()->select(); $partSelect->from(Participant::TABLE_NAME); $partSelect->where(Participant::COL_CE_ID . '=?', $this->callingCeId); $partArray = $partTable->getAdapter()->fetchAll($partSelect); /** * imageset */ $cehimSelect = $cehimTable->getAdapter()->select(); $cehimSelect->from(CeHasImage::TABLE_NAME); $cehimSelect->where(CeHasImage::COL_CALIBRATION_EXERCISE_ID . '=?', $this->callingCeId); $cehimArray = $cehimTable->getAdapter()->fetchAll($cehimSelect); /** * imageset definition */ $imagesetSelect = $imagesetTable->getAdapter()->select(); $imagesetSelect->from(ImagesetAttributes::TABLE_NAME); $imagesetSelect->where(ImagesetAttributes::COL_CE_ID . '=?', $this->callingCeId); $imagesetArray = $imagesetTable->getAdapter()->fetchAll($imagesetSelect); /** * shown attributes */ $shownAtSelect = $shownAtTable->getAdapter()->select(); $shownAtSelect->from(CeHasAttributeDescriptor::TABLE_NAME); $shownAtSelect->where(CeHasAttributeDescriptor::COL_CAEX_ID . '=?', $this->callingCeId); $shownAtArray = $shownAtTable->getAdapter()->fetchAll($shownAtSelect); /** * insert all data */ $ceData = array(CalibrationExercise::COL_COMPAREABLE => $ceArray[CalibrationExercise::COL_COMPAREABLE], CalibrationExercise::COL_DESCRIPTION => $ceArray[CalibrationExercise::COL_DESCRIPTION], CalibrationExercise::COL_EXPERTISE_ID => $ceArray[CalibrationExercise::COL_EXPERTISE_ID], CalibrationExercise::COL_KEY_TABLE_ID => $ceArray[CalibrationExercise::COL_KEY_TABLE_ID], CalibrationExercise::COL_NAME => $ceArray[CalibrationExercise::COL_NAME], CalibrationExercise::COL_RANDOMIZED => $ceArray[CalibrationExercise::COL_RANDOMIZED], CalibrationExercise::COL_WORKSHOP_ID => $ceArray[CalibrationExercise::COL_WORKSHOP_ID]); $newCeId = $ceTable->insert($ceData); foreach ($partArray as $part) { $partData = array(Participant::COL_CE_ID => $newCeId, Participant::COL_EXPERTISE_LEVEL => $part[Participant::COL_EXPERTISE_LEVEL], Participant::COL_NUMBER => $part[Participant::COL_NUMBER], Participant::COL_ROLE => $part[Participant::COL_ROLE], Participant::COL_STOCK_ASSESSMENT => $part[Participant::COL_STOCK_ASSESSMENT], Participant::COL_USER_ID => $part[Participant::COL_USER_ID]); $partTable->insert($partData); } foreach ($cehimArray as $cehim) { $cehimData = array(CeHasImage::COL_CALIBRATION_EXERCISE_ID => $newCeId, CeHasImage::COL_IMAGE_ID => $cehim[CeHasImage::COL_IMAGE_ID]); $cehimTable->insert($cehimData); } foreach ($imagesetArray as $imageSet) { $imageSetData = array(ImagesetAttributes::COL_ATTRIBUTE_DESCRIPTOR_ID => $imageSet[ImagesetAttributes::COL_ATTRIBUTE_DESCRIPTOR_ID], ImagesetAttributes::COL_CE_ID => $newCeId, ImagesetAttributes::COL_FROM => $imageSet[ImagesetAttributes::COL_FROM], ImagesetAttributes::COL_TO => $imageSet[ImagesetAttributes::COL_TO], ImagesetAttributes::COL_VALUE => $imageSet[ImagesetAttributes::COL_VALUE]); $imagesetTable->insert($imageSetData); } foreach ($shownAtArray as $shownAt) { $shownAtData = array(CeHasAttributeDescriptor::COL_ATDE_ID => $shownAt[CeHasAttributeDescriptor::COL_ATDE_ID], CeHasAttributeDescriptor::COL_CAEX_ID => $newCeId); $imagesetTable->insert($imageSetData); } $this->redirectTo('index', array(CalibrationExercise::COL_ID => $newCeId)); }