/** * Write registry key to database. * * @param integer $userid * @param string $registrykey * @param string $string * @param string $type * @param mixed $value * @return boolean */ public function RegistryWrite($userid, $registrykey, $name, $type, $value) { // value = default key value? if ($userid != 0) { $result = $this->RegistryRead(0, $registrykey, $name, $type); if ($result) { if ($result == $value) { // equals default value, delete own key return $this->RegistryDelete($userid, $registrykey, $name, $type); } } } // convert value to string switch ($type) { case 'd': case 'dat': case 'date': case 't': case 'tim': case 'time': if ($value instanceof \DateTime) { // convert DateTime to string $value = $value->format("c"); } else { if (is_int($value)) { // nothing to do } else { if (is_string($value)) { // nothing to do } } } break; default: } // not default key, insert / update if ($this->isModeRedis()) { //return $this->redis->set($this->redis_prefix . (string)$userid . $this->redis_key_name_delimiter . $registrykey . $this->redis_key_name_delimiter . $name, $value); return $this->redis->hSet($this->redis_prefix . (string) $userid, $registrykey . $this->redis_key_name_delimiter . $name . $this->redis_key_name_delimiter . $type, $value); } else { if ($this->isModeDoctrine()) { $entity = $this->registry->findOneBy(array('userid' => $userid, 'registrykey' => $registrykey, 'name' => $name)); if (!$entity) { $entity = new RegKey(); $entity->setUserid($userid); $entity->setRegistryKey($registrykey); $entity->setName($name); } $entity->setType($type); $entity->setValue($value); $this->em->persist($entity); $this->em->flush(); return !is_null($entity); } } }