Created
September 9, 2015 10:48
-
-
Save Daudzis/99c3b5d442af05a77af8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @package Mambo | |
* @subpackage Media Manager | |
* @author Mambo Foundation Inc see README.php | |
* @copyright Mambo Foundation Inc. | |
* See COPYRIGHT.php for copyright notices and details. | |
* @license GNU/GPL Version 2, see LICENSE.php | |
* Mambo is free software; you can redistribute it and/or | |
* modify it under the terms of the GNU General Public License | |
* as published by the Free Software Foundation; version 2 of the License. | |
*/ | |
/** ensure this file is being included by a parent file */ | |
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); | |
// ensure user has access to this function | |
if (!($acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'all' ) | |
| $acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'com_media' ))) { | |
mosRedirect( 'index2.php', T_('You are not authorized to view this resource.') ); | |
} | |
require_once( $mainframe->getPath( 'admin_html' ) ); | |
//require_once( $mainframe->getPath( 'class' ) ); | |
$cid = mosGetParam( $_POST, 'cid', array(0) ); | |
$foldername = mosGetParam($_POST, 'foldername', ''); | |
$listdir = mosGetParam($_REQUEST, 'listdir', ''); | |
$dirPath = mosGetParam($_POST, 'dirPath', ''); | |
$task = mosGetParam($_REQUEST, 'task', ''); | |
$delFile = mosGetParam($_REQUEST, 'delFile', ''); | |
$delFolder = mosGetParam($_REQUEST, 'delFolder', ''); | |
if (!is_array( $cid )) { | |
$cid = array(0); | |
} | |
if (is_int(strpos ($listdir, "..")) && $listdir<>'') { | |
mosRedirect( "index2.php?option=com_media&listdir=".$_POST['dirPath'], T_("NO HACKING PLEASE") ); | |
} | |
switch ($task) { | |
case "upload": | |
upload(); | |
showMedia($dirPath); | |
break; | |
case "newdir": | |
if (ini_get('safe_mode')=="On") { | |
mosRedirect( "index2.php?option=com_media&listdir=".$_POST['dirPath'], T_("Directory creation not allowed while running in SAFE MODE as this can cause problems.") ); | |
} | |
else { | |
create_folder($foldername,$dirPath); | |
} | |
showMedia($dirPath); | |
break; | |
case "delete": | |
delete_file($delFile,$listdir); | |
showMedia($listdir); | |
break; | |
case "deletefolder": | |
delete_folder($delFolder,$listdir); | |
showMedia($listdir); | |
break; | |
case "list": | |
listImages($listdir); | |
break; | |
default: | |
showMedia($listdir); | |
break; | |
} | |
function delete_file($delfile, $listdir) | |
{ | |
global $mosConfig_absolute_path; | |
$del_image = $mosConfig_absolute_path."/images/stories".$listdir."/".$delfile; | |
unlink($del_image); | |
} | |
function create_folder($folder_name,$dirPath) | |
{ | |
global $mosConfig_absolute_path; | |
if(strlen($folder_name) >0) | |
{ | |
if (eregi("[^0-9a-zA-Z_]", $folder_name)) { | |
mosRedirect( "index2.php?option=com_media&listdir=".$_POST['dirPath'], T_("Directory name must only contain alphanumeric characters and no spaces please.") ); | |
} | |
$folder = $mosConfig_absolute_path."/images/stories".$dirPath."/".$folder_name; | |
if(!is_dir($folder) && !is_file($folder)) | |
{ | |
mosMakePath($folder); | |
$fp = fopen($folder."/index.html", "w" ); | |
fwrite( $fp, "<html>\n<body bgcolor=\"#FFFFFF\">\n</body>\n</html>" ); | |
fclose( $fp ); | |
mosChmod($folder."/index.html"); | |
$refresh_dirs = true; | |
} | |
} | |
} | |
function delete_folder($delFolder,$listdir) | |
{ | |
global $mosConfig_absolute_path; | |
$del_html = $mosConfig_absolute_path.'/images/stories'.$listdir.$delFolder.'/index.html'; | |
$del_folder = $mosConfig_absolute_path.'/images/stories'.$listdir.$delFolder; | |
$entry_count = 0; | |
$dir = opendir( $del_folder ); | |
while ( false !== ($entry = readdir( $dir ))) | |
{ | |
if( $entry != "." & $entry != ".." & strtolower($entry) != "index.html" ) | |
$entry_count++; | |
} | |
closedir( $dir ); | |
if( $entry_count < 1 ) | |
{ | |
@unlink($del_html); | |
rmdir($del_folder); | |
} else { | |
echo '<font color="red">'.T_('Unable to delete: not empty!').'</font>'; | |
} | |
} | |
function upload(){ | |
global $mosConfig_absolute_path; | |
if(isset($_FILES['upload']) && is_array($_FILES['upload']) && isset($_POST['dirPath'])) | |
{ | |
$dirPathPost = $_POST['dirPath']; | |
if(strlen($dirPathPost) > 0) | |
{ | |
if(substr($dirPathPost,0,1)=='/') | |
$IMG_ROOT .= $dirPathPost; | |
else | |
$IMG_ROOT = $dirPathPost; | |
} | |
if(strrpos($IMG_ROOT, '/')!= strlen($IMG_ROOT)-1) | |
$IMG_ROOT .= '/'; | |
do_upload( $_FILES['upload'], $mosConfig_absolute_path.'/images/stories/'.$dirPathPost.'/'); | |
} | |
} | |
function do_upload($file, $dest_dir) | |
{ | |
global $clearUploads; | |
if (file_exists($dest_dir.$file['name'])) { | |
mosRedirect( "index2.php?option=com_media&listdir=".$_POST['dirPath'], T_("Upload FAILED. File already exists") ); | |
} | |
if (!eregi( ".html$|.bmp$|.gif$|.jpg$|.JPG$|.png$|.ppt$|.doc$|.xls$|.swf$|.pdf$", $file['name'] )){ | |
mosRedirect( "index2.php?option=com_media&listdir=".$_POST['dirPath'], T_("Only files of type gif, png, jpg, JPG, bmp, pdf, swf, doc, xls or ppt can be uploaded") ); | |
} | |
if (!move_uploaded_file($file['tmp_name'], $dest_dir.strtolower($file['name']))){ | |
mosRedirect( "index2.php?option=com_media&listdir=".$_POST['dirPath'], T_("Upload FAILED") ); | |
} | |
else { | |
mosChmod($dest_dir.strtolower($file['name'])); | |
mosRedirect( "index2.php?option=com_media&listdir=".$_POST['dirPath'], T_("Upload complete") ); | |
} | |
$clearUploads = true; | |
} | |
function recursive_listdir($base) { | |
static $filelist = array(); | |
static $dirlist = array(); | |
if(is_dir($base)) { | |
$dh = opendir($base); | |
while (false !== ($dir = readdir($dh))) { | |
if (is_dir($base ."/". $dir) && $dir !== '.' && $dir !== '..' && strtolower($dir) !== 'cvs') { | |
$subbase = $base ."/". $dir; | |
$dirlist[] = $subbase; | |
$subdirlist = recursive_listdir($subbase); | |
} | |
} | |
closedir($dh); | |
} | |
return $dirlist; | |
} | |
/** | |
* Show media manager | |
* @param string The image directory to display | |
*/ | |
function showMedia($listdir) { | |
global $mosConfig_absolute_path, $mosConfig_live_site; | |
// get list of directories | |
$imgFiles = recursive_listdir( $mosConfig_absolute_path."/images/stories" ); | |
$images = array(); | |
$folders = array(); | |
$folders[] = mosHTML::makeOption( "/" ); | |
foreach ($imgFiles as $file) { | |
$folders[] = mosHTML::makeOption( substr($file,strlen($mosConfig_absolute_path."/images/stories")) ); | |
} | |
if (is_array($folders)) { | |
sort( $folders ); | |
} | |
// create folder selectlist | |
$dirPath = mosHTML::selectList( $folders, 'dirPath', "class=\"inputbox\" size=\"1\" " | |
."onchange=\"goUpDir()\" ", | |
'value', 'text', $listdir ); | |
HTML_Media::showMedia($dirPath,$listdir); | |
} | |
/** | |
* Build imagelist | |
* @param string The image directory to display | |
*/ | |
function listImages($listdir) { | |
global $mosConfig_absolute_path, $mosConfig_live_site; | |
// get list of images | |
$d = @dir($mosConfig_absolute_path."/images/stories/".$listdir); | |
if($d) | |
{ | |
//var_dump($d); | |
$images = array(); | |
$folders = array(); | |
$docs = array(); | |
while (false !== ($entry = $d->read())) | |
{ | |
$img_file = $entry; | |
if(is_file($mosConfig_absolute_path."/images/stories".$listdir.'/'.$img_file) && substr($entry,0,1) != '.' && strtolower($entry) !== 'index.html') | |
{ | |
if (eregi( ".bmp$|.gif$|.jpg$|.png$", $img_file )) { | |
$image_info = @getimagesize($mosConfig_absolute_path."/images/stories/".$listdir.'/'.$img_file); | |
$file_details['file'] = $mosConfig_absolute_path."/images/stories".$listdir."/".$img_file; | |
$file_details['img_info'] = $image_info; | |
$file_details['size'] = filesize($mosConfig_absolute_path."/images/stories".$listdir."/".$img_file); | |
$images[$entry] = $file_details; | |
} | |
else { | |
// file is document | |
$docs[$entry] = $img_file; | |
} | |
} | |
else if(is_dir($mosConfig_absolute_path."/images/stories/".$listdir.'/'.$img_file) && substr($entry,0,1) != '.' && strtolower($entry) !== 'cvs') | |
{ | |
$folders[$entry] = $img_file; | |
} | |
} | |
$d->close(); | |
HTML_Media::imageStyle($listdir); | |
if(count($images) > 0 || count($folders) > 0 || count($docs) > 0) | |
{ | |
//now sort the folders and images by name. | |
ksort($images); | |
ksort($folders); | |
ksort($docs); | |
HTML_Media::draw_table_header(); | |
for($i=0; $i<count($folders); $i++) | |
{ | |
$folder_name = key($folders); | |
HTML_Media::show_dir('/'.$folders[$folder_name], $folder_name,$listdir); | |
next($folders); | |
} | |
for($i=0; $i<count($docs); $i++) | |
{ | |
$doc_name = key($docs); | |
$iconfile= $mosConfig_absolute_path."/administrator/components/com_media/images/".substr($doc_name,-3)."_16.png"; | |
if (file_exists($iconfile)) { | |
$icon = "components/com_media/images/".(substr($doc_name,-3))."_16.png" ; } | |
else { | |
$icon = "components/com_media/images/con_info.png"; | |
} | |
HTML_Media::show_doc($docs[$doc_name], $listdir, $icon); | |
next($docs); | |
} | |
for($i=0; $i<count($images); $i++) | |
{ | |
$image_name = key($images); | |
HTML_Media::show_image($images[$image_name]['file'], $image_name, $images[$image_name]['img_info'], $images[$image_name]['size'],$listdir); | |
next($images); | |
} | |
HTML_Media::draw_table_footer(); | |
} | |
else | |
{ | |
HTML_Media::draw_no_results(); | |
} | |
} | |
else | |
{ | |
HTML_Media::draw_no_dir(); | |
} | |
function rm_all_dir($dir) | |
{ | |
//$dir = dir_name($dir); | |
//echo "OPEN:".$dir.'<Br>'; | |
if(is_dir($dir)) | |
{ | |
$d = @dir($dir); | |
while (false !== ($entry = $d->read())) | |
{ | |
//echo "#".$entry.'<br>'; | |
if($entry != '.' && $entry != '..') | |
{ | |
$node = $dir.'/'.$entry; | |
//echo "NODE:".$node; | |
if(is_file($node)) { | |
//echo " - is file<br>"; | |
unlink($node); | |
} | |
else if(is_dir($node)) { | |
//echo " - is Dir<br>"; | |
rm_all_dir($node); | |
} | |
} | |
} | |
$d->close(); | |
rmdir($dir); | |
} | |
//echo "RM: $dir <br>"; | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment