+ if (!isset($colconf['filename'])) {
+ continue; # exceptional storage
+ }
+
+ if (isset($colconf['values'])) {
+ if (!file_exists($colconf['filename'])) {
+ continue;
+ #TODO: drop key
+ }
+ $tags = [];
+ foreach (glob($colconf['filename'] . '/*') as $tag) {
+ $tagname = pathinfo($tag, PATHINFO_BASENAME);
+ $target = "$tag/{$user['name']}";
+ $val = file_exists($target);
+ $tags[$tagname] = ['value' => $val];
+ if (empty($User['admin'])) {
+ continue; # forbidden
+ }
+ if (!is_writable($tag)) {
+ continue; # locked tag directory
+ }
+ if ($val and !is_writable($target)) {
+ continue; # existing file locked
+ }
+ $tags[$tagname]['target'] = $target;
+ }
+ }
+