/**
  * {@inheritDoc}
  * @see IteratorAggregate::getIterator()
  */
 public function getIterator()
 {
     $builder = new CDbCriteriaBuilder();
     $builder->setDefaultCriteria($this->_criteria);
     $builder->setLimit($this->_number_of_records_per_page);
     return array($builder);
 }
 /**
  * {@inheritDoc}
  * @see IExportPolicy::getCount()
  */
 public function getCount(CDbCriteriaBuilder $builder)
 {
     return $this->_record->count($builder->getCriteria());
 }
 /**
  * {@inheritDoc}
  * @see IteratorAggregate::getIterator()
  */
 public function getIterator()
 {
     /* @var $schema CDbSchema */
     $schema = $this->_record->getDbConnection()->getSchema();
     $sqlField = $schema->quoteColumnName($this->_dateFieldName);
     $sql = "SELECT " . $sqlField;
     $sql .= " FROM " . $schema->quoteTableName($this->_record->tableName());
     $sql .= " ORDER BY " . $sqlField;
     $asc = " ASC LIMIT 1;";
     $desc = " DESC LIMIT 1;";
     $command = $schema->getCommandBuilder()->createSqlCommand($sql . $asc);
     $startdate = $command->queryScalar();
     if (($currentDate = DateTime::createFromFormat('Y-m-d', $startdate)) === false) {
         throw new CException(Yii::t('export.DateDayExportPolicy', 'There is no records in table {name}.', array('{name}' => $this->_record->tableName())));
     }
     $command = $schema->getCommandBuilder()->createSqlCommand($sql . $desc);
     $enddate = $command->queryScalar();
     $interval = DateInterval::createFromDateString("+1 day");
     // add +1 day to export until current day
     $builders = array();
     for ($currentDate = DateTime::createFromFormat('Y-m-d', $startdate); strcmp($currentDate->format('Y-m-d'), $enddate) <= 0; $currentDate->add($interval)) {
         $builder = new CDbCriteriaBuilder();
         $builder->setDefaultCriteria($this->_criteria);
         $builder->setLimit($this->_number_of_records_per_page);
         $builder->addCompare($this->_dateFieldName, $currentDate->format('Y-m-d'));
         $builders[] = $builder;
     }
     return $builders;
 }