<?php
define ( 'NO_AUTH_CHECK', 1 );
define ( 'BROWSE_PHP', 1 );
require_once ( 'includes/commons.inc.php' );
require_once ( 'includes/index.class.php' );
if ( $UPL['SETTINGS']['browsing'] == 'reg' && $UPL['USER']['logged_in'] == false )
{
$tpl_message->set ( 'message', $lang_misc['login_required'] );
$tpl_uploader->setr ( 'content', $tpl_message );
exit ( $tpl_uploader->display ( ) );
}
function has_public_folders ( $path )
{
$user_contents = get_contents ( $path );
$folders =& $user_contents['dirs'];
$folders_count = count ( $folders );
for ( $i = 0; $i < $folders_count; $i++ )
{
if ( is_file ( $path . '/' . $folders[$i]['path'] . '/.public' ) )
{
return true;
}
}
return false;
}
if ( $action == 'browse' )
{
$tpl_browse = new Template ( TPL_DIR . 'tpl_user.php' );
$tpl_browse->set ( 'action', $action );
$userid = gpc ( 'userid', 'G', 0 );
$folder = path_decode ( gpc ( 'folder', 'G', '' ) );
$user = new User;
if ( $user->open ( $userid ) )
{
$userinfo = $user->all ( );
// User directory and URL
$user_root = $UPL['SETTINGS']['userfiles_dir'] . $userid . '/';
$user_url = $UPL['SETTINGS']['userfiles_url'] . $userid . '/';
// get all folders
$user_contents = get_contents ( $user_root );
$user_folders =& $user_contents['dirs'];
$user_folders_count = count ( $user_folders );
$public_folders = array ( );
for ( $i = 0; $i < $user_folders_count; $i++ )
{
if ( is_file ( $user_root . $user_folders[$i]['path'] . '/.public' ) )
{
$public_folders [] = $user_folders[$i];
}
}
$public_folders_count = count ( $public_folders );
if ( $public_folders_count )
{
for ( $i = 0; $i < $public_folders_count; $i++ )
{
$public_folders[$i]['description'] = is_file ( $user_root . $public_folders[$i]['path'] . '/' . '.description' ) ? implode ( '', file ( $user_root . $public_folders[$i]['path'] . '/' . '.description' ) ) : '';
$public_folders[$i]['description'] = htmlentities ( $public_folders[$i]['description'] );
$public_folders[$i]['size'] = get_size ( $public_folders[$i]['size'], 'B', 0 );
$public_folders[$i]['browse_url'] = 'browse.php?action=browse&userid=' . $userid . '&folder=' . path_encode ( $public_folders[$i]['path'] );
}
// load folder
if ( $folder == '' )
{
#$folder = $public_folders[0]['path'];
#header ( 'Location: browse.php?action=browse&userid=' . $userid . '&folder=' . path_encode ( $folder ) );
#exit;
}
if ( !is_dir ( $user_root . $folder ) || !is_file ( $user_root . $folder . '/.public' ) )
{
/*
print 'hi';
$tpl_message->set ( 'message', $lang_browse['bad_folder'] );
$tpl_message->set ( 'back_url', 'browse.php' );
$tpl_uploader->setr ( 'content', $tpl_message );
exit ( $tpl_uploader->display ( ) );
*/
$tpl_browse->set ( 'current_folder_name', '' );
$tpl_browse->set ( 'current_folder_description', '' );
$tpl_browse->set ( 'user_files', array ( ) );
$tpl_browse->setr ( 'user', $userinfo );
$tpl_browse->setr ( 'public_folders', $public_folders );
$tpl_uploader->setr ( 'content', $tpl_browse );
$tpl_uploader->display ( );
exit;
}
$user_files = $user_contents['files'][$folder];
$user_files_count = count ( $user_files );
for ( $i = 0; $i < $user_files_count; $i++ )
{
$ref =& $user_files[$i];
$ref['ext'] = get_extension ( $ref['name'] );
if ( !isset ( $ref['date'] ) )
{
$ref['date'] = filemtime ( $user_root . $folder . '/' . $ref['name'] );
}
//$ref['rename_url'] = 'myfiles.php?action=rename&file=' . rawurlencode ( ( $folder == '' ? '' : $folder . '/' ) . $ref['name'] );
//$ref['resize_url'] = 'myfiles.php?action=resize&file=' . rawurlencode ( ( $folder == '' ? '' : $folder . '/' ) . $ref['name'] );
//$ref['download_url'] = 'file.php?action=download&userid=' . $UPL['USER']['id'] . '&file=' . rawurlencode ( ( $folder == '' ? '' : $folder . '/' ) . $ref['name'] );;
$ref['file_url'] = $user_url . clean_url ( $folder . '/' . rawurlencode ( $ref['name'] ) );
//$ref['is_new'] = ( time ( ) - $ref['date'] ) < 5;
//$ref['is_resizeable'] = is_image ( $user_root . $folder . '/' . $ref['name'], true );
//$ref['type'] = get_extension ( $ref['name'] );
$ref['date_raw'] = $ref['date'];
$ref['date'] = date ( $UPL['CONFIGS']['TIME_FORMAT'], $ref['date'] );
$ref['size_raw'] = $ref['size'];
$ref['size'] = get_size ( $ref['size'], 'B', 0 );
$ref['form_name'] = rawurlencode ( $ref['name'] );
$ref['full_name'] = htmlentities ( $ref['name'] );
}
$tpl_browse->set ( 'current_folder_name', basename ( $folder ) );
$tpl_browse->set ( 'current_folder_description', is_file ( $user_root . $folder . '/.description' ) ? htmlentities ( implode ( '', file ( $user_root . $folder . '/.description' ) ) ) : '' );
$tpl_browse->setr ( 'user_files', $user_files );
$tpl_browse->setr ( 'user', $userinfo );
$tpl_browse->setr ( 'public_folders', $public_folders );
$tpl_uploader->setr ( 'content', $tpl_browse );
$tpl_uploader->display ( );
}
else
{
$tpl_message->set ( 'message', parse ( $lang_browse['no_public_folders'], '{user}', $userinfo['name'] ) );
$tpl_message->set ( 'back_url', 'browse.php' );
$tpl_uploader->setr ( 'content', $tpl_message );
exit ( $tpl_uploader->display ( ) );
}
}
else
{
$tpl_message->set ( 'message', $lang_misc['user_not_found'] );
$tpl_uploader->setr ( 'content', $tpl_message );
exit ( $tpl_uploader->display ( ) );
}
}
elseif ( $action == 'info' )
{
$tpl_userinfo = new Template ( TPL_DIR . 'tpl_user.php' );
$tpl_userinfo->set ( 'action', $action );
$userid = gpc ( 'userid', 'G', 0 );
$user = new User;
if ( $user->open ( $userid ) )
{
$userinfo = $user->all ( );
// format user info
$userinfo['reg_date_ago'] = number_format ( ( time() - $userinfo['reg_date'] ) / 86400, 1 );
$userinfo['reg_date'] = date ( $UPL['CONFIGS']['TIME_FORMAT'], $userinfo['reg_date'] );
$userinfo['last_login_ago'] = number_format ( ( time() - $userinfo['xtr_last_login_time'] ) / 86400, 1 );
$userinfo['last_login'] = date ( $UPL['CONFIGS']['TIME_FORMAT'], $userinfo['xtr_last_login_time'] );
$userinfo['browse_url'] = 'browse.php?action=browse&userid=' . $userid;
$userinfo['message_url'] = 'usercp.php?action=sendpm&userid=' . $userid;
$tpl_userinfo->setr ( 'user', $userinfo );
$tpl_uploader->setr ( 'content', $tpl_userinfo );
$tpl_uploader->display ( );
}
else
{
$tpl_message->set ( 'message', $lang_misc['user_invalid'] );
$tpl_uploader->setr ( 'content', $tpl_message );
exit ( $tpl_uploader->display ( ) );
}
}
else
{
// get inputs
$current_page = abs ( intval ( gpc ( 'page', 'G', 1 ) ) );
$public_only = gpc ( 'public', 'G', 0 );
// startup
$tpl_browse_users = new Template ( TPL_DIR . 'tpl_browse.php' );
$names_index = new Index;
$names_index->open ( NAMES_INDEX );
$all_users = $names_index->all ( );
$all_users_count = count ( $all_users );
$user_list = array ( );
$user = new User;
// sorting function
function uksort_function ( $left, $right )
{
return strtolower ( $left ) > strtolower ( $right );
}
// sort
uksort ( $all_users, 'uksort_function' );
// filter public only
if ( $public_only )
{
$temp = array ();
while ( list ( $uname, $uid ) = each ( $all_users ) )
{
if ( has_public_folders ( $UPL['SETTINGS']['userfiles_dir'] . '/' . $uid ) )
{
$temp [$uname] = $uid;
}
}
$all_users = $temp;
}
// divide into pages
$page_links = array ( );
if ( count ( $all_users ) )
{
$pages = array_chunk ( $all_users, $UPL['CONFIGS']['USERLIST_PERPAGE'], true );
if ( $current_page > count ( $pages ) ) $current_page = count ( $pages );
if ( $current_page < 1 ) $current_page = 1;
$all_users = isset ( $pages[$current_page-1] ) ? $pages[$current_page-1] : $pages[0];
for ( $i = 0; $i < count ( $pages ); $i++ )
{
$page_links [] = array ( 'url' => 'browse.php?page=' . ( $i + 1 ) . ( $public_only ? '&public=1' : '' ), 'number' => ( $i + 1 ) );
}
if ( $current_page != count ( $pages ) )
{
$page_links [] = array ( 'url' => 'browse.php?page=' . ( $current_page + 1 ) . ( $public_only ? '&public=1' : '' ), 'number' => 'NEXT' );
}
if ( $current_page != 1 )
{
array_unshift ( $page_links, array ( 'url' => 'browse.php?page=' . ( $current_page - 1 ) . ( $public_only ? '&public=1' : '' ), 'number' => 'PREV' ) );
}
}
// format list
while ( list ( $uname, $uid ) = each ( $all_users ) )
{
if ( $user->open ( $uid ) )
{
$has_public = $public_only ? true : has_public_folders ( $UPL['SETTINGS']['userfiles_dir'] . '/' . $uid );
$user_list [] = array
(
'name' => htmlentities ( $uname ),
'browse_url' => 'browse.php?action=browse&userid=' . $uid,
'info_url' => 'browse.php?action=info&userid=' . $uid,
'message_url' => 'usercp.php?action=sendpm&userid=' . $uid,
'reg_date' => date ( $UPL['CONFIGS']['TIME_FORMAT3'], $user->get ( 'reg_date' ) ),
'email' => $user->get ( 'prf_public_email' ) ? $user->get ( 'email' ) : $lang_misc['email_hidden'],
'has_public' => $has_public,
);
}
}
$tpl_browse_users->set ( 'public_only', $public_only );
$tpl_browse_users->set ( 'pages', $page_links );
$tpl_browse_users->set ( 'current_page', $current_page );
$tpl_browse_users->set ( 'total_users', $all_users_count );
$tpl_browse_users->setr ( 'users', $user_list );
$tpl_uploader->setr ( 'content', $tpl_browse_users );
$tpl_uploader->display ( );
}
?>