editing works basically
[phorkie.git] / www / edit.php
index d86df41f2b45ccd2577a71f6d42637156a2a7f49..3bcec6e797525a5c995920835ca8424a64e7cce6 100644 (file)
@@ -8,6 +8,48 @@ require_once 'www-header.php';
 $repo = new Repository();
 $repo->loadFromRequest();
 
+if (isset($_POST['files'])) {
+    $vc = $repo->getVc();
+    $repo->setDescription($_POST['description']);
+
+    $bChanged = false;
+    foreach ($_POST['files'] as $num => $arFile) {
+        if (!isset($arFile['original_name'])
+            || !$repo->hasFile($arFile['original_name'])
+        ) {
+            //FIXME: Show error message
+            continue;
+        }
+        //FIXME: fix file names from .. and ./
+        if ($arFile['original_name'] != $arFile['name']) {
+            //FIXME: what to do with overwrites?
+            $vc->getCommand('mv')
+                ->addArgument($arFile['original_name'])
+                ->addArgument($arFile['name'])
+                ->execute();
+            $bChanged = true;
+        }
+        $file = $repo->getFileByName($arFile['name']);
+        if ($file->getContent() != $arFile['content']) {
+            file_put_contents($file->getPath(), $arFile['content']);
+            $command = $vc->getCommand('add')
+                ->addArgument($file->getFilename())
+                ->execute();
+            $bChanged = true;
+        }
+    }
+
+    if ($bChanged) {
+        $vc->getCommand('commit')
+            ->setOption('message', '')
+            ->setOption('allow-empty-message')
+            ->setOption('author', 'Anonymous <anonymous@phorkie>')
+            ->execute();
+    }
+
+    redirect($repo->getLink('display'));
+}
+
 render(
     'edit',
     array(