Chris@0: connection = $connection; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function get($module, $uid = NULL, $name = NULL) { Chris@0: $query = $this->connection->select('users_data', 'ud') Chris@0: ->fields('ud') Chris@0: ->condition('module', $module); Chris@0: if (isset($uid)) { Chris@0: $query->condition('uid', $uid); Chris@0: } Chris@0: if (isset($name)) { Chris@0: $query->condition('name', $name); Chris@0: } Chris@0: $result = $query->execute(); Chris@0: // If $module, $uid, and $name were passed, return the value. Chris@0: if (isset($name) && isset($uid)) { Chris@0: $result = $result->fetchAllAssoc('uid'); Chris@0: if (isset($result[$uid])) { Chris@0: return $result[$uid]->serialized ? unserialize($result[$uid]->value) : $result[$uid]->value; Chris@0: } Chris@0: return NULL; Chris@0: } Chris@14: $return = []; Chris@0: // If $module and $uid were passed, return data keyed by name. Chris@14: if (isset($uid)) { Chris@0: foreach ($result as $record) { Chris@0: $return[$record->name] = ($record->serialized ? unserialize($record->value) : $record->value); Chris@0: } Chris@0: return $return; Chris@0: } Chris@0: // If $module and $name were passed, return data keyed by uid. Chris@14: if (isset($name)) { Chris@0: foreach ($result as $record) { Chris@0: $return[$record->uid] = ($record->serialized ? unserialize($record->value) : $record->value); Chris@0: } Chris@0: return $return; Chris@0: } Chris@0: // If only $module was passed, return data keyed by uid and name. Chris@14: foreach ($result as $record) { Chris@14: $return[$record->uid][$record->name] = ($record->serialized ? unserialize($record->value) : $record->value); Chris@0: } Chris@14: return $return; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function set($module, $uid, $name, $value) { Chris@0: $serialized = (int) !is_scalar($value); Chris@0: if ($serialized) { Chris@0: $value = serialize($value); Chris@0: } Chris@0: $this->connection->merge('users_data') Chris@0: ->keys([ Chris@0: 'uid' => $uid, Chris@0: 'module' => $module, Chris@0: 'name' => $name, Chris@0: ]) Chris@0: ->fields([ Chris@0: 'value' => $value, Chris@0: 'serialized' => $serialized, Chris@0: ]) Chris@0: ->execute(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function delete($module = NULL, $uid = NULL, $name = NULL) { Chris@0: $query = $this->connection->delete('users_data'); Chris@0: // Cast scalars to array so we can consistently use an IN condition. Chris@0: if (isset($module)) { Chris@0: $query->condition('module', (array) $module, 'IN'); Chris@0: } Chris@0: if (isset($uid)) { Chris@0: $query->condition('uid', (array) $uid, 'IN'); Chris@0: } Chris@0: if (isset($name)) { Chris@0: $query->condition('name', (array) $name, 'IN'); Chris@0: } Chris@0: $query->execute(); Chris@0: } Chris@0: Chris@0: }