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); } }
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; }
/** * 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; }
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'); }
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'); }
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'); } }
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; }