' . PREFERENCE_USE_JS_WARNING . '';
if (!isset($serendipity['eyecandy']) || serendipity_db_bool($serendipity['eyecandy'])) {
} else {
return true;
}
include(S9Y_INCLUDE_PATH . "include/functions_images_crop.inc.php");
$media['is_imgedit'] = true;
$media['css_imgedit'] = serendipity_getTemplateFile('admin/imgedit.css');
if (isset($serendipity['GET']['fid'])) {
$file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']);
if (!is_array($file) || !serendipity_checkPermission('adminImagesDelete') || (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid'])) {
return;
}
$fullfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $file['name'] . '.' . $file['extension'];
$httpfile = $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $file['path'] . $file['name'] . '.' . $file['extension'];
$img = new imgedit($fullfile, $httpfile);
// Set the filenames used for the cropping areas. Width/Height are automagically detected. Orientation is either horizontal or vertical.
$img->setArea('imgedit_area.gif', 'h');
$img->setArea('imgedit_varea.gif', 'v');
// Let the IMGEditor do its magic. It will parse its results straightly into a template variable array.
$img->main();
$serendipity['smarty']->assign('imgedit', $img->imgedit_smarty);
serendipity_smarty_fetch('IMGEDIT', $img->output_template);
}
break;
case 'sync':
if (!serendipity_checkPermission('adminImagesSync')) {
break;
}
if (function_exists('set_time_limit')) {
@set_time_limit(0);
}
@ignore_user_abort();
echo '' . SYNCING . '
';
flush();
$i = serendipity_syncThumbs();
printf(SYNC_DONE, $i);
echo '' . RESIZING . '
';
flush();
$i = serendipity_generateThumbs();
printf(RESIZE_DONE, $i);
break;
case 'DoDelete':
if (!serendipity_checkFormToken() || !serendipity_checkPermission('adminImagesDelete')) {
break;
}
$file = $serendipity['GET']['fname'];
serendipity_deleteImage($serendipity['GET']['fid']);
break;
case 'delete':
$file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']);
if (!is_array($file) || !serendipity_checkPermission('adminImagesDelete') || (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid'])) {
return;
}
if (!isset($serendipity['adminFile'])) {
$serendipity['adminFile'] = 'serendipity_admin.php';
}
$abortLoc = $serendipity['serendipityHTTPPath'] . $serendipity['adminFile'] . '?serendipity[adminModule]=images';
$newLoc = $abortLoc . '&serendipity[adminAction]=DoDelete&serendipity[fid]=' . (int)$serendipity['GET']['fid'] . '&' . serendipity_setFormToken('url');
printf('' . ABOUT_TO_DELETE_FILE . '
', $file['name'] .'.'. $file['extension']);
?>
$serendipity['GET']['fid']));
serendipity_showPropertyForm($new_media);
break;
case 'add':
if (!serendipity_checkFormToken() || !serendipity_checkPermission('adminImagesAdd')) {
return;
}
if ($serendipity['POST']['adminSubAction'] == 'properties') {
$properties = serendipity_parsePropertyForm();
$image_id = $properties['image_id'];
$created_thumbnail = true;
?>
';
$realname = serendipity_imageAppend($tfile, $target, $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$tindex]);
}
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
$options = array();
serendipity_plugin_api::hook_event('backend_http_request', $options, 'image');
serendipity_request_start();
$req = &new HTTP_Request($serendipity['POST']['imageurl'], $options);
// Try to get the URL
if (PEAR::isError($req->sendRequest()) || $req->getResponseCode() != '200') {
printf(REMOTE_FILE_NOT_FOUND, $serendipity['POST']['imageurl']);
} else {
// Fetch file
$fContent = $req->getResponseBody();
if ($serendipity['POST']['imageimporttype'] == 'hotlink') {
$tempfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . '/hotlink_' . time();
$fp = fopen($tempfile, 'w');
fwrite($fp, $fContent);
fclose($fp);
$image_id = @serendipity_insertHotlinkedImageInDatabase($tfile, $serendipity['POST']['imageurl'], $authorid, null, $tempfile);
printf(HOTLINK_DONE. '
', $serendipity['POST']['imageurl'], $tfile);
serendipity_plugin_api::hook_event('backend_image_addHotlink', $tempfile);
} else {
$fp = fopen($target, 'w');
fwrite($fp, $fContent);
fclose($fp);
printf(FILE_FETCHED . '
', $serendipity['POST']['imageurl'], $tfile);
if (serendipity_checkMediaSize($target)) {
$thumbs = array(array(
'thumbSize' => $serendipity['thumbSize'],
'thumb' => $serendipity['thumbSuffix']
));
serendipity_plugin_api::hook_event('backend_media_makethumb', $thumbs);
foreach($thumbs as $thumb) {
// Create thumbnail
if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory'][$tindex], $thumb['thumbSize'], $thumb['thumb']) ) {
echo THUMB_CREATED_DONE . '
';
}
}
// Insert into database
$image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'][$tindex], $authorid, null, $realname);
serendipity_plugin_api::hook_event('backend_image_add', $target);
$new_media[] = array(
'image_id' => $image_id,
'target' => $target,
'created_thumbnail' => $created_thumbnail
);
}
}
serendipity_request_end();
}
} else {
if (!is_array($serendipity['POST']['target_filename'])) {
break;
}
foreach($serendipity['POST']['target_filename'] AS $idx => $target_filename) {
$uploadfile = &$_FILES['serendipity']['name']['userfile'][$idx];
$uploadtmp = &$_FILES['serendipity']['tmp_name']['userfile'][$idx];
if (!empty($target_filename)) {
$tfile = $target_filename;
} elseif (!empty($uploadfile)) {
$tfile = $uploadfile;
} else {
// skip empty array
continue;
}
$tfile = serendipity_uploadSecure(basename($tfile));
if (serendipity_isActiveFile($tfile)) {
printf(ERROR_FILE_FORBIDDEN, $tfile);
echo '
';
continue;
}
$serendipity['POST']['target_directory'][$idx] = serendipity_uploadSecure($serendipity['POST']['target_directory'][$idx], true, true);
if (!serendipity_checkDirUpload($serendipity['POST']['target_directory'][$idx])) {
echo PERM_DENIED;
continue;
}
$target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$idx] . $tfile;
$realname = $tfile;
if (file_exists($target)) {
echo '(' . $target . ') ' . ERROR_FILE_EXISTS_ALREADY . '
';
$realname = serendipity_imageAppend($tfile, $target, $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$idx]);
}
// Accept file
if (is_uploaded_file($uploadtmp) && serendipity_checkMediaSize($uploadtmp) && move_uploaded_file($uploadtmp, $target)) {
printf(FILE_UPLOADED . '
', $uploadfile, $target);
@umask(0000);
@chmod($target, 0664);
$thumbs = array(array(
'thumbSize' => $serendipity['thumbSize'],
'thumb' => $serendipity['thumbSuffix']
));
serendipity_plugin_api::hook_event('backend_media_makethumb', $thumbs);
foreach($thumbs as $thumb) {
// Create thumbnail
if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory'][$idx], $thumb['thumbSize'], $thumb['thumb']) ) {
echo THUMB_CREATED_DONE . '
';
}
}
// Insert into database
$image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'][$idx], $authorid, null, $realname);
serendipity_plugin_api::hook_event('backend_image_add', $target, $created_thumbnail);
$new_media[] = array(
'image_id' => $image_id,
'target' => $target,
'created_thumbnail' => $created_thumbnail
);
} else {
echo ERROR_UNKNOWN_NOUPLOAD . '
';
}
}
}
if (isset($_REQUEST['go_properties'])) {
serendipity_showPropertyForm($new_media);
} else {
$hidden = array(
'author' => $serendipity['serendipityUser'],
'authorid' => $serendipity['authorid']
);
foreach($new_media AS $nm) {
serendipity_insertMediaProperty('base_hidden', '', $nm['image_id'], $hidden);
}
}
break;
case 'directoryDoDelete':
if (!serendipity_checkFormToken() || !serendipity_checkPermission('adminImagesDirectories')) {
return;
}
$new_dir = serendipity_uploadSecure($serendipity['GET']['dir'], true);
if (is_dir($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $new_dir)) {
if (!is_writable($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $new_dir)) {
printf(DIRECTORY_WRITE_ERROR, $new_dir);
} else {
// Directory exists and is writable. Now dive within subdirectories and kill 'em all.
serendipity_killPath($serendipity['serendipityPath'] . $serendipity['uploadPath'], $new_dir, (isset($serendipity['POST']['nuke']) ? true : false));
}
} else {
printf(ERROR_NO_DIRECTORY, $new_dir);
}
break;
case 'directoryEdit':
if (!serendipity_checkPermission('adminImagesDirectories')) {
return;
}
$use_dir = serendipity_uploadSecure($serendipity['GET']['dir']);
$checkpath = array(
array(
'relpath' => $use_dir
)
);
if (!serendipity_directoryACL($checkpath, 'write')) {
return;
}
if (!empty($serendipity['POST']['save'])) {
$newDir = serendipity_uploadSecure($serendipity['POST']['newDir']);
$oldDir = serendipity_uploadSecure($serendipity['POST']['oldDir']);
if ($oldDir != $newDir) {
serendipity_moveMediaDirectory($oldDir, $newDir);
$use_dir = $newDir;
}
serendipity_ACLGrant(0, 'directory', 'read', $serendipity['POST']['read_authors'], $use_dir);
serendipity_ACLGrant(0, 'directory', 'write', $serendipity['POST']['write_authors'], $use_dir);
echo '' . sprintf(SETTINGS_SAVED_AT, serendipity_strftime('%H:%M:%S')) . '
';
}
$groups = serendipity_getAllGroups();
$read_groups = serendipity_ACLGet(0, 'directory', 'read', $use_dir);
$write_groups = serendipity_ACLGet(0, 'directory', 'write', $use_dir);
if (!empty($serendipity['POST']['update_children'])) {
$dir_list = serendipity_traversePath($serendipity['serendipityPath'] . $serendipity['uploadPath'], $use_dir, true, NULL, 1, NULL, 'write', NULL);
foreach($dir_list AS $f => $dir) {
// Apply parent ACL to children.
serendipity_ACLGrant(0, 'directory', 'read', $serendipity['POST']['read_authors'], $dir['relpath']);
serendipity_ACLGrant(0, 'directory', 'write', $serendipity['POST']['write_authors'], $dir['relpath']);
}
}
?>
$imgsel_val) {
$form_hidden .= ' ' . "\n";
}
}
serendipity_smarty_init();
$mediaFiles = array(
'token' => serendipity_setFormToken(),
'form_hidden' => $form_hidden,
'folders' => $folders,
'only_path' => $serendipity['GET']['only_path'],
'max_file_size' => $serendipity['maxFileSize'],
'maxImgHeight' => $serendipity['maxImgHeight'],
'maxImgWidth' => $serendipity['maxImgWidth'],
);
$serendipity['smarty']->assign('media', $mediaFiles);
$serendipity['smarty']->display(serendipity_getTemplateFile('admin/media_upload.tpl', 'serendipityPath'));
break;
case 'rotateCW':
$file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']);
if (!is_array($file) || !serendipity_checkPermission('adminImagesDelete') || (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid'])) {
return;
}
if (empty($serendipity['adminFile_redirect'])) {
$serendipity['adminFile_redirect'] = htmlspecialchars($_SERVER['HTTP_REFERER']);
}
if (serendipity_rotateImg($serendipity['GET']['fid'], -90)) {
?>
',
$file['path'] . $file['name'] .'.'. $file['extension'],
(int)$serendipity['GET']['width'],
(int)$serendipity['GET']['height']
);
echo serendipity_scaleImg($serendipity['GET']['fid'], $serendipity['GET']['width'], $serendipity['GET']['height']) . '
';
echo DONE . '
';
// Forward user to overview (we don't want the user's back button to rename things again)
?>