flatpress/fp-plugins/mediamanager/panels/panel.mediamanager.file.php
azett 6b8a4776df Included Matthias Mauch's PHP7.1 patch. Besides other changes regarding PHP7 compatibility, it replaces all the class-named constructors with __construct(). Thanks a lot, Matthias!
Please visit his website http://www.aadmm.org/fp-patch/ and read patch-description.txt to learn more about the details of the patch.

I adapted the patch slighty: It now does not just add a __construct() function to the existing class-named one, instead it replaces it completely. Therefore, some parent::__construct() calls had to be changed, too.
2018-10-03 11:00:55 +02:00

248 lines
7.0 KiB
PHP

<?php
class admin_uploader_mediamanager extends AdminPanelAction {
var $finfo;
var $conf;
var $langres = 'plugin:mediamanager';
function cmpfiles($a, $b){
$c = strcmp($a['type'],$b['type']);
if ($c==0){
return strcmp($a['name'],$b['name']);
}
return $c;
}
function formatBytes($bytes, $precision = 2) {
$units = array('B', 'KB', 'MB', 'GB', 'TB');
$bytes = max($bytes, 0);
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
$pow = min($pow, count($units) - 1);
$bytes /= pow(1024, $pow);
return round($bytes, $precision) . ' ' . $units[$pow];
}
function getFileInfo($filepath){
global $fp_config;
$info = array(
"name"=>basename($filepath),
"size"=>$this->formatBytes(filesize($filepath)),
"mtime"=>date_strformat($fp_config['locale']['dateformatshort'], filemtime($filepath))
);
if (isset($this->conf['usecount'][basename($filepath)])){
$info['usecount']=$this->conf['usecount'][basename($filepath)];
} else {
$info['usecount'] = null;
}
return $info;
}
function setup() {
$this->smarty->assign('admin_resource', "plugin:mediamanager/admin.plugin.mediamanager.files");
}
function deleteFolder($folder, $mmbaseurl){
if (!file_exists($folder)) return false;
$dir = opendir($folder);
while (false !== ($file = readdir($dir))) {
if (!in_array($file, array(".",".."))) {
if (is_dir($folder."/".$file)){
$this->deleteFolder($folder."/".$file, $mmbaseurl);
} else {
if (!unlink($folder."/".$file)) return false;
}
}
}
return rmdir($folder);
}
function doItemActions($folder, $mmbaseurl){
/* delete file*/
if (isset($_GET['deletefile'])){
list($type, $name) = explode("-", $_GET['deletefile'],2);
switch($type){
case 'attachs': $type=ABS_PATH.ATTACHS_DIR; break;
case 'images': $type=ABS_PATH.IMAGES_DIR.$folder; break;
case 'gallery':
if ( !$this->deleteFolder(ABS_PATH.IMAGES_DIR.$name, $mmbaseurl))
@utils_redirect($mmbaseurl.'&status=-1');
@utils_redirect($mmbaseurl.'&status=1');
return true;
break;
default: { @utils_redirect($mmbaseurl.'&status=-1'); return true; }
}
if (!file_exists($type.$name)) { @utils_redirect($mmbaseurl.'&status=-1'); return true; }
if (!unlink($type.$name)) { @utils_redirect($mmbaseurl.'&status=-1'); return true; }
@utils_redirect($mmbaseurl.'&status=1');
return true;
}
if (isset($_GET['status'])){
$this->smarty->assign('success', $_GET['status']);
}
return false;
}
function main() {
$mmbaseurl="admin.php?p=uploader&action=mediamanager";
$folder = ""; $gallery="";
if (isset($_GET['gallery'])){
$mmbaseurl .= "&gallery=".$_GET['gallery'];
$gallery = str_replace("/","",$_GET['gallery']);
$folder = $gallery."/";
}
$weburl = plugin_geturl('mediamanager');
$this->conf = plugin_getoptions('mediamanager');
if ($this->doItemActions($folder, $mmbaseurl)) return;
$files = array();
$galleries = array();
$files_needupdate=array();
$galleries_needupdate=array();
# galleries (alwais from IMAGES_DIR)
if (file_exists(ABS_PATH.IMAGES_DIR)){
$dir = opendir(ABS_PATH.IMAGES_DIR);
while (false !== ($file = readdir($dir))){
$fullpath=ABS_PATH.IMAGES_DIR.$file;
if (!in_array($file, array(".","..",".thumbs")) && is_dir($fullpath)) {
$info = $this->getFileInfo($fullpath);
$info['type'] = "gallery";
$galleries[$fullpath] = $info;
if (is_null($info['usecount'])) { $galleries_needupdate[]=$fullpath;}
}
}
}
# attachs (NO attachs in galleries)
if ($folder=="" && file_exists(ABS_PATH.ATTACHS_DIR)){
$dir = opendir(ABS_PATH.ATTACHS_DIR);
while (false !== ($file = readdir($dir))) {
if (!in_array($file, array(".",".."))) {
$fullpath = ABS_PATH.ATTACHS_DIR.$file;
$info=$this->getFileInfo($fullpath);
$info['type']="attachs";
$info['url']=BLOG_ROOT.ATTACHS_DIR.$file;
$files[$fullpath]=$info;
if (is_null($info['usecount'])) { $files_needupdate[]=$fullpath;}
}
}
}
# images
if (file_exists(ABS_PATH.IMAGES_DIR.$folder)){
$dir = opendir(ABS_PATH.IMAGES_DIR.$folder);
while (false !== ($file = readdir($dir))){
$fullpath=ABS_PATH.IMAGES_DIR.$folder.$file;
if (!in_array($file, array(".","..",".thumbs")) && !is_dir($fullpath)) {
$info=$this->getFileInfo($fullpath);
$info['type']="images";
$info['url']=BLOG_ROOT.IMAGES_DIR.$folder.$file;
$files[$fullpath]=$info;
# NO count for images in galleries
if ($folder=="" && is_null($info['usecount'])) { $files_needupdate[]=$fullpath; }
}
}
}
mediamanager_updateUseCountArr($files,$files_needupdate);
mediamanager_updateUseCountArr($galleries,$galleries_needupdate);
usort($files, Array("admin_uploader_mediamanager","cmpfiles"));
$totalfilescount = (string) count($files);
#paginator
$pages = ceil((count($files)+count($galleries))/ ITEMSPERPAGE);
if ($pages==0) $pages=1;
if (isset($_GET['page'])){
$page = (int) $_GET['page'];
} else {
$page=1;
}
if ($page<1) $page=1;
if ($page>$pages) $page=$pages;
$pagelist = array();
for($k=1; $k<=$pages; $k++ ) $pagelist[]=$k;
$paginator = array( "total"=>$pages,
"current"=>$page,
"limit" => ITEMSPERPAGE,
"pages" => $pagelist
);
$startfrom = ($page-1)*ITEMSPERPAGE;
$galleriesout = count(array_slice($galleries,0, $startfrom));
$dropdowngalleries=$galleries;
$galleries = array_slice($galleries, $startfrom, ITEMSPERPAGE);
$files = array_slice($files, $startfrom-$galleriesout, ITEMSPERPAGE- count($galleries));
$this->smarty->assign('paginator', $paginator);
$this->smarty->assign('files', $files);
$this->smarty->assign('galleries', $galleries);
$this->smarty->assign('dwgalleries', $dropdowngalleries);
$this->smarty->assign('mmurl', $weburl);
$this->smarty->assign('mmbaseurl', $mmbaseurl);
$this->smarty->assign('currentgallery', $gallery);
$this->smarty->assign('totalfilescount', $totalfilescount);
}
function onsubmit($data = NULL) {
if (isset($_POST['mm-newgallery'])){
$newgallery=$_POST['mm-newgallery-name'];
if ($newgallery==""){
$this->smarty->assign('success', -3);
return 2;
}
$newgallery = str_replace("/","", $newgallery);
$newgallery = str_replace(".","", $newgallery);
if (mkdir(ABS_PATH.IMAGES_DIR.$newgallery) ) {
$this->smarty->assign('success', 3);
} else {
$this->smarty->assign('success', -2);
}
return 2;
}
$folder = "";
if (isset($_GET['gallery'])){
$mmbaseurl .= "&gallery=".$_GET['gallery'];
$folder = str_replace("/","",$_GET['gallery'])."/";
}
list($action,$arg) = explode("-",$_POST['action'],2);
if (!isset($_POST['file'])) return 2;
foreach($_POST['file'] as $file=>$v){
list($type,$name) = explode("-",$file,2);
if ($action=='atg' && $type=='images'){
copy( ABS_PATH.IMAGES_DIR.$folder.$name, ABS_PATH.IMAGES_DIR.$arg.'/'.$name);
$this->smarty->assign('success', 2);
}
}
return 2;
}
}
admin_addpanelaction('uploader', 'mediamanager', true);
?>