View file admincp/scan.php

File size: 2.41Kb
<?php


@set_time_limit(0);

include "../inc/init.php";

if(!is_admin()) {
    header("Location: $set->url");exit;
}

$links[] = mai_img("arr.gif")." <a href='index.php'>$lang->admincp </a>";
$links[] = mai_img("arr.gif")." Scan Folders ";

$folder_count = 0;
$files_count = 0;


// grab the files


$db_fl = $db->select("SELECT * FROM `".MAI_PREFIX."files`");
foreach($db_fl as $file)
    $db_files[] = $file->path; 

$folder_files = scaner("../files");

foreach($folder_files as $f){
    $f = rtrim($f,"/");
    if(!in_array($f,$db_files)){
		$db_files[] = $f;
        if(is_dir("..".$f)){
            $dir = $db->get_row("SELECT `id` FROM `".MAI_PREFIX."files` WHERE `path`='".dirname($f)."'");
            $add = array(
            "path" => $db->escape($f),
            "name" => $db->escape(basename($f)),
            "time" => time(),
            "indir" => (int)$dir->id,
            "size" => 0
            );
            $db->insert_array(MAI_PREFIX."files",$add);
            $folder_count++;
        }else{
            $dir = $db->get_row("SELECT `id` FROM `".MAI_PREFIX."files` WHERE `path`='".dirname($f)."'");
            $add = array(
            "path" => $db->escape($f),
            "name" => $db->escape(basename($f)),
            "time" => time(),
            "indir" => (int)$dir->id,
            "size" => filesize("..".$f)
            );
            $db->insert_array(MAI_PREFIX."files",$add);
            $files_count++;
        }
    }
}

// check for extra files
$tmp_files = array_map("_rtrim",$folder_files);
$extra = array_diff(array_merge($tmp_files, $db_files), array_intersect($tmp_files, $db_files));

foreach($extra as $extra)
	$db->query("DELETE FROM `".MAI_PREFIX."files` WHERE `path`='".$db->escape($extra)."'");


include "../header.php";

echo "<div class='content'>Scan Complete !<br/>
New folders: ".$folder_count."<br/>
New files: ".$files_count."<br/>
</div>
";

include "../footer.php";

// functions
function _rtrim($v){
	return rtrim($v,"/");
}

function scaner($path)
{
    static $f_arr;

    @chmod($path,0777);

    $arr = glob($path.'/*');
    
    if(is_array($arr)){
        foreach($arr as $vv){

            if(is_dir($vv)){
                $f_arr[] = substr($vv,2).'/';
                scaner($vv);
            }else{
                $f_arr[] = substr($vv,2);
            }
        }
    }
    return $f_arr;
}