Example #1
0
 public static function getByBiobank($biobankId, $limit)
 {
     $criteria = new EMongoCriteria();
     $criteria->addCond('biobank_id', '==', $biobankId);
     $criteria->sort('date', EMongoCriteria::SORT_DESC);
     $criteria->limit($limit);
     return BiobankStats::model()->findAll($criteria);
 }
Example #2
0
 public function getDateLastImportByBiobank($biobank_id)
 {
     $criteria = new EMongoCriteria();
     $criteria->biobank_id = $biobank_id;
     $criteria->limit(1);
     $criteria->sort('date_import', EMongoCriteria::SORT_DESC);
     $criteria->select(array('date_import'));
     $result = $this->find($criteria);
     if ($result != null) {
         return $result->date_import;
     }
 }
Example #3
0
 /**
  * 从cursor游标得到数组
  * 同时获取该记录的操作者
  */
 public static function getRowsFromCursor($e_cursor)
 {
     $rows = array();
     $e_cursor->next();
     $_ids = array();
     $user_ids = array();
     while ($row = $e_cursor->current()) {
         $t = $row->attributes;
         $rows[] = $t;
         $_ids[] = $t['_id'];
         if (isset($t['user'])) {
             if (!is_numeric($t['user'])) {
                 //不是管理员用户
                 $user_ids[] = $t['user'];
             }
         }
         $e_cursor->next();
     }
     $total = count($rows);
     if ($total > 0) {
         $model = $e_cursor->getModel();
         $db_name = $model->getMongoDBComponent()->dbName;
         $c_name = $model->getCollectionName();
         $criteria = new EMongoCriteria();
         $criteria->db_name('==', $db_name);
         $criteria->c_name('==', $c_name);
         $criteria->r_id('in', $_ids);
         $criteria->limit($total);
         $cursor = DbAction::model()->findAll($criteria);
         //var_dump($_ids);exit;
         if ($cursor->count() > 0) {
             $action_info = array();
             $admin_user_ids = array();
             foreach ($cursor as $v) {
                 $_id = (string) $v->r_id;
                 $action = $v->action;
                 $last = count($action) - 1;
                 $admin_user_ids[] = $action[$last]['user'];
                 $action_info[$_id] = array('action_time' => date("Y-m-d H:i", $action[$last]['time']), 'admin_id' => $action[$last]['user'], 'action_log' => isset($action[$last]['action_log']) ? $action[$last]['action_log'] : '');
             }
             $criteria = new EMongoCriteria();
             $criteria->_id('in', $admin_user_ids);
             $user_cursor = User::model()->findAll($criteria);
             $ruser_cursor = RUser::model()->findAll($criteria);
             $admin_names = array();
             foreach ($user_cursor as $v) {
                 $admin_names[$v->_id] = $v->name;
             }
             foreach ($ruser_cursor as $v) {
                 $admin_names[(string) $v->_id] = $v->user_name;
             }
             foreach ($rows as $k => $v) {
                 $_id = (string) $v['_id'];
                 if (isset($action_info[$_id])) {
                     $admin_id = (string) $action_info[$_id]['admin_id'];
                     $admin_user = $admin_names[$admin_id];
                     $rows[$k]['action_user'] = $admin_user;
                     $rows[$k]['action_time'] = $action_info[$_id]['action_time'];
                     $rows[$k]['action_log'] = $action_info[$_id]['action_log'];
                 } else {
                     $rows[$k]['action_user'] = '';
                     $rows[$k]['action_time'] = '';
                     $rows[$k]['action_log'] = '';
                 }
             }
         } else {
             foreach ($rows as $k => $v) {
                 $rows[$k]['action_user'] = '';
                 $rows[$k]['action_time'] = '';
                 $rows[$k]['action_log'] = '';
             }
         }
     }
     return $rows;
 }
 /**
  * print de la liste dechantillons
  */
 public function actionPrint()
 {
     // $model = new Sample('search');
     if (isset($_SESSION['criteria']) && $_SESSION['criteria'] != null && $_SESSION['criteria'] instanceof EMongoCriteria) {
         $criteria = $_SESSION['criteria'];
     } else {
         $criteria = new EMongoCriteria();
     }
     $criteria->limit(200);
     $dataProvider = new EMongoDocumentDataProvider('Sample', array('criteria' => $criteria, 'pagination' => false));
     $columns = array();
     foreach (Sample::model()->attributeExportedLabels() as $key => $value) {
         if ($key == 'notes') {
             $columns[] = $this->addColumn($key, $value, '$data->getShortNotes()');
         } elseif ($key == 'biobank_id') {
             $columns[] = $this->addColumn('biobank_id', $value, '$data->getBiobankName()');
         } elseif ($key == 'collect_date') {
             $columns[] = $this->addColumn('collect_date', $value, '$data->collect_date');
             //TODO normaliser les dates de collecte avant d activer cette feature
             // $columns [] = getArrayColumn('collect_date', $value, 'CommonTools::toShortDateFR($data->collect_date)');
         } elseif ($key == 'storage_conditions') {
             $columns[] = $this->addColumn('storage_conditions', $value, '$data->getLiteralStorageCondition()');
         } else {
             $columns[] = $this->addColumn($key, $value, '$data->' . $key);
         }
     }
     $this->render('print', array('dataProvider' => $dataProvider, 'columns' => $columns));
 }
Example #5
0
 /**
  * Support mongo models interface.
  *
  * @param \EMongoDocument $model
  * @param string|array $where
  * @throws ApiException, NotFoundApiException
  */
 private function mongoGet($model, $where = null)
 {
     $criteria = new \EMongoCriteria();
     if ($id = \Yii::app()->request->getParam(self::ID, false)) {
         $this->data = $model->findByPk($id);
     } else {
         if ($ids = \Yii::app()->request->getParam(self::IDS, false)) {
             // something
         } else {
             $params = $this->getPaginationParams();
             $criteria->offset($params['offset']);
             $criteria->limit($params['limit']);
             if ($order = \Yii::app()->request->getParam(self::ORDER, false)) {
                 $params = explode(' ', $order);
                 $criteria->sort($params[0], $params[1] == 'desc' ? \EMongoCriteria::SORT_DESC : \EMongoCriteria::SORT_ASC);
             }
             if ($where) {
                 if (is_array($where)) {
                     foreach ($where as $cond) {
                         $params = explode(' ', $cond);
                         if ($params[1] == 'in') {
                             $params[2] = $this->manageInCondition($params[2]);
                         }
                         $criteria->addCond($params[0], $params[1], is_numeric($params[2]) ? (int) $params[2] : $params[2]);
                     }
                 } else {
                     $params = explode(' ', $where);
                     if ($params[1] == 'in') {
                         $params[2] = $this->manageInCondition($params[2]);
                     }
                     $criteria->addCond($params[0], $params[1], is_numeric($params[2]) ? (int) $params[2] : $params[2]);
                 }
             }
             $this->data = $model->findAll($criteria);
             if ($this->data == null) {
                 throw new NotFoundApiException();
             }
         }
     }
 }