Example #1
0
 /**
  * Transforms the string received from the database to the appropriate type.
  * @param string $string String from the database. May not be null.
  * @return mixed Type appropriate for this field.
  */
 public function deserializeValue($string)
 {
     switch ($this->type) {
         case self::TYPE_INT:
         case self::TYPE_PRIMARY_KEY:
             return (int) $string;
         case self::TYPE_STRING:
         case self::TYPE_STRING_LOWERCASE:
             return $string;
         case self::TYPE_DATE:
             if ($string === "0000-00-00 00:00:00") {
                 // Legacy "soft" nulls in database
                 return null;
             }
             return DateTime::createFromFormat("Y-m-d H:i:s", $string);
         case self::TYPE_BOOLEAN:
             return (bool) $string;
         case self::TYPE_JSON:
             return JsonHelper::stringToArray($string);
         case self::TYPE_URI:
             return new Uri($string);
     }
 }
Example #2
0
 /**
  * Sets the extra data of the user.
  * @param mixed $extra_data The extra data, either empty, as an array of as
  * a json string.
  * @throws InvalidArgumentException If the extra data is not a string, array or null.
  */
 public function setExtraData($extra_data)
 {
     if ($extra_data === null) {
         $this->extraData = [];
         return;
     }
     if (is_string($extra_data)) {
         if (empty($extra_data)) {
             $this->extraData = [];
             return;
         }
         $this->extraData = JsonHelper::stringToArray($extra_data);
         return;
     }
     if (is_array($extra_data)) {
         $this->extraData = $extra_data;
         return;
     }
     throw new InvalidArgumentException("Expected string, array or null, got " . $extra_data);
 }