'Toegewezen aan',
'subject' => 'Onderwerp',
];
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('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("bestand kon niet worden opgeslagen in $target");
}
foreach (@glob('thumb/*/') as $thumbres) {
# attempt to remove old derivations
@unlink($thumbres . '/' . $target);
}
return $target;
}
function messagehtml($input)
{
# convert user textarea post to formatted html
global $User;
if (empty($input)) {
return;
}
if ($User and $User->admin and preg_match('/\A<[a-z][^>]*>/', $input)) {
return $input; # allow html input as is if privileged
}
$markup = [
'{<((?:\w+:|/).+?)>}' => '<$1>', # unescape link entities
'{<(?:https?://)?([^>\s|]+)>}' => '<$1 $1>', # unnamed link
'{<([^>\s|]+)[\s|]([^>]+)>}' => '$2', # hyperlink
"/\r\n?/" => "\n", # unix newlines
"/ +\n/" => "
", # trailing spaces for hard line break
'{^(/data/.*\.jpe?g)\z}m' => '', # image reference
"/^[-*] (.*)$\n?/m" => '
$1
\n", # paragraph "{^(
$1
', # monospace
];
return preg_replace(array_keys($markup), array_values($markup), htmlspecialchars($input));
}
function createcomment($input, &$Issue = NULL)
{
# insert user message as database issue/reply
global $User, $Db, $Page, $journalcol;
$reply = [];
if (isset($input['reply']) and $body = $input['reply']) {
$reply['raw'] = $body;
$reply['message'] = messagehtml($body);
}
if ($_FILES and !empty($_FILES['image'])) {
$target = 'data/upload';
if (!file_exists($target)) {
throw new Exception("er is geen uploadmap aanwezig op $target");
}
$target .= '/' . $User->login;
if ($result = userupload($_FILES['image'], $target)) {
$reply['raw'] = $reply['raw'] ?? '';
$reply['raw'] .= "/$result";
$reply['message'] = $reply['message'] ?? '';
if (preg_match('(^image/)', $_FILES['image']['type'])) {
$reply['message'] .= sprintf('