[],
'success' => [],
'warning' => [],
'danger' => []
];
try {
$data = Storage::get($id);
}
catch(Exception $ex) {
$alerts['danger'][] = '❌ Error reading database';
}
if (empty($data)) {
$data = [
'img' => '',
'name' => '',
'url' => '',
'desc' => ''
];
}
$gallery = [];
if (file_exists("uppies/$id/gallery")) {
foreach(scandir("uppies/$id/gallery") as $g) {
if (in_array($g, ['.', '..', '.thumbs', '.DS_Store']))
continue;
$gallery[] = $g;
}
}
if ($_SERVER["REQUEST_METHOD"] === 'POST' && isset($_GET['upload'])) {
$upload = htmlspecialchars($_GET['upload']);
http_response_code(202); # 202 is abused for errors, because uikit requires 2xx responses
$targetDir = "uppies/${id}/${upload}/";
$file = $_FILES["files"];
$fileName = basename($file["name"][0]);
// Create the uploads directory if it doesn't exist
if (!is_dir($targetDir)) {
mkdir($targetDir, 0775, true);
}
// check if the file is actually an image
if (getimagesize($file["tmp_name"][0]) === false) {
exit("❌ Error: File is not a valid image.");
}
// allow only specific image extensions
if (!in_array(strtolower(pathinfo($fileName, PATHINFO_EXTENSION)), ["psd", "tiff", "jpg", "jpeg", "png", "gif"])) {
exit("❌ Error: Only JPG, JPEG, PNG and GIF files allowed.");
}
// limit file size
if ($file["size"][0] > 200 * 1024 * 1024) {
exit("❌ Error: File too large (max. 200 MB)");
}
// Move uploaded file to the target directory
if (move_uploaded_file($file["tmp_name"][0], $targetDir . $fileName)) {
$data['img'] = $targetDir . $fileName;
try {
Storage::set($id, $data);
}
catch(Exception $ex) {
exit("❌ Database error.");
}
http_response_code(200);
exit(($upload === 'avatar'? $targetDir : '') . $fileName);
}
else {
exit("❌ Write Error.");
}
exit("❌ General error.");
}
else if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['desc']) && isset($_POST['name']) && isset($_POST['url'])) {
$data['name'] = htmlspecialchars(trim($_POST['name']));
$data['url'] = htmlspecialchars(trim($_POST['url']));
$data['desc'] = htmlspecialchars(trim($_POST['desc']));
if (!empty($data['name']) && !empty($data['desc']) && !empty($data['url'])) {
try {
Storage::set($id, $data);
Telegram::report("EF Conbook Artist Credits Submission\nname: ". $data['name'] ."\nurl: ". $data['url'] ."\ntext:\n". $data['desc']);
$alerts['success'][] = '✅ Entry saved';
}
catch(Exception $ex) {
$alerts['danger'][] = $ex;
}
}
}
?>
Artist Credits
Conbook Art Submission Form
A place for you to submit art to the Eurofurence Conbook and provide crediting information.
Deadline: End of July!
Please make sure your images are large enough for DIN A4 printing. Don't worry about cropping or aspect ratio, we will adjust them into the layout ourselves.
Personal Link
Bookmark or save it to edit your entry at a later time. Do not share it, unless with people you want to enable editing your information:
Your Credits Entry
Upload Your Profile Image PNG, JPG or GIF min. 500 x 500 @ 300 dpi
SELECT FILE
Your Contribution
Drop Your Contribution Here PNG, PSD, TIFF, JPG or GIF highest possible resolution, ideally 300 dpi