require_once "./source/includes/data.php";
$mmhclass->templ->page_title = "{$mmhclass->info->config['site_name']} » Upload";
if ($mmhclass->funcs->is_null($mmhclass->input->get_vars['url']) == true) {
for ($i = 0; $i <= 15; $i++) {
if ($mmhclass->input->file_vars['userfile']['error'][$i] != 4 && $mmhclass->funcs->is_null($mmhclass->input->file_vars['userfile']['name'][$i]) == false) {
$total_file_uploads++;
if ($total_file_uploads <= 15) {
$mmhclass->templ->html .= (($total_file_uploads > 1) ? "<br /><hr />" : NULL);
$extension = $mmhclass->funcs->file_extension($mmhclass->input->file_vars['userfile']['name'][$i]);
$filename = ($mmhclass->funcs->random_string(20).".{$extension}");
$thumbnail = $mmhclass->funcs->thumbnail_name($filename);
$filetitle = strip_tags((strlen($mmhclass->input->file_vars['userfile']['name'][$i]) > 20) ? (substr($mmhclass->input->file_vars['userfile']['name'][$i], 0, 20)."...") : $mmhclass->input->file_vars['userfile']['name'][$i]);
if (in_array($extension, $mmhclass->info->config['file_extensions']) == false) {
$mmhclass->templ->html .= $mmhclass->templ->message("The file <b>{$mmhclass->input->file_vars['userfile']['name'][$i]}</b> extension <b>.{$extension}</b> is not allowed.", false);
} elseif ($mmhclass->input->file_vars['userfile']['size'][$i] > $mmhclass->info->config['max_filesize']) {
$mmhclass->templ->html .= $mmhclass->templ->message("The file <b>{$mmhclass->input->file_vars['userfile']['name'][$i]}</b> exceeds the maximum allowed filesize of <b>".$mmhclass->funcs->format_filesize($mmhclass->info->config['max_filesize'])."</b> per file.", false);
} elseif ($mmhclass->input->file_vars['userfile']['error'][$i] != 0) {
$file_errors = array(
1 => "<b>PHP Engine Error</b>: The file <b>{$mmhclass->input->file_vars['userfile']['name'][$i]}</b> exceeds the <a href=\"http://us2.php.net/manual/en/ini.core.php#ini.upload-max-filesize\">upload_max_filesize</a> directive in php.ini.",
2 => "<b>PHP Engine Error</b>: The file <b>{$mmhclass->input->file_vars['userfile']['name'][$i]}</b> exceeds the <b><i>MAX_FILE_SIZE</i></b> directive that was specified in the HTML form.", // <- Never will be outputted as an error but still an option
3 => "<b>PHP Engine Error</b>: The file <b>{$mmhclass->input->file_vars['userfile']['name'][$i]}</b> was only partially uploaded.",
6 => "<b>PHP Engine Error</b>: Missing a temporary folder.",
7 => "<b>PHP Engine Error</b>: Failed to write file <b>{$mmhclass->input->file_vars['userfile']['name'][$i]}</b> to disk.",
8 => "<b>PHP Engine Error</b>: File <b>{$mmhclass->input->file_vars['userfile']['name'][$i]}</b> upload stopped by extension."
);
$mmhclass->templ->html .= $mmhclass->templ->error($file_errors[$mmhclass->input->file_vars['userfile']['error'][$i]], false);
} elseif (is_file($mmhclass->info->root_path.$mmhclass->info->config['upload_path'].$filename) == true) {
$mmhclass->templ->html .= $mmhclass->templ->error("The filename <b>{$filename}</b> is already in existence on this server.", false);
} elseif (move_uploaded_file($mmhclass->input->file_vars['userfile']['tmp_name'][$i], $mmhclass->info->root_path.$mmhclass->info->config['upload_path'].$filename) == false) {
$mmhclass->templ->html .= $mmhclass->templ->error("The file <b>{$mmhclass->input->file_vars['userfile']['name'][$i]}</b> failed to upload because of an unknown problem.", false);
} else {
chmod($mmhclass->info->root_path.$mmhclass->info->config['upload_path'].$filename, 0644);
$mmhclass->db->query("INSERT INTO `mmh_file_storage` (`filename`, `is_private`, `gallery_id`, `file_title`) VALUES ('{$filename}', '{$mmhclass->input->post_vars['private_upload']}', '{$mmhclass->info->user_data['user_id']}', '{$filetitle}'); ");
$mmhclass->db->query("INSERT INTO `mmh_file_logs` (`filename`, `filesize`, `ip_address`, `user_agent`, `time_uploaded`, `gallery_id`, `is_private`, `original_filename`) VALUES ('{$filename}', '{$mmhclass->input->file_vars['userfile']['size'][$i]}', '{$mmhclass->input->server_vars['remote_addr']}', '{$mmhclass->input->server_vars['http_user_agent']}', '".time()."', '{$mmhclass->info->user_data['user_id']}', '{$mmhclass->input->post_vars['private_upload']}', '".strip_tags($mmhclass->input->file_vars['userfile']['name'][$i])."'); ");
$mmhclass->db->query("INSERT INTO `mmh_file_ratings` (`filename`, `total_rating`, `total_votes`, `voted_by`) VALUES ('{$filename}', '0', '0', '');");
$mmhclass->funcs->create_thumbnail($filename);
$mmhclass->templ->html .= $mmhclass->templ->file_results($filename);
}
}
}
}
} else {
for ($i = 0; $i <= 15; $i++) {
if (strtolower(ini_get("allow_url_fopen")) == "on" || $mmhclass->funcs->is_null(ini_get("allow_url_fopen")) == true) {
$mmhclass->templ->error("<b>PHP Engine Error:</b> The <b>allow_url_fopen</b> directive must be enabled in php.ini in order to use URL upload.", true);
} else {
if ($mmhclass->funcs->is_null($mmhclass->input->post_vars['userfile'][$i]) == false) {
$total_file_uploads++;
if ($total_file_uploads <= 15) {
$mmhclass->templ->html .= (($total_file_uploads > 1) ? "<br /><hr>" : NULL);
$mmhclass->info->file_data = array(
"http" => $mmhclass->input->post_vars['userfile'][$i],
"name" => array_shift(explode("?", basename($mmhclass->input->post_vars['userfile'][$i]))),
"size" => strlen(implode("", file($mmhclass->input->post_vars['userfile'][$i]))),
);
$extension = $mmhclass->funcs->file_extension($mmhclass->info->file_data['name']);
$filename = ($mmhclass->funcs->random_string(20).".{$extension}");
$thumbnail = $mmhclass->funcs->thumbnail_name($filename);
$filetitle = strip_tags((strlen($mmhclass->info->file_data['name']) > 20) ? (substr($mmhclass->info->file_data['name'], 0, 20)."...") : $mmhclass->info->file_data['name']);
if (preg_match("/(https|http|ftp):\/\/[^\"\s']+/", $mmhclass->info->file_data['http']) == false || preg_match("/\.([a-zA-Z0-9])/", $mmhclass->info->file_data['name']) == false) {
$mmhclass->templ->html .= $mmhclass->templ->error("The file <b>{$mmhclass->info->file_data['name']}</b> contains an invalid URL.", false);
} elseif ($mmhclass->info->file_data['size'] == false) {
$mmhclass->templ->html .= $mmhclass->templ->error("The file <b>{$mmhclass->info->file_data['name']}</b> could not be opened. If you can't open it file in your web browser, then you can't open it here.", false);
} elseif (in_array($extension, $mmhclass->info->config['file_extensions']) == false) {
$mmhclass->templ->html .= $mmhclass->templ->message("The file <b>{$mmhclass->info->file_data['name']}</b> extension <b>.{$extension}</b> is not allowed.", false);
} elseif ($mmhclass->info->file_data['size'] > $mmhclass->info->config['max_filesize']) {
$mmhclass->templ->html .= $mmhclass->templ->message("The file <b>{$mmhclass->info->file_data['name']}</b> exceeds the maximum allowed filesize of <b>".$mmhclass->funcs->format_filesize($mmhclass->info->config['max_filesize'])."</b> per file.", false);
} elseif (is_file($mmhclass->info->root_path.$mmhclass->info->config['upload_path'].$filename) == true) {
$mmhclass->templ->html .= $mmhclass->templ->error("The filename <b>{$filename}</b> is already in existence on this server.", false);
} elseif (copy($mmhclass->info->file_data['http'], $mmhclass->info->root_path.$mmhclass->info->config['upload_path'].$filename) == false) {
$mmhclass->templ->html .= $mmhclass->templ->error("The file <b>{$mmhclass->info->file_data['name']}</b> failed to upload because of an unknown problem.", false);
} else {
chmod($mmhclass->info->root_path.$mmhclass->info->config['upload_path'].$filename, 0644);
$mmhclass->db->query("INSERT INTO `mmh_file_storage` (`filename`, `is_private`, `gallery_id`, `file_title`) VALUES ('{$filename}', '{$mmhclass->input->post_vars['private_upload']}', '{$mmhclass->info->user_data['user_id']}', '{$filetitle}'); ");
$mmhclass->db->query("INSERT INTO `mmh_file_logs` (`filename`, `filesize`, `ip_address`, `user_agent`, `time_uploaded`, `gallery_id`, `is_private`, `original_filename`) VALUES ('{$filename}', '{$mmhclass->info->file_data['size']}', '{$mmhclass->input->server_vars['remote_addr']}', '{$mmhclass->input->server_vars['http_user_agent']}', '".time()."', '{$mmhclass->info->user_data['user_id']}', '{$mmhclass->input->post_vars['private_upload']}', '".strip_tags($mmhclass->info->file_data['name'])."'); ");
$mmhclass->db->query("INSERT INTO `mmh_file_ratings` (`filename`, `total_rating`, `total_votes`, `voted_by`) VALUES ('{$filename}', '0', '0', '');");
$mmhclass->funcs->create_thumbnail($filename);
$mmhclass->templ->html .= $mmhclass->templ->file_results($filename);
unset($mmhclass->info->file_data);
}
}
}
}
}
}
if ($total_file_uploads < 1) {
$mmhclass->templ->error("Please go back and select at least one file to upload.", true);
}
$mmhclass->templ->output();
?>