Beispiel #1
0
 public function updateAction()
 {
     $request = $this->getRequest();
     $fishId = intval($request->getParam(Fish::COL_ID));
     $dbAdapter = Zend_Registry::get('DB_CONNECTION1');
     if ($request->isPost() and $this->form->isValid($request->getParams($fishId))) {
         $data = array(Fish::COL_SAMPLE_CODE => $this->form->getValue(Fish::COL_SAMPLE_CODE), Fish::COL_USER_ID => AuthQuery::getUserId());
         $this->fishTable->updateFishAndMetadata($this->form, $fishId, $data);
         $namespace = new Zend_Session_Namespace('default');
         $redirect = new Zend_Controller_Action_Helper_Redirector();
         if ($namespace->next != null) {
             $nextArray = $namespace->next;
             $namespace->next = null;
             $redirect->setGotoSimple($nextArray['nextAction'], $nextArray['nextController'], $nextArray['nextModul']);
         } else {
             $redirect->setGotoSimple('search', 'search', 'fish');
         }
     } else {
         $fishResult = $this->fishTable->find($fishId)->current();
         if ($fishResult != null) {
             $fishArray = $fishResult->toArray();
         } else {
             $fishArray = array();
         }
         // get meta data
         $select = $dbAdapter->select();
         $select->from(MetaDataFish::TABLE_NAME);
         $select->join(AttributeDescriptor::TABLE_NAME, MetaDataFish::TABLE_NAME . '.' . MetaDataFish::COL_ATTRIBUTE_DESCRIPTOR_ID . '=' . AttributeDescriptor::TABLE_NAME . '.ATDE_ID');
         $select->where(MetaDataFish::COL_FISH_ID . '=?', $fishId);
         $metaArray = $dbAdapter->fetchAll($select);
         $this->form->dynPopulate($metaArray, MetaDataFish::COL_VALUE, $fishArray);
         $this->view->form = $this->form;
         $this->render('form');
     }
 }
 public function createAction()
 {
     $expId = intval($this->getRequest()->getParam(Expertise::COL_ID));
     $keyId = intval($this->getRequest()->getParam(KeyTable::COL_ID));
     $expTable = new Expertise();
     $expRow = $expTable->find($expId);
     $keyTable = new KeyTable();
     $keyRow = $keyTable->find($keyId);
     if ($keyRow->count() != 0 || $expRow->count() != 0) {
         $keyArray = $keyRow->toArray();
         $expArray = $expRow->toArray();
         // create CE row
         $ceTable = new CalibrationExercise();
         $ceName = $expArray[0][Expertise::COL_SPECIES] . ' / ' . AuthQuery::getUserName();
         //TODO \r in der Datenbank
         $ceDescription = 'Area: ' . $expArray[0][Expertise::COL_AREA] . '\\r' . 'Subject: ' . $expArray[0][Expertise::COL_SUBJECT] . '\\r' . 'KeyName: ' . $keyArray[0][KeyTable::COL_NAME];
         $ceData = array(CalibrationExercise::COL_NAME => $ceName, CalibrationExercise::COL_DESCRIPTION => $ceDescription, CalibrationExercise::COL_KEY_TABLE_ID => $keyArray[0][KeyTable::COL_ID], CalibrationExercise::COL_EXPERTISE_ID => $expArray[0][Expertise::COL_ID], CalibrationExercise::COL_COMPAREABLE => 1, CalibrationExercise::COL_IS_STOPPED => 0, CalibrationExercise::COL_TRAINING => 1);
         $ceId = $ceTable->insert($ceData);
         // create participant row
         $partTable = new Participant();
         $partData = array(Participant::COL_CE_ID => $ceId, Participant::COL_USER_ID => AuthQuery::getUserId(), Participant::COL_NUMBER => 1);
         $partId = $partTable->insert($partData);
         // add all possible shown attributes
         $dbAdapter = $ceTable->getAdapter();
         $selectAttr = $dbAdapter->select();
         $selectAttr->from(AttributeDescriptor::TABLE_NAME);
         $selectAttr->orWhere(AttributeDescriptor::COL_GROUP . '=?', 'fish');
         $selectAttr->orWhere(AttributeDescriptor::COL_GROUP . '=?', 'image');
         $attrArray = $dbAdapter->fetchAll($selectAttr);
         $ceHasAttrTable = new CeHasAttributeDescriptor();
         foreach ($attrArray as $attr) {
             $attrData = array(CeHasAttributeDescriptor::COL_ATDE_ID => $attr[AttributeDescriptor::COL_ID], CeHasAttributeDescriptor::COL_CAEX_ID => $ceId);
             $ceHasAttrTable->insert($attrData);
         }
         //get images for exp/key
         $refQuery = new Default_ReferenceQuery();
         $images = $refQuery->getImages($expId, $keyId);
         // create imageset
         //			$selectImages = $dbAdapter->select();
         //			$imagesArray = $dbAdapter->fetchAll($selectImages);
         $imageSetTable = new CeHasImage();
         foreach ($images as $image) {
             $data = array(CeHasImage::COL_IMAGE_ID => $image, CeHasImage::COL_CALIBRATION_EXERCISE_ID => $ceId);
             $imageSetTable->insert($data);
         }
         //$this->render('form');
         $Redirect = new Zend_Controller_Action_Helper_Redirector();
         $Redirect->setGotoSimple('index', 'make', 'annotation', array(CalibrationExercise::COL_ID => $ceId));
     } else {
         throw new Zend_Controller_Exception('Error at craeting a new training Calibration Exercise.', 505);
     }
 }
