Example #1
0
 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;
 }
Example #2
0
 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);
     }
 }
Example #4
0
 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));
     }
 }