<?php
/* Ulyxex version 1.6.7.8 ***************/
/* code http://ulyxex.logz.org **********/
/* Andre Lozano http://andre-lozano.org */
class ViewFiles extends Admin {
	public string $dir;
	public int $pagePos;
	public array $sortMethods;
	public string $OrderSort;
	public string $Select;
	public string $SelectCount;
	
	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($_GET['ownerFilter'])) $_SESSION['ownerFilter'] = FILES.".USERID = ".$this->h->num($_GET['ownerFilter']);
		
		if (isset($_POST['reset'])){
			if (isset($_SESSION['admin_files_sort'])) $_SESSION['admin_files_sort'] = $this->sortMethods[1];
			if (isset($_SESSION['ownerFilter'])){$_SESSION['ownerFilter'] = "";}
		}
		
		$pgPos =($this->pagePos)?($this->pagePos - 1) * ITEMS:0;
		$this->OrderSort = ORDERBY.$_SESSION['admin_files_sort']." LIMIT ".$pgPos.",".ITEMS;
		if ($_SESSION['userid'] == 1) {
			if (isset($_SESSION['ownerFilter']) && $_SESSION['ownerFilter'] != "") {
				$this->Select = SELECT.FILES.".ID,".FILES.".FILENAME,".FILES.".DATEFILE,".USERS.".USERNAME".FROM.FILES.INNERJOIN.USERS._ON_.FILES.".USERID = ".USERS.".ID".WHERE.$_SESSION['ownerFilter'];
				$this->SelectCount = SELECT."COUNT(ID) AS NUM FROM ".FILES.WHERE.$_SESSION['ownerFilter'];
			} else {
				$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 if ($_SESSION['level'] < 2) {
			if (isset($_SESSION['ownerFilter']) && $_SESSION['ownerFilter'] != "") {
				$this->Select = SELECT.FILES.".ID,".FILES.".FILENAME,".FILES.".DATEFILE,".USERS.".USERNAME".FROM.FILES.INNERJOIN.USERS._ON_.FILES.".USERID = ".USERS.".ID".WHERE.$_SESSION['ownerFilter'];
				$this->SelectCount = SELECT."COUNT(ID) AS NUM FROM ".FILES.WHERE.$_SESSION['ownerFilter'];
			} else {
				$this->Select = SELECT.FILES.".ID,".FILES.".FILENAME,".FILES.".DATEFILE,".USERS.".USERNAME".FROM.FILES.INNERJOIN.USERS._ON_.FILES.".USERID = ".USERS.".ID".WHERE.FILES.".USERID != 1";
				$this->SelectCount = SELECT."COUNT(ID) AS NUM FROM ".FILES.WHERE.FILES.".USERID != 1";
			}
		} else {
			$_[] = "USERID='".$_SESSION['userid']."'";
			$query = $this->q(SELECT."ID,USERNAME".FROM.USERS.WHERE." USEROWNER='".$_SESSION['userid']."'");
			while ( $line = $this->fetch($query) ){
				$_[] = "USERID='".$line['ID']."'";
			}
			if (isset($_SESSION['ownerFilter']) && $_SESSION['ownerFilter'] != "") {
				$this->Select = SELECT.FILES.".ID,".FILES.".FILENAME,".FILES.".DATEFILE,".USERS.".USERNAME".FROM.FILES.INNERJOIN.USERS._ON_.FILES.".USERID = ".USERS.".ID".WHERE.$_SESSION['ownerFilter'];
				$this->SelectCount = SELECT."COUNT(ID) AS NUM".FROM.FILES.WHERE.$_SESSION['ownerFilter'];
			} else {
				$this->Select = SELECT.FILES.".ID,".FILES.".FILENAME,".FILES.".DATEFILE,".USERS.".USERNAME".FROM.FILES.INNERJOIN.USERS._ON_.FILES.".USERID = ".USERS.".ID".$this->where($_);
				$this->SelectCount = SELECT."COUNT(ID) AS NUM".FROM.FILES.$this->whereOr($_);
			}
			
			
		}
	}
	public function getFilesUrlInput($user=null) {
		$h = $this->h;$t = $this->t;
		$tree = New Tree();
		$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->select($sort,"sort",$type,$h->v("title",$t->w("sort/filter by")))." ".$h->input("submit",null,$t->w("sort/filter by")));
		$result = $h->form($inputs,"sort","post","admin.php?action=files");
		$result .= $h->p($tree->getListUsersMenu($via="files"),$h->v("class","sortbyusers"));
		$result .= $this->reset_form("files");
		
		$_[] = $h->p($h->input("submit",null,$t->w("update")));
		$_[] = $h->p(
			$h->h3(
				$t->wr("add file to").
				$t->wz("user").
				$h->span($user,$h->v("style","color:black"))
			).
			$h->lbl($t->wr("add file"),"addfile",$h->v("style","font-weight:bold;")).
			$h->input("file","addfile","",$h->v("size","30")).
			$t->wlr("or").
			$h->ahref("admin.php?action=ftp_files",$t->w("assign files FTP files"),$h->v("target","blank").$h->v("class","linkbtn")) 
		);
		
		$query = $this->Select.$this->OrderSort;
		$query = $this->q($query);
		while ( $line = $this->fetch($query) ) {
			if (file_exists($line["FILENAME"])) {
				$size = $h->octets(filesize($line["FILENAME"]));
				$params = stat($line["FILENAME"]);
				$_[] = $h->p(
					implode(
						"",
						array(
							$this->dashframe(substr($line['DATEFILE'],0,10)),
							$this->dashframe(" ".$h->strWidth($line["USERNAME"],20),$h->alt($t->wz("user").$line["USERNAME"])),
							$this->dashframe(
								$h->lbl(" ".$t->wr("untie"),"delete|".$line["ID"]."|".getcwd()."/".$line["FILENAME"]).
								$h->input("checkbox","delete|".$line["ID"]."|".getcwd()."/".$line["FILENAME"],"on")
							,$h->alt($t->wz("untie").substr($line["FILENAME"],6))
							),
							" ",
							$h->ahref(
								$line["FILENAME"],
								substr($line["FILENAME"],6),
								$h->v("target","blank").$h->alt($t->wz("show").substr($line["FILENAME"],6))
							),
							" ~".$size
						)
					)
			,$h->v("class","linebtns"));
			} else {
				$_[] = $h->p(
					implode(
						"",array(
							$this->dashframe(substr($line['DATEFILE'],0,10)),
							$this->dashframe(" ".$h->strWidth($line["USERNAME"],20),$h->alt($line["USERNAME"])),
							$this->dashframe(
								$h->lbl(" ".$t->wr("untie"),"delete|".$line["ID"]."|".getcwd()."/".$line["FILENAME"]).
								$h->input("checkbox","delete|".$line["ID"]."|".getcwd()."/".$line["FILENAME"],"on")
							,$h->alt($t->wz("untie").substr($line["FILENAME"],6))
							),
							" ",
							$h->ahref(
								$h->root_url($line["FILENAME"]),
								substr($line["FILENAME"],6),
								$h->alt($t->wz("show").substr($line["FILENAME"],6))
							),
							" ",
							$h->b($h->color("<< ".$t->w("file not found"),"red")),
						)
					),
				$h->v("class","linebtns"));
			}
		}
		$_[] = $h->input("hidden","update",1);
		$_[] = $h->p($h->input("submit",null,$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)",$h->v("class","pagenumbers"));
		$result .= $h->p($pagesNumbers->numbers(),$h->v("class","pagenumbers"));
		$result .= $h->p("(".$t->wr("total files")."= ".$dat["NUM"].")",$h->v("style","text-align:center"));
		return $result;
	}
	public function getLinkUrl() {
		$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;
		}
		$result = "";
		$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[] = $line["FILENAME"];
			}
		}
		$data = implode(" ",array_map('add_link',$files));
		$data = $h->ul($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)",$h->v("class","pagenumbers"));
		$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 $h->h3($t->w("some vals been modified !"),$h->v("class","warning"));
	}
}
?>

page url