requireAdminLogin()
->setPageTitle(WT_I18N::translate('Media'));
require_once WT_ROOT.'includes/functions/functions_print_lists.php';
require_once WT_ROOT.'includes/functions/functions_print_facts.php';
require_once WT_ROOT.'includes/functions/functions_edit.php';
require_once WT_ROOT.'includes/functions/functions_import.php';
require_once WT_ROOT.'includes/functions/functions_mediadb.php';
// editing must be enabled
if (!$ALLOW_EDIT_GEDCOM) {
$controller->pageHeader();
echo "";
echo WT_I18N::translate('Media management features are not available when online editing is disabled.');
echo "
";
exit;
}
/**
* This functions checks if an existing directory is physically writeable
* The standard PHP function only checks for the R/O attribute and doesn't
* detect authorisation by ACL.
*/
function dir_is_writable($dir) {
$err_write = false;
$handle = @fopen(filename_decode($dir."x.y"), "w+");
if ($handle) {
$i = fclose($handle);
$err_write = true;
@unlink(filename_decode($dir."x.y"));
}
return($err_write);
}
/**
* Moves a file from one location to another, creating destination directory if needed
* used by the routines that move files between the standard media directory and the protected media directory
*/
function move_file($src, $dest) {
global $MEDIA_FIREWALL_ROOTDIR, $MEDIA_DIRECTORY;
// sometimes thumbnail files are set to something like "images/media.gif", this ensures we do not move them
// check to make sure the src file is in the standard or protected media directories
if (preg_match("'^($MEDIA_FIREWALL_ROOTDIR)?$MEDIA_DIRECTORY'", $src)==0) {
return false;
}
// check to make sure the dest file is in the standard or protected media directories
if (preg_match("'^($MEDIA_FIREWALL_ROOTDIR)?$MEDIA_DIRECTORY'", $dest)==0) {
return false;
}
$destdir = dirname($dest);
if (!is_dir($destdir)) {
@mkdirs($destdir);
if (!is_dir($destdir)) {
echo '
'; echo WT_I18N::translate('Uploading media files is not allowed because the media folder is not writable.'); echo '
'; } else { show_mediaUpload_form(WT_SCRIPT_NAME, $showthumb); // We have the green light to upload media, echo the form } echo ""; ob_start(); // Save output until action table has been printed if ($action == "deletedir") { echo "| ";
// Check if media directory and thumbs directory are empty
$clean = false;
$files = array();
$thumbfiles = array();
$files_fw = array();
$thumbfiles_fw = array();
$resdir = false;
$resthumb = false;
// Media directory check
if (@is_dir(filename_decode($directory))) {
$handle = opendir(filename_decode($directory));
$files = array();
while (false !== ($file = readdir($handle))) {
if (!in_array($file, $BADMEDIA)) $files[] = $file;
}
} else {
echo " ".$directory." ".WT_I18N::translate('Directory does not exist.')." ";
AddToLog('Directory does not exist.'.$directory, 'media');
}
// Thumbs directory check
if (@is_dir(filename_decode($thumbdir))) {
$handle = opendir(filename_decode($thumbdir));
$thumbfiles = array();
while (false !== ($file = readdir($handle))) {
if (!in_array($file, $BADMEDIA)) $thumbfiles[] = $file;
}
closedir($handle);
}
// Media Firewall Media directory check
if (@is_dir(filename_decode($directory_fw))) {
$handle = opendir(filename_decode($directory_fw));
$files_fw = array();
while (false !== ($file = readdir($handle))) {
if (!in_array($file, $BADMEDIA)) $files_fw[] = $file;
}
}
// Media Firewall Thumbs directory check
if (@is_dir(filename_decode($thumbdir_fw))) {
$handle = opendir(filename_decode($thumbdir_fw));
$thumbfiles_fw = array();
while (false !== ($file = readdir($handle))) {
if (!in_array($file, $BADMEDIA)) $thumbfiles_fw[] = $file;
}
closedir($handle);
}
if (!isset($error)) {
if (count($files) > 0 ) {
echo "".$directory." -- ".WT_I18N::translate('Directory not empty.')." ";
AddToLog($directory." -- ".WT_I18N::translate('Directory not empty.'), 'media');
$clean = false;
}
if (count($thumbfiles) > 0) {
echo "".$thumbdir." -- ".WT_I18N::translate('Directory not empty.')." ";
AddToLog($thumbdir." -- ".WT_I18N::translate('Directory not empty.'), 'media');
$clean = false;
}
if (count($files_fw) > 0 ) {
echo "".$directory_fw." -- ".WT_I18N::translate('Directory not empty.')." ";
AddToLog($directory_fw." -- ".WT_I18N::translate('Directory not empty.'), 'media');
$clean = false;
}
if (count($thumbfiles_fw) > 0) {
echo "".$thumbdir_fw." -- ".WT_I18N::translate('Directory not empty.')." ";
AddToLog($thumbdir_fw." -- ".WT_I18N::translate('Directory not empty.'), 'media');
$clean = false;
}
else $clean = true;
}
// Only start deleting if all directories are empty
if ($clean) {
$resdir = true;
$resthumb = true;
$resdir_fw = true;
$resthumb_fw = true;
if (file_exists(filename_decode($directory."index.php"))) @unlink(filename_decode($directory."index.php"));
if (@is_dir(filename_decode($directory))) $resdir = @rmdir(filename_decode(substr($directory, 0, -1)));
if (file_exists(filename_decode($thumbdir."index.php"))) @unlink(filename_decode($thumbdir."index.php"));
if (@is_dir(filename_decode($thumbdir))) $resthumb = @rmdir(filename_decode(substr($thumbdir, 0, -1)));
if (file_exists(filename_decode($directory_fw."index.php"))) @unlink(filename_decode($directory_fw."index.php"));
if (@is_dir(filename_decode($directory_fw))) $resdir_fw = @rmdir(filename_decode(substr($directory_fw, 0, -1)));
if (file_exists(filename_decode($thumbdir_fw."index.php"))) @unlink(filename_decode($thumbdir_fw."index.php"));
if (@is_dir(filename_decode($thumbdir_fw))) $resthumb_fw = @rmdir(filename_decode(substr($thumbdir_fw, 0, -1)));
if ($resdir && $resthumb && $resdir_fw && $resthumb_fw) {
echo WT_I18N::translate('Media and thumbnail directories successfully removed.');
AddToLog($directory." -- ".WT_I18N::translate('Media and thumbnail directories successfully removed.'), 'media');
} else {
if (!$resdir) {
echo "".WT_I18N::translate('Media directory not removed.')." ";
AddToLog($directory." -- ".WT_I18N::translate('Media directory not removed.'), 'media');
} else if (!$resdir_fw) {
echo "".WT_I18N::translate('Media directory not removed.')." ";
AddToLog($directory_fw." -- ".WT_I18N::translate('Media directory not removed.'), 'media');
} else {
echo WT_I18N::translate('Media directory successfully removed.');
AddToLog($directory." -- ".WT_I18N::translate('Media directory successfully removed.'), 'media');
}
if (!$resthumb) {
echo "".WT_I18N::translate('Thumbnail directory not removed.')." ";
AddToLog($thumbdir." -- ".WT_I18N::translate('Thumbnail directory not removed.'), 'media');
} else if (!$resthumb_fw) {
echo "".WT_I18N::translate('Thumbnail directory not removed.')." ";
AddToLog($thumbdir_fw." -- ".WT_I18N::translate('Thumbnail directory not removed.'), 'media');
} else {
echo WT_I18N::translate('Thumbnail directory successfully removed.');
AddToLog($thumbdir." -- ".WT_I18N::translate('Thumbnail directory successfully removed.'), 'media');
}
}
}
// Back up to this directory's parent
$i = strrpos(substr($directory, 0, -1), '/');
$directory = trim(substr($directory, 0, $i), '/').'/';
$action="filter";
echo " |