Beispiel #3
0
 public function indexAction()
 {
     $addFish = false;
     if ($this->getRequest()->isPost()) {
         $params = $this->getRequest()->getParams();
         if ($this->form->isValid($params)) {
             //TODO wenn fishsamplecode noch nicht in der datenbank,
             //dann lege fisch an mit diesem samplecode (erledigt)
             //und SPRINGE IN Fish_CreateController (am Ende des Controllers)
             //TODO mit getElement und Konstanten arbeiten
             $fishSampleCode = $this->form->getValue(Fish::COL_SAMPLE_CODE);
             $fishTable = new Fish();
             $row = $fishTable->fetchRow($fishTable->select()->where(Fish::COL_SAMPLE_CODE . '= ?', $fishSampleCode));
             if (is_null($row)) {
                 //echo 'Warnung: Fish Sample Code nicht vorhanden.';
                 $fishId = $fishTable->insert(array(Fish::COL_SAMPLE_CODE => $fishSampleCode));
                 $addFish = true;
                 $constFishId = Fish::COL_ID;
                 $fishId->{$constFishId} = $fishId;
             } else {
                 $addFish = false;
                 $fishId = $row->FISH_ID;
             }
             //TODO dateinamen mit leerzeichen
             //könnte ein problem bei der weiterverarbeitung in linux sein
             //klären,
             //ggf. akzeptieren und umwandeln oder verweigern?
             //don't call $form->getValues() - causes physical upload immediately
             //look ZFDoc 19.1.3
             //note: if using Zend_Form_Element_File (in view) you can't use new instance of Zend_File_Transfer_Adapter_Http in controller!
             // http://www.zfforums.com/zend-framework-forum-8/general-talks-12/file_transfer-illegal-uploaded-possible-attack-1737.html
             // http://www.nabble.com/Zend_File_Transfer-td19024470.html
             //solution:
             //getTransferAdapter()
             $upload = $this->form->uploadElement->getTransferAdapter();
             // Returns all known internal file informations
             $files = $upload->getFileInfo();
             $imageTable = new Image();
             $medimTable = new MetaDataImage();
             //look ZFDoc 19.3.3
             //iterates over all file elemens
             $numberImagesUploaded = 0;
             $userId = AuthQuery::getUserId();
             foreach ($files as $file => $info) {
                 /*handle only uploaded files, skip blank file elements
                 	 store original file in certain path
                 	 file is saved without excplicit temp directory with Zend Filter
                 	 image import uses temp directory instead
                 	 */
                 if (!$upload->isUploaded($file)) {
                     continue;
                 }
                 $creator_guid = new Ble422_Guid();
                 $guid = $creator_guid->__toString();
                 $fileName = $info['name'];
                 $path_parts = pathinfo($fileName);
                 $originalFileName = $path_parts['basename'];
                 //used later to create Image dataset
                 $newFileNameWithGuid = $guid . '.' . strtolower($path_parts['extension']);
                 //save extension in lower-case
                 //relative path with new filename, prefix dot&slash required
                 $completeTarget = './' . Image::RELATIVE_UPLOAD_PATH . '/' . $newFileNameWithGuid;
                 //apply filter only for uploaded file $fileName
                 $upload->addFilter('Rename', array('target' => $completeTarget, 'overwrite' => false), $fileName);
                 $upload->receive($file);
                 //TODO write protect files
                 $upload->clearFilters();
                 try {
                     $ratio = $this->form->getValue(Image::COL_RATIO_EXTERNAL);
                     $tn_ratio = $imageTable->processImage($completeTarget);
                     //ratio is filled from form
                     $imageId = $imageTable->insertImageDataset($completeTarget, $originalFileName, $fishId, $guid, $userId, $ratio, $tn_ratio);
                     $imageTable->updateImageAndMetadata($this->form, $imageId);
                     $numberImagesUploaded++;
                 } catch (Exception $e) {
                     echo "Exception: " . $e->getMessage();
                 }
             }
             Zend_Registry::set('MESSAGE', $numberImagesUploaded . ' image(s) successfully inserted');
             if ($addFish) {
                 $next = array('nextAction' => 'index', 'nextController' => 'upload', 'nextModul' => 'image');
                 $namespace = new Zend_Session_Namespace('default');
                 $namespace->next = $next;
                 $redirect = new Zend_Controller_Action_Helper_Redirector();
                 $redirect->setGotoSimple('update', 'edit', 'fish', array(Fish::COL_ID => $fishId));
             }
         } else {
             //form isn't valid
             $this->form->populate($params);
             $this->view->form = $this->form;
         }
     }
     //$this->view->form = $form;
 }
