documentos".$queryStr."
";
$resArr = $GLOBALS['mydms']->db->getResultArray($queryStr);
if (is_bool($resArr) && $resArr == false)
return false;
if (count($resArr) != 1)
return false;
$resArr = $resArr[0];
$newDocument = new Document($resArr["id"], $resArr["name"], $resArr["comment"], $resArr["date"], $resArr["expires"], $resArr["owner"], $resArr["folder"], $resArr[7], $resArr[8], $resArr[9], $resArr["keywords"], $resArr["sequence"]);
if($newDocument->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id'])) > M_NONE)
return $newDocument;
else
return false;
}
class Document
{
var $_id;
var $_name;
var $_comment;
var $_ownerID;
var $_folderID;
var $_expires;
var $_inheritAccess;
var $_defaultAccess;
var $_locked;
var $_keywords;
var $_sequence;
function Document($id, $name, $comment, $date, $expires, $ownerID, $folderID, $inheritAccess, $defaultAccess, $locked, $keywords, $sequence)
{
$this->_id = $id;
$this->_name = $name;
$this->_comment = $comment;
$this->_date = $date;
$this->_expires = $expires;
$this->_ownerID = $ownerID;
$this->_folderID = $folderID;
$this->_inheritAccess = $inheritAccess;
$this->_defaultAccess = $defaultAccess;
$this->_locked = $locked;
$this->_keywords = $keywords;
$this->_sequence = $sequence;
$this->db = clone($GLOBALS['phpgw']->db);
$this->db->set_app('mydms');
}
function getID() { return $this->_id; }
function getName() { return $this->_name; }
function setName($newName)
{
$data = array('name' => $newName);
$where = array('id' => $this->_id);
if(!$this->db->update('phpgw_mydms_Documents', $data, $where, __LINE__, __FILE__)) {
return false;
}
$this->_name = $newName;
return true;
}
function getComment() { return $this->_comment; }
function setComment($newComment)
{
$data = array('comment' => $newComment);
$where = array('id' => $this->_id);
if(!$this->db->update('phpgw_mydms_Documents', $data, $where, __LINE__, __FILE__)) {
return false;
}
$this->_comment = $newComment;
return true;
}
function getKeywords() { return $this->_keywords; }
function setKeywords($newKeywords)
{
$data = array('keywords' => $newKeywords);
$where = array('id' => $this->_id);
if(!$this->db->update('phpgw_mydms_Documents', $data, $where, __LINE__, __FILE__)) {
return false;
}
$this->_keywords = $newKeywords;
return true;
}
function getDate()
{
return $this->_date;
}
function getFolder()
{
if (!isset($this->_folder))
$this->_folder = getFolder($this->_folderID);
return $this->_folder;
}
function setFolder($newFolder)
{
$data = array('folder' => $newFolder->getID());
$where = array('id' => $this->_id);
if(!$this->db->update('phpgw_mydms_Documents', $data, $where, __LINE__, __FILE__)) {
return false;
}
$this->_folderID = $newFolder->getID();
$this->_folder = $newFolder;
return true;
}
function getOwner()
{
if (!isset($this->_owner))
$this->_owner = getUser($this->_ownerID);
return $this->_owner;
}
function setOwner($user)
{
$data = array('owner' => $user->getID());
$where = array('id' => $this->_id);
if(!$this->db->update('phpgw_mydms_Documents', $data, $where, __LINE__, __FILE__)) {
return false;
}
$this->_ownerID = $user->getID();
$this->_owner = $user;
return true;
}
function getDefaultAccess()
{
if ($this->inheritsAccess())
{
$res = $this->getFolder();
if (!$res) return false;
return $this->_folder->getDefaultAccess();
}
return $this->_defaultAccess;
}
function setDefaultAccess($mode)
{
$data = array('defaultAccess' => $mode);
$where = array('id' => $this->_id);
if(!$this->db->update('phpgw_mydms_Documents', $data, $where, __LINE__, __FILE__)) {
return false;
}
$this->_defaulAccess = $mode;
return true;
}
function inheritsAccess() { return $this->_inheritAccess; }
function setInheritAccess($inheritAccess)
{
$inheritAccess = ($inheritAccess) ? "1" : "0";
$data = array('inheritAccess' => $inheritAccess);
$where = array('id' => $this->_id);
if(!$this->db->update('phpgw_mydms_Documents', $data, $where, __LINE__, __FILE__)) {
return false;
}
$this->_inheritAccess = $inheritAccess;
return true;
}
function expires()
{
if (intval($this->_expires) == 0)
return false;
else
return true;
}
function getExpires()
{
if (intval($this->_expires) == 0)
return false;
else
return $this->_expires;
}
function setExpires($expires)
{
$expires = (!$expires) ? 0 : $expires;
$data = array('expires' => $expires);
$where = array('id' => $this->_id);
if(!$this->db->update('phpgw_mydms_Documents', $data, $where, __LINE__, __FILE__)) {
return false;
}
$this->_expires = $expires;
return true;
}
function isLocked() { return $this->_locked != -1; }
function setLocked($falseOrUser)
{
$locked = (is_object($falseOrUser)) ? $falseOrUser->getID() : -1;
$data = array('locked' => $locked);
$where = array('id' => $this->_id);
if(!$this->db->update('phpgw_mydms_Documents', $data, $where, __LINE__, __FILE__)) {
return false;
}
unset($this->_lockingUser);
$this->_locked = $locked;
return true;
}
function getLockingUser()
{
if (!$this->isLocked())
return false;
if (!isset($this->_lockingUser))
$this->_lockingUser = getUser($this->_locked);
return $this->_lockingUser;
}
function getSequence() { return $this->_sequence; }
function setSequence($seq)
{
$data = array('sequence' => $seq);
$where = array('id' => $this->_id);
if(!$this->db->update('phpgw_mydms_Documents', $data, $where, __LINE__, __FILE__)) {
return false;
}
$this->_sequence = $seq;
return true;
}
function clearAccessList()
{
$where = array(
'targetType' => T_DOCUMENT,
'target' => $this->_id,
);
if(!$this->db->delete('phpgw_mydms_ACLs', $where, __LINE__, __FILE__)) {
return false;
}
unset($this->_accessList);
return true;
}
function getAccessList()
{
if ($this->inheritsAccess())
{
$res = $this->getFolder();
if (!$res) return false;
return $this->_folder->getAccessList();
}
if (!isset($this->_accessList))
{
$cols = array('userID', 'groupID', 'mode');
$where = array(
'targetType' => T_DOCUMENT,
'target' => $this->_id,
);
if(!$this->db->select('phpgw_mydms_ACLs', $cols, $where, __LINE__, __FILE__, false, 'ORDER BY targetType')) {
return false;
}
$this->_accessList = array("groups" => array(), "users" => array());
while ($this->db->next_record()) {
if ($this->db->f('userID') != -1)
array_push($this->_accessList["users"], new UserAccess($this->db->f('userid'), $this->db->f('mode')));
else //if ($row["groupID"] != -1)
array_push($this->_accessList["groups"], new GroupAccess($this->db->f('groupid'), $this->db->f('mode')));
}
# $queryStr = "SELECT * FROM phpgw_mydms_ACLs WHERE targetType = ".T_DOCUMENT." AND target = " . $this->_id . " ORDER BY targetType";
# $resArr = $GLOBALS['mydms']->db->getResultArray($queryStr);
# if (is_bool($resArr) && !$resArr)
# return false;
#
# $this->_accessList = array("groups" => array(), "users" => array());
# foreach ($resArr as $row)
# {
# if ($row["userID"] != -1)
# array_push($this->_accessList["users"], new UserAccess($row["userID"], $row["mode"]));
# else //if ($row["groupID"] != -1)
# array_push($this->_accessList["groups"], new GroupAccess($row["groupID"], $row["mode"]));
# }
}
return $this->_accessList;
}
function addAccess($mode, $userOrGroupID, $isUser)
{
$userOrGroup = ($isUser) ? "userID" : "groupID";
$data = array (
'target' => $this->_id,
'targetType' => T_DOCUMENT,
$userOrGroup => $userOrGroupID,
'mode' => $mode,
);
$res = $this->db->insert('phpgw_mydms_ACLs', $data, '', __LINE__, __FILE__);
if (!$res) {
return false;
}
#$queryStr = "INSERT INTO phpgw_mydms_ACLs (target, targetType, ".$userOrGroup.", mode) VALUES
# (".$this->_id.", ".T_DOCUMENT.", " . $userOrGroupID . ", " .$mode. ")";
#if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
unset($this->_accessList);
return true;
}
function changeAccess($newMode, $userOrGroupID, $isUser)
{
$userOrGroup = ($isUser) ? "userID" : "groupID";
$data = array('mode' => $newMode);
$where = array(
'targetType' => T_DOCUMENT,
'target' => $this->_id,
$userOrGroup => $userOrGroupID,
);
if(!$this->db->update('phpgw_mydms_ACLs', $data, $where, __LINE__, __FILE__)) {
return false;
}
# $queryStr = "UPDATE phpgw_mydms_ACLs SET mode = " . $newMode . " WHERE targetType = ".T_DOCUMENT." AND target = " . $this->_id . " AND " . $userOrGroup . " = " . $userOrGroupID;
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
unset($this->_accessList);
return true;
}
function removeAccess($userOrGroupID, $isUser)
{
$userOrGroup = ($isUser) ? "userID" : "groupID";
$where = array(
'targetType' => T_DOCUMENT,
'target' => $this->_id,
$userOrGroup => $userOrGroupID,
);
if(!$this->db->delete('phpgw_mydms_ACLs', $where, __LINE__, __FILE__)) {
return false;
}
# $queryStr = "DELETE FROM phpgw_mydms_ACLs WHERE targetType = ".T_DOCUMENT." AND target = ".$this->_id." AND ".$userOrGroup." = " . $userOrGroupID;
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
unset($this->_accessList);
return true;
}
/*
* Liefert die Art der Zugriffsberechtigung f�r den User $user; M�gliche Rechte: n (keine), r (lesen), w (schreiben+lesen), a (alles)
* Zun�chst wird Gepr�ft, ob die Berechtigung geerbt werden soll; in diesem Fall wird die Anfrage an den Eltern-Ordner weitergeleitet.
* Ansonsten werden die ACLs durchgegangen: Die h�chstwertige Berechtigung gilt.
* Wird bei den ACLs nicht gefunden, wird die Standard-Berechtigung zur�ckgegeben.
* Ach ja: handelt es sich bei $user um den Besitzer ist die Berechtigung automatisch "a".
*/
function getAccessMode($user)
{
//Administrator??
if ($user->isAdmin())
return M_ALL;
//Besitzer??
if ($user->getID() == $this->_ownerID)
return M_ALL;
//Gast-Benutzer??
if (($user->getID() == $GLOBALS['mydms']->settings->_guestID) && ($GLOBALS['mydms']->settings->_enableGuestLogin))
{
$mode = $this->getDefaultAccess();
if ($mode >= M_READ)
return M_READ;
else
return M_NONE;
}
return $this->getAccessList2();
//Berechtigung erben??
// wird �ber GetAccessList() bereits realisiert.
// durch das Verwenden der folgenden Zeilen w�ren auch Owner-Rechte vererbt worden.
/*
if ($this->inheritsAccess())
{
if (!$this->getFolder())
return false;
return $this->_folder->getAccessMode($user);
}
*/
/* $highestPrivileged = M_NONE;
//ACLs durchforsten
$foundInACL = false;
$accessList = $this->getAccessList();
if (!$accessList)
return false;
foreach ($accessList["users"] as $userAccess)
{
if ($userAccess->getUserID() == $user->getID())
{
$foundInACL = true;
if ($userAccess->getMode() > $highestPrivileged)
$highestPrivileged = $userAccess->getMode();
if ($highestPrivileged == M_ALL) //h�her geht's nicht -> wir k�nnen uns die arbeit schenken
return $highestPrivileged;
}
}
foreach ($accessList["groups"] as $groupAccess)
{
if ($user->isMemberOfGroup($groupAccess->getGroup()))
{
$foundInACL = true;
if ($groupAccess->getMode() > $highestPrivileged)
$highestPrivileged = $groupAccess->getMode();
if ($highestPrivileged == M_ALL) //h�her geht's nicht -> wir k�nnen uns die arbeit schenken
return $highestPrivileged;
}
}
if ($foundInACL)
return $highestPrivileged;
//Standard-Berechtigung verwenden
return $this->getDefaultAccess();*/
}
function getAccessList2()
{
$grupos=read_repository2($GLOBALS['phpgw_info']['user']['account_id']);
// echo "".$GLOBALS['phpgw_info']['user']['account_id'];
if($grupos!=''){
$queryStr = "SELECT * FROM phpgw_mydms_acls WHERE targettype = ".T_FOLDER." AND target in ( select folder from phpgw_mydms_Documents WHERE id=" . $this->_id . ") and (userid=".$GLOBALS['phpgw_info']['user']['account_id']." or groupid in (".$grupos.")) ORDER BY targettype";
}else{
$queryStr = "SELECT * FROM phpgw_mydms_acls WHERE targettype = ".T_FOLDER." AND target in ( select folder from phpgw_mydms_Documents WHERE id=" . $this->_id . ") and (userid=".$GLOBALS['phpgw_info']['user']['account_id']." ) ORDER BY targettype";
}
//echo "aqui".$queryStr ;
$resArr = $GLOBALS['mydms']->db->getResultArray($queryStr);
if (is_bool($resArr) && !$resArr)
return false;
//$this->_accessList = array("groups" => array(), "users" => array());
foreach ($resArr as $row)
{
//echo "el grupo de acceso es".$row[4]." ".$row["groupid"]."
";
return $row["mode"];
/*if ($row["userid"] != -1)
array_push($this->_accessList["users"], new UserAccess($row["userid"], $row["mode"]));
else //if ($row["groupID"] != -1)
array_push($this->_accessList["groups"], new GroupAccess($row["groupid"], $row["mode"]));*/
}
return $this->_accessList;
}
function getNotifyList()
{
if (!isset($this->_notifyList))
{
$cols = array('userID', 'groupID');
$where = array(
'targetType' => T_DOCUMENT,
'target' => $this->_id,
);
if(!$this->db->select('phpgw_mydms_Notify', $cols, $where, __LINE__, __FILE__)) {
return false;
}
$this->_notifyList = array("groups" => array(), "users" => array());
while ($this->db->next_record()) {
if ($this->db->f('userID') != -1)
array_push($this->_notifyList["users"], getUser($this->db->f('userid')));
else //if ($row["groupID"] != -1)
array_push($this->_notifyList["groups"], getGroup($this->db->f('groupid')));
}
# $queryStr ="SELECT * FROM phpgw_mydms_Notify WHERE targetType = " . T_DOCUMENT . " AND target = " . $this->_id;
# $resArr = $GLOBALS['mydms']->db->getResultArray($queryStr);
# if (is_bool($resArr) && $resArr == false)
# return false;
#
# $this->_notifyList = array("groups" => array(), "users" => array());
# foreach ($resArr as $row)
# {
# if ($row["userID"] != -1)
# array_push($this->_notifyList["users"], getUser($row["userID"]) );
# else //if ($row["groupID"] != -1)
# array_push($this->_notifyList["groups"], getGroup($row["groupID"]) );
# }
}
return $this->_notifyList;
}
function addNotify($userOrGroupID, $isUser)
{
$userOrGroup = ($isUser) ? "userID" : "groupID";
$data = array (
'target' => $this->_id,
'targetType' => T_DOCUMENT,
$userOrGroup => $userOrGroupID,
);
$res = $this->db->insert('phpgw_mydms_Notify', $data, '', __LINE__, __FILE__);
if (!$res) {
return false;
}
# $queryStr = "INSERT INTO phpgw_mydms_Notify (target, targetType, " . $userOrGroup . ") VALUES (" . $this->_id . ", " . T_DOCUMENT . ", " . $userOrGroupID . ")";
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
unset($this->_notifyList);
return true;
}
function removeNotify($userOrGroupID, $isUser)
{
$userOrGroup = ($isUser) ? "userID" : "groupID";
$where = array(
'targetType' => T_DOCUMENT,
'target' => $this->_id,
$userOrGroup => $userOrGroupID,
);
if(!$this->db->delete('phpgw_mydms_Notify', $where, __LINE__, __FILE__)) {
return false;
}
# $queryStr = "DELETE FROM phpgw_mydms_Notify WHERE target = " . $this->_id . " AND targetType = " . T_DOCUMENT . " AND " . $userOrGroup . " = " . $userOrGroupID;
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
unset($this->_notifyList);
return true;
}
function addContent($comment, $user, $tmpFile, $orgFileName, $fileType, $mimeType)
{
// if ($this->isLocked() && ($user->getID() != $this->getLockingUser()->getID()))
// return false;
$res = $this->getContent();
if (is_bool($res) && !$res)
return false;
if (count($this->_content) == 0) {
$newVersion = 1;
} else {
$res = $this->getLatestContent();
if (is_bool($res) && !$res)
return false;
$newVersion = $this->_latestContent->getVersion()+1;
}
$dir = getSuitableDocumentDir();
if (is_bool($res) && !$res)
return false;
//Kopieren der tempor�ren Datei
if(!file_exists($GLOBALS['mydms']->settings->_contentDir . $dir))
{
if (!makeDir($GLOBALS['mydms']->settings->_contentDir . $dir))
return false;
}
if (!copyFile($tmpFile, $GLOBALS['mydms']->settings->_contentDir . $dir . "data" . $fileType))
return false;
//Eintrag in phpgw_mydms_DocumentContent
$insertData = array(
'document' => $this->_id,
'version' => $newVersion,
'comment' => $comment,
'date' => mktime(),
'createdBy' => $user->getID(),
'dir' => $dir,
'orgFileName' => $orgFileName,
'fileType' => $fileType,
'mimeType' => $mimeType,
);
$res = $this->db->insert('phpgw_mydms_DocumentContent', $insertData, '', __LINE__, __FILE__);
if (!$res)
return false;
# $queryStr = "INSERT INTO phpgw_mydms_DocumentContent (document, version, comment, date, createdBy, dir, orgFileName, fileType, mimeType) VALUES ".
# "(".$this->_id.", ".$newVersion.", '".$comment."', ".mktime().", ".$user->getID().", '".$dir."', '".$orgFileName."', '".$fileType."', '" . $mimeType . "')";
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
unset($this->_content);
unset($this->_latestContent);
$this->getLatestContent();
# if ($GLOBALS['mydms']->settings->_enableConverting && in_array($this->_latestContent->getFileType(), array_keys($GLOBALS['mydms']->settings->_convertFileTypes)))
# $this->_latestContent->convert(); //Auch wenn das schiefgeht, wird deswegen nicht gleich alles "hingeschmissen" (sprich: false zur�ckgegeben)
// $this->setLocked(false);
return true;
}
function getContent()
{
if (!isset($this->_content))
{
$cols = array('id', 'document', 'version', 'comment', 'date', 'createdBy', 'dir', 'orgFileName', 'fileType', 'mimeType');
$where = array(
'document' => $this->_id,
);
if(!$this->db->select('phpgw_mydms_DocumentContent', $cols, $where, __LINE__, __FILE__, false, 'ORDER BY version')) {
return false;
}
$this->_content = array();
while ($this->db->next_record()) {
array_push(
$this->_content,
new DocumentContent(
$this->db->f('id'),
$this->db->f('document'),
$this->db->f('version'),
$this->db->f('comment'),
$this->db->f('date'),
$this->db->f('createdby'),
$this->db->f('dir'),
$this->db->f('orgfilename'),
$this->db->f('filetype'),
$this->db->f('mimetype')
)
);
}
# $queryStr = "SELECT * FROM phpgw_mydms_DocumentContent WHERE document = ".$this->_id." ORDER BY version";
# $resArr = $GLOBALS['mydms']->db->getResultArray($queryStr);
# if (is_bool($resArr) && !$res)
# return false;
#
# $this->_content = array();
# foreach ($resArr as $row)
# array_push($this->_content, new DocumentContent($row["id"], $row["document"], $row["version"], $row["comment"], $row["date"], $row["createdBy"], $row["dir"], $row["orgFileName"], $row["fileType"], $row["mimeType"]));
}
return $this->_content;
}
function getContentByVersion($version)
{
if (!is_numeric($version))
die ("invalid version");
if (isset($this->_content))
{
foreach ($this->_content as $revision)
{
if ($revision->getVersion() == $version)
return $revision;
}
return false;
}
$cols = array('id', 'document', 'version', 'comment', 'date', 'createdBy', 'dir', 'orgFileName', 'fileType', 'mimeType');
$where = array(
'document' => $this->_id,
'version' => $version,
);
if(!$this->db->select('phpgw_mydms_DocumentContent', $cols, $where, __LINE__, __FILE__, false, 'ORDER BY version,id desc')) {
return false;
}
if ($this->db->next_record()) {
return new DocumentContent(
$this->db->f('id'),
$this->db->f('document'),
$this->db->f('version'),
$this->db->f('comment'),
$this->db->f('date'),
$this->db->f('createdby'),
$this->db->f('dir'),
$this->db->f('orgfilename'),
$this->db->f('filetype'),
$this->db->f('mimetype')
);
} else {
return false;
}
# $queryStr = "SELECT * FROM phpgw_mydms_DocumentContent WHERE document = ".$this->_id." AND version = " . $version;
# $resArr = $GLOBALS['mydms']->db->getResultArray($queryStr);
# if (is_bool($resArr) && !$res)
# return false;
# if (count($resArr) != 1)
# return false;
#
# $resArr = $resArr[0];
# return new DocumentContent($resArr["id"], $resArr["document"], $resArr["version"], $resArr["comment"], $resArr["date"], $resArr["createdBy"], $resArr["dir"], $resArr["orgFileName"], $resArr["fileType"], $resArr["mimeType"]);
}
function getLatestContent()
{
if (!isset($this->_latestContent))
{
/* if (isset($this->_content))
{
$this->getContent();
$this->_latestContent = $this->_content[count($this->_content)-1];
return $this->_latestContent;
}
*/
$cols = array('id', 'document', 'version', 'comment', 'date', 'createdBy', 'dir', 'orgFileName', 'fileType', 'mimeType');
$where = array(
'document' => $this->_id,
);
if(!$this->db->select('phpgw_mydms_DocumentContent', $cols, $where, __LINE__, __FILE__, false, 'ORDER BY version DESC')) {
return false;
}
$this->_latestContent = array();
if ($this->db->next_record()) {
$this->_latestContent = new DocumentContent(
$this->db->f('id'),
$this->db->f('document'),
$this->db->f('version'),
$this->db->f('comment'),
$this->db->f('date'),
$this->db->f('createdby'),
$this->db->f('dir'),
$this->db->f('orgfilename'),
$this->db->f('filetype'),
$this->db->f('mimeType')
);
}
# $queryStr = "SELECT * FROM phpgw_mydms_DocumentContent WHERE document = ".$this->_id." ORDER BY version DESC";
# $resArr = $GLOBALS['mydms']->db->getResultArray($queryStr);
# if (is_bool($resArr) && !$resArr)
# return false;
#
# $resArr = $resArr[0];
# $this->_latestContent = new DocumentContent($resArr["id"], $resArr["document"], $resArr["version"], $resArr["comment"], $resArr["date"], $resArr["createdBy"], $resArr["dir"], $resArr["orgFileName"], $resArr["fileType"], $resArr["mimeType"]);
}
return $this->_latestContent;
}
function getDocumentLinks()
{
if (!isset($this->_documentLinks))
{
$queryStr = "SELECT * FROM phpgw_mydms_DocumentLinks WHERE document = " . $this->_id;
$resArr = $GLOBALS['mydms']->db->getResultArray($queryStr);
if (is_bool($resArr) && !$resArr)
return false;
$this->_documentLinks = array();
foreach ($resArr as $row)
array_push($this->_documentLinks, new DocumentLink($row["id"], $row["document"], $row["target"], $row["userID"], $row["public"]));
}
return $this->_documentLinks;
}
function addDocumentLink($targetID, $userID, $public)
{
$data = array(
'document' => $this->_id,
'target' => $targetID,
'userID' => $userID,
'public' => $GLOBALS['phpgw']->db->quote($public,'bool'),
);
$res = $this->db->insert('phpgw_mydms_DocumentLinks', $data, '', __LINE__, __FILE__);
if (!$res)
return false;
# $queryStr = "INSERT INTO phpgw_mydms_DocumentLinks(document, target, userID, public) VALUES (".$this->_id.", ".$targetID.", ".$userID.", " . $GLOBALS['phpgw']->db->quote($public,'bool').")";
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
unset($this->_documentLinks);
return true;
}
function removeDocumentLink($linkID)
{
$where = array(
'id' => $linkID,
);
if(!$this->db->delete('phpgw_mydms_DocumentLinks', $where, __LINE__, __FILE__)) {
return false;
}
# $queryStr = "DELETE FROM phpgw_mydms_DocumentLinks WHERE id = " . $linkID;
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
unset ($this->_documentLinks);
return true;
}
function remove()
{
$res = $this->getContent();
if (is_bool($res) && !$res) return false;
for ($i = 0; $i < count($this->_content); $i++) {
if (!$this->_content[$i]->remove()) {
return false;
}
}
$where = array('id' => $this->_id);
if(!$this->db->delete('phpgw_mydms_Documents', $where, __LINE__, __FILE__)) {
return false;
}
$where = array('target' => $this->_id, 'targetType' => T_DOCUMENT);
if(!$this->db->delete('phpgw_mydms_ACLs', $where, __LINE__, __FILE__)) {
return false;
}
if(!$this->db->delete('phpgw_mydms_Notify', $where, __LINE__, __FILE__)) {
return false;
}
$where = array('document' => $this->_id, 'target' => $this->_id);
if(!$this->db->delete('phpgw_mydms_DocumentLinks', $where, __LINE__, __FILE__)) {
return false;
}
# $queryStr = "DELETE FROM phpgw_mydms_Documents WHERE id = " . $this->_id;
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
# $queryStr = "DELETE FROM phpgw_mydms_ACLs WHERE target = " . $this->_id . " AND targetType = " . T_DOCUMENT;
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
# $queryStr = "DELETE FROM phpgw_mydms_Notify WHERE target = " . $this->_id . " AND targetType = " . T_DOCUMENT;
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
# $queryStr = "DELETE FROM phpgw_mydms_DocumentLinks WHERE document = " . $this->_id . " OR target = " . $this->_id;
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
return true;
}
}
/* ---------------------------------------------------------------------------------------------------- */
/**
* Die Datei wird als "data.ext" (z.b. data.txt) gespeichert. Getrennt davon wird in der DB der urspr�ngliche
* Dateiname festgehalten (-> $orgFileName). Die Datei wird deshalb nicht unter diesem urspr�nglichen Namen
* gespeichert, da es zu Problemen mit verschiedenen Dateisystemen kommen kann: Linux hat z.b. Probleme mit
* deutschen Umlauten, w�hrend Windows wiederum den Doppelpunkt in Dateinamen nicht verwenden kann.
* Der urspr�ngliche Dateiname wird nur zum Download verwendet (siehe op.Download.pgp)
*/
class DocumentContent
{
function DocumentContent($id, $documentID, $version, $comment, $date, $userID, $dir, $orgFileName, $fileType, $mimeType)
{
$this->_id = $id;
$this->_documentID = $documentID;
$this->_version = $version;
$this->_comment = $comment;
$this->_date = $date;
$this->_userID = $userID;
$this->_dir = $dir;
$this->_orgFileName = $orgFileName;
$this->_fileType = $fileType;
$this->_mimeType = $mimeType;
$this->db = clone($GLOBALS['phpgw']->db);
$this->db->set_app('mydms');
}
function getVersion() { return $this->_version; }
function getComment() { return $this->_comment; }
function getDate() { return $this->_date; }
function getOriginalFileName() { return $this->_orgFileName; }
function getFileType() { return $this->_fileType; }
function getFileName(){ return "data" . $this->_fileType; }
function getDir() { return $this->_dir; }
function getMimeType() { return $this->_mimeType; }
function getUser()
{
if (!isset($this->_user))
$this->_user = getUser($this->_userID);
return $this->_user;
}
function getPath() { return $this->_dir ."data" . $this->_fileType; }
function convert()
{
if (file_exists($GLOBALS['mydms']->settings->_contentDir . $this->_dir . "index.html"))
return true;
if (!in_array($this->_fileType, array_keys($GLOBALS['mydms']->settings->_convertFileTypes)))
return false;
$source = $GLOBALS['mydms']->settings->_contentDir . $this->_dir . $this->getFileName();
$target = $GLOBALS['mydms']->settings->_contentDir . $this->_dir . "index.html";
// $source = str_replace("/", "\\", $source);
// $target = str_replace("/", "\\", $target);
$command = $GLOBALS['mydms']->settings->_convertFileTypes[$this->_fileType];
$command = str_replace("{SOURCE}", "\"$source\"", $command);
$command = str_replace("{TARGET}", "\"$target\"", $command);
$output = array();
$res = 0;
exec($command, $output, $res);
if ($res != 0)
{
print (implode("\n", $output));
return false;
}
return true;
}
function viewOnline()
{
if (in_array($this->_fileType, $GLOBALS['mydms']->settings->_viewOnlineFileTypes))
return true;
if ($GLOBALS['mydms']->settings->_enableConverting && in_array($this->_fileType, array_keys($GLOBALS['mydms']->settings->_convertFileTypes)))
if ($this->wasConverted())
return true;
return false;
}
function wasConverted()
{
return file_exists($GLOBALS['mydms']->settings->_contentDir . $this->_dir . "index.html");
}
function getURL()
{
if (!$this->viewOnline())
return false;
if (in_array($this->_fileType, $GLOBALS['mydms']->settings->_viewOnlineFileTypes))
return "/" . $this->_documentID . "/" . $this->_version . "/" . $this->getOriginalFileName();
else
return "/" . $this->_documentID . "/" . $this->_version . "/index.html";
}
function remove()
{
# does this check make sense here??? Lars
#if (!removeDir($GLOBALS['mydms']->settings->_contentDir . $this->_dir)) {
# return false;
#}
$where = array(
'id' => $this->_id,
);
if(!$this->db->delete('phpgw_mydms_DocumentContent', $where, __LINE__, __FILE__)) {
return false;
}
return true;
}
}
/* ---------------------------------------------------------------------------------------------------- */
function getDocumentLink($linkID)
{
if (!is_numeric($linkID))
die ("invalid linkID");
$queryStr = "SELECT * FROM phpgw_mydms_DocumentLinks WHERE id = " . $linkID;
$resArr = $GLOBALS['mydms']->db->getResultArray($queryStr);
if (is_bool($resArr) && !$resArr)
return false;
$resArr = $resArr[0];
return new DocumentLink($resArr["id"], $resArr["document"], $resArr["target"], $resArr["userID"], $resArr["public"]);
}
function filterDocumentLinks($user, $links)
{
$tmp = array();
foreach ($links as $link)
if ($link->isPublic() || ($link->_userID == $user->getID()) || ($user->getID() == $GLOBALS['mydms']->settings->_adminID) )
array_push($tmp, $link);
return $tmp;
}
class DocumentLink
{
var $_id;
var $_documentID;
var $_targetID;
var $_userID;
var $_public;
function DocumentLink($id, $documentID, $targetID, $userID, $public)
{
$this->_id = $id;
$this->_documentID = $documentID;
$this->_targetID = $targetID;
$this->_userID = $userID;
$this->_public = $public;
$this->db = clone($GLOBALS['phpgw']->db);
$this->db->set_app('mydms');
}
function getID() { return $this->_id; }
function getDocument()
{
if (!isset($this->_document))
$this->_document = getDocument($this->_documentID);
return $this->_document;
}
function getTarget()
{
if (!isset($this->_target))
$this->_target = getDocument($this->_targetID);
return $this->_target;
}
function getUser()
{
if (!isset($this->_user))
$this->_user = getUser($this->_userID);
return $this->_user;
}
function isPublic() { return $this->_public; }
function remove()
{
$where = array(
'id' => $this->_id,
);
if(!$this->db->delete('phpgw_mydms_DocumentLinks', $where, __LINE__, __FILE__)) {
return false;
}
# $queryStr = "DELETE FROM phpgw_mydms_DocumentLinks WHERE id = " . $this->_id;
# if (!$GLOBALS['mydms']->db->getResult($queryStr))
# return false;
return true;
}
}