Example #1
0
 /**
  * Read a set of registry keys and return them as array.
  * 
  * @param integer $userid
  * @param string  $path
  * @return array
  */
 public function getRegistryItems($userid, $path)
 {
     $entities = array();
     if ($this->isModeRedis()) {
         // redis load
         $array = $this->redis->hGetAll($this->redis_prefix . (string) $userid);
         // filter the result array
         foreach (array_keys($array) as $key) {
             if (preg_match('/^' . $path . '/', $key)) {
                 // $key = key; key:name:type
                 // $value = $array[$key]; value
                 // explode key by redis_key_name_delimiter to get key:name:type
                 $s = explode($this->redis_key_name_delimiter, $key);
                 if (count($s) != 3) {
                     throw new \Exception('Redis key format is not correct! (key' . $this->redis_key_name_delimiter . 'name' . $this->redis_key_name_delimiter . 'name)');
                 }
                 $entity = new RegKey();
                 $entity->loadByValues(0, $userid, $s[0], $s[1], $s[2], $array[$key]);
                 $entities[] = $entity;
             }
         }
         // cleanup
         unset($array);
     } else {
         if ($this->isModeDoctrine()) {
             // doctrine load
             $entities = $this->registry->loadByPath($userid, $path);
         }
     }
     return $entities;
 }