| 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 | | } |