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); }
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; } }
/** * 从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)); }
/** * 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(); } } } }