private function importDA($data)
 {
     foreach ($data as $d) {
         $id = $d[0];
         $model = DatasetAuthor::model()->findByPk($d[0]);
         if (!$model) {
             $model = new DatasetAuthor();
             $model->id = $d[0];
         }
         $model->dataset_id = $d[1];
         $model->author_id = $d[2];
         $model->rank = $d[3];
         if (!$model->save()) {
             echo "Failed to save " . $model->id;
         }
     }
 }
Exemple #2
0
 public function getAuthorNames()
 {
     $criteria = new CDbCriteria();
     $criteria->join = 'left join author a on a.id = t.author_id';
     $criteria->addCondition('t.dataset_id =' . $this->id);
     $criteria->order = 't.rank ASC, a.surname ASC, a.first_name ASC, a.middle_name ASC';
     $das = DatasetAuthor::model()->findAll($criteria);
     $l = array();
     foreach ($das as $da) {
         $author = $da->author;
         $name = $author->displayName;
         $id = $author->id;
         $l[] = CHtml::link($name, "/search/new?keyword={$name}&author_id={$id}", array('class' => 'result-sub-links'));
     }
     return implode('; ', $l);
 }
 public function actionUpdateRank()
 {
     if (isset($_POST['da_id']) && isset($_POST['rank'])) {
         $transaction = Yii::app()->db->beginTransaction();
         try {
             $is_exchange = false;
             $da = DatasetAuthor::model()->findByPk($_POST['da_id']);
             $rank = $da->rank;
             $changeRank = intval($_POST['rank']);
             $lastDa = DatasetAuthor::model()->findByAttributes(array('dataset_id' => $da->dataset_id), array('order' => 'rank desc'));
             if (!is_int($changeRank) or $changeRank == 0) {
                 Util::returnJSON(array("success" => false, "message" => Yii::t("app", "Please enter a non-zero integer.")));
             }
             if (!$lastDa or $changeRank > $lastDa->rank) {
                 Util::returnJSON(array("success" => false, "message" => Yii::t("app", "Please enter a value less or equal than " . $lastDa->rank)));
             }
             $das = array();
             if ($changeRank > $rank) {
                 // update order down by 1
                 // find all dataset authors in between
                 $criteria = new CDbCriteria();
                 $criteria->addCondition('t.rank > ' . min($rank, $changeRank));
                 $criteria->addCondition('t.rank <= ' . max($rank, $changeRank));
                 $criteria->addCondition('t.dataset_id = ' . $da->dataset_id);
                 $das = DatasetAuthor::model()->findAll($criteria);
                 foreach ($das as $updateDa) {
                     $updateDa->rank = $updateDa->rank - 1;
                 }
             } else {
                 // update order up by 1
                 // find all dataset authors in between
                 $criteria = new CDbCriteria();
                 $criteria->addCondition('t.rank >= ' . min($rank, $changeRank));
                 $criteria->addCondition('t.rank < ' . max($rank, $changeRank));
                 $criteria->addCondition('t.dataset_id = ' . $da->dataset_id);
                 $das = DatasetAuthor::model()->findAll($criteria);
                 foreach ($das as $updateDa) {
                     $updateDa->rank = $updateDa->rank + 1;
                 }
             }
             $da->rank = $changeRank;
             if ($da->save()) {
                 if (!$this->saveDas($das)) {
                     Util::returnJSON(array("success" => false, "message" => Yii::t("app", "Cannot save das.")));
                 }
                 $transaction->commit();
                 Util::returnJSON(array("success" => true));
             }
             Util::returnJSON(array("success" => false, "message" => Yii::t("app", "Cannot update rank.")));
         } catch (Exception $e) {
             $message = $e->getMessage();
             Yii::log(print_r($message, true), 'error');
             $transaction->rollback();
             Util::returnJSON(array("success" => false, "message" => Yii::t("app", "Cannot update rank.")));
         }
     }
 }
 public function actionAuthorManagement()
 {
     if (!isset($_GET['id'])) {
         $this->redirect("/user/view_profile");
     } else {
         $dataset = Dataset::model()->findByPk($_GET['id']);
         if (!$dataset) {
             $this->redirect("/user/view_profile");
         }
         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");
         }
         $das = DatasetAuthor::model()->findAllByAttributes(array('dataset_id' => $dataset->id), array('order' => 'rank asc'));
         $this->render('authorManagement', array('model' => $dataset, 'das' => $das));
     }
 }