Changeset 4677

Show
Ignore:
Timestamp:
07/13/08 00:08:58 (5 months ago)
Author:
jwage
Message:

fixes #1198

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/1.0/lib/Doctrine/Data/Import.php

    r4379 r4677  
    323323        } 
    324324    } 
    325  
    326     /** 
    327      * Import dummy data in to the loaded models. 
    328      * 
    329      * @param string $num  
    330      * @return void 
    331      */ 
    332     public function doImportDummyData($num = 3) 
    333     { 
    334         $models = Doctrine::getLoadedModels(); 
    335         $specifiedModels = $this->getModels(); 
    336  
    337         foreach ($models as $name) { 
    338             if ( ! empty($specifiedModels) && !in_array($name, $specifiedModels)) { 
    339                 continue; 
    340             } 
    341  
    342             for ($i = 0; $i < $num; $i++) { 
    343                 $obj = new $name(); 
    344  
    345                 $this->populateDummyRecord($obj); 
    346  
    347                 $obj->save(); 
    348  
    349                 $ids[get_class($obj)][] = $obj->identifier(); 
    350             } 
    351         } 
    352     } 
    353  
    354     /** 
    355      * Populate the passed record with a set of dummy data 
    356      * 
    357      * @param Doctrine_Record $record  
    358      * @return Doctrine_Record $record 
    359      */ 
    360     public function populateDummyRecord(Doctrine_Record $record) 
    361     { 
    362         $lorem = explode(' ', "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem  
    363                                Ipsum has been the industry's standard dummy text ever since the 1500s, when an  
    364                                unknown printer took a galley of type and scrambled it to make a type specimen book.  
    365                                It has survived not only five centuries, but also the leap into electronic  
    366                                typesetting, remaining essentially unchanged. It was popularised in the 1960s with  
    367                                the release of Letraset sheets containing Lorem Ipsum passages, and more recently  
    368                                with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."); 
    369  
    370         $columns = array_keys($record->toArray()); 
    371         $pks = $record->getTable()->getIdentifier(); 
    372  
    373         if ( ! is_array($pks)) { 
    374           $pks = array($pks); 
    375         } 
    376  
    377         foreach ($columns as $column) { 
    378             if ( ! in_array($column, $pks)) { 
    379                 if ($relation = $this->isRelation($record, $column)) { 
    380                     $alias = $relation['alias']; 
    381                     $relationObj = $record->$alias; 
    382  
    383                     $this->populateDummyRecord($relationObj); 
    384                 } else { 
    385                     $definition = $record->getTable()->getDefinitionOf($column); 
    386  
    387                     switch($definition['type']) 
    388                     { 
    389                         case 'string';      
    390                             shuffle($lorem); 
    391  
    392                             $record->$column = substr(implode(' ', $lorem), 0, $definition['length']); 
    393                         break; 
    394  
    395                         case 'integer': 
    396                             $record->$column = rand(); 
    397                         break; 
    398  
    399                         case 'boolean': 
    400                             $record->$column = true; 
    401                         break; 
    402  
    403                         case 'float': 
    404                             $record->$column = number_format(rand($definition['length'], $definition['length']), 2, '.', null); 
    405                         break; 
    406  
    407                         case 'array': 
    408                             $record->$column = array('test' => 'test'); 
    409                         break; 
    410  
    411                         case 'object': 
    412                             $record->$column = new stdObject(); 
    413                         break; 
    414  
    415                         case 'blob': 
    416                             $record->$column = ''; 
    417                         break; 
    418  
    419                         case 'clob': 
    420                             $record->$column = ''; 
    421                         break; 
    422  
    423                         case 'timestamp': 
    424                             $record->$column = date('Y-m-d h:i:s', time()); 
    425                         break; 
    426  
    427                         case 'time': 
    428                             $record->$column = date('h:i:s', time()); 
    429                         break; 
    430  
    431                         case 'date': 
    432                             $record->$column = date('Y-m-d', time()); 
    433                         break; 
    434  
    435                         case 'enum': 
    436                             $record->$column = 'test'; 
    437                         break; 
    438  
    439                         case 'gzip': 
    440                             $record->$column = 'test'; 
    441                         break; 
    442                     } 
    443                 } 
    444             } 
    445         } 
    446  
    447         return $record; 
    448     } 
    449325}