コード例 #1
0
 /**
  * Populates the given DatabaseObject with dummy data
  *
  * @param DatabaseObject $obj
  * @return void
  */
 protected function populate(DatabaseObject &$obj)
 {
     $meta = $obj->meta();
     $key = $meta->getKey();
     $fields = $meta->getColumnMap();
     foreach ($fields as $property => $field) {
         if ($field == $key && isset($obj->{$property})) {
             continue;
         }
         $def = $meta->getColumnDefinition($field);
         $type = strtolower(Params::generic($def, 'native_type'));
         switch ($type) {
             case 'int':
             case 'integer':
             case 'float':
             case 'currency':
             case 'decimal':
             case 'double':
             case 'real':
             case 'tinyint':
             case 'short':
             case 'long':
                 $obj->{$property} = mt_rand(0, 100);
                 break;
             case 'date':
             case 'datetime':
             case 'timestamp':
                 // Fuzz two weeks around now
                 $window = 1209600;
                 // 14 days * 24 hours * 60 minutes * 60 seconds
                 $time = time() - $window / 2 + mt_rand(0, $window);
                 if ($type == 'date') {
                     $lt = localtime($time, true);
                     $time = mktime(0, 0, 0, $lt['tm_mday'], $lt['tm_mon'] + 1, $lt['tm_year'] + 1900);
                     $lt = null;
                 }
                 $obj->{$property} = $time;
                 break;
             case 'time':
                 // range is +- 838:59:59, but since this populate thing
                 // isn't really all it could be anyhow, let's just do
                 // positive values
                 $obj->{$property} = mt_rand(1, 839 * 60 * 60 - 1);
                 break;
             case 'var_string':
                 $obj->{$property} = 'dummy string content ' . uniqid();
                 break;
             default:
                 $obj->{$property} = uniqid();
                 break;
         }
     }
 }
コード例 #2
0
 /**
  * Builds the needed SQL fragment to update or insert fields.
  *
  * @param bindByName boolean whether to generate named bind parameters, true by
  * default.
  * @param glue mixed if set to null, than an array of columns is returned,
  * otherwise glue is used to implode the array and a string is returned.
  * The default is to implode on ', '.
  *
  * @return string like "col1=:?, col2=:?" or "col1=:col1, col2=:col2"
  */
 public function getFieldSetSQL($cols = null, $bindByName = true, $glue = ', ')
 {
     if (!isset($cols)) {
         $cols = $this->getAutomaticColumns();
     }
     $set = array();
     foreach ($cols as $column) {
         if ($this->isManualColumn($column)) {
             continue;
         }
         if ($bindByName) {
             $value = ":{$column}";
         } else {
             $value = '?';
         }
         $def = $this->getColumnDefinition($column);
         switch (strtolower(Params::generic($def, 'native_type'))) {
             case 'time':
                 $value = "SEC_TO_TIME({$value})";
                 break;
             case 'date':
             case 'datetime':
             case 'timestamp':
                 $value = "FROM_UNIXTIME({$value})";
                 break;
         }
         array_push($set, "`{$column}`={$value}");
     }
     if ($glue) {
         return implode($glue, $set);
     } else {
         return $set;
     }
 }
コード例 #3
0
 public function testGeneric()
 {
     $generic = array('existingkey' => 23);
     $this->assertTrue(23 == Params::generic($generic, 'existingkey'), 'finds key');
     $this->assertTrue('default' == Params::generic($generic, 'badkey', 'default'), 'gets default');
 }