Beispiel #4
0
 /**
  * grouping function
  * checks the CSV file and prepares the datasets for import, and gives detailled arrays back for single steps for further processing and report
  * 1. checks the CSV file column against uploaded files
  * 2. checks the header
  * 3. checks the columns with value list entries and changes from strings to ids
  * 4. splits and checks the datasets against fish and image form
  * @param $key the subdirectory for csv and image files
  * @param $systemAttributes INPUT from flex assigning, elements order is 1:1 to csvHeadings
  * @param $csvHeadings INPUT from flex assigning, elements order is 1:1 to systemAttributes
  * @param $filenames filenames of files to upload, including import.csv
  * @return unknown_type
  */
 public function checkCsv($key, $systemAttributes, $csvHeadings, $filenames)
 {
     $this->key = $key;
     $this->logger = new Ble422_ArrayLogger(self::RELATIVE_PATH_IMPORT_LOGS . $this->key . '_import_log.txt');
     try {
         $parser = new Ble422_CsvParser(self::RELATIVE_PATH_UPLOAD_CACHE . $this->key . '/import.csv', TRUE, ',', NULL, TRUE);
     } catch (Exception $e) {
         return array('returnCode' => 'initial error', 'message' => $e->getMessage);
     }
     //print_r($this->parser->getHeadings());
     $headings = $parser->getHeadings();
     if (count($headings) <= 1) {
         return array('returnCode' => 'initial error', 'message' => 'Error: zero or only one heading found, wrong delitimer?');
     }
     $datasets = array();
     $datasets = $parser->get(0);
     if (empty($datasets)) {
         return array('returnCode' => 'initial error', 'message' => 'Error: no dataset found');
     }
     if (empty($filenames)) {
         return array('returnCode' => 'initial error', 'message' => 'Error: no filenames found');
     }
     //echo $this->datasets[0]['Über2'];
     //echo $this->datasets[1]['Über3'];
     if (count($systemAttributes) >= 1 && count($csvHeadings) >= 1) {
         $useManualAssociation = TRUE;
         if (count($systemAttributes) != count($csvHeadings)) {
             return array('returnCode' => 'initial error', 'message' => 'Error: number of system attributes and CSV file headings not equal');
         }
         //delete the additional information from the attribute string
         foreach ($systemAttributes as &$attr) {
             $pos = strrpos($attr, '#');
             if ($pos === false) {
                 // not found
             } else {
                 //- 1 because space sign
                 $attr = substr($attr, 0, $pos - 1);
             }
         }
         //$headingsArray = $this->createHeadingsArray();
         $datasets = $this->getDatasetsWithNewHeadings($datasets, $systemAttributes, $csvHeadings);
         $headings = $systemAttributes;
     } else {
         $useManualAssociation = FALSE;
     }
     //additional array (keys without spaces) for xml XXX has no recursive handling --------------
     $datasetsForXml = array();
     foreach ($datasets as $rowNo => $dataset) {
         $newDataset = array();
         foreach ($dataset as $keyName => $value) {
             $newKeyName = str_replace(' ', '_', $keyName);
             $newDataset += array($newKeyName => $value);
         }
         $datasetsForXml[$rowNo] = $newDataset;
     }
     //----------------------------------------------------------
     $this->logger->log(array('user' => AuthQuery::getUserName()));
     $this->logger->log(array('originalInput' => $datasets));
     //XXX handle association array added info
     try {
         if (!$useManualAssociation) {
             $fileNamesCsv = $this->extractColumn($datasets, Image::COL_ORIGINAL_FILENAME);
         } else {
             $fileNamesCsv = $this->extractColumn($datasets, Image::COL_ORIGINAL_FILENAME);
         }
     } catch (OutOfBoundsException $e) {
         return array('returnCode' => 'initial error', 'message' => "Error: column not found\n" . $e->getMessage);
     }
     try {
         $this->extractColumn($datasets, Fish::COL_SAMPLE_CODE);
     } catch (OutOfBoundsException $e) {
         return array('returnCode' => 'initial error', 'message' => "Error: column not found\n" . $e->getMessage);
     }
     $resultsCheckFileCsvAssoc = $this->checkFileCsvAssoc($fileNamesCsv, $filenames);
     $this->logger->log($resultsCheckFileCsvAssoc, 'resultsCheckFileCsvAssoc');
     $this->rowHasUniqueUploadedFile = $resultsCheckFileCsvAssoc['rowHasUniqueUploadedFile'];
     $fishBaseAttr = array(Fish::COL_SAMPLE_CODE);
     $imageBaseAttr = array(Image::COL_ORIGINAL_FILENAME, Image::COL_RATIO_EXTERNAL);
     $meta = new Default_MetaData();
     $attribRowset = array_merge($fishBaseAttr, $meta->getAttributesBasic('FISH'), $imageBaseAttr, $meta->getAttributesBasic('IMAGE'));
     $resultsCheckHeader = $this->checkHeader($headings, $attribRowset);
     $this->logger->log($resultsCheckHeader, 'resultsCheckHeader');
     //print_r($resultsCheckHeader);
     $this->matchingCols = $resultsCheckHeader['matchingColumns'];
     //get matching columns which have value list attributes
     $matchingColsWithValuelist = $resultsCheckHeader['matchingColumns'];
     foreach ($matchingColsWithValuelist as $key => $match) {
         if (is_array($match)) {
             //meta data
             if ($match[AttributeDescriptor::COL_VALUE_LIST] == 0) {
                 unset($matchingColsWithValuelist[$key]);
             }
         } else {
             //base date
             unset($matchingColsWithValuelist[$key]);
         }
     }
     $attribRowsetWithValuelist = array_merge($meta->getAttributesAndValuelist('FISH'), $meta->getAttributesAndValuelist('IMAGE'));
     $resultsCheckValuelistCells = $this->checkValuelistCells($datasets, $matchingColsWithValuelist, $attribRowsetWithValuelist);
     $this->logger->log($resultsCheckValuelistCells, 'resultsCheckValuelistCells');
     //		//additional array (keys without spaces) for xml --------------
     //		//copy the array
     //		$resultsCheckValuelistCellsForXml = array();
     //		foreach ($resultsCheckValuelistCells as $key => $val) {
     //			$resultsCheckValuelistCellsForXml[$key] = $val;
     //		}
     //		//replace the subarray 'modifiedDatasets'
     //				foreach ($resultsCheckValuelistCells['modifiedDatasets'] as $rowNo => $attrValPair) {
     //					$newDataset = array();
     //					foreach ($attrValPair as $keyName => $value) {
     //						$newKeyName = str_replace(' ', '_', $keyName);
     //						$newDataset += array($newKeyName => $value);
     //					}
     //					$resultsCheckValuelistCellsForXml['modifiedDatasets'][$rowNo] = $newDataset;
     //				}
     //
     //		//----------------------------------------------------------
     $modifiedDatasets = $resultsCheckValuelistCells['modifiedDatasets'];
     //function gets matching cols from member variable
     $resultsValidateAgainstForms = $this->validateAgainstForms($modifiedDatasets);
     $this->logger->log($resultsValidateAgainstForms, 'resultsValidateAgainstForms');
     //set member array preparedDatasets = all successful validated datasets
     $validRows = $resultsValidateAgainstForms['validRows'];
     $preparedDatasets = array();
     foreach ($validRows as $rowNo => $dataset) {
         $preparedDatasets[$rowNo]['fishFormDataset'] = $resultsValidateAgainstForms['fishFormDatasets'][$rowNo];
         $preparedDatasets[$rowNo]['imageFormDataset'] = $resultsValidateAgainstForms['imageFormDatasets'][$rowNo];
         //XXX append original filename out of original datasets
         //$preparedDatasets[$rowNo][Image::COL_ORIGINAL_FILENAME] = $datasets[$rowNo][Image::COL_ORIGINAL_FILENAME];
     }
     $this->preparedDatasets = $preparedDatasets;
     $this->logger->log($this->preparedDatasets, 'preparedDatasets');
     $resultsCheckDatasetsAgainstDatabase = $this->checkDatasetsAgainstDatabase($datasets);
     $this->logger->log($resultsCheckDatasetsAgainstDatabase, 'resultsCheckDatasetsAgainstDatabase');
     //aggregate returnCodes
     $returnCode = '';
     if ($resultsCheckFileCsvAssoc['returnCode'] == 'warning' || $resultsCheckHeader['returnCode'] == 'warning' || $resultsCheckValuelistCells['returnCode'] == 'warning' || $resultsValidateAgainstForms['returnCode'] == 'warning' || $resultsCheckDatasetsAgainstDatabase['returnCode'] == 'warning') {
         $returnCode = 'warning';
     }
     if ($resultsCheckFileCsvAssoc['returnCode'] == 'error' || $resultsCheckHeader['returnCode'] == 'error' || $resultsCheckValuelistCells['returnCode'] == 'error' || $resultsValidateAgainstForms['returnCode'] == 'error' || $resultsCheckDatasetsAgainstDatabase['returnCode'] == 'error') {
         $returnCode = 'error';
     }
     if ($returnCode == '') {
         $returnCode = 'success';
     }
     $resultsCheckFileCsvAssocForXml = $this->reduceCheckResultForXml($resultsCheckFileCsvAssoc);
     $resultsCheckHeaderForXml = $this->reduceCheckResultForXml($resultsCheckHeader);
     $resultsCheckValuelistCellsForXml = $this->reduceCheckResultForXml($resultsCheckValuelistCells);
     $resultsValidateAgainstFormsForXml = $this->reduceCheckResultForXml($resultsValidateAgainstForms);
     $resultsCheckDatasetsAgainstDatabaseForXml = $this->reduceCheckResultForXml($resultsCheckDatasetsAgainstDatabase);
     //		//give upload process the valid unique filenames
     //		$resultsCheckFileCsvAssocForXml['rowHasUniqueUploadedFile'] = $this->rowHasUniqueUploadedFile;
     $result = array('returnCode' => $returnCode, 'originalInput' => $datasetsForXml, 'resultsCheckFileCsvAssoc' => $resultsCheckFileCsvAssocForXml, 'resultsCheckHeader' => $resultsCheckHeaderForXml, 'resultsCheckValuelistCells' => $resultsCheckValuelistCellsForXml, 'resultsValidateAgainstForms' => $resultsValidateAgainstFormsForXml, 'resultsCheckDatasetsAgainstDatabase' => $resultsCheckDatasetsAgainstDatabaseForXml);
     //		print_r($result);
     //		print_r($this->preparedDatasets);
     $this->saveToNamespace();
     return $result;
 }
