MSV FM

dot.antimicrobial@66.96.161.157: ~ $
Path : /hermes/sb_web/web/web/web/b2432/glovault.njhealey.com/
File Upload :
Current < : /hermes/sb_web/web/web/web/b2432/glovault.njhealey.com/folders.php

<?php
define ( 'FOLDERS_PHP', 1 );
require_once 'includes/commons.inc.php';
$tpl_folders = new Template ( TPL_DIR .  '/tpl_folders.php' );
$tpl_error = new Template ( TPL_DIR .  '/tpl_error.php' );

// User directory and URL
$user_root = $UPL['SETTINGS']['userfiles_dir'] . $UPL['USER']['id'] . '/';
$user_url  = $UPL['SETTINGS']['userfiles_url'] . $UPL['USER']['id'] . '/';

// Check user's folder
if ( !is_dir ( $user_root ) )
{
	$tpl_message->set ( 'message', parse ( $lang_folders['folder_no_exists'], '{username}', $UPL['USER']['name'] ) );
	$tpl_uploader->setr ( 'content', $tpl_message );
	exit ( $tpl_uploader->display ( ) );
}

// get user folders
$user_contents = get_contents ( $user_root );
$user_files    =& $user_contents['files'];
$user_folders  =& $user_contents['dirs'];
$user_folders_count = count ( $user_folders );


for ( $i = 0; $i < $user_folders_count; $i++ )
{
	$user_folders[$i]['description'] = is_file ( $user_root . $user_folders[$i]['path'] . '/.description' ) ? implode ( '', file ( $user_root . $user_folders[$i]['path'] . '/.description' ) ) : '';
	$user_folders[$i]['is_public'] = is_file ( $user_root . $user_folders[$i]['path'] . '/.public' );
	//$user_folders[$i]['is_gallery'] = is_file ( $user_root . $user_folders[$i]['path'] . '/.gallery' );
	$user_folders[$i]['is_selected'] = false;
	$user_folders[$i]['folder_url'] = 'myfiles.php?folder=' . path_encode ( $user_folders[$i]['path'] );
	$user_folders[$i]['edit_url'] 	= 'folders.php?action=edit&amp;folder=' . path_encode ( $user_folders[$i]['path'] );
	$user_folders[$i]['path'] = path_encode ( $user_folders[$i]['path'] );
	$user_folders[$i]['size'] = get_size ( $user_folders[$i]['size'], 'B', 1 );
}

// main folder stats
$mf_size = 0;
$mf_files =& $user_contents['files']['<MAIN_FOLDER>'];
for ( $i = 0; $i < count ( $mf_files ); $i++ ) $mf_size += $mf_files[$i]['size'];
$main_folder = array
(
	'folder_url'	=> 'myfiles.php',
	'edit_url'	=> 'folders.php?action=edit',
	'files'		=> count ( $user_contents['files']['<MAIN_FOLDER>'] ),
	'size'		=> get_size ( $mf_size, 'B', 1 )
);

// to template
$tpl_folders->set ( 'action', $action );
$tpl_folders->set ( 'user_folders', $user_folders );

// wut doing?
switch ( $action )
{
	case 'setpublic':
	{
		$public = gpc ( 'public', 'G', '' );

		for ( $i = 0; $i < $user_folders_count; $i++ )
		{
			if ( $public == 'yes' )
			{
				@fclose ( fopen ( $user_root . path_decode ( $user_folders[$i]['path'] ) . '/.public', 'w' ) );
			}
			elseif ( $public == 'no' )
			{
				@unlink ( $user_root . path_decode ( $user_folders[$i]['path'] ) . '/.public' );
			}
		}
		clear_contents_cache ( $user_root );

		go_to ( 'folders.php' );
	}
	break;

	case 'edit':
	{
		if ( $task == 'edit' )
		{
			// get folder info
			$folder_path = path_decode ( gpc ( 'folder_path', 'P', '' ) );
			$folder_name = gpc ( 'folder_name', 'P', '' );
			$folder_delete = (bool)gpc ( 'folder_delete', 'P', 0 );
			$folder_public = (bool)gpc ( 'folder_public', 'P', 0 );
			$folder_description = trim ( gpc ( 'folder_description', 'P', '' ) );

			// check it
			if ( strstr ( $folder_path, '../' ) || strstr ( $folder_path, './' ) || !is_dir ( $user_root . '/' . $folder_path ) )
			{
				exit ( SECURITY_ERROR );
			}

			// delete folder
			if ( $folder_delete )
			{
				// delete folder
				if ( $folder_path != '' &&  is_dir ( $user_root . '/' . $folder_path ) )
				{
					delete_dir ( $user_root . '/' . $folder_path );

					clear_contents_cache ( $user_root );
				}
				return go_to ( 'folders.php' );
			}

			// check for folder change
			if ( !$folder_delete && $folder_path != '' && basename ( $folder_path ) != $folder_name )
			{
				// change name
				$new_folder_path = dir_name ( $folder_path ) . '/' . $folder_name;

				// check for errors
				if ( $folder_name == '' ) $error = $lang_folders['folder_no_name'];
				elseif ( strlen ( $folder_name ) > $UPL['CONFIGS']['FOLDER_MAX_LEN'] ) $error = parse ( $lang_folders['folder_long_name'], '{length}', $UPL['CONFIGS']['FOLDER_MAX_LEN'] );
				elseif ( strlen ( $folder_name ) < $UPL['CONFIGS']['FOLDER_MIN_LEN'] ) $error = parse ( $lang_folders['folder_short_name'], '{length}', $UPL['CONFIGS']['FOLDER_MIN_LEN'] );
				elseif ( count ( $UPL['CONFIGS']['RESERVED_FOLDERNAMES'] ) && in_array ( strtolower ( $folder_name ), $UPL['CONFIGS']['RESERVED_FOLDERNAMES'] ) ) $error = parse ( $lang_folders['folder_name_reserved'], '{folder}', $folder_name );
				elseif ( preg_match ( '#[^a-z0-9_\s]#i', $folder_name ) ) $error = $lang_folders['folder_bad_char'];
				elseif ( file_exists ( $user_root . '/' . $new_folder_path ) ) $error = $lang_folders['folder_exists'];
				elseif ( !@rename ( $user_root . '/' . $folder_path, $user_root . '/' . $new_folder_path ) ) $error = 'Internal error, rename() failed.';
				else $error = 'none';

				if ( $error != 'none' )
				{
					// show error messages
					$tpl_error->set ( 'error', $error );
					$tpl_folders->set ( 'error', $tpl_error );
					$tpl_folders->set ( 'folder_path', rawurlencode ( $folder_path ) );
					$tpl_folders->set ( 'folder_name', htmlentities ( $folder_name ) );
					$tpl_folders->set ( 'folder_public', is_file ( $user_root . $folder_path . '/.public' ) );
					$tpl_folders->set ( 'folder_description', is_file ( $user_root . $folder_path . '/.description' ) ? htmlentities ( implode ( '', file ( $user_root . $folder_path . '/.description' ) ) ) : '' );
					$tpl_uploader->setr ( 'content', $tpl_folders );
					exit ( $tpl_uploader->display ( ) );
				}
				$folder_path = $new_folder_path;
			}

			// set folder permission: public/private
			if ( $folder_public && !is_file ( $user_root . $folder_path . '/.public' ) )
			{
				// set
				fclose ( fopen ( $user_root . $folder_path . '/.public', 'w' ) );

			}
			elseif ( !$folder_public && is_file ( $user_root . $folder_path . '/.public' ) )
			{
				// unset
				unlink ( $user_root . $folder_path . '/.public' );
			}

			// set folder description
			$folder_description = substr ( $folder_description, 0, 200 );

			//exit ( $folder_description );

			if ( $folder_description == '' )
			{
				@unlink ( $user_root . $folder_path . '/.description' );

			}
			else
			{
				$fp = fopen ( $user_root . $folder_path . '/.description', 'w' );
				if ( $fp )
				{
					fwrite ( $fp, $folder_description );
					fclose ( $fp );
				}
			}
			clear_contents_cache ( $user_root );

			// go back
			go_to ( 'folders.php' );
		}
		else
		{
			// get folder name from the URL
			$folder = trim ( gpc ( 'folder', 'G', '' ) );
			// check it
			if ( $folder == '' || strstr ( $folder, '../' ) || strstr ( $folder, './' ) || !is_dir ( $user_root . '/' . $folder ) )
			{
				$tpl_message->set ( 'message', parse ( $lang_folders['folder_invalid'], '{folder}', $folder ) );
				$tpl_uploader->setr ( 'content', $tpl_message );
				exit ( $tpl_uploader->display ( ) );
			}
			$tpl_folders->set ( 'folder_path', rawurlencode ( $folder ) );
			$tpl_folders->set ( 'folder_name', htmlentities ( basename ( $folder ) ) );
			$tpl_folders->set ( 'folder_public', is_file ( $user_root . $folder . '/.public' ) );
			$tpl_folders->set ( 'folder_description', is_file ( $user_root . $folder . '/.description' ) ? htmlentities ( implode ( '', file ( $user_root . $folder . '/.description' ) ) ) : '' );
			$tpl_uploader->setr ( 'content', $tpl_folders );
			$tpl_uploader->display ( );

			//print_r ( $public_folders );
			//print path_encode ( $folder );
		}
	}
	break;

	case 'create':
	{
		// init
		$user_folders =& $user_contents['dirs'];
		$folder_name = trim ( gpc ( 'new_folder_name', 'P', '' ) );
		$folder_public = (bool)gpc ( 'folder_public', 'P', 0 );
		$folder_description = trim ( gpc ( 'folder_description', 'P', '' ) );

		// permission to create?
		$create_perm = $UPL['USER']['fl_create_folder'];
		$create_max =  $UPL['USER']['fl_max_folders'];

		if ( !$create_perm || ( ( $create_max > 0 ) && count ( $user_folders ) > $create_max ) )
		{
			if ( !$create_perm ) $tpl_message->set ( 'message', $lang_folders['folder_no_perm_create'] );
			else $tpl_message->set ( 'message', $lang_folders['folder_limit'] );
			$tpl_message->set ( 'back_url', 'folders.php' );
			$tpl_uploader->setr ( 'content', $tpl_message );
			return exit ( $tpl_uploader->display ( ) );
		}

		// do create
		if ( $task == 'create' )
		{
			$create_in = path_decode ( gpc ( 'create_in', 'P', '' ) );
			if ( strstr ( $create_in, '../' ) ) exit ( SECURITY_ERROR );
			// select the folder
			for ( $i = 0; $i < $user_folders_count; $i++ )
			{
				$user_folders[$i]['is_selected'] = ( path_decode ( $user_folders[$i]['path'] ) == $create_in );
			}
			// create check
			if ( $folder_name == '' ) $error = $lang_folders['folder_no_name'];
			elseif ( preg_match ( '#[^a-z0-9_\s]|\s{2,}#i', $folder_name ) ) $error = $lang_folders['folder_bad_char'];
			elseif ( strlen ( $folder_name ) > $UPL['CONFIGS']['FOLDER_MAX_LEN'] ) $error = parse ( $lang_folders['folder_long_name'], '{length}', $UPL['CONFIGS']['FOLDER_MAX_LEN'] );
			elseif ( strlen ( $folder_name ) < $UPL['CONFIGS']['FOLDER_MIN_LEN'] ) $error = parse ( $lang_folders['folder_short_name'], '{length}', $UPL['CONFIGS']['FOLDER_MIN_LEN'] );
			elseif ( count ( $UPL['CONFIGS']['RESERVED_FOLDERNAMES'] ) && in_array ( strtolower ( $folder_name ), $UPL['CONFIGS']['RESERVED_FOLDERNAMES'] ) ) $error = parse ( $lang_folders['folder_name_reserved'], '{folder}', $folder_name );
			elseif ( file_exists ( $user_root . $create_in . '/' . $folder_name ) ) $error = $lang_folders['folder_exists'];
			else $error = 'none';

			// create
			if ( $error == 'none' )
			{
				if ( !make_dir ( $user_root . $create_in . '/' . $folder_name, $UPL['CONFIGS']['CHMOD_TO'] ) ) exit ( 'Unable to create folder. Userfiles folder probably not chmodded correctly.' );

				// set folder as private/public
				if ( $folder_public )
				{
					fclose ( fopen ( $user_root . $create_in . '/' . $folder_name . '/.public', 'w' ) );
				}

				// save description
				if ( $folder_description != '' )
				{
					$folder_description = substr ( $folder_description, 0, 200 );
					$fp = fopen ( $user_root . $create_in . '/' . $folder_name . '/.description', 'w' );

					if ( $fp )
					{
						fwrite ( $fp, $folder_description );
						fclose ( $fp );
					}
				}
				clear_contents_cache ( $user_root );

				header ( 'Location: folders.php' );
			}
			else
			{
				$tpl_folders->set ( 'user_folders', $user_folders );
				$tpl_folders->set ( 'folder_name', htmlentities ( $folder_name ) );
				$tpl_error->set ( 'error', $error );
				$tpl_folders->set ( 'error', $tpl_error );
				$tpl_uploader->setr ( 'content', $tpl_folders );
				$tpl_uploader->display ( );
			}
		}
		else
		{
			$tpl_folders->set ( 'folder_name', '' );
			$tpl_uploader->setr ( 'content', $tpl_folders );
			$tpl_uploader->display ( );
		}
	}
	break;

	case 'cgallery':
	{
		if ( $task == 'cgallery' )
		{
			$create_in = path_decode ( gpc ( 'create_in', 'P', '' ) );
			$error = 'none';

			if ( $create_in == '' )
			{
				$error = 'You did not select a folder.';
			}
			elseif ( !isset ( $user_files[$create_in] ) )
			{
				$error = 'Invalid folder';
			}
			else
			{
				$files = $user_files[$create_in];

				if ( !count ( $files ) )
				{
					$error = 'The folder "' . basename ( $create_in ) . '" you have chosen is empty. Upload or copy images into this folder first.';
				}
			}

			if ( $error == 'none' )
			{
				// create
			}
			else
			{
				// show error
				$tpl_error->set ( 'error', $error );
				$tpl_folders->set ( 'error', $tpl_error );
				$tpl_uploader->setr ( 'content', $tpl_folders );
				$tpl_uploader->display ( );
			}
		}
		else
		{
			$tpl_uploader->setr ( 'content', $tpl_folders );
			$tpl_uploader->display ( );
		}
	}
	break;

	default:
	{
		$tpl_folders->set ( 'main_folder', $main_folder );
		$tpl_uploader->setr ( 'content', $tpl_folders );
		$tpl_uploader->set ( 'page_title', $lang_titles['mf_fld_title2'] );
		$tpl_uploader->display ( );
	}
}
?>