<?php
/* Ulyxex version 1.5.4.6 ***************/
/* code http://ulyxex.logz.org **********/
/* Andre Lozano http://andre-lozano.org */
class ViewFiles extends Admin {
	function __construct($dir=null){
		$this->dir = $dir;
		$this->h = New Htmlz();
		$this->t = New Translate();
		
		if (isset($_GET['pg'])) {
			$this->pagePos = $this->h->num($_GET['pg']);
			$_SESSION['pgf'] = $_GET['pg'];
		} elseif (isset($_SESSION['pgf']) && !empty($_SESSION['pgf']))  {
			$this->pagePos = $this->h->num($_SESSION['pgf']);
			$_GET['pg'] = $_SESSION['pgf'];
		} else {
			$this->pagePos = 0;
		}

		$this->sortMethods = array("",FILES.".DATEFILE DESC",FILES.".FILENAME",FILES.".USERID","");
		if (!isset($_SESSION['admin_files_sort'])) $_SESSION['admin_files_sort'] = $this->sortMethods[1];
		if (isset($_POST['sort'])) {
			$_SESSION['admin_files_sort'] = $this->sortMethods[$_POST['sort']];
		}
		
		if (isset($_POST['reset'])){
			if (isset($_SESSION['admin_files_sort'])) $_SESSION['admin_files_sort'] = $this->sortMethods[1];
		}
		
		$pgPos =($this->pagePos)?($this->pagePos - 1) * ITEMS:0;
		$this->OrderSort = ORDERBY.$_SESSION['admin_files_sort']." LIMIT ".$pgPos.",".ITEMS;
		if ($_SESSION['level'] < 2) {
			$this->Select = SELECT.FILES.".ID,".FILES.".FILENAME,".FILES.".DATEFILE,".USERS.".USERNAME".FROM.FILES.INNERJOIN.USERS._ON_.FILES.".USERID = ".USERS.".ID";
			$this->SelectCount = SELECT."COUNT(ID) AS NUM FROM ".FILES;
		} else {
			$_[] = "USERID='".$_SESSION['userid']."'";
			$query = $this->q(SELECT."ID,USERNAME".FROM.USERS.WHERE." USEROWNER='".$_SESSION['userid']."'");
			while ( $line = $this->fetch($query) ){
				$_[] = "USERID='".$line['ID']."'";
			}
			$this->Select = SELECT.FILES.".ID,".FILES.".FILENAME,".FILES.".DATEFILE,".USERS.".USERNAME".FROM.FILES.INNERJOIN.USERS._ON_.FILES.".USERID = ".USERS.".ID".$this->whereOr($_);
			$this->SelectCount = SELECT."COUNT(ID) AS NUM".FROM.FILES.$this->whereOr($_);
		}
	}
	public function getFilesUrlInput() {
		$h = $this->h;$t = $this->t;
		$sort = array($t->w("date")=>1,$t->w("file name")=>2,$t->w("user")=>3);
		if (isset($_SESSION['admin_files_sort'])) {
			$type = array_search($_SESSION['admin_files_sort'],$this->sortMethods);
		} else {
			$type = 1;
		}
		$inputs = $h->p($h->input("submit","",$t->w("sort/group by"))." ".$h->select($sort,"sort",$type));
		$result = $h->form($inputs,"sort","post","admin.php?action=files");
		$result .= $this->reset_form("files");
		
		$_[] = $h->p($h->input("submit","save",$t->w("update")));
		$_[] = $t->wr("add file").$h->input("file","addfile","","size=30");
		$query = $this->Select.$this->OrderSort;
		$query = $this->q($query);
		while ( $line = $this->fetch($query) ) {
			if (file_exists($line["FILENAME"])) {
				$size = $h->format_file_size(filesize($line["FILENAME"]));
				$params = stat($line["FILENAME"]);
				$_[] = $h->p(implode(" ",array($this->bordered($line["DATEFILE"]),$this->bordered($line["USERNAME"]),$this->bordered($t->wr("untie").$h->input("checkbox","delete|".$line["ID"]."|".getcwd()."/".$line["FILENAME"],"on")),$h->ahref($h->root_url($line["FILENAME"]),$line["FILENAME"],"target='_blank'"),$h->b($size))));
			} else {
				$_[] = $h->p(implode(" ",array($h->color("file doesn't exist","red"),$this->bordered($t->wr("delete").$h->input("checkbox","delete|".$line["ID"]."|".$line["FILENAME"],"on")),$h->ahref($h->root_url($line["FILENAME"]),$line["FILENAME"]),$h->b("none"),$line["USERNAME"])));
			}
		}
		$_[] = $h->input("hidden","update",1);
		$_[] = $h->p($h->input("submit","save",$t->w("update")));
		$inputs = implode("",$_);
		$result .= $h->form($inputs,"files","post","admin.php?action=files","multipart/form-data");
		$query = $this->SelectCount;
		$query = $this->q($query);
		$dat = $this->fetch($query);
		$pagesNumbers = new NextPages($dat["NUM"],"action=files");
		$result .= $h->p($pagesNumbers->numbers()." (".$dat["NUM"]." fics)");
		return $result;
	}
	public function getFilesUrl() {
		$h = $this->h;
		$t = $this->t;
		$sort = array($t->w("date")=>1,$t->w("file name")=>2,$t->w("user")=>3);
		if (isset($_SESSION['admin_files_sort'])) {
			$type = array_search($_SESSION['admin_files_sort'],$this->sortMethods);
		} else {
			$type = 1;
		}
		$inputs = $h->p($h->input("submit","",$t->w("sort/group by"))." ".$h->select($sort,"sort",$type));
		$result = $h->form($inputs,"sort","post","admin.php?action=list_files");
		$result .= $this->reset_form("files");
		$pgPos =($this->pagePos)?($this->pagePos - 1) * ITEMS:0;
		$orderSort = ORDERBY." DATEFILE DESC LIMIT ".$pgPos.",".ITEMS;
		$query = $this->Select.$orderSort;
		$query = $this->q($query);
		$files = array();
		while ( $line = $this->fetch($query) ) {
			if (file_exists($line["FILENAME"])) {
				$files[] = $h->root_url($line["FILENAME"]);
			}
		}
		$data = implode(" ",array_map('add_link',$files));
		$data = $h->ol($data);
		$query = $this->q($this->SelectCount);
		$dat = $this->fetch($query);
		$pagesNumbers = new NextPages($dat["NUM"],"action=list_files");
		$data .= $h->p($pagesNumbers->numbers()." (".$dat["NUM"]." fics)");
		$result .= $data;
		return $result;
	}
	public function update_files(){
		$h = $this->h;
		$t = $this->t;
		$now = time();
		$date = date("Y-m-d H:i:s",$now);
		$values = $_POST;
		foreach($values as $k=>$v){
			if ( preg_match("/delete\*\|/",$k) ){
				list($del,$id,$file) = explode("|",$k);
				@unlink($file);
			} elseif ( preg_match("/delete\|/",$k) ){
				list($del,$id,$file) = explode("|",$k);
				@unlink($file);
				$query = DELETE.FROM.FILES.WHERE." ID = ".$id;
				$query = $this->q($query);
			}
		}
		if (!empty($_FILES['addfile']["name"])) {
			$fileName = $_FILES['addfile']["name"];
			$ext = $h->get_ext($fileName);
			if ( !in_array($ext, $h->extUploadAllowed) && $_SESSION['level'] > 1) exit("file extension not allowed ! ".$ext);// accept all file in level 1
			$sendFile = move_uploaded_file($_FILES['addfile']["tmp_name"],"files/".$fileName);
			if ($sendFile) {
				$query = INSERTINTO.FILES." (FILENAME,USERID,DATEFILE) VALUES ('files/".$fileName."',".$h->num($_SESSION['userid']).",'".$date."')";
				//~ echo $query;
				$query = $this->q($query);
			}
		}
		return $this->h->h3($t->w("some values have been modified !"),"class='warning'");
	}
}
?>

page url