Beispiel #5
0
 private function process(array $params)
 {
     //params-array filters (where) and/or shows more info (joins)
     $dbAdapter = Zend_Registry::get('DB_CONNECTION1');
     $select = $dbAdapter->select();
     $select->from(array('celist' => View_CeList::NAME), array(View_CeList::COL_WORK_NAME, View_CeList::COL_CAEX_NAME, View_CeList::COL_CAEX_DESC, View_CeList::COL_CAEX_ID, View_CeList::COL_WORK_ID, View_CeList::COL_CAEX_TRAIN, 'images' => new Zend_Db_Expr('count(cehim.' . CeHasImage::COL_ID . ')')));
     $select->joinLeft(array('exp' => Expertise::TABLE_NAME), $dbAdapter->quoteIdentifier('celist.' . View_CeList::COL_EXPE_ID) . '=' . $dbAdapter->quoteIdentifier('exp.' . Expertise::COL_ID));
     $select->joinLeft(array('key' => KeyTable::TABLE_NAME), $dbAdapter->quoteIdentifier('celist.' . View_CeList::COL_KETA_ID) . '=' . $dbAdapter->quoteIdentifier('key.' . KeyTable::COL_ID));
     $select->joinLeft(array('cehim' => CeHasImage::TABLE_NAME), $dbAdapter->quoteIdentifier('celist.' . View_CeList::COL_CAEX_ID) . '=' . $dbAdapter->quoteIdentifier('cehim.' . CeHasImage::COL_CALIBRATION_EXERCISE_ID), array());
     $select->joinLeft(array('vali1' => ValueList::TABLE_NAME), $dbAdapter->quoteIdentifier('vali1.' . ValueList::COL_ID) . '=' . $dbAdapter->quoteIdentifier('exp.' . Expertise::COL_SPECIES), array(Expertise::COL_SPECIES => 'vali1.' . ValueList::COL_VALUE));
     $select->joinLeft(array('vali2' => ValueList::TABLE_NAME), $dbAdapter->quoteIdentifier('vali2.' . ValueList::COL_ID) . '=' . $dbAdapter->quoteIdentifier('exp.' . Expertise::COL_SUBJECT), array(Expertise::COL_SUBJECT => 'vali2.' . ValueList::COL_VALUE));
     $select->group('celist.' . View_CeList::COL_CAEX_ID);
     $headerArray = array(array('raw' => View_CeList::COL_CAEX_NAME, 'name' => 'CE name'), array('raw' => View_CeList::COL_WORK_NAME, 'name' => 'Workshop name'), array('raw' => Expertise::COL_AREA, 'name' => 'Exp area'), array('raw' => Expertise::COL_SPECIES, 'name' => 'Exp species'), array('raw' => Expertise::COL_SUBJECT, 'name' => 'Exp subject'), array('raw' => KeyTable::COL_FILENAME, 'name' => 'Protocol'));
     if (array_key_exists(User::COL_ID, $params)) {
         //filter...
         $select->joinLeft(array('part' => Participant::TABLE_NAME), $dbAdapter->quoteIdentifier('celist.' . View_CeList::COL_CAEX_ID) . '=' . $dbAdapter->quoteIdentifier('part.' . Participant::COL_CE_ID), array('part.' . Participant::COL_ID));
         //where i am participant
         $select->where('part.' . Participant::COL_USER_ID . '=?', $params[User::COL_ID]);
         $userId = $params[User::COL_ID];
         $select->joinLeft(array('work' => Workshop::TABLE_NAME), 'work.' . Workshop::COL_ID . '=' . 'celist.' . View_CeList::COL_WORK_ID, array(Workshop::COL_USER_ID));
         //or where i am workshop-manager
         $select->orWhere('work.' . Workshop::COL_USER_ID . '= ?', $userId);
         array_push($headerArray, array('raw' => View_CeList::COL_IMAGES, 'name' => 'Images'));
     }
     if (array_key_exists(CalibrationExercise::COL_EXPERTISE_ID, $params)) {
         $select->where('celist.' . CalibrationExercise::COL_EXPERTISE_ID . '=?', $params[CalibrationExercise::COL_EXPERTISE_ID]);
         //			$select->joinLeft(array('cehim'=>CeHasImage::TABLE_NAME),
         //			$dbAdapter->quoteIdentifier('celist.' . View_CeList::COL_CAEX_ID). '=' . $dbAdapter->quoteIdentifier('cehim.' .CeHasImage::COL_CALIBRATION_EXERCISE_ID),
         //			array());
     }
     //Hinzugefügt am 14.10.2009 Tabellenzeilen mit WS name = training exercise
     //sollten nicht angezeigt werden (im Menüpunkt search calibration exercises)
     //kompletter if-Zweig wurde hinzugefügt
     if ($this->getRequest()->getModuleName() == 'ce' && $this->getRequest()->getControllerName() == 'search' && $this->getRequest()->getActionName() == 'list') {
         $select->where(CalibrationExercise::COL_WORKSHOP_ID . ' is not null');
     }
     //echo $select;
     /**
      * Paginator control
      */
     $paginator = new Ble422_Paginator_Extended($select, $this->getRequest());
     $paginator->setHeader($headerArray);
     $paginator->setCurrentPageNumber($this->getRequest()->getParam('page'))->setItemCountPerPage(10)->setPageRange(5)->orderBy($this->getRequest()->getParam('orderBy'));
     //$this->_getParam('pageRange'));
     Zend_View_Helper_PaginationControl::setDefaultViewPartial('partials/list_pagination_control.phtml');
     $detailId = $this->getRequest()->getParam('detailId');
     if ($detailId != null) {
         $detailId = intval($detailId);
         /**
          * show wether CE is stopped
          */
         try {
             if (Default_SimpleQuery::isCeStopped($detailId)) {
                 $this->view->ceInfo = 'CE is <b>STOPPED</b>';
             } else {
                 $this->view->ceInfo = 'CE is <b>RUNNING</b>';
             }
         } catch (exception $e) {
             $this->view->ceInfo = $e->getMessage();
         }
         /**
          * show Coordinator
          */
         if ($coordinators = Participant::getCoordinators($detailId)) {
             $this->view->ceCoordinators = $coordinators;
         }
         /**
          * imageset and shown attributes
          */
         $imagesetSelect = $dbAdapter->select();
         $imagesetSelect->from('v_imageset_info');
         $imagesetSelect->where(CalibrationExercise::COL_ID . '=?', $detailId);
         $imagesetSelect->group(AttributeDescriptor::COL_NAME);
         $imagesetArray = $dbAdapter->fetchAll($imagesetSelect);
         $this->view->imagesetArray = $imagesetArray;
         $shownAttrSelect = $dbAdapter->select();
         $shownAttrSelect->from(array('cehat' => CeHasAttributeDescriptor::TABLE_NAME));
         $shownAttrSelect->join(array('attr' => AttributeDescriptor::TABLE_NAME), 'cehat.' . CeHasAttributeDescriptor::COL_ATDE_ID . '= attr.' . AttributeDescriptor::COL_ID);
         $shownAttrSelect->where(CalibrationExercise::COL_ID . '=?', $detailId);
         $shownAttrArray = $dbAdapter->fetchAll($shownAttrSelect);
         $this->view->shownAttrArray = $shownAttrArray;
         $this->view->detailId = $detailId;
     }
     $this->view->userRole = AuthQuery::getUserRole();
     $this->view->expeId = $this->getRequest()->getParam(CalibrationExercise::COL_EXPERTISE_ID);
     $this->view->paginator = $paginator;
     $this->render('list');
 }
