public function actionIndex() { $count = LimeSurveyLocal::model()->count(); $step = 0; while ($step * self::STEP_SIZE < $count) { $criteria = new CDbCriteria(); $criteria->limit = self::STEP_SIZE; $criteria->offset = self::STEP_SIZE * $step; $this->processSurveys(LimeSurveyLocal::model()->findAll($criteria)); $step++; } $count = LimeSurveyRemote::model()->count(); $step = 0; while ($step * self::STEP_SIZE < $count) { $criteria = new CDbCriteria(); $criteria->limit = self::STEP_SIZE; $criteria->offset = self::STEP_SIZE * $step; $this->processSurveys(LimeSurveyRemote::model()->findAll($criteria)); $step++; } }
/** * Retrieves a list of models based on the current search/filter conditions. * * Typical usecase: * - Initialize the model fields with values from filter form. * - Execute this method to get CActiveDataProvider instance which will filter * models according to data in model fields. * - Pass data provider to CGridView, CListView or any similar widget. * * @return CActiveDataProvider the data provider that can return the models * based on the search/filter conditions. */ public function search() { // @todo Please modify the following code to remove attributes that should not be searched. $criteria = new CDbCriteria(); $criteria->join = "INNER JOIN " . LimeSurveyLanguagesettingLocal::model()->tableName() . " t2 ON t2.surveyls_survey_id = t.sid"; return new MultiLocatedSurveysDataProvider(array(LimeSurveyLocal::model(), LimeSurveyRemote::model()), array('criteria' => $criteria, 'pagination' => array('pageSize' => 20))); }
</td> <td> <select id="location"> <option data-href="<?php echo $this->createUrl("/user/view", array('id' => $model->id, 'type' => LimeSurvey::LOCATION_LOCAL)); ?> " value="<?php echo LimeSurvey::LOCATION_LOCAL; ?> " <?php echo $curType == LimeSurvey::LOCATION_LOCAL ? 'selected="selected"' : ""; ?> > <?php echo LimeSurveyLocal::model()->getAttributeLabel(LimeSurvey::LOCATION_LOCAL); ?> </option> <option data-href="<?php echo $this->createUrl("/user/view", array('id' => $model->id, 'type' => LimeSurvey::LOCATION_REMOTE)); ?> " value="<?php echo LimeSurvey::LOCATION_REMOTE; ?> " <?php echo $curType == LimeSurvey::LOCATION_REMOTE ? 'selected="selected"' : ""; ?> > <?php echo LimeSurveyRemote::model()->getAttributeLabel(LimeSurvey::LOCATION_REMOTE);
public function actionNonActiveIndex() { if (!Yii::app()->user->checkAccess('survey.nonActiveIndex')) { throw new Http403Exception(); } $dataProvider = LimeSurveyLocal::model()->search(); $criteria = new CDbCriteria(); $scopes = LimeSurveyLocal::model()->scopes(); $criteria->addCondition($scopes['nonActive']['condition']); if (!Yii::app()->user->checkAccess('survey.index')) { $surveyIdsByLocation = array(); foreach (Yii::app()->user->userModel->surveyUsers as $relation) { if (!isset($surveyIdsByLocation[$relation->surveyLocation])) { $surveyIdsByLocation[$relation->surveyLocation] = array(); } $surveyIdsByLocation[$relation->surveyLocation][] = $relation->surveyId; } $condition = array(); foreach ($surveyIdsByLocation as $location => $surveyIds) { if (!empty($surveyIds)) { $condition[] = "(t.sid in (" . implode(',', $surveyIds) . ") AND :className = '{$location}')"; } } if (!empty($condition)) { $criteria->addCondition(implode(" OR ", $condition)); } else { $criteria->addCondition("FALSE"); } } $dataProvider->setCriteria($criteria); $this->render("nonActiveIndex", array('simplePage' => SimplePage::model()->findByAttributes(array('url' => '/survey/nonActiveIndex')), 'dataProvider' => $dataProvider)); }