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; } } }
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)); } }