Beispiel #6
0
 public function deleterecursiveAction()
 {
     //delete workshop files
     //delete workshop -> triggers delete ce
     //delete ws info -> DB on delete cascade
     //delete ce
     //delete imageset attributes -> DB on delete cascade
     //delete ce has image -> DB on delete cascade
     //delete ce has attribute desc. -> DB on delete cascade
     //delete participants -> DB on delete cascade
     //delete annotations -> DB on delete cascade
     //delete dots -> DB on delete cascade
     $request = $this->getRequest();
     $workId = intval($this->getRequest()->getParam(Workshop::COL_ID));
     if (AuthQuery::getUserRole() == 'admin') {
         $request = $this->getRequest();
         $workId = intval($this->getRequest()->getParam(Workshop::COL_ID));
         $workshop = new Workshop();
         $rowset = $workshop->find($workId);
         if (count($rowset) == 1) {
             $table = new WorkshopInfo();
             //$tableAdapter = $table->getAdapter();
             $select = $table->select();
             //$select->from(WorkshopInfo::TABLE_NAME);
             $select->where(WorkshopInfo::COL_WORKSHOP_ID . ' = ?', $workId, 'int');
             echo $select;
             $rowset = $table->fetchAll($select);
             if (count($rowset) >= 1) {
                 $rowsetArray = $rowset->toArray();
                 $RELATIVE_WORKSHOP_FILES_PATH = 'infoFiles';
                 //without pre- and post-slash!
                 foreach ($rowsetArray as $row) {
                     try {
                         $filename = $row[WorkshopInfo::COL_FILE];
                         if ($filename != NULL) {
                             $myFile = $RELATIVE_WORKSHOP_FILES_PATH . '/' . $filename;
                             $fh = fopen($myFile, 'w');
                             fclose($fh);
                             unlink($myFile);
                         }
                     } catch (Exception $e) {
                         throw new Zend_Exception('Error: can not open file');
                     }
                 }
             }
             //note: delete of workshop_info is executed from db
             $workshop->delete($workshop->getAdapter()->quoteInto(Workshop::COL_ID . ' = ?', $workId));
         }
     }
     $redirect = new Zend_Controller_Action_Helper_Redirector();
     $redirect->setGoto('myws', 'search', 'workshop');
 }
Beispiel #7
0
 public function deleterecursiveAction()
 {
     //delete ce
     //delete imageset attributes -> DB on delete cascade
     //delete ce has image -> DB on delete cascade
     //delete ce has attribute desc. -> DB on delete cascade
     //delete participants -> DB on delete cascade
     //delete annotations -> DB on delete cascade
     //delete dots -> DB on delete cascade
     //auskommentiert am 14.10.2009 weil RAW DELETE in der Calibration exercise list
     //nicht immer funktionierte (wenn WS name = training exercise war)
     //stattdessen soll die cdId aus dem Request geholt werden
     //$ceId = $this->callingCeId;
     $ceId = $this->getRequest()->getParam(CalibrationExercise::COL_ID);
     $ce = new CalibrationExercise();
     if ($this->userRole == 'admin' || AuthQuery::getUserId() == Default_SimpleQuery::getWsManagerUserId(Default_SimpleQuery::getWorkshopId($ceId))) {
         $rowset = $ce->find($ceId);
         if (count($rowset) == 1) {
             $ce->delete($ce->getAdapter()->quoteInto(CalibrationExercise::COL_ID . ' = ?', $ceId));
         }
     }
     $Redirect = new Zend_Controller_Action_Helper_Redirector();
     if ($this->defaultNamespace->callingAction == 'ce/search/myce') {
         $Redirect->setGotoSimple('myce', 'search', 'ce');
     } elseif ($this->defaultNamespace->callingAction == 'ce/search/list') {
         $Redirect->setGotoSimple('list', 'search', 'ce');
     }
 }
Beispiel #8
0
 public function detailsAction()
 {
     $wsId = $this->getRequest()->getParam(Workshop::COL_ID);
     $dbAdapter = Zend_Registry::get('DB_CONNECTION1');
     $wsSelect = $dbAdapter->select();
     $wsSelect->from(array('work' => Workshop::TABLE_NAME));
     $wsSelect->join(array('inst' => ValueList::TABLE_NAME), 'inst.' . ValueList::COL_ID . "=" . 'work.' . Workshop::COL_HOST_ORGANISATION, array('instname' => ValueList::COL_NAME));
     $wsSelect->join(array('local' => ValueList::TABLE_NAME), 'local.' . ValueList::COL_ID . "=" . 'work.' . Workshop::COL_LOCATION, array('location' => ValueList::COL_NAME));
     $wsSelect->join(array('user' => User::TABLE_NAME), 'user.' . User::COL_ID . "=" . 'work.' . Workshop::COL_USER_ID, array('manager' => User::COL_USERNAME));
     $wsSelect->where(Workshop::COL_ID . '=?', $wsId);
     $workshopArray = $dbAdapter->fetchAll($wsSelect);
     /**
      * ce list
      */
     $ceSelect = $dbAdapter->select();
     $ceSelect->from(CalibrationExercise::TABLE_NAME);
     $ceSelect->where(CalibrationExercise::COL_WORKSHOP_ID . '=?', $wsId);
     $this->view->ceArray = $dbAdapter->fetchAll($ceSelect);
     /**
      * links
      */
     $infoTable = new WorkshopInfo();
     $linkSelect = $infoTable->select();
     $linkSelect->where(WorkshopInfo::COL_WORKSHOP_ID . "=?", $wsId);
     $linkSelect->where(WorkshopInfo::COL_FILE . " IS NULL");
     $linkResult = $infoTable->fetchAll($linkSelect);
     if ($linkResult != null) {
         $linkArray = $linkResult->toArray();
     } else {
         $linkArray = array();
     }
     /**
      * files
      */
     $fileSelect = $infoTable->select();
     $fileSelect->where(WorkshopInfo::COL_WORKSHOP_ID . "=?", $wsId);
     $fileSelect->where(WorkshopInfo::COL_LINK . " IS NULL");
     $fileResult = $infoTable->fetchAll($fileSelect);
     if ($fileResult != null) {
         $fileArray = $fileResult->toArray();
     } else {
         $fileArray = array();
     }
     $this->view->userRole = AuthQuery::getUserRole();
     $this->view->workshopArray = $workshopArray[0];
     $this->view->linkArray = $linkArray;
     $this->view->fileArray = $fileArray;
     $this->view->wsId = $wsId;
 }