widget/reply: formatting syntax for _italics_
[minimedit.git] / upload.inc.php
index aa245588d69aae98dfd0e2a8180ded4de0b02362..10881a24a0f9317216339e0b88dc65232afc0207 100644 (file)
@@ -1,16 +1,37 @@
 <?php
-function userupload($input, $target)
+function userupload($input, $target = NULL, $filename = NULL)
 {
        switch ($input['error']) {
        case UPLOAD_ERR_OK:
                break;
+       case UPLOAD_ERR_INI_SIZE:
+       case UPLOAD_ERR_FORM_SIZE:
+               throw new Exception('bestand te groot');
+               break;
        case UPLOAD_ERR_NO_FILE:
                return; # current
        default:
-               throw new Exception("Afbeelding niet goed ontvangen.");
+               throw new Exception('bestand niet goed ontvangen: '.$input['error']);
+       }
+
+       if (isset($target)) {
+               if (!file_exists($target) and !@mkdir($target, 0777, TRUE)) {
+                       throw new Exception("bestand kon niet geplaatst worden in $target");
+               }
+               $target .= '/';
+       }
+       if (isset($filename)) {
+               $target .= $filename;
+       }
+       else {
+               $target .= $input['name'];
+       }
+
+       if (file_exists($target)) {
+               throw new Exception("bestandsnaam al aanwezig op $target");
        }
        if (!@move_uploaded_file($input['tmp_name'], $target)) {
-               throw new Exception("Fout bij opslaan.");
+               throw new Exception("bestand kon niet worden opgeslagen in $target");
        }
 
        foreach (@glob('thumb/*/') as $thumbres) {
@@ -19,3 +40,21 @@ function userupload($input, $target)
        }
        return $target;
 }
+
+function messagehtml($input)
+{
+       # convert user textarea post to formatted html
+       global $User;
+       if (empty($input)) {
+               return;
+       }
+       if ($User->admin and preg_match('/\A<[a-z][^>]*>/', $input)) {
+               return $input;  # allow html input as is if privileged
+       }
+       $html = preg_replace(
+               ["/\r\n?/", "/  +\n/", "/\n/",      '/\b_(\w+)_\b/'],
+               ["\n",      "<br />",  "</p>\n<p>", '<em>$1</em>'  ],
+               htmlspecialchars($input)
+       );
+       return "<p>$html</p>";
+}