ILIAS  Release_4_1_x_branch Revision 61804
 All Data Structures Namespaces Files Functions Variables Groups Pages
ilObjFile Class Reference

Class ilObjFile. More...

+ Inheritance diagram for ilObjFile:
+ Collaboration diagram for ilObjFile:

Public Member Functions

 ilObjFile ($a_id=0, $a_call_by_reference=true)
 Constructor public.
 create ($a_upload=false, $a_prevent_meta_data_creation=false)
 create object
 createProperties ($a_upload=false, $a_prevent_meta_data_creation=false)
 The basic properties of a file object are stored in table object_data.
 createMetaData ()
 create file object meta data
 MDUpdateListener ($a_element)
 Meta data update listener.
 getDirectory ($a_version=0)
 createDirectory ()
 raiseUploadError ($a_raise=true)
 getUploadFile ($a_upload_file, $a_filename)
 replaceFile ($a_upload_file, $a_filename)
 replace file with new file
 addFileVersion ($a_upload_file, $a_filename)
 copy ($a_source, $a_destination)
 copy file
 clearDataDirectory ()
 clear data directory
 deleteVersions ()
 read ()
 read file properties
 update ()
 update file
 updateMetaData ()
 update meta data
 setFileName ($a_name)
 set filename
 getFileName ()
 setFileType ($a_type)
 getFileType ()
 setFileSize ($a_size)
 getFileSize ()
 getDiskUsage ()
 Gets the disk usage of the object in bytes.
 getFile ($a_hist_entry_id=null)
 setVersion ($a_version)
 getVersion ()
 setMode ($a_mode)
 mode is object or filelist
 getMode ()
 mode is object or filelist
 _writeFileType ($a_id, $a_format)
 _lookupFileName ($a_id)
 _lookupFileSize ($a_id)
 Lookups the file size of the file in bytes.
 _lookupVersion ($a_id)
 lookup version
 determineFileSize ($a_hist_entry_id=null)
 Determine File Size.
 sendFile ($a_hist_entry_id=null)
 getFileExtension ()
 Returns the extension of the file name converted to lower-case.
 isInline ()
 Returns true, if this file should be displayed inline in a browser window.
 isHidden ()
 Returns true, if this file should be hidden in the repository view.
 guessFileType ($a_file="")
 Guesses the file type based on the current values returned by getFileType() and getFileExtension().
 cloneObject ($a_target_id, $a_copy_id=0)
 Clone.
 delete ()
 delete file and all related data
 export ($a_target_dir)
 export files of object to target directory note: target directory must be the export target directory, "/objects/il_<inst>_file_<file_id>/..." will be appended to this directory
 _deleteAllUsages ($a_type, $a_id, $a_usage_hist_nr=0)
 static delete all usages of
 _saveUsage ($a_mob_id, $a_type, $a_id, $a_usage_hist_nr=0)
 save usage
 getUsages ()
 get all usages of file object
 _getFilesOfObject ($a_type, $a_id, $a_usage_hist_nr=0)
 get all files of an object
 getXMLZip ()
 addNewsNotification ($a_lang_var)
 initFileStorage ()
 init file storage object
 storeUnzipedFile ($a_upload_file, $a_filename)
 storeUnzipedFile
 checkFileExtension ($new_filename, $new_title)
 Check if the file extension does still exist after an update of the title.
- Public Member Functions inherited from ilObject
 ilObject ($a_id=0, $a_reference=true)
 Constructor public.
 withReferences ()
 determines wehter objects are referenced or not (got ref ids or not)
 read ($a_force_db=false)
 read object data from db into object
 getId ()
 get object id public
 setId ($a_id)
 set object id public
 setRefId ($a_id)
 set reference id public
 getRefId ()
 get reference id public
 getType ()
 get object type public
 setType ($a_type)
 set object type public
 getPresentationTitle ()
 get presentation title Normally same as title Overwritten for sessions
 getTitle ()
 get object title public
 getUntranslatedTitle ()
 get untranslated object title public
 setTitle ($a_title)
 set object title
 getDescription ()
 get object description
 setDescription ($a_desc)
 set object description
 getLongDescription ()
 get object long description (stored in object_description)
 getImportId ()
 get import id
 setImportId ($a_import_id)
 set import id
 _lookupObjIdByImportId ($a_import_id)
 getOwner ()
 get object owner
 getOwnerName ()
 _lookupOwnerName ($a_owner_id)
 lookup owner name for owner id
 setOwner ($a_owner)
 set object owner
 getCreateDate ()
 get create date public
 getLastUpdateDate ()
 get last update date public
 setObjDataRecord ($a_record)
 set object_data record (note: this method should only be called from the ilObjectFactory class)
 create ()
 create
 deleteMetaData ()
 delete meta data entry
 updateOwner ()
 update owner of object in db
 _getIdForImportId ($a_import_id)
 get current object id for import id (static)
 _lookupOwner ($a_id)
 lookup object owner
 _lookupDescription ($a_id)
 lookup object description
 _lookupLastUpdate ($a_id, $a_as_string=false)
 lookup last update
 _getLastUpdateOfObjects ($a_objs)
 Get last update for a set of media objects.
 _setDeletedDate ($a_ref_id)
 only called in ilTree::saveSubTree
 _resetDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes
 _lookupDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes
 _writeTitle ($a_obj_id, $a_title)
 write title to db (static)
 _writeDescription ($a_obj_id, $a_desc)
 write description to db (static)
 _writeImportId ($a_obj_id, $a_import_id)
 write import id to db (static)
 _isInTrash ($a_ref_id)
 checks wether object is in trash
 _hasUntrashedReference ($a_obj_id)
 checks wether an object has at least one reference that is not in trash
 _lookupObjectId ($a_ref_id)
 lookup object id
 _getObjectsDataForType ($a_type, $a_omit_trash=false)
 get all objects of a certain type
 putInTree ($a_parent_ref)
 maybe this method should be in tree object!?
 setPermissions ($a_parent_ref)
 set permissions of object
 createReference ()
 creates reference for object
 countReferences ()
 count references of object
 initDefaultRoles ()
 init default roles settings Purpose of this function is to create a local role folder and local roles, that are needed depending on the object type If you want to setup default local roles you MUST overwrite this method in derived object classes (see ilObjForum for an example) public
 createRoleFolder ()
 creates a local role folder
 notify ($a_event, $a_ref_id, $a_parent_non_rbac_id, $a_node_id, $a_params=0)
 notifys an object about an event occured Based on the event passed, each object may decide how it reacts.
 setRegisterMode ($a_bool)
 isUserRegistered ($a_user_id=0)
 requireRegistration ()
 getHTMLDirectory ()
 appendCopyInfo ($a_target_id, $a_copy_id)
 Prepend Copy info if object with same name exists in that container.
 cloneDependencies ($a_target_id, $a_copy_id)
 Clone object dependencies.
 cloneMetaData ($target_obj)
 Copy meta data.

Static Public Member Functions

static _lookupAbsolutePath ($obj_id, $a_version=null)
 return absolute path for version
- Static Public Member Functions inherited from ilObject
static _getAllReferences ($a_id)
 get all reference ids of object
static _lookupTitle ($a_id)
 lookup object title
static _getIdsForTitle ($title, $type= '', $partialmatch=false)
static _lookupObjId ($a_id)
static _lookupType ($a_id, $a_reference=false)
 lookup object type
 _exists ($a_id, $a_reference=false)
 checks if an object exists in object_data
static _getObjectsByType ($a_obj_type="", $a_owner="")
 Get objects by type.
static _prepareCloneSelection ($a_ref_ids, $new_type)
 Prepare copy wizard object selection.
static _getIcon ($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
 Get icon for repository item.
static collectDeletionDependencies (&$deps, $a_ref_id, $a_obj_id, $a_type, $a_depth=0)
 Collect deletion dependencies.
static getDeletionDependencies ($a_obj_id)
 Get deletion dependencies.

Data Fields

 $filename
 $filetype
 $filemaxsize = "20000000"
 $raise_upload_error
 $mode = "object"
- Data Fields inherited from ilObject
const TITLE_LENGTH = 128
 max length of object title
 $ilias
 $lng
 $id
 $ref_id
 $type
 $title
 $untranslatedTitle
 $desc
 $long_desc
 $owner
 $create_date
 $last_update
 $import_id
 $register = false
 $referenced
 $objectList
 $max_title
 $max_desc
 $add_dots
 $obj_data_record
 object_data record

Private Attributes

 $file_storage = null

Detailed Description

Class ilObjFile.

Author
Sascha Hofmann shofm.nosp@m.ann@.nosp@m.datab.nosp@m.ay.d.nosp@m.e
Version
Id:
class.ilObjFile.php 24296 2010-06-17 13:01:05Z akill

Definition at line 18 of file class.ilObjFile.php.

Member Function Documentation

ilObjFile::_deleteAllUsages (   $a_type,
  $a_id,
  $a_usage_hist_nr = 0 
)

static delete all usages of

Definition at line 819 of file class.ilObjFile.php.

References $ilDB.

Referenced by ilPageObject\delete(), and ilPageObject\saveFileUsage().

{
global $ilDB;
$ilDB->manipulate("DELETE FROM file_usage WHERE usage_type = ".
$ilDB->quote($a_type, "text").
" AND usage_id = ".$ilDB->quote((int) $a_id, "integer").
" AND usage_hist_nr = ".$ilDB->quote((int) $a_usage_hist_nr, "integer"));
}

+ Here is the caller graph for this function:

ilObjFile::_getFilesOfObject (   $a_type,
  $a_id,
  $a_usage_hist_nr = 0 
)

get all files of an object

Parameters
string$a_typeobject type (e.g. "lm:pg")
int$a_idobject id
Returns
array array of file ids

Definition at line 878 of file class.ilObjFile.php.

References $ilDB, and $ret.

Referenced by ilObjGlossary\exportHTMLGlossaryTerms(), ilObjContentObject\exportHTMLGlossaryTerms(), ilObjContentObject\exportHTMLPages(), ilPageObject\getLastUpdateOfIncludedElements(), ilCOPageExporter\getXmlExportHeadDependencies(), and ilPageObject\update().

{
global $ilDB;
// get usages in learning modules
$q = "SELECT * FROM file_usage WHERE ".
"usage_id = ".$ilDB->quote((int) $a_id, "integer")." AND ".
"usage_type = ".$ilDB->quote((string) $a_type, "text")." AND ".
"usage_hist_nr = ".$ilDB->quote((int) $a_usage_hist_nr, "integer");
$file_set = $ilDB->query($q);
$ret = array();
while($file_rec = $ilDB->fetchAssoc($file_set))
{
$ret[$file_rec["id"]] = $file_rec["id"];
}
return $ret;
}

+ Here is the caller graph for this function:

static ilObjFile::_lookupAbsolutePath (   $obj_id,
  $a_version = null 
)
static

return absolute path for version

Definition at line 977 of file class.ilObjFile.php.

References $file_storage, $filename, _lookupFileName(), and _lookupVersion().

Referenced by ilObjFolder\recurseFolder().

{
$version_subdir = "";
if (!is_numeric($a_version))
{
$a_version = ilObjFile::_lookupVersion ($obj_id);
}
$version_subdir = DIRECTORY_SEPARATOR.sprintf("%03d", $a_version);
return $file_storage->getAbsolutePath().$version_subdir.DIRECTORY_SEPARATOR.$filename;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::_lookupFileName (   $a_id)

Definition at line 501 of file class.ilObjFile.php.

References $ilDB, $row, DB_FETCHMODE_OBJECT, and ilUtil\stripSlashes().

Referenced by _lookupAbsolutePath(), and ilSCORM2004PageGUI\setDefaultLinkXml().

{
global $ilDB;
$q = "SELECT * FROM file_data WHERE file_id = ".$ilDB->quote($a_id ,'integer');
$r = $ilDB->query($q);
$row = $r->fetchRow(DB_FETCHMODE_OBJECT);
return ilUtil::stripSlashes($row->file_name);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::_lookupFileSize (   $a_id)

Lookups the file size of the file in bytes.

Definition at line 514 of file class.ilObjFile.php.

Referenced by ilPageObject\addFileSizes(), ilObjFileDAV\getContentLength(), and ilObjFileGUI\infoScreen().

{
require_once("./Modules/File/classes/class.ilObjFileAccess.php");
}

+ Here is the caller graph for this function:

ilObjFile::_lookupVersion (   $a_id)

lookup version

Definition at line 523 of file class.ilObjFile.php.

Referenced by _lookupAbsolutePath().

{
require_once("./Modules/File/classes/class.ilObjFileAccess.php");
}

+ Here is the caller graph for this function:

ilObjFile::_saveUsage (   $a_mob_id,
  $a_type,
  $a_id,
  $a_usage_hist_nr = 0 
)

save usage

Definition at line 832 of file class.ilObjFile.php.

References $ilDB.

Referenced by ilPageObject\saveFileUsage().

{
global $ilDB;
$ilDB->manipulate("DELETE FROM file_usage WHERE usage_type = ".
$ilDB->quote((string) $a_type, "text").
" AND usage_id = ".$ilDB->quote((int) $a_id, "integer").
" AND usage_hist_nr = ".$ilDB->quote((int) $a_usage_hist_nr, "integer").
" AND id = ".$ilDB->quote((int) $a_mob_id, "integer"));
$ilDB->manipulate("INSERT INTO file_usage (id, usage_type, usage_id, usage_hist_nr) VALUES".
" (".$ilDB->quote((int) $a_mob_id, "integer").",".
$ilDB->quote((string) $a_type, "text").",".
$ilDB->quote((int) $a_id, "integer").",".
$ilDB->quote((int) $a_usage_hist_nr, "integer").")");
}

+ Here is the caller graph for this function:

ilObjFile::_writeFileType (   $a_id,
  $a_format 
)

Definition at line 490 of file class.ilObjFile.php.

References $ilDB, and $res.

Referenced by MDUpdateListener().

{
global $ilDB;
$q = "UPDATE file_data SET ".
" file_type = ".$ilDB->quote($a_format ,'text').
" WHERE file_id = ".$ilDB->quote($a_id ,'integer');
$res = $ilDB->manipulate($q);
}

+ Here is the caller graph for this function:

ilObjFile::addFileVersion (   $a_upload_file,
  $a_filename 
)

Definition at line 251 of file class.ilObjFile.php.

References ilHistory\_createEntry(), addNewsNotification(), ilObject\getId(), and getUploadFile().

{
$this->getUploadFile($a_upload_file, $a_filename);
require_once("classes/class.ilHistory.php");
$this->getId(),
"new_version",
$a_filename.",".$this->getVersion()
);
$this->setFilename($a_filename);
$this->addNewsNotification("file_updated");
}

+ Here is the call graph for this function:

ilObjFile::addNewsNotification (   $a_lang_var)

Definition at line 910 of file class.ilObjFile.php.

References ilObject\getDescription(), ilObject\getId(), ilObject\getType(), isHidden(), NEWS_NOTICE, and NEWS_USERS.

Referenced by addFileVersion(), createProperties(), and replaceFile().

{
// BEGIN WebDAV Suppress news notification for hidden files
if ($this->isHidden()) {
return;
}
// END WebDAV Suppress news notification for hidden files
global $ilUser;
// Add Notification to news
include_once("./Services/News/classes/class.ilNewsItem.php");
include_once("./Modules/File/classes/class.ilObjFileAccess.php");
$news_item = new ilNewsItem();
$news_item->setContext($this->getId(), $this->getType());
$news_item->setPriority(NEWS_NOTICE);
$news_item->setTitle($a_lang_var);
$news_item->setContentIsLangVar(true);
if ($this->getDescription() != "")
{
$news_item->setContent(
"<p>".
$this->getDescription()."</p>");
}
$news_item->setUserId($ilUser->getId());
$news_item->setVisibility(NEWS_USERS);
$news_item->create();
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::checkFileExtension (   $new_filename,
  $new_title 
)

Check if the file extension does still exist after an update of the title.

Returns

Definition at line 995 of file class.ilObjFile.php.

References ilObjFileAccess\_getFileExtension(), and getFileName().

Referenced by MDUpdateListener().

{
include_once './Modules/File/classes/class.ilObjFileAccess.php';
$fileExtension = ilObjFileAccess::_getFileExtension($new_filename);
$titleExtension = ilObjFileAccess::_getFileExtension($new_title);
if ($titleExtension != $fileExtension && strlen($fileExtension) > 0)
{
// remove old extension
$pi = pathinfo($this->getFileName());
$suffix = $pi["extension"];
if ($suffix != "")
{
if (substr($new_title,
strlen($new_title) - strlen($suffix) - 1)
== ".".$suffix)
{
$new_title = substr($new_title, 0, strlen($new_title) - strlen($suffix) - 1);
}
}
$new_title .= '.'.$fileExtension;
}
return $new_title;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::clearDataDirectory ( )

clear data directory

Definition at line 278 of file class.ilObjFile.php.

References createDirectory(), ilUtil\delDir(), and getDirectory().

Referenced by deleteVersions().

{
$this->createDirectory();
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::cloneObject (   $a_target_id,
  $a_copy_id = 0 
)

Clone.

public

Parameters
inttarget id
intcopy id

Reimplemented from ilObject.

Definition at line 715 of file class.ilObjFile.php.

References $ilDB, $query, $res, ilHistory\_copyEntriesForObject(), ilObject\cloneMetaData(), getDirectory(), ilObject\getId(), and ilUtil\rCopy().

{
global $ilDB;
$new_obj = parent::cloneObject($a_target_id,$a_copy_id);
$new_obj->createDirectory();
$this->cloneMetaData($new_obj);
// Copy all file versions
ilUtil::rCopy($this->getDirectory(),$new_obj->getDirectory());
// object created now copy other settings
$query = "INSERT INTO file_data (file_id,file_name,file_type,file_size,version,f_mode) VALUES (".
$ilDB->quote($new_obj->getId() ,'integer').",".
$ilDB->quote($this->getFileName() ,'text').",".
$ilDB->quote($this->getFileType() ,'text').",".
$ilDB->quote((int) $this->getFileSize() ,'integer').", ".
$ilDB->quote($this->getVersion() ,'integer').", ".
$ilDB->quote($this->getMode() ,'text').")";
$res = $ilDB->manipulate($query);
// copy history entries
require_once("classes/class.ilHistory.php");
ilHistory::_copyEntriesForObject($this->getId(),$new_obj->getId());
// add news notification
$new_obj->addNewsNotification("file_created");
return $new_obj;
}

+ Here is the call graph for this function:

ilObjFile::copy (   $a_source,
  $a_destination 
)

copy file

Definition at line 270 of file class.ilObjFile.php.

References getDirectory().

{
return copy($a_source,$this->getDirectory()."/".$a_destination);
}

+ Here is the call graph for this function:

ilObjFile::create (   $a_upload = false,
  $a_prevent_meta_data_creation = false 
)

create object

Parameters
boolupload mode (if enabled no entries in file_data will be done)

Definition at line 53 of file class.ilObjFile.php.

References ilObject\create(), and createProperties().

{
$new_id = parent::create();
//BEGIN WebDAV Move Property creation into a method of its own.
$this->createProperties($a_upload);
//END WebDAV Move Property creation into a method of its own.
return $new_id;
}

+ Here is the call graph for this function:

ilObjFile::createDirectory ( )

Definition at line 209 of file class.ilObjFile.php.

References getDirectory(), and ilUtil\makeDirParents().

Referenced by clearDataDirectory().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::createMetaData ( )

create file object meta data

Reimplemented from ilObject.

Definition at line 117 of file class.ilObjFile.php.

References getFileSize(), getFileType(), ilObject\getId(), and ilObject\getType().

Referenced by createProperties().

{
// add technical section with file size and format
$md_obj =& new ilMD($this->getId(),0,$this->getType());
$technical = $md_obj->addTechnical();
$technical->setSize($this->getFileSize());
$technical->save();
$format = $technical->addFormat();
$format->setFormat($this->getFileType());
$format->save();
$technical->update();
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::createProperties (   $a_upload = false,
  $a_prevent_meta_data_creation = false 
)

The basic properties of a file object are stored in table object_data.

This is not sufficient for a file object. Therefore we create additional properties in table file_data. This method has been put into a separate operation, to allow a WebDAV Null resource (class.ilObjNull.php) to become a file object.

Definition at line 71 of file class.ilObjFile.php.

References $_GET, $ilDB, $res, ilHistory\_createEntry(), ilNewsItem\_getDefaultVisibilityForRefId(), ilBlockSetting\_write(), addNewsNotification(), createMetaData(), getFileName(), getFileSize(), getFileType(), ilObject\getId(), getMode(), and initFileStorage().

Referenced by create().

{
global $ilDB,$tree;
// Create file directory
$this->initFileStorage();
$this->file_storage->create();
if($a_upload)
{
return true;
}
// not upload mode
require_once("classes/class.ilHistory.php");
ilHistory::_createEntry($this->getId(), "create", $this->getFileName().",1");
$this->addNewsNotification("file_created");
require_once("./Services/News/classes/class.ilNewsItem.php");
$default_visibility = ilNewsItem::_getDefaultVisibilityForRefId($_GET['ref_id']);
if ($default_visibility == "public")
{
ilBlockSetting::_write("news", "public_notifications",
1, 0, $this->getId());
}
$q = "INSERT INTO file_data (file_id,file_name,file_type,file_size,version,f_mode) "
."VALUES (".$ilDB->quote($this->getId() ,'integer').","
.$ilDB->quote($this->getFileName() ,'text').","
.$ilDB->quote($this->getFileType() ,'text').","
.$ilDB->quote((int) $this->getFileSize() ,'integer').","
.$ilDB->quote(1 ,'integer').",".$ilDB->quote($this->getMode() ,'text').")";
$res = $ilDB->manipulate($q);
// no meta data handling for file list files
if ($this->getMode() != "filelist" && !$a_prevent_meta_data_creation)
{
$this->createMetaData();
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::delete ( )

delete file and all related data

public

Returns
boolean true if all object data were removed; false if only a references were removed

Reimplemented from ilObject.

Definition at line 753 of file class.ilObjFile.php.

References $ilDB, ilHistory\_removeEntriesForObject(), ilUtil\delDir(), ilObject\deleteMetaData(), getDirectory(), ilObject\getId(), getMode(), and getUsages().

{
global $ilDB;
// check, if file is used somewhere
$usages = $this->getUsages();
if (count($usages) == 0)
{
// always call parent delete function first!!
if (!parent::delete())
{
return false;
}
// delete file data entry
$q = "DELETE FROM file_data WHERE file_id = ".$ilDB->quote($this->getId() ,'integer');
$this->ilias->db->query($q);
// delete history entries
require_once("classes/class.ilHistory.php");
// delete entire directory and its content
if (@is_dir($this->getDirectory()))
{
}
// delete meta data
if ($this->getMode() != "filelist")
{
$this->deleteMetaData();
}
return true;
}
return false;
}

+ Here is the call graph for this function:

ilObjFile::deleteVersions ( )

Definition at line 284 of file class.ilObjFile.php.

References $ilDB, ilHistory\_removeEntriesForObject(), clearDataDirectory(), ilObject\getId(), and setVersion().

{
global $ilDB;
$ilDB->manipulate("UPDATE file_data SET version = 1 WHERE file_id = ".$ilDB->quote($this->getId() ,'integer'));
$this->setVersion(0);
require_once("classes/class.ilHistory.php");
}

+ Here is the call graph for this function:

ilObjFile::determineFileSize (   $a_hist_entry_id = null)

Determine File Size.

Definition at line 532 of file class.ilObjFile.php.

References $data, $file, ilHistory\_getEntryByHistoryID(), getDirectory(), getFileName(), getVersion(), and setFileSize().

{
if (is_null($a_hist_entry_id))
{
$file = $this->getDirectory($this->getVersion())."/".$this->getFileName();
}
else
{
require_once("classes/class.ilHistory.php");
$entry = ilHistory::_getEntryByHistoryID($a_hist_entry_id);
if ($entry === false)
{
return false;
}
$data = explode(",",$entry["info_params"]);
// bugfix: first created file had no version number
// this is a workaround for all files created before the bug was fixed
if (empty($data[1]))
{
$data[1] = "1";
}
$file = $this->getDirectory($data[1])."/".$data[0];
}
$this->setFileSize(filesize($file));
}

+ Here is the call graph for this function:

ilObjFile::export (   $a_target_dir)

export files of object to target directory note: target directory must be the export target directory, "/objects/il_<inst>_file_<file_id>/..." will be appended to this directory

Parameters
string$a_target_dirtarget directory

Definition at line 801 of file class.ilObjFile.php.

References getDirectory(), ilObject\getId(), getVersion(), ilUtil\makeDir(), and ilUtil\rCopy().

{
$subdir = "il_".IL_INST_ID."_file_".$this->getId();
ilUtil::makeDir($a_target_dir."/objects/".$subdir);
$filedir = $this->getDirectory($this->getVersion());
if (@!is_dir($filedir))
{
$filedir = $this->getDirectory();
}
ilUtil::rCopy($filedir, $a_target_dir."/objects/".$subdir);
}

+ Here is the call graph for this function:

ilObjFile::getDirectory (   $a_version = 0)

Definition at line 190 of file class.ilObjFile.php.

References initFileStorage().

Referenced by clearDataDirectory(), cloneObject(), copy(), createDirectory(), delete(), determineFileSize(), export(), getFile(), getUploadFile(), getXMLZip(), sendFile(), and storeUnzipedFile().

{
$version_subdir = "";
if ($a_version)
{
// BEGIN WebDAV Avoid double slash before version subdirectory
$version_subdir = sprintf("%03d", $a_version);
// END WebDAV Avoid double slash before version subdirectory
}
if(!is_object($this->file_storage))
{
$this->initFileStorage();
}
return $this->file_storage->getAbsolutePath().'/'.$version_subdir;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::getDiskUsage ( )

Gets the disk usage of the object in bytes.

public

Returns
integer the disk usage in bytes

Reimplemented from ilObject.

Definition at line 421 of file class.ilObjFile.php.

References ilObjFileAccess\_lookupDiskUsage().

{
require_once("./Modules/File/classes/class.ilObjFileAccess.php");
}

+ Here is the call graph for this function:

ilObjFile::getFile (   $a_hist_entry_id = null)

Definition at line 429 of file class.ilObjFile.php.

References $data, $file, ilHistory\_getEntryByHistoryID(), getDirectory(), getFileName(), and getVersion().

{
if (is_null($a_hist_entry_id))
{
$file = $this->getDirectory($this->getVersion())."/".$this->getFileName();
}
else
{
require_once("classes/class.ilHistory.php");
$entry = ilHistory::_getEntryByHistoryID($a_hist_entry_id);
if ($entry === false)
{
return false;
}
$data = explode(",",$entry["info_params"]);
// bugfix: first created file had no version number
// this is a workaround for all files created before the bug was fixed
if (empty($data[1]))
{
$data[1] = "1";
}
$file = $this->getDirectory($data[1])."/".$data[0];
}
return $file;
}

+ Here is the call graph for this function:

ilObjFile::getFileExtension ( )

Returns the extension of the file name converted to lower-case.

e.g. returns 'pdf' for 'document.pdf'.

Definition at line 626 of file class.ilObjFile.php.

References ilObjFileAccess\_getFileExtension(), and ilObject\getTitle().

{
require_once 'class.ilObjFileAccess.php';
}

+ Here is the call graph for this function:

ilObjFile::getFileName ( )

Definition at line 388 of file class.ilObjFile.php.

References $filename.

Referenced by checkFileExtension(), createProperties(), determineFileSize(), getFile(), getXMLZip(), MDUpdateListener(), sendFile(), and update().

{
}

+ Here is the caller graph for this function:

ilObjFile::getFileSize ( )

Definition at line 411 of file class.ilObjFile.php.

Referenced by createMetaData(), createProperties(), update(), and updateMetaData().

{
return $this->filesize;
}

+ Here is the caller graph for this function:

ilObjFile::getFileType ( )

Definition at line 401 of file class.ilObjFile.php.

References $filetype.

Referenced by createMetaData(), createProperties(), guessFileType(), and updateMetaData().

{
}

+ Here is the caller graph for this function:

ilObjFile::getMode ( )

mode is object or filelist

Returns
string mode

Definition at line 485 of file class.ilObjFile.php.

References $mode.

Referenced by createProperties(), delete(), and update().

{
return $this->mode;
}

+ Here is the caller graph for this function:

ilObjFile::getUploadFile (   $a_upload_file,
  $a_filename 
)

Definition at line 219 of file class.ilObjFile.php.

References $file, getDirectory(), getVersion(), ilUtil\makeDirParents(), ilUtil\moveUploadedFile(), and setVersion().

Referenced by addFileVersion(), and replaceFile().

{
$this->setVersion($this->getVersion() + 1);
if (@!is_dir($this->getDirectory($this->getVersion())))
{
}
$file = $this->getDirectory($this->getVersion())."/".$a_filename;
//move_uploaded_file($a_upload_file, $file);
ilUtil::moveUploadedFile($a_upload_file, $a_filename, $file, $this->raise_upload_error);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::getUsages ( )

get all usages of file object

Definition at line 852 of file class.ilObjFile.php.

References $ilDB, $ret, and ilObject\getId().

Referenced by delete().

{
global $ilDB;
// get usages in learning modules
$q = "SELECT * FROM file_usage WHERE id = ".$ilDB->quote($this->getId(), "integer");
$us_set = $ilDB->query($q);
$ret = array();
while($us_rec = $ilDB->fetchAssoc($us_set))
{
$ret[] = array("type" => $us_rec["usage_type"],
"id" => $us_rec["usage_id"],
"hist_nr" => $us_rec["usage_hist_nr"]);
}
return $ret;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::getVersion ( )

Definition at line 465 of file class.ilObjFile.php.

Referenced by determineFileSize(), export(), getFile(), getUploadFile(), sendFile(), storeUnzipedFile(), and update().

{
return $this->version;
}

+ Here is the caller graph for this function:

ilObjFile::getXMLZip ( )

Reimplemented from ilObject.

Definition at line 898 of file class.ilObjFile.php.

References ilObject\$ilias, ilUtil\escapeShellArg(), getDirectory(), and getFileName().

{
global $ilias;
$zip = PATH_TO_ZIP;
exec($zip.' '.ilUtil::escapeShellArg($this->getDirectory().'/'.$this->getFileName())." ".
ilUtil::escapeShellArg($this->getDirectory().'/'.'1.zip'));
return $this->getDirectory().'/1.zip';
}

+ Here is the call graph for this function:

ilObjFile::guessFileType (   $a_file = "")

Guesses the file type based on the current values returned by getFileType() and getFileExtension().

If getFileType() returns 'application/octet-stream', the file extension is used to guess a more accurate file type.

Definition at line 654 of file class.ilObjFile.php.

References $filename, $path, getFileType(), and ilMimeTypeUtil\getMimeType().

Referenced by sendFile().

{
$path = pathinfo($a_file);
if ($path["extension"] != "")
{
$filename = $path["basename"];
}
else
{
$filename = "dummy.".$this->getFileExtension();
}
include_once("./Services/Utilities/classes/class.ilMimeTypeUtil.php");
$mime = ilMimeTypeUtil::getMimeType($a_file, $filename, $this->getFileType());
return $mime;
/*
$fileType = $this->getFileType();
if (strlen($fileType) == 0) {
$fileType = 'application/octet-stream';
}
// Firefox browser assigns 'application/x-pdf' to PDF files, but
// it can only handle them if the have the mime-type 'application/pdf'.
if ($fileType == 'application/x-pdf')
{
$fileType = 'application/pdf';
}
if ($fileType == 'application/octet-stream')
{
$fileExtension = $this->getFileExtension();
$mimeArray = array(
'mpeg' => 'video/mpeg',
'mp3' => 'audio/mpeg',
'pdf' => 'application/pdf',
'gif' => 'image/gif',
'jpg' => 'image/jpg',
'png' => 'image/png',
'htm' => 'text/html',
'html' => 'text/html',
'wma' => 'video/x-ms-wma',
'wmv' => 'video/x-ms-wmv',
'swf' => 'application/x-shockwave-flash',
);
if (array_key_exists($fileExtension, $mimeArray))
{
$fileType = $mimeArray[$fileExtension];
}
}
return $fileType;
*/
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::ilObjFile (   $a_id = 0,
  $a_call_by_reference = true 
)

Constructor public.

Parameters
integerreference_id or object_id
booleantreat the id as reference_id (true) or object_id (false)

Definition at line 35 of file class.ilObjFile.php.

References ilObject\getId(), ilObject\ilObject(), and initFileStorage().

{
$this->version = 0;
$this->type = "file";
$this->raise_upload_error = true;
$this->ilObject($a_id,$a_call_by_reference);
if($this->getId())
{
$this->initFileStorage();
}
}

+ Here is the call graph for this function:

ilObjFile::initFileStorage ( )

init file storage object

public

Definition at line 945 of file class.ilObjFile.php.

References ilObject\getId().

Referenced by createProperties(), getDirectory(), ilObjFile(), and read().

{
$this->file_storage = new ilFSStorageFile($this->getId());
return true;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::isHidden ( )

Returns true, if this file should be hidden in the repository view.

Definition at line 642 of file class.ilObjFile.php.

References ilObjFileAccess\_isFileHidden(), and ilObject\getTitle().

Referenced by addNewsNotification().

{
require_once 'class.ilObjFileAccess.php';
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::isInline ( )

Returns true, if this file should be displayed inline in a browser window.

This is especially useful for PDF documents, HTML pages, and for images which are directly supported by the browser.

Definition at line 635 of file class.ilObjFile.php.

References ilObjFileAccess\_isFileInline(), and ilObject\getTitle().

Referenced by sendFile().

{
require_once 'class.ilObjFileAccess.php';
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjFile::MDUpdateListener (   $a_element)

Meta data update listener.

Important note: Do never call create() or update() method of ilObject here. It would result in an endless loop: update object -> update meta -> update object -> ... Use static _writeTitle() ... methods instead.

Parameters
string$a_element

Reimplemented from ilObject.

Definition at line 143 of file class.ilObjFile.php.

References ilObject\$id, ilObject\$title, _writeFileType(), checkFileExtension(), getFileName(), ilObject\getId(), ilObject\getType(), and setFileType().

{
// Check file extension
// Removing the file extension is not allowed
include_once 'Services/MetaData/classes/class.ilMD.php';
$md = new ilMD($this->getId(),0, $this->getType());
if(!is_object($md_gen = $md->getGeneral()))
{
return false;
}
$title = $this->checkFileExtension($this->getFileName(), $md_gen->getTitle());
$md_gen->setTitle($title);
$md_gen->update();
// handling for general section
// handling for technical section
include_once 'Services/MetaData/classes/class.ilMD.php';
//echo "-".$a_element."-";
switch($a_element)
{
case 'Technical':
// Update Format (size is not stored in db)
$md = new ilMD($this->getId(),0, $this->getType());
if(!is_object($md_technical = $md->getTechnical()))
{
return false;
}
foreach($md_technical->getFormatIds() as $id)
{
$md_format = $md_technical->getFormat($id);
ilObjFile::_writeFileType($this->getId(),$md_format->getFormat());
$this->setFileType($md_format->getFormat());
break;
}
break;
default:
}
return true;
}

+ Here is the call graph for this function:

ilObjFile::raiseUploadError (   $a_raise = true)

Definition at line 214 of file class.ilObjFile.php.

{
$this->raise_upload_error = $a_raise;
}
ilObjFile::read ( )

read file properties

Definition at line 300 of file class.ilObjFile.php.

References $ilDB, $row, DB_FETCHMODE_OBJECT, ilObject\getId(), initFileStorage(), setFileName(), setFileSize(), setFileType(), setMode(), and setVersion().

{
global $ilDB;
$q = "SELECT * FROM file_data WHERE file_id = ".$ilDB->quote($this->getId() ,'integer');
$r = $this->ilias->db->query($q);
$row = $r->fetchRow(DB_FETCHMODE_OBJECT);
$this->setFileName($row->file_name);
$this->setFileType($row->file_type);
$this->setFileSize($row->file_size);
$this->setVersion($row->version);
$this->setMode($row->f_mode);
$this->initFileStorage();
}

+ Here is the call graph for this function:

ilObjFile::replaceFile (   $a_upload_file,
  $a_filename 
)

replace file with new file

Definition at line 236 of file class.ilObjFile.php.

References ilHistory\_createEntry(), addNewsNotification(), ilObject\getId(), and getUploadFile().

{
$this->getUploadFile($a_upload_file, $a_filename);
require_once("classes/class.ilHistory.php");
$this->getId(),
"replace",
$a_filename.",".$this->getVersion()
);
$this->setFilename($a_filename);
$this->addNewsNotification("file_updated");
}

+ Here is the call graph for this function:

ilObjFile::sendFile (   $a_hist_entry_id = null)

Definition at line 561 of file class.ilObjFile.php.

References $data, $file, ilHistory\_getEntryByHistoryID(), ilUtil\deliverFile(), getDirectory(), getFileName(), ilObject\getTitle(), getVersion(), guessFileType(), and isInline().

{
if (is_null($a_hist_entry_id))
{
$file = $this->getDirectory($this->getVersion())."/".$this->getFileName();
// if not found lookup for file in file object's main directory for downward c ompability
if (@!is_file($file))
{
$file = $this->getDirectory()."/".$this->getFileName();
}
}
else
{
require_once("classes/class.ilHistory.php");
$entry = ilHistory::_getEntryByHistoryID($a_hist_entry_id);
if ($entry === false)
{
echo "3";return false;
}
$data = explode(",",$entry["info_params"]);
// bugfix: first created file had no version number
// this is a workaround for all files created before the bug was fixed
if (empty($data[1]))
{
$data[1] = "1";
}
$file = $this->getDirectory($data[1])."/".$data[0];
// if not found lookup for file in file object's main directory for downward compability
if (@!is_file($file))
{
$file = $this->getDirectory()."/".$data[0];
}
// BEGIN WebDAV removed duplicated code
// END WebDAV removed duplicated code
}
if (@is_file($file))
{
global $ilClientIniFile;
if ($ilClientIniFile->readVariable('file_access','download_with_uploaded_filename') != '1')
{
}
else
{
ilUtil::deliverFile($file, basename($file), $this->guessFileType($file), $this->isInline());
}
return true;
}
return false;
}

+ Here is the call graph for this function:

ilObjFile::setFileName (   $a_name)

set filename

Definition at line 383 of file class.ilObjFile.php.

Referenced by read().

{
$this->filename = $a_name;
}

+ Here is the caller graph for this function:

ilObjFile::setFileSize (   $a_size)

Definition at line 406 of file class.ilObjFile.php.

Referenced by determineFileSize(), and read().

{
$this->filesize = $a_size;
}

+ Here is the caller graph for this function:

ilObjFile::setFileType (   $a_type)

Definition at line 393 of file class.ilObjFile.php.

References $ilLog.

Referenced by MDUpdateListener(), and read().

{
global $ilLog;
$this->filetype = $a_type;
}

+ Here is the caller graph for this function:

ilObjFile::setMode (   $a_mode)

mode is object or filelist

Parameters
string$a_modemode

Definition at line 475 of file class.ilObjFile.php.

Referenced by read().

{
$this->mode = $a_mode;
}

+ Here is the caller graph for this function:

ilObjFile::setVersion (   $a_version)

Definition at line 460 of file class.ilObjFile.php.

Referenced by deleteVersions(), getUploadFile(), read(), and storeUnzipedFile().

{
$this->version = $a_version;
}

+ Here is the caller graph for this function:

ilObjFile::storeUnzipedFile (   $a_upload_file,
  $a_filename 
)

storeUnzipedFile

Stores Files unzipped from uploaded archive in filesystem

Parameters
string$a_upload_file
string$a_filename

Definition at line 959 of file class.ilObjFile.php.

References $file, getDirectory(), getVersion(), ilUtil\makeDir(), and setVersion().

{
$this->setVersion($this->getVersion() + 1);
if (@!is_dir($this->getDirectory($this->getVersion())))
{
}
$file = $this->getDirectory($this->getVersion())."/".$a_filename;
//move_uploaded_file($a_upload_file, $file);
rename($a_upload_file, $file);
}

+ Here is the call graph for this function:

ilObjFile::update ( )

update file

Reimplemented from ilObject.

Definition at line 322 of file class.ilObjFile.php.

References $ilDB, $ilLog, $res, getFileName(), getFileSize(), ilObject\getId(), getMode(), getVersion(), and updateMetaData().

{
global $ilDB;
// no meta data handling for file list files
if ($this->getMode() != "filelist")
{
$this->updateMetaData();
}
global $ilLog;
//$ilLog->write(__METHOD__.' File type: '.$this->getFileType());
$q = "UPDATE file_data SET file_name = ".$ilDB->quote($this->getFileName() ,'text').
", file_type = ".$ilDB->quote($this->getFiletype() ,'text')." ".
", file_size = ".$ilDB->quote((int) $this->getFileSize() ,'integer')." ".
", version = ".$ilDB->quote($this->getVersion() ,'integer')." ".
", f_mode = ".$ilDB->quote($this->getMode() ,'text')." ".
"WHERE file_id = ".$ilDB->quote($this->getId() ,'integer');
$res = $ilDB->manipulate($q);
return true;
}

+ Here is the call graph for this function:

ilObjFile::updateMetaData ( )

update meta data

Reimplemented from ilObject.

Definition at line 351 of file class.ilObjFile.php.

References getFileSize(), getFileType(), ilObject\getId(), and ilObject\getType().

Referenced by update().

{
// add technical section with file size and format
$md_obj =& new ilMD($this->getId(),0,$this->getType());
if(!is_object($technical = $md_obj->getTechnical()))
{
$technical = $md_obj->addTechnical();
$technical->save();
}
$technical->setSize($this->getFileSize());
$format_ids = $technical->getFormatIds();
if (count($format_ids) > 0)
{
$format = $technical->getFormat($format_ids[0]);
$format->setFormat($this->getFileType());
$format->update();
}
else
{
$format = $technical->addFormat();
$format->setFormat($this->getFileType());
$format->save();
}
$technical->update();
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Field Documentation

ilObjFile::$file_storage = null
private

Definition at line 26 of file class.ilObjFile.php.

Referenced by _lookupAbsolutePath().

ilObjFile::$filemaxsize = "20000000"

Definition at line 22 of file class.ilObjFile.php.

ilObjFile::$filename

Definition at line 20 of file class.ilObjFile.php.

Referenced by _lookupAbsolutePath(), getFileName(), and guessFileType().

ilObjFile::$filetype

Definition at line 21 of file class.ilObjFile.php.

Referenced by getFileType().

ilObjFile::$mode = "object"

Definition at line 24 of file class.ilObjFile.php.

Referenced by getMode().

ilObjFile::$raise_upload_error

Definition at line 23 of file class.ilObjFile.php.


The documentation for this class was generated from the following file: