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, "\n
\n\n" ); 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 ''.T_('Unable to delete: not empty!').''; } } 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( ".bmp$|.gif$|.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, 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