public static function storeDatasetTypes($dataset_id, $types) { $currentTypes = DatasetType::model()->findAllByAttributes(array('dataset_id' => $dataset_id)); $currentIds = array(); foreach ($currentTypes as $currentType) { $currentIds[] = $currentType->type_id; } foreach ($currentTypes as $currentType) { if (!in_array($currentType->type_id, $types)) { if (!$currentType->delete(false)) { return false; } } } foreach ($types as $id) { if (!in_array($id, $currentIds)) { if (!self::createDatasetType($dataset_id, $id)) { return false; } } } return true; }
public function getIsProteomic() { $dt = DatasetType::model()->findByAttributes(array('dataset_id' => $this->id, 'type_id' => 10)); if ($dt) { return true; } return false; }
public function storeDataset() { if (isset($_SESSION['dataset']) && isset($_SESSION['images'])) { $dataset = new Dataset(); $dataset->image = new Images(); $result = Dataset::model()->findAllBySql("select identifier from dataset order by identifier desc limit 1;"); $max_doi = $result[0]->identifier; $identifier = $max_doi + 1; $dataset_id = 0; $dataset->attributes = $_SESSION['dataset']; $dataset->image->attributes = $_SESSION['images']; $dataset->identifier = $identifier; $dataset->dataset_size = 0; $dataset->ftp_site = ""; if ($dataset->publication_date == "") { $dataset->publication_date = null; } if ($dataset->modification_date == "") { $dataset->modification_date = null; } if ($dataset->image->validate('update') && $dataset->validate('update') && $dataset->image->save()) { // save image $dataset->image_id = $dataset->image->id; if ($dataset->save()) { $dataset_id = $dataset->id; // link datatypes if (isset($_SESSION['datasettypes'])) { $datasettypes = $_SESSION['datasettypes']; foreach ($datasettypes as $id => $datasettype) { $newDatasetTypeRelationship = new DatasetType(); $newDatasetTypeRelationship->dataset_id = $dataset->id; $newDatasetTypeRelationship->type_id = $id; $newDatasetTypeRelationship->save(); } } } } return array($dataset_id, $identifier); } }
public function actionDatasetManagement() { if (!isset($_GET['id'])) { $this->redirect("/user/view_profile"); } else { $dataset = Dataset::model()->findByPk($_GET['id']); if (!$dataset) { $this->redirect("/user/view_profile"); } // set dataset types $dataset->types = $dataset->typeIds; if ($dataset->submitter_id != Yii::app()->user->id) { Yii::app()->user->setFlash('keyword', "You are not the owner of dataset"); $this->redirect("/user/view_profile"); } if (!$dataset->image) { $image = new Images(); } else { $image = $dataset->image; } $is_new_image = $image->isNewRecord; if (isset($_POST['Dataset']) && isset($_POST['Images'])) { $transaction = Yii::app()->db->beginTransaction(); try { $attrs = $_POST['Dataset']; $dataset->title = $attrs['title']; $dataset->description = $attrs['description']; // save dataset types if (isset($_POST['datasettypes'])) { $dataset->types = $_POST['datasettypes']; } if ($_POST['Dataset']['union'] == 'B') { $dataset->dataset_size = $_POST['Dataset']['dataset_size']; } else { if ($_POST['Dataset']['union'] == 'M') { $dataset->dataset_size = $_POST['Dataset']['dataset_size'] * 1024 * 1024; } else { if ($_POST['Dataset']['union'] == 'G') { $dataset->dataset_size = $_POST['Dataset']['dataset_size'] * 1024 * 1024 * 1024; } else { if ($_POST['Dataset']['union'] == 'T') { $dataset->dataset_size = $_POST['Dataset']['dataset_size'] * 1024 * 1024 * 1024 * 1024; } } } } #save image if (!$_POST['Images']['is_no_image']) { $uploadedFile = CUploadedFile::getInstance($image, 'image_upload'); $fileName = "{$uploadedFile}"; $path = Yii::getPathOfAlias('webroot') . "/images/uploads/" . $fileName; $image->image_upload = $uploadedFile; $image->url = $path; $image->location = $fileName; $image->tag = $_POST['Images']['tag']; $image->license = $_POST['Images']['license']; $image->photographer = $_POST['Images']['photographer']; $image->source = $_POST['Images']['source']; } else { $image->url = "http://gigadb.org/images/data/cropped/no_image.png"; $image->location = "no_image.jpg"; $image->tag = "no image icon"; $image->license = "Public domain"; $image->photographer = "GigaDB"; $image->source = "GigaDB"; } if ($dataset->save() && $image->save()) { if ($is_new_image) { $dataset->image_id = $image->id; $dataset->save(false); } if (isset($_POST['datasettypes'])) { $types = DatasetType::storeDatasetTypes($dataset->id, $_POST['datasettypes']); if (!$types) { $transaction->rollback(); $this->redirect('/'); } } $transaction->commit(); $this->redirect(array('/dataset/authorManagement', 'id' => $dataset->id)); } } catch (Exception $e) { $message = $e->getMessage(); Yii::log(print_r($message, true), 'error'); $transaction->rollback(); $this->redirect('/'); } } $this->render('datasetManagement', array('model' => $dataset, 'image' => $image)); } }