documentModify.inc 4.64 KB
<?php

/***
* Class documentModify.inc
*
* Contains all functions required to upload, alter and
* delete a document.
*
* @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa
* @date 13 January 2003
*/

require_once ("$default->owl_root_url/lib/owl.lib.php");

class DocumentModify {
	
	/**
	* Upload and store a new document
	*
	* @param $aUserDocument		An array containing uploaded file information generated by calling
	*							uploadCompat($varname) in owl.lib.php
	* @param $iFolderID			Folder in which to store document
	*
	* @return true on successful upload and storage, false otherwise and set $_SESSION["errorMessage"]
	*
	* @todo add URL functionality
	*/
	
	function uploadDocument($aUserDocument, $iFolderID) {
		global $lang_fileexists, $lang_err_upload;
		//check if the user has folder write permissions
		if ($this->hasFolderWritePermissions($iFolderID) || $this->hasWriteRoleForFolder($iFolderID) || $this->isInGroup("System Administrators")) {
			//if the user is within his quota after uploading the file
			if (isWithinQuote($aUserDocument["size"])) {
				$sNewPath = $this->generatePath($iFolderID);
				//if the file already exists, return false and display an error
				if(file_exists($sNewPath . $aUserDocument["name"])) {
					$_SESSION["errorMessage"] = $lang_fileexists
					return false;
				}
				copy($userfile["tmp_name"], $sNewPath);
				unlink($userfile["tmp_name"]);
				if(!file_exists($sNewPath)) { 
					if ($default->debug == true) {
                          $_SESSION["errorMessage"] = $lang_err_upload . "," .$sNewPath;
						  return false;
					} else {
                          $_SESSION["errorMessage"] = $lang_err_upload;
						  return false;					
                	}				
				}
		}
		
	}
	
	/**
	* Generate the path for the current folder by recursing up the tree to its parents
	*
	* @return path
	*/
	function generatePath($iFolderID) {
		return "";
		
	}
	
	/**
	* Checks whether the user will be within his/her current quota if a new file is uploaded
	* 
	* @param $iNewFileSize		Size of new file
	*
	* @return true if the user is within quota, false otherwise and sets $_SESSION["errorMessage"]
	*/
	
	function isWithinQuota($iNewFileSize) {
		return true;
	}
	
	/**
	* Generates a path for a folder
	*
	* @param $sFolderName	Name of folder to generate path for
	*
	* @returns generated path
	*/
	
	function generatePath($sFolderName) {
		
	}
	
	/**
	* Checks if the current user has write permission for a specific folder
	*	
	* @param $iFolderID		Primary key of folder to check
	*
	* @return true is the user has folder write permission, false otherwise and set $_SESSION["errorMessage"]
	*/
	function hasFolderWritePermission($iFolderID) {
		
		return true;
	}
	
	/**
	* Check is the user is assigned a specific role that has write permission for a folder
	*	
	* @param $iFolderID 	Primary key of folder to check
	*
	* @return true is the user has the role assigned, false otherwise and set $_SESSION["errorMessage"]
	*/
	function hasWriteRoleForFolder($iFolderID) {
		global $default;	
		$sql = new Owl_DB();
		$sql->query("SELECT * FROM " . $default->owl_folders_user_links_table . " AS FURL INNER JOIN " . $default->owl_role_table . " AS R ON FURL.role_id = R.id WHERE folder_id = " . $iFolderID . " AND user_id = " . $_SESSION["user_id"] . " AND R.can_write = 1");
		if ($sql->next_record()) {
			return true;
		}
		$_SESSION["errorMessage"] = $lang_err_user_role;		
		return false;		
	}
	
	/**
	* Checks if the current user is in a given role
	*
	* @param $sRoleName 	Name of role to check
	*
	* @return true if the user is in the role, false otherwise and sets $_SESSION["errorMessage"]
	*/
	function isInGroup($sGroupName) {
		return true;		
	}
	
	/**
	* Get the primary key for a role
	*
	* @param $sRoleName		Name of role to get primary key for
	*
	* @return ID if role exists, false otherwise and set $_SESSION["errorMessage"]
	*/
	function getRoleID($sRoleName) {
		global $default, $lang_database_error;
		if (roleExists($sRoleName) {
			$sql = new Owl_DB();
			$sql->query("SELECT id FROM " . $default->owl_role_table . " WHERE name = '" . $sRoleName . "'";
			sql->next_record();
			return sql->f("id");	
		}
		$_SESSION["errorMessage"] = $lang_database_error;
		return false;
	}
	
	/**
	* Checks if a given role exists
	*
	* @param $sRoleName		Role to check for
	*
	* @return true if role exists, false otherwise and set $_SESSION["errorMessage"] 
	*/
	function roleExists($sRoleName) {
		global $default;
		$sql = new Owl_DB();
		$sql->query("SELECT id FROM " . $default->owl_role_table . " WHERE name = '" . $sRoleName . "'";
		if (sql->next_record()) {
			return true;	
		}
		$_SESSION["errorMessage"] = $lang_err_role_not_exist . $sRoleName;
		return false;
	}
	
}

?>