From: Robin Appelman Date: Wed, 16 Mar 2011 17:18:45 +0000 (+0100) Subject: add the option to use LIKE instead of = when getting data from OCS X-Git-Tag: v3.0~267^2~558^2~170 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=49a78333fb4d9b5473ab82aca28d500b80739bde;p=nextcloud-server.git add the option to use LIKE instead of = when getting data from OCS also fix the returned keys --- diff --git a/lib/ocs.php b/lib/ocs.php index 08b4b79ae91..2b1e706462a 100644 --- a/lib/ocs.php +++ b/lib/ocs.php @@ -508,27 +508,31 @@ class OC_OCS { * @param string $user * @param string $app * @param string $key + * @param bool $like use LIKE instead of = when comparing keys * @return array */ - public static function getData($user,$app="",$key="") { + public static function getData($user,$app="",$key="",$like=false) { global $CONFIG_DBTABLEPREFIX; $user=OC_DB::escape($user); $key=OC_DB::escape($key); $app=OC_DB::escape($app); - $key="$user::$key";//ugly hack for the sake of keeping database scheme compatibiliy + $key="$user::$key";//ugly hack for the sake of keeping database scheme compatibiliy, needs to be replaced with a seperate user field the next time we break db compatibiliy + $compareFunction=($like)?'LIKE':'='; + if($app){ if (!trim($key)) { $result = OC_DB::select("select app, `key`,value,`timestamp` from {$CONFIG_DBTABLEPREFIX}privatedata where app='$app' order by `timestamp` desc"); } else { - $result = OC_DB::select("select app, `key`,value,`timestamp` from {$CONFIG_DBTABLEPREFIX}privatedata where app='$app' and `key` ='$key' order by `timestamp` desc"); + $result = OC_DB::select("select app, `key`,value,`timestamp` from {$CONFIG_DBTABLEPREFIX}privatedata where app='$app' and `key` $compareFunction '$key' order by `timestamp` desc"); } }else{ if (!trim($key)) { $result = OC_DB::select("select app, `key`,value,`timestamp` from {$CONFIG_DBTABLEPREFIX}privatedata order by `timestamp` desc"); } else { - $result = OC_DB::select("select app, `key`,value,`timestamp` from {$CONFIG_DBTABLEPREFIX}privatedata where `key` ='$key' order by `timestamp` desc"); + $result = OC_DB::select("select app, `key`,value,`timestamp` from {$CONFIG_DBTABLEPREFIX}privatedata where `key` $compareFunction '$key' order by `timestamp` desc"); } } + $result=self::trimKeys($result,$user); return $result; } @@ -587,6 +591,15 @@ class OC_OCS { return true; } } + + //trim username prefixes from $array + private static function trimKeys($array,$user){ + $length=strlen("$user::"); + foreach($array as &$item){ + $item['key']=substr($item['key'],$length); + } + return $array; + } } ?>