MCPcopy Create free account
hub / github.com/error311/FileRise / migrateSubtree

Method migrateSubtree

src/FileRise/Domain/FolderCrypto.php:325–363  ·  view source on GitHub ↗

* Move encryption markers for an entire subtree: old/... => new/... * Used on folder rename/move. */

(string $source, string $target)

Source from the content-addressed store, hash-verified

323 * Used on folder rename/move.
324 */
325 public static function migrateSubtree(string $source, string $target): array
326 {
327 $src = self::normalizeKey($source);
328 $dst = self::normalizeKey($target);
329
330 if ($src === $dst) {
331 return ['changed' => false, 'moved' => 0];
332 }
333
334 $doc = self::load();
335 $folders = is_array($doc['folders'] ?? null) ? $doc['folders'] : [];
336 if (!$folders) {
337 return ['changed' => false, 'moved' => 0];
338 }
339
340 $changed = false;
341 $moved = 0;
342 $next = $folders;
343
344 foreach ($folders as $k => $row) {
345 if ($k === $src || strpos($k, $src . '/') === 0) {
346 unset($next[$k]);
347 $suffix = substr($k, strlen($src)); // '' or '/sub/...'
348 $newKey = $dst . $suffix;
349 $next[$newKey] = $row;
350 $changed = true;
351 $moved++;
352 }
353 }
354
355 if (!$changed) {
356 return ['changed' => false, 'moved' => 0];
357 }
358
359 $doc2 = ['v' => self::SCHEMA_VERSION, 'folders' => $next];
360 $ok = self::write($doc2);
361
362 return ['changed' => $ok, 'moved' => $moved];
363 }
364
365 public static function removeSubtree(string $folder): array
366 {

Callers

nothing calls this directly

Calls 3

normalizeKeyMethod · 0.95
loadMethod · 0.95
writeMethod · 0.95

Tested by

no test coverage detected