public function testCountCriteria() { // 1 $dataProvider = new CActiveDataProvider('Post', array('criteria' => array('condition' => 'content LIKE "%content%"', 'order' => 'create_time DESC', 'with' => array('author')), 'pagination' => array('pageSize' => 5))); $this->assertSame($dataProvider->countCriteria, $dataProvider->criteria); $this->assertEquals(5, $dataProvider->getTotalItemCount(true)); // 2 $dataProvider->setCountCriteria(array('condition' => 'content LIKE "%content 1%"')); $this->assertNotSame($dataProvider->countCriteria, $dataProvider->criteria); $this->assertEquals(1, $dataProvider->getTotalItemCount(true)); // 3 $dataProvider->setCountCriteria(array('condition' => 'content LIKE "%content%"')); $this->assertNotSame($dataProvider->countCriteria, $dataProvider->criteria); $this->assertEquals(5, $dataProvider->getTotalItemCount(true)); }
protected function runAjax() { /** @var \CClientScript; */ $cs = Yii::app()->clientscript; $result = ['data' => $this->createDataArray()]; $result['recordsTotal'] = intval($this->dataProvider->getTotalItemCount()); $result['recordsFiltered'] = $this->filteredCount(); $result['draw'] = Yii::app()->request->getParam('draw'); if (isset($cs->scripts[$cs::POS_READY])) { $result['scripts'] = implode(" ", $cs->scripts[$cs::POS_READY]); } // Add filter values. $model = $this->dataProvider->model; $baseCriteria = $model->getDbCriteria(); $result['filterData'] = []; /** @var \CDataColumn $column */ foreach ($this->columns as $column) { if (isset($column->filter)) { switch ($column->filter) { case "select": case "select-strict": $values = []; // Get all values for this column. $criteria = clone $this->dataProvider->countCriteria; $criteria->distinct = true; $criteria->select = $column->name; foreach ($model->cache(120)->findAll($criteria) as $instance) { $values[$instance->{$column->name}] = ["key" => $instance->{$column->name}, "value" => isset($column->value) ? $column->evaluateExpression($column->value, ['data' => $instance, 'row' => -1]) : $instance->{$column->name}]; } usort($values, function ($a, $b) { return strcasecmp($a['value'], $b['value']); }); $result['filterData'][$column->name] = $values; break; case "select-month": $values = []; // Get all values for this column. $criteria = clone $this->dataProvider->countCriteria; $criteria->distinct = true; $criteria->select = $column->name; // $criteria->limit = -1; // $command = App()->db->schema->commandBuilder->createFindCommand($model->tableName(), $criteria); // $values = $command->queryColumn(); foreach ($model->findAll($criteria) as $dateModel) { /** @var \DateTime $date */ $date = $dateModel->{$column->name}; $key = $date->format("Y-m"); $values[$key] = ["key" => $key, "value" => \Yii::app()->dateFormatter->format("MMMM yyyy", $date)]; } krsort($values); $result['filterData'][$column->name] = array_values($values); break; default: } } } $model->setDbCriteria($baseCriteria); header("Content-Type: application/json"); echo json_encode($result, JSON_PRETTY_PRINT); }
/** * 查看推荐记录 */ public function actionShowrecommended() { //echo time();die; //if ($_POST){var_dump($_POST);die;} //获取表单参数 $CompanyName = Yii::app()->request->getParam("CompanyName"); $MobPhone = Yii::app()->request->getParam("MobPhone"); $Email = Yii::app()->request->getParam("Email"); $Month = Yii::app()->request->getParam("Month"); $RecomMethod = Yii::app()->request->getParam("RecomMethod"); $MemberStatus = Yii::app()->request->getParam("MemberStatus"); //设置页面标题 $this->pageTitle = Yii::app()->name . ' - ' . "推荐记录"; $organID = Yii::app()->user->getOrganID(); //查询语句 $sql = 't.RecomStatus=1 and t.OrganID= ' . $organID; if (!empty($CompanyName)) { //机构名称 $sql .= " and t.CompanyName like '%" . $CompanyName . "%'"; } if (!empty($MobPhone)) { //手机 $sql .= " and t.MobPhone like '%" . $MobPhone . "%'"; } if (!empty($Email)) { //邮箱 $sql .= " and t.Email like '%" . $Email . "%'"; } if (!empty($Month)) { //几月前 $sql .= " and record.RecomTime>(UNIX_TIMESTAMP(NOW())-{$Month}*30*24*60*60)"; } if (!empty($RecomMethod)) { //推荐方式 $sql .= " and record.RecomMethod = '{$RecomMethod}'"; } if (!empty($MemberStatus)) { //会员状态 $sql .= " and record.MemberStatus = " . $MemberStatus; } $criteria = new CDbCriteria(); $criteria->select = "*"; $criteria->with = 'record'; $criteria->condition = $sql; $dataProvider = new CActiveDataProvider('RecommendList', array('criteria' => $criteria, 'pagination' => array('pageSize' => '10'))); $data = $dataProvider->getData(); //无法传值到表单中 暂时用PayStatus字段保存收益 foreach ($data as $key => $value) { if ($value['CompanyType'] == 1) { $value['CompanyType'] = '生产商'; } elseif ($value['CompanyType'] == 2) { $value['CompanyType'] = '经销商'; } else { $value['CompanyType'] = '服务店'; } } $count = $dataProvider->getTotalItemCount(); //count($recmlistes); $this->render('showrecommended', array('dataProvider' => $dataProvider, 'count' => $count)); }
/** * 手机客户端的分页,防止分页重复,与网页显示无关 * @param CActiveDataProvider $dataProvider * */ public function page(CActiveDataProvider &$dataProvider, $more = true) { $total = $dataProvider->getTotalItemCount(); $pageSzie = $dataProvider->getPagination()->getPageSize(); $dataProvider->getPagination()->pageVar = 'page'; $pageCount = ceil($total / $pageSzie); if ($dataProvider->getTotalItemCount() == 0) { $this->send(ERROR_EMPTY, 'data empty', $more); } else { if (isset($_GET['page'])) { if ($pageCount >= $_GET['page']) { $this->send(0, $dataProvider->getData(), $more, array('page' => $pageCount)); } } else { $this->send(ERROR_NONE, $dataProvider->getData(), $more, array('page' => $pageCount)); } } }
/** * Renders the browse view and caluclates required values for the * roller (image roll at the page top). */ public function actionBrowse() { // the browse view requires information on the basket contents $testBasket = Yii::app()->user->getState('basketContents'); if (!isset($testBasket)) { Yii::app()->user->setState('basketContents', array()); } // the user can't access ?r=image/browse without the offset value set if (!isset($_GET['browseOffset'])) { $this->redirect(array('search')); } $currentlyviewedrow = $_GET['browseOffset']; // if someone tries to manually enter an invalid number, negative, it's set to 0 if ($currentlyviewedrow < 0) { $currentlyviewedrow = 0; } // next and prev variables set. $next = $currentlyviewedrow + 1; $prev = $currentlyviewedrow - 1; $rollCriteria = Yii::app()->user->getState('imagesearchcriteria'); $rollCriteria->offset = $currentlyviewedrow - 4; if ($currentlyviewedrow < 5) { $rollCriteria->limit = $currentlyviewedrow + 5; } else { $rollCriteria->limit = 9; } $rollDataProvider = new CActiveDataProvider('Image', array('criteria' => $rollCriteria, 'Pagination' => false)); $totalAmount = $rollDataProvider->getTotalItemCount(); $this->render('browse', array('rollDataProvider' => $rollDataProvider, 'browseOffset' => $currentlyviewedrow, 'next' => $next, 'prev' => $prev, 'totalAmount' => $totalAmount)); }
/** * Generates an array of links for the VCR controls based on the specified dataprovider and * current ID * @param CActiveDataProvider $dataProvider the data provider of the most recent gridview * @param Integer $id the ID of the current record * @return Array array of VCR links and stats */ public static function getVcrLinks(&$dataProvider, $modelId) { $criteria = $dataProvider->criteria; $tableSchema = X2Model::model($dataProvider->modelClass)->getTableSchema(); if ($tableSchema === null) { return false; } // for the first query, find the current ID's row number in the list $criteria->select = 't.id'; // we also need any columns that are being used in the sort foreach (explode(',', $criteria->order) as $token) { // so loop through $criteria->order and extract them $token = preg_replace('/\\s|asc|desc/i', '', $token); if ($token !== '' && $token !== 'id' && $token != 't.id') { if (strpos($token, '.') != 1) { $criteria->select .= ',t.' . $token; } else { $criteria->select .= ',' . $token; } } } // always include "id DESC" in sorting (for order consistency with SmartDataProvider) if (!preg_match('/\\bid\\b/', $criteria->order)) { if (!empty($criteria->order)) { $criteria->order .= ','; } $criteria->order .= 't.id DESC'; } // get search conditions (WHERE, JOIN, ORDER BY, etc) from the criteria $searchConditions = Yii::app()->db->getCommandBuilder()->createFindCommand($tableSchema, $criteria)->getText(); /* * VCR Button Row Number Selection Query * * This complicated block of code defines where a record is in the row * set to determine its position for VCR controls. This relies on SQL * variables and incrementing the variable in each row of the result set * from the subquery. A version of this query in plain MySQL looks like: * SELECT r-1 * FROM ( * SELECT *,@rownum:=@rownum + 1 AS r * FROM ('.$searchConditions.') t1, (SELECT @rownum:=0) r) t2 * WHERE t2.id='.$modelId */ $varPrefix = '@'; //Current prefix is MySQL specific $varName = $varPrefix . 'rownum'; $varText = 'SET ' . $varName . ' = 0'; // Current declaration is MySQL specific Yii::app()->db->createCommand()->setText($varText)->execute(); $subQuery = Yii::app()->db->createCommand()->select('*, (' . $varName . ':=' . $varName . '+1) r')->from('(' . $searchConditions . ') t1')->getText(); $rowNumberQuery = Yii::app()->db->createCommand()->select('(r-1)')->from('(' . $subQuery . ') t2')->where('t2.id=:t2_id'); // $rowNumberQuery = Yii::app()->db->createCommand(' // SELECT r-1 // FROM ( // SELECT *,@rownum:=@rownum + 1 AS r // FROM ('.$searchConditions.') t1, (SELECT @rownum:=0) r) t2 // WHERE t2.id='.$modelId // ); // attach params from $criteria to this query $rowNumberQuery->params = array_merge(array(':t2_id' => $modelId), $criteria->params); $rowNumber = $rowNumberQuery->queryScalar(); if ($rowNumber === false) { // the specified record isn't in this list return false; } else { $criteria->select = '*'; // need to select everything to be sure ORDER BY will work if ($rowNumber == 0) { // if we're on the first row, get 2 items, otherwise get 3 $criteria->offset = 0; $criteria->limit = 2; $vcrIndex = 0; } else { $criteria->offset = $rowNumber - 1; $criteria->limit = 3; $vcrIndex = 1; // index of current record in $vcrModels } $vcrModels = Yii::app()->db->getCommandBuilder()->createFindCommand($tableSchema, $criteria)->queryAll(); $count = $dataProvider->getTotalItemCount(); $vcrData = array(); $vcrData['index'] = $rowNumber + 1; $vcrData['count'] = $dataProvider->getTotalItemCount(); /* if($vcrIndex > 0) // there's a record before the current one $vcrData['prev'] = '<li class="prev">'.CHtml::link('<',array('view/'.$vcrModels[0]['id']),array('title'=>$vcrModels[0]['name'],'class'=>'x2-button')).'</li>'; else $vcrData['prev'] = '<li class="prev">'.CHtml::link('<','javascript:void(0);',array('class'=>'x2-button disabled')).'</li>'; if(count($vcrModels) - 1 > $vcrIndex) // there's a record after the current one $vcrData['next'] = '<li class="next">'.CHtml::link('>', array('view/'.$vcrModels[$vcrIndex+1]['id']), array('title'=>$vcrModels[$vcrIndex+1]['name'],'class'=>'x2-button')).'</li>'; else $vcrData['next'] = '<li class="next">'.CHtml::link('>','javascript:void(0);',array('class'=>'x2-button disabled')).'</li>'; */ if ($vcrIndex > 0 && isset($vcrModels[0])) { // there's a record before the current one $vcrData['prev'] = CHtml::link('<', array('view', 'id' => $vcrModels[0]['id']), array('title' => $vcrModels[0]['name'], 'class' => 'x2-button')); } else { $vcrData['prev'] = CHtml::link('<', 'javascript:void(0);', array('class' => 'x2-button disabled')); } if (count($vcrModels) - 1 > $vcrIndex) { // there's a record after the current one $vcrData['next'] = CHtml::link('>', array('view', 'id' => $vcrModels[$vcrIndex + 1]['id']), array('title' => $vcrModels[$vcrIndex + 1]['name'], 'class' => 'x2-button')); } else { $vcrData['next'] = CHtml::link('>', 'javascript:void(0);', array('class' => 'x2-button disabled')); } return $vcrData; } }
/** * Returns the total number of data items. * When {@link pagination} is set false, this returns the same value as {@link itemCount}. * @param boolean $refresh whether the total number of data items should be re-calculated. * @return integer total number of possible data items. */ public function getTotalItemCount($refresh = false) { /* x2modstart */ if ($this->calculateChecksum && $refresh) { throw new CException('refresh cannot be called if calculcateChecksum is set to true'); } /* x2modend */ return parent::getTotalItemCount($refresh); }
break; case 1: echo '筹资成功'; break; case 2: echo '筹资失败'; break; default: echo '筹资中'; } ?> </td> </tr> <?php } $totalpages = ceil($dataProvider->getTotalItemCount() / 20); ?> <tr><td colspan=9> <div class="text-center"> <ul id="pagination-memerlog" class="pagination-sm"></ul> </div> </td> <script type="text/javascript"> $('#pagination-memerlog').twbsPagination({ totalPages: <?php echo $totalpages; ?> , visiblePages: <?php echo $totalpages >= 5 ? 5 : $totalpages; ?>
/** * Retrieves a list of all models. * @return CActiveDataProvider. */ public function getAll() { // Warning: Please modify the following code to remove attributes that // should not be searched. $criteria = new CDbCriteria(); $dp = new CActiveDataProvider(get_class($this), array('criteria' => $criteria, 'sort' => array('defaultOrder' => 'date ASC'))); $dp->setPagination(array('pageSize' => $dp->getTotalItemCount())); return $dp; }
public function actionJqgriddata() { $rowsCount = $_GET['rows'] == 0 ? 10 : $_GET['rows']; $page = $_GET['page'] == 0 ? 1 : $_GET['page']; $dataProvider = new CActiveDataProvider('WotPlayer', array('pagination' => array('pageSize' => $rowsCount, 'currentPage' => $page - 1))); $responce->page = $page; $responce->records = $dataProvider->getTotalItemCount(); $responce->total = ceil($responce->records / $rowsCount); $rows = $dataProvider->getData(); foreach ($rows as $i => $row) { $responce->rows[$i]['id'] = $row->getPrimaryKey(); $responce->rows[$i]['cell'] = array($row->player_id, $row->player_name); } echo json_encode($responce); }
/** * Retrieves a list of models based on the current search/filter conditions. * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. */ public function search() { // Warning: Please modify the following code to remove attributes that // should not be searched. $criteria = new CDbCriteria(); $criteria->together = true; $criteria->with = array('usuario'); $criteria->compare('itens_id', $this->itens_id); $criteria->compare('itens_titulo', $this->itens_titulo, true); $criteria->compare('itens_descricao', $this->itens_descricao, true); $criteria->compare('itens_excluido', $this->itens_excluido); $criteria->compare('itens_dt_criacao', $this->itens_dt_criacao, true); $criteria->compare('itens_dt_modificacao', $this->itens_dt_modificacao, true); $criteria->compare('itens_destaque', $this->itens_destaque, true); $criteria->compare('itens_atividade', $this->itens_atividade); $criteria->compare('itens_cnae', $this->itens_cnae); $criteria->compare('itens_uf', $this->itens_uf, true); $criteria->compare('itens_cidade', $this->itens_cidade, true); //$criteria->compare('itens_preco',$this->itens_preco,true); //$criteria->compare('itens_receita_anual',$this->itens_receita_anual,true); //$criteria->compare('itens_ebitda',$this->itens_ebitda,true); //$criteria->compare('itens_resultado_operacional',$this->itens_resultado_operacional,true); $criteria->compare('itens_fluxo_de_caixa', $this->itens_fluxo_de_caixa, true); $criteria->compare('itens_destaque_detalhes', $this->itens_destaque_detalhes, true); $criteria->compare('itens_localizacao', $this->itens_localizacao, true); $criteria->compare('itens_fundacao', $this->itens_fundacao, true); $criteria->compare('itens_tipo', $this->itens_tipo, true); $criteria->compare('itens_funcionarios', $this->itens_funcionarios, true); $criteria->compare('itens_area_total', $this->itens_area_total, true); $criteria->compare('itens_area_total_locavel', $this->itens_area_total_locavel, true); $criteria->compare('itens_unidades', $this->itens_unidades, true); $criteria->compare('itens_incluso_na_venda', $this->itens_incluso_na_venda, true); $criteria->compare('itens_curiosidades', $this->itens_curiosidades, true); $criteria->compare('itens_financas', $this->itens_financas, true); $criteria->compare('itens_receita_total', $this->itens_receita_total, true); $tipo_usuario = Yii::app()->user->getState(Yii::app()->params['user_session_usuario_tipo']); $tipo_usuario = $tipo_usuario[Yii::app()->params['user_session_usuario_tipo']]; $id_usuario = Yii::app()->user->getState(Yii::app()->params['user_session_usuario_id']); $id_usuario = $id_usuario[Yii::app()->params['user_session_usuario_id']]; /* se for meus negócios */ if (Yii::app()->controller->id == 'meusnegocios') { $criteria->compare('usuario.usuario_id', $id_usuario); } else { $criteria->compare('usuario_id', $this->usuario_id); } $this->pg_size = Yii::app()->params['listPerPage']; /* se vier do front página negócios a venda */ if (Yii::app()->controller->id == 'negociosavenda') { $criteria->compare('itens_excluido', 'S'); /* Por default carrega somente os destaques */ if (!isset($_GET['buscar']) && !isset($_POST['buscar'])) { $criteria->compare('itens_destaque', 'S'); $this->pg_size = Yii::app()->params['listPerPageDestaque']; //$criteria->order=new CDbExpression('RAND()'); } $this->compararPrecos($criteria); } //$criteria->addBetweenCondition('itens_receita_anual', 200, 400, 'AND'); $sort = new CSort(); $sort->defaultOrder = !isset($_GET['buscar']) && !isset($_POST['buscar']) && Yii::app()->controller->id != 'meusnegocios' && Yii::app()->controller->id != 'negocios' ? 'RANDOM()' : array('itens_id' => true); /* retorna o total de registros */ $mActive = new CActiveDataProvider($this, array('criteria' => $criteria, 'sort' => $sort)); $this->totReg = !isset($_GET['buscar']) && !isset($_POST['buscar']) && Yii::app()->controller->id != 'meusnegocios' && Yii::app()->controller->id != 'negocios' ? $this->pg_size : $mActive->getTotalItemCount(); return new CActiveDataProvider($this, array('criteria' => $criteria, 'sort' => $sort, 'pagination' => array('pageSize' => $this->pg_size), 'totalItemCount' => $this->totReg)); }
/** * This is the default 'index' action that is invoked * when an action is not explicitly requested by users. */ public function actionIndex($selector = 'all') { // renders the view file 'protected/views/site/index.php' // using the default layout 'protected/views/layouts/main.php' $criteria= new CDbCriteria; $criteria->alias = 'course'; $criteria->order = 'rating DESC'; if ($selector !== 'all'){ if ($selector == 'junior'){ $criteria->addInCondition('level', array('intern','strong junior','junior')); } else { $criteria->condition = 'level=:level'; $criteria->params = array(':level'=>$selector); } } $dataProvider = new CActiveDataProvider('Course', array( 'criteria' => $criteria, 'Pagination'=>false, )); $total = $dataProvider->getTotalItemCount(); $count1 =round($total/2); $count2 = $total - $count1; $this->render('index', array( 'dataProvider' => $dataProvider, 'count1' => $count1, 'count2' => $count2, )); }