* Copyright 2002-2003, Tim Perdue/GForge, LLC
* Copyright 2009, Roland Mas
* Copyright 2010, Franck Villaume - Capgemini
+ * http://fusionforge.org
*
* This file is part of FusionForge.
*
/**
* Associative array of data from db.
*
- * @var array $data_array.
+ * @var array $data_array.
*/
var $data_array;
/**
* The Group object.
*
- * @var object $Group.
+ * @var object $Group.
*/
+ var $Group;
+
/**
* The Search engine path.
*
- * @var string $engine_path
+ * @var string $engine_path
*/
var $engine_path;
/**
- * Constructor.
+ * Constructor.
*
- * @param object The Group object to which this document is associated.
- * @param int The docid.
- * @param array The associative array of data.
- * @return boolean success.
+ * @param object The Group object to which this document is associated.
+ * @param int The docid.
+ * @param array The associative array of data.
+ * @return boolean success.
*/
- function Document(&$Group, $docid=false, $arr=false, $engine = "") {
+ function Document(&$Group, $docid = false, $arr = false, $engine = '') {
$this->Error();
if (!$Group || !is_object($Group)) {
$this->setNotValidGroupObjectError();
return false;
}
if ($Group->isError()) {
- $this->setError('Document:: '.$Group->getErrorMessage());
+ $this->setError('Document:: '. $Group->getErrorMessage());
return false;
}
$this->Group =& $Group;
} else {
$this->data_array =& $arr;
if ($this->data_array['group_id'] != $this->Group->getID()) {
- $this->setError(_('Group_id in db result does not match Group Object'));
+ $this->setError('Document:: '. _('Group_id in db result does not match Group Object'));
$this->data_array = null;
return false;
}
}
if (!$this->isPublic()) {
- $perm =& $this->Group->getPermission ();
+ $perm =& $this->Group->getPermission();
if (!$perm || !is_object($perm) || !$perm->isMember()) {
$this->setPermissionDeniedError();
* @param string The contents of this document.
* @param int The doc_group id of the doc_groups table.
* @param string The title of this document.
- * @param int The language id of the supported_languages table.
* @param string The description of this document.
* @return boolean success.
*/
- function create($filename,$filetype,$data,$doc_group,$title,$description) {
+ function create($filename, $filetype, $data, $doc_group, $title, $description) {
if (strlen($title) < 5) {
$this->setError(_('Title Must Be At Least 5 Characters'));
return false;
return false;
}
+ $result = db_query_params('SELECT filename, doc_group from docdata_vw where filename = $1 and doc_group = $2',
+ array($filename, $doc_group));
+
+ if (!$result || db_numrows($result) > 0) {
+ $this->setError(_('Document already published in this directory'));
+ return false;
+ }
+
$user_id = ((session_loggedin()) ? user_getid() : 100);
$doc_initstatus = '3';
// If Editor - uploaded Documents are ACTIVE
- if ( session_loggedin() ) {
+ if (session_loggedin()) {
$perm =& $this->Group->getPermission ();
if ($perm && is_object($perm) && $perm->isDocEditor()) {
$doc_initstatus = '1';
if (strcasecmp($filetype,"text/plain") === 0 &&
function_exists('mb_convert_encoding') &&
function_exists('mb_detect_encoding')) {
- $data = mb_convert_encoding($data,'UTF-8',mb_detect_encoding($data));
+ $data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));
}
$data1 = $data;
// key words for in-document search
if ($this->Group->useDocmanSearch()) {
- $kw = new Parsedata ($this->engine_path);
- $kwords = $kw->get_parse_data ($data1, htmlspecialchars($title), htmlspecialchars($description), $filetype);
+ $kw = new Parsedata($this->engine_path);
+ $kwords = $kw->get_parse_data($data1, htmlspecialchars($title), htmlspecialchars($description), $filetype);
} else {
$kwords ='';
}
db_begin();
$result = db_query_params('INSERT INTO doc_data (group_id,title,description,createdate,doc_group,
- stateid,filename,filetype,filesize,data_words,created_by)
- VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)',
- array($this->Group->getId(),
+ stateid,filename,filetype,filesize,data_words,created_by)
+ VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)',
+ array($this->Group->getId(),
htmlspecialchars($title),
htmlspecialchars($description),
time(),
$filetype,
$filesize,
$kwords,
- $user_id));
+ $user_id));
if (!$result) {
- $this->setError(_('Error Adding Document: ').db_error().$result);
+ $this->setError(_('Error Adding Document:').' '.db_error().$result);
db_rollback();
return false;
}
- $docid=db_insertid($result,'doc_data','docid');
-
- switch ($this->Group->getStorageAPI()) {
- case 'DB':
- $result = db_query_params('UPDATE doc_data set data = $1 where docid = $2',
- array(base64_encode($data),
- $docid));
- if (!$result) {
- $this->setError(_('Error Adding Document: ').db_error().$result);
- db_rollback();
- return false;
- }
- break;
- default:
- $this->setError(_('Error Adding Document: No Storage API'));
- db_rollback();
- return false;
- }
+ $docid = db_insertid($result,'doc_data','docid');
+
+ switch ($this->Group->getStorageAPI()) {
+ case 'DB': {
+ $result = db_query_params('UPDATE doc_data set data = $1 where docid = $2',
+ array(base64_encode($data),$docid));
+ if (!$result) {
+ $this->setError(_('Error Adding Document:').' '.db_error().$result);
+ db_rollback();
+ return false;
+ }
+ break;
+ }
+ default: {
+ $this->setError(_('Error Adding Document: No Storage API'));
+ db_rollback();
+ return false;
+ }
+ }
if (!$this->fetchData($docid)) {
db_rollback();
}
/**
- * fetchData() - re-fetch the data for this document from the database.
+ * fetchData() - re-fetch the data for this document from the database.
*
- * @param int The document id.
- * @return boolean success
+ * @param int The document id.
+ * @return boolean success
*/
function fetchData($docid) {
- $res = db_query_params ('SELECT * FROM docdata_vw WHERE docid=$1 AND group_id=$2',
- array ($docid,
- $this->Group->getID()));
+ $res = db_query_params('SELECT * FROM docdata_vw WHERE docid=$1 AND group_id=$2',
+ array($docid, $this->Group->getID()));
if (!$res || db_numrows($res) < 1) {
$this->setError(_('Document:: Invalid docid'));
return false;
}
/**
- * getGroup - get the Group object this Document is associated with.
+ * getGroup - get the Group object this Document is associated with.
*
- * @return Object The Group object.
+ * @return Object The Group object.
*/
function &getGroup() {
return $this->Group;
}
/**
- * getID - get this docid.
+ * getID - get this docid.
*
- * @return int The docid.
+ * @return int The docid.
*/
function getID() {
return $this->data_array['docid'];
}
/**
- * getName - get the name of this document.
+ * getName - get the name of this document.
*
- * @return string The name of this document.
+ * @return string The name of this document.
*/
function getName() {
return $this->data_array['title'];
}
/**
- * getDescription - the description of this document.
+ * getDescription - the description of this document.
*
- * @return string The description.
+ * @return string The description.
*/
function getDescription() {
return $this->data_array['description'];
}
/**
- * isURL - whether this document is a URL and not a local file.
+ * isURL - whether this document is a URL and not a local file.
*
- * @return boolean is_url.
+ * @return boolean is_url.
*/
function isURL() {
return ($this->data_array['filetype'] == 'URL');
}
-
+
/**
- * isText - whether this document is a text document and not a binary one.
+ * isText - whether this document is a text document and not a binary one.
*
- * @return boolean is_text.
+ * @return boolean is_text.
*/
function isText() {
$doctype = $this->data_array['filetype'];
- if (preg_match('|^text/|i',$doctype)) { // text plain, text html, text x-patch, etc
+ if (preg_match('|^text/|i', $doctype)) { // text plain, text html, text x-patch, etc
return true;
- }
+ }
return false;
}
-
+
/**
- * isHtml - whether this document is a html document.
+ * isHtml - whether this document is a html document.
*
- * @return boolean is_html.
+ * @return boolean is_html.
*/
function isHtml() {
$doctype = $this->data_array['filetype'];
if (preg_match('/html/i',$doctype)) {
return true;
- }
+ }
return false;
- }
+ }
/**
- * isPublic - whether this document is available to the general public.
+ * isPublic - whether this document is available to the general public.
*
- * @return boolean is_public.
+ * @return boolean is_public.
*/
function isPublic() {
- return (($this->data_array['stateid'] == 1) ? true : false);
+ return (($this->data_array['stateid'] == 1) ? true : false);
}
/**
- * getStateID - get this stateid.
+ * getStateID - get this stateid.
*
- * @return int The stateid.
+ * @return int The stateid.
*/
function getStateID() {
return $this->data_array['stateid'];
}
/**
- * getStateName - the statename of this document.
+ * getStateName - the statename of this document.
*
- * @return string The statename.
+ * @return string The statename.
*/
function getStateName() {
return $this->data_array['state_name'];
}
/**
- * getDocGroupID - get this doc_group_id.
+ * getDocGroupID - get this doc_group_id.
*
- * @return int The doc_group_id.
+ * @return int The doc_group_id.
*/
function getDocGroupID() {
return $this->data_array['doc_group'];
}
/**
- * getDocGroupName - the doc_group_name of this document.
+ * getDocGroupName - the doc_group_name of this document.
*
- * @return string The docgroupname.
+ * @return string The docgroupname.
*/
function getDocGroupName() {
return $this->data_array['group_name'];
}
/**
- * getCreatorID - get this creator's user_id.
+ * getCreatorID - get this creator's user_id.
*
- * @return int The user_id.
+ * @return int The user_id.
*/
function getCreatorID() {
return $this->data_array['created_by'];
}
/**
- * getCreatorUserName - the unix name of the person who created this document.
+ * getCreatorUserName - the unix name of the person who created this document.
*
- * @return string The unix name of the creator.
+ * @return string The unix name of the creator.
*/
function getCreatorUserName() {
return $this->data_array['user_name'];
}
/**
- * getCreatorRealName - the real name of the person who created this document.
+ * getCreatorRealName - the real name of the person who created this document.
*
- * @return string The real name of the creator.
+ * @return string The real name of the creator.
*/
function getCreatorRealName() {
return $this->data_array['realname'];
}
/**
- * getCreatorEmail - the email of the person who created this document.
+ * getCreatorEmail - the email of the person who created this document.
*
- * @return string The email of the creator.
+ * @return string The email of the creator.
*/
function getCreatorEmail() {
return $this->data_array['email'];
}
/**
- * getFileName - the filename of this document.
+ * getFileName - the filename of this document.
*
- * @return string The filename.
+ * @return string The filename.
*/
function getFileName() {
return $this->data_array['filename'];
}
/**
- * getFileType - the filetype of this document.
+ * getFileType - the filetype of this document.
*
- * @return string The filetype.
+ * @return string The filetype.
*/
function getFileType() {
return $this->data_array['filetype'];
}
/**
- * getFileData - the filedata of this document.
+ * getFileData - the filedata of this document.
*
- * @return string The filedata.
+ * @return string The filedata.
*/
function getFileData() {
//
// Because this could be a large string, we only fetch if we actually need it
//
- $res = db_query_params ('SELECT data FROM doc_data WHERE docid=$1',
- array ($this->getID())) ;
+ $res = db_query_params('SELECT data FROM doc_data WHERE docid=$1',array($this->getID()));
return base64_decode(db_result($res,0,'data'));
}
-
+
/**
* getFileSize - Return the size of the document
*
function getFileSize() {
return $this->data_array['filesize'];
}
+
/**
- * getUpdated - get the time this document was updated.
+ * getUpdated - get the time this document was updated.
*
- * @return int The epoch date this document was updated.
+ * @return int The epoch date this document was updated.
*/
function getUpdated() {
return $this->data_array['updatedate'];
}
/**
- * getCreated - get the time this document was created.
+ * getCreated - get the time this document was created.
*
- * @return int The epoch date this document was created.
+ * @return int The epoch date this document was created.
*/
function getCreated() {
return $this->data_array['createdate'];
}
/**
- * getLocked - get the lock status of this document.
+ * getLocked - get the lock status of this document.
*
- * @return int The lock status of this document.
+ * @return int The lock status of this document.
*/
function getLocked() {
return $this->data_array['locked'];
}
/**
- * getReservedBy - get the owner of the reversed status of this document.
+ * getLockdate - get the lock time of this document.
+ *
+ * @return int The lock time of this document.
+ */
+ function getLockdate() {
+ return $this->data_array['lockdate'];
+ }
+
+ /**
+ * getLockedBy - get the user id who set lock on this document.
+ *
+ * @return int The user id who set lock on this document.
+ */
+ function getLockedBy() {
+ return $this->data_array['locked_by'];
+ }
+
+ /**
+ * getReservedBy - get the owner of the reversed status of this document.
*
- * @return int The owner of the reversed status of this document.
+ * @return int The owner of the reversed status of this document.
*/
function getReservedBy() {
return $this->data_array['reserved_by'];
}
/**
- * getReserved - get the reversed status of this document.
+ * getReserved - get the reversed status of this document.
*
- * @return int The reversed status of this document.
+ * @return int The reversed status of this document.
*/
function getReserved() {
return $this->data_array['reserved'];
}
/**
- * setState - set the stateid of the document.
+ * getMonitoredUserEmailAddress - get the email addresses of users who monitor this file
*
- * @param int The state id of the doc_states table.
- * @return boolean success.
+ * @return string The list of emails comma separated
+ */
+ function getMonitoredUserEmailAddress() {
+ $result = db_query_params('select users.email from users,docdata_monitored_docman where users.user_id = docdata_monitored_docman.user_id and docdata_monitored_docman.doc_id = $1', array ($this->getID()));
+ if (!$result || db_numrows($result) < 1) {
+ return NULL;
+ } else {
+ $values = '';
+ $comma = '';
+ $i = 0;
+ while ($arr = db_fetch_array($result)) {
+ if ( $i > 0 )
+ $comma = ',';
+
+ $values .= $comma.$arr['email'];
+ $i++;
+ }
+ }
+ return $values;
+ }
+
+ /**
+ * isMonitoredBy - get the monitored status of this document for a specific user id.
+ *
+ * @param int User ID
+ * @return boolean true if monitored by this user
+ */
+ function isMonitoredBy($userid = 'ALL') {
+ if ( $userid == 'ALL' ) {
+ $condition = '';
+ } else {
+ $condition = 'user_id='.$userid.' AND';
+ }
+ $result = db_query_params('SELECT * FROM docdata_monitored_docman WHERE '.$condition.' doc_id=$1',
+ array($this->getID()));
+
+ if (!$result || db_numrows($result) < 1)
+ return false;
+
+ return true;
+ }
+
+ /**
+ * removeMonitoredBy - remove this document for a specific user id for monitoring.
+ *
+ * @param int User ID
+ * @return boolean true if success
+ */
+ function removeMonitoredBy($userid) {
+ $result = db_query_params('DELETE FROM docdata_monitored_docman WHERE doc_id=$1 AND user_id=$2',
+ array ($this->getID(), $userid));
+
+ if (!$result) {
+ $this->setError(_('Unable To Remove Monitor').' : '.db_error());
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * addMonitoredBy - add this document for a specific user id for monitoring.
+ *
+ * @param int User ID
+ * @return boolean true if success
+ */
+ function addMonitoredBy($userid) {
+ $result = db_query_params('SELECT * FROM docdata_monitored_docman WHERE user_id=$1 AND doc_id=$2',
+ array($userid, $this->getID()));
+
+ if (!$result || db_numrows($result) < 1) {
+ $result = db_query_params('INSERT INTO docdata_monitored_docman (doc_id,user_id) VALUES ($1,$2)',
+ array($this->getID(), $userid));
+
+ if (!$result) {
+ $this->setError(_('Unable To Add Monitor').' : '.db_error());
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * setState - set the stateid of the document.
+ *
+ * @param int The state id of the doc_states table.
+ * @return boolean success.
*/
function setState($stateid) {
- $res = db_query_params ('UPDATE doc_data SET
- stateid=$1
- WHERE group_id=$2
- AND docid=$3',
- array ($stateid,
- $this->Group->getID(),
- $this->getID())
- );
+ $res = db_query_params('UPDATE doc_data SET
+ stateid=$1
+ WHERE group_id=$2
+ AND docid=$3',
+ array($stateid,
+ $this->Group->getID(),
+ $this->getID())
+ );
if (!$res || db_affected_rows($res) < 1) {
$this->setOnUpdateError(db_error());
return false;
return true;
}
- /**
- * setLock - set the locking status of the document
- *
- * @param int The status of the lock
- * @param int The userid who set the lock
- * @return boolean success
- */
- function setLock($stateLock,$userid=NULL) {
- $res = db_query_params ('UPDATE doc_data SET
- locked=$1,
- locked_by=$2
- WHERE group_id=$3
- AND docid=$4',
- array ($stateLock,
- $userid,
- $this->Group->getID(),
- $this->getID())
- );
+ /**
+ * setLock - set the locking status of the document
+ *
+ * @param int The status of the lock
+ * @param int The userid who set the lock
+ * @param time the epoch time
+ * @return boolean success
+ */
+ function setLock($stateLock, $userid = NULL, $thistime = 0) {
+ $res = db_query_params('UPDATE doc_data SET
+ locked=$1,
+ locked_by=$2,
+ lockdate=$3
+ WHERE group_id=$4
+ AND docid=$5',
+ array($stateLock,
+ $userid,
+ $thistime,
+ $this->Group->getID(),
+ $this->getID())
+ );
if (!$res || db_affected_rows($res) < 1) {
$this->setOnUpdateError(_('Document lock failed').' '.db_error());
return false;
}
- $this->sendNotice(false);
+ $this->data_array['locked'] = $stateLock;
+ $this->data_array['locked_by'] = $userid;
+ $this->data_array['lockdate'] = $thistime;
return true;
}
- /**
- * setReservedBy - set the reserved status of the document and the owner
- *
- * @param int The status of the reserved
- * @param int The ID of the owner : by default : noone
- * @return boolean success
- */
- function setReservedBy($statusReserved,$idReserver=NULL) {
- $res = db_query_params ('UPDATE doc_data SET
- reserved=$1,
- reserved_by=$2
- WHERE group_id=$3
- AND docid=$4',
- array ($statusReserved,
- $idReserver,
- $this->Group->getID(),
- $this->getID())
- );
+ /**
+ * setReservedBy - set the reserved status of the document and the owner
+ *
+ * @param int The status of the reserved
+ * @param int The ID of the owner : by default : noone
+ * @return boolean success
+ */
+ function setReservedBy($statusReserved, $idReserver = NULL) {
+ $res = db_query_params('UPDATE doc_data SET
+ reserved=$1,
+ reserved_by=$2
+ WHERE group_id=$3
+ AND docid=$4',
+ array($statusReserved,
+ $idReserver,
+ $this->Group->getID(),
+ $this->getID())
+ );
if (!$res || db_affected_rows($res) < 1) {
$this->setOnUpdateError(_('Document reservation failed').' '.db_error());
return false;
}
/**
- * update - use this function to update an existing entry in the database.
+ * update - use this function to update an existing entry in the database.
*
- * @param string The filename of this document. Can be a URL.
- * @param string The filetype of this document. If filename is URL, this should be 'URL';
- * @param string The contents of this document.
- * @param int The doc_group id of the doc_groups table.
- * @param string The title of this document.
- * @param int The language id of the supported_languages table.
- * @param string The description of this document.
- * @param int The state id of the doc_states table.
- * @return boolean success.
+ * @param string The filename of this document. Can be a URL.
+ * @param string The filetype of this document. If filename is URL, this should be 'URL';
+ * @param string The contents of this document.
+ * @param int The doc_group id of the doc_groups table.
+ * @param string The title of this document.
+ * @param string The description of this document.
+ * @param int The state id of the doc_states table.
+ * @return boolean success.
*/
- function update($filename,$filetype,$data,$doc_group,$title,$description,$stateid) {
+ function update($filename, $filetype, $data, $doc_group, $title, $description, $stateid) {
+ global $LUSER;
+
+ $perm =& $this->Group->getPermission();
+ if (!$perm || !is_object($perm) || !$perm->isDocEditor()) {
+ $this->setPermissionDeniedError();
+ return false;
+ }
+
+ if ($this->getLockedBy() != $LUSER->getID()) {
+ $this->setPermissionDeniedError();
+ return false;
+ }
+
if (strlen($title) < 5) {
$this->setError(_('Title Must Be At Least 5 Characters'));
return false;
}
+
if (strlen($description) < 10) {
$this->setError(_('Document Description Must Be At Least 10 Characters'));
return false;
}
- $perm =& $this->Group->getPermission ();
-
- if (!$perm || !is_object($perm) || !$perm->isDocEditor()) {
- $this->setPermissionDeniedError();
- return false;
+ if ($filename) {
+ $result = db_query_params('SELECT filename, doc_group FROM docdata_vw WHERE filename = $1 and doc_group = $2 and stateid = $3',
+ array($filename, $doc_group, $stateid));
+ if (!$result || db_numrows($result) > 0) {
+ $this->setError(_('Document already published in this directory'));
+ return false;
+ }
}
- $res = db_query_params ('UPDATE doc_data SET
- title=$1,
- description=$2,
- stateid=$3,
- doc_group=$4,
- filetype=$5,
- filename=$6,
- updatedate=$7,
- locked=$8,
- locked_by=$9
- WHERE group_id=$10
- AND docid=$11',
- array (htmlspecialchars($title),
- htmlspecialchars($description),
- $stateid,
- $doc_group,
- $filetype,
- $filename,
- time(),
- 0,
- NULL,
- $this->Group->getID(),
- $this->getID())) ;
-
+ $res = db_query_params('UPDATE doc_data SET
+ title=$1,
+ description=$2,
+ stateid=$3,
+ doc_group=$4,
+ filetype=$5,
+ filename=$6,
+ updatedate=$7,
+ locked=$8,
+ locked_by=$9
+ WHERE group_id=$10
+ AND docid=$11',
+ array(htmlspecialchars($title),
+ htmlspecialchars($description),
+ $stateid,
+ $doc_group,
+ $filetype,
+ $filename,
+ time(),
+ 0,
+ NULL,
+ $this->Group->getID(),
+ $this->getID())
+ );
+
if (!$res || db_affected_rows($res) < 1) {
$this->setOnUpdateError(db_error());
return false;
// key words for in-document search
if ($this->Group->useDocmanSearch()) {
- $kw = new Parsedata ($this->engine_path);
- $kwords = $kw->get_parse_data ($data1, htmlspecialchars($title), htmlspecialchars($description), $filetype);
+ $kw = new Parsedata($this->engine_path);
+ $kwords = $kw->get_parse_data($data1, htmlspecialchars($title), htmlspecialchars($description), $filetype);
} else {
$kwords = '';
}
- $res = db_query_params ('UPDATE doc_data SET filesize=$1, data_words=$2 WHERE group_id=$3 AND docid=$4',
- array (strlen($data),
- $kwords,
- $this->Group->getID(),
- $this->getID())) ;
+ $res = db_query_params('UPDATE doc_data SET filesize=$1, data_words=$2 WHERE group_id=$3 AND docid=$4',
+ array(strlen($data),
+ $kwords,
+ $this->Group->getID(),
+ $this->getID())
+ );
if (!$res || db_affected_rows($res) < 1) {
$this->setOnUpdateError(db_error());
return false;
}
- switch ($this->Group->getStorageAPI()) {
- case 'DB':
- $res = db_query_params ('UPDATE doc_data SET data = $1 where group_id = $2 and docid = $3',
- array(base64_encode($data),
- $this->Group->getID(),
- $this->getID()));
-
- if (!$res || db_affected_rows($res) < 1) {
- $this->setOnUpdateError(db_error());
- return false;
- }
- break;
- default:
- $this->setOnUpdateError(_('No Storage API'));
- return false;
- }
- }
-
+ switch ($this->Group->getStorageAPI()) {
+ case 'DB': {
+ $res = db_query_params('UPDATE doc_data SET data = $1 where group_id = $2 and docid = $3',
+ array(base64_encode($data),
+ $this->Group->getID(),
+ $this->getID())
+ );
+
+ if (!$res || db_affected_rows($res) < 1) {
+ $this->setOnUpdateError(db_error());
+ return false;
+ }
+ break;
+ }
+ default: {
+ $this->setOnUpdateError(_('No Storage API'));
+ return false;
+ }
+ }
+ }
+
$this->sendNotice(false);
return true;
}
/**
- * sendNotice - Notifies of document submissions
- */
+ * sendNotice - Notifies of document submissions
+ *
+ * @param boolean true = new document (default value)
+ */
function sendNotice ($new=true) {
$BCC = $this->Group->getDocEmailAddress();
+ if ($this->isMonitoredBy('ALL')) {
+ $BCC .= $this->getMonitoredUserEmailAddress();
+ }
if (strlen($BCC) > 0) {
- $subject = '['.$this->Group->getPublicName().'] New document - '.$this->getName();
- $body = "Project: ".$this->Group->getPublicName()."\n";
- $body .= "Group: ".$groupname."\n";
- $body .= "Document title: ".$this->getName()."\n";
- $body .= "Document description: ".util_unconvert_htmlspecialchars( $this->getDescription() )."\n";
- $body .= "Submitter: ".$this->getCreatorRealName()." (".$this->getCreatorUserName().") \n";
- $body .= "\n\n-------------------------------------------------------".
- "\nFor more info, visit:".
- "\n\n" . util_make_url('/docman/index.php?group_id='.$this->Group->getID());
-
- util_send_message('',$subject,$body,'',$BCC);
+ if ($new) {
+ $status = _('New document');
+ } else {
+ $status = _('Updated document');
+ }
+ $subject = '['.$this->Group->getPublicName().'] '.$status.' - '.$this->getName();
+ $body = _('Project:').' '.$this->Group->getPublicName()."\n";
+ $body .= _('Directory:').' '.$this->getDocGroupName()."\n";
+ $body .= _('Document title:').' '.$this->getName()."\n";
+ $body .= _('Document description:').' '.util_unconvert_htmlspecialchars($this->getDescription())."\n";
+ $body .= _('Submitter:').' '.$this->getCreatorRealName()." (".$this->getCreatorUserName().") \n";
+ $body .= "\n\n-------------------------------------------------------\n".
+ _('For more info, visit:').
+ "\n\n" . util_make_url('/docman/?group_id='.$this->Group->getID().'&view=listfile&dirid='.$this->getDocGroupID());
+
+ util_send_message('', $subject, $body, '', $BCC);
}
return true;
}
-
+
+ /**
+ * delete - Delete this file
+ *
+ * @return boolean success
+ */
function delete() {
- $perm =& $this->Group->getPermission ();
+ $perm =& $this->Group->getPermission();
if (!$perm || !is_object($perm) || !$perm->isDocEditor()) {
$this->setPermissionDeniedError();
return false;
}
-
- $result = db_query_params ('DELETE FROM doc_data WHERE docid=$1',
- array ($this->getID())) ;
+
+ $result = db_query_params('DELETE FROM doc_data WHERE docid=$1',
+ array($this->getID()));
if (!$result) {
- $this->setError(_('Error Deleting Document: ').db_error());
+ $this->setError(_('Error Deleting Document:').' '.db_error());
db_rollback();
return false;
}
-
- switch ($this->Group->getStorageAPI()) {
- case 'DB':
- break;
- default:
- $this->setError(_('Error Deleting Document: No Storage API'));
- db_rollback();
- return false;
- }
+
+ switch ($this->Group->getStorageAPI()) {
+ case 'DB': {
+ break;
+ }
+ default: {
+ $this->setError(_('Error Deleting Document: No Storage API'));
+ db_rollback();
+ return false;
+ }
+ }
+
+ // we should be able to send a notice that this doc has been deleted .... but we need to rewrite sendNotice
+ //$this->sendNotice(false);
return true;
}
}