Error(); if (!$Group || !is_object($Group)) { $this->setError('DocumentManager:: '. _('No Valid Group Object')); return false; } if ($Group->isError()) { $this->setError('DocumentManager:: '. $Group->getErrorMessage()); return false; } $this->Group =& $Group; return true; } /** * getGroup - get the Group object this Document is associated with. * * @return Object The Group object. */ function &getGroup() { return $this->Group; } /** * getTrashID - the trash doc_group id for this DocumentManager. * * @return integer The trash doc_group id. */ function getTrashID() { if (isset($this->data_array['trashid'])) return $this->data_array['trashid']; $res = db_query_params('SELECT doc_group from doc_groups WHERE groupname = $1 AND group_id = $2 AND stateid = $3', array('.trash', $this->Group->getID(), '2')); if (db_numrows($res) == 1) { $arr = db_fetch_array($res); $this->data_array['trashid'] = $arr['doc_group']; return $this->data_array['trashid']; } else { $dg = new DocumentGroup($this->Group); $dg->create('.trash'); $dg->setStateID('2'); return $dg->getID(); } return false; } /** * cleanTrash - delete all items in trash for this DocumentManager * * @return boolean true on success */ function cleanTrash() { $trashId = $this->getTrashID(); if ($trashId !== -1) { db_begin(); $emptyFile = db_query_params('DELETE FROM doc_data WHERE stateid=$1 and group_id=$2', array('2', $this->Group->getID())); if (!$emptyFile) { db_rollback(); return false; } $emptyDir = db_query_params('DELETE FROM doc_groups WHERE stateid=$1 and group_id=$2 and groupname !=$3', array('2', $this->Group->getID(), '.trash')); if (!$emptyDir) { db_rollback(); return false; } db_commit(); return true; } return false; } /** * getTree - display recursively the content of the doc_group. Only doc_groups within doc_groups. * * @param integer the selected directory * @param string the type of link in the menu * @param integer the doc_group to start: default 0 */ function getTree($selecteddir, $linkmenu, $docGroupId = 0) { global $g; // the master group of all the groups .... anyway. $dg = new DocumentGroup($this->Group); switch ($linkmenu) { case "listtrashfile": { $stateId = 2; break; } default: { $stateId = 1; break; } } $subGroupIdArr = $dg->getSubgroup($docGroupId, $stateId); if (sizeof($subGroupIdArr)) { foreach ($subGroupIdArr as $subGroupIdValue) { $localDg = new DocumentGroup($this->Group, $subGroupIdValue); $liclass = 'docman_li_treecontent'; if ($selecteddir == $localDg->getID()) { $liclass = 'docman_li_treecontent_selected'; } if ($this->Group->getID() != $g->getID()) { $link = '/docman/?group_id='.$g->getID().'&view='.$linkmenu.'&dirid='.$localDg->getID().'&childgroup_id='.$this->Group->getID(); } else { $link = '/docman/?group_id='.$this->Group->getID().'&view='.$linkmenu.'&dirid='.$localDg->getID(); } $nbDocsLabel = ''; $nbDocs = $localDg->getNumberOfDocuments($stateId); if ($stateId == 1 && forge_check_perm('docman', $this->Group->getID(), 'approve')) { $nbDocsPending = $localDg->getNumberOfDocuments(3); $nbDocsHidden = $localDg->getNumberOfDocuments(4); $nbDocsPrivate = $localDg->getNumberOfDocuments(5); } if ($stateId == 2 && forge_check_perm('docman', $this->Group->getID(), 'approve')) { $nbDocsTrashed = $localDg->getNumberOfDocuments(2); } if ($nbDocs && (!isset($nbDocsPending) || $nbDocsPending == 0) && (!isset($nbDocsHidden) || $nbDocsHidden == 0) && (!isset($nbDocsPrivate) || $nbDocsPrivate) && (!isset($nbDocsTrashed) || $nbDocsTrashed)) { $nbDocsLabel = '('.$nbDocs.')'; } if (isset($nbDocsPending) && isset($nbDocsHidden) && isset($nbDocsPrivate)) { $nbDocsLabel = '('.$nbDocs.'/'.$nbDocsPending.'/'.$nbDocsHidden.'/'.$nbDocsPrivate.')'; } if (isset($nbDocsTrashed)) { $nbDocsLabel = '('.$nbDocsTrashed.')'; } if ($localDg->getName() != '.trash') { $user = user_get_object($localDg->getCreated_by()); $lititle = _('Created_by:').$user->getRealName()._('; Last modified:').date(_('Y-m-d H:i'), $localDg->getLastModifyDate()); echo '
  • '.util_make_link($link, $localDg->getName(), array('class'=>'tabtitle-nw', 'title'=>$lititle)).$nbDocsLabel; } else { echo '
  • '.util_make_link($link, $localDg->getName()).$nbDocsLabel; } if ($dg->getSubgroup($subGroupIdValue, $stateId)) { echo ''; } echo '
  • '; } } } /** * getStatusNameList - get all status for documents * * @param string format of the return values. json returns : { name: id, }. Default is DB object. * @param string skipped status id */ function getStatusNameList($format = '', $removedval = '') { if (!empty($removedval)) { $stateQuery = db_query_params('select * from doc_states where stateid not in ($1) order by stateid', array($removedval)); } else { $stateQuery = db_query_params('select * from doc_states order by stateid', array()); } switch ($format) { case 'json': { $returnString = '{'; while ($stateArr = db_fetch_array($stateQuery)) { $returnString .= util_html_secure($stateArr['name']).': \''.$stateArr['stateid'].'\','; } $returnString .= '}'; return $returnString; break; } default: { return $stateQuery; } } } function getDocGroupList($nested_groups, $format = '', $allow_none = true, $selected_id = 0, $dont_display = array()) { $id_array = array(); $text_array = array(); $this->buildArrays($nested_groups, $id_array, $text_array, $dont_display); $rows = count($id_array); switch ($format) { case "json": { $returnString = '{'; for ($i=0; $i<$rows; $i++) { $returnString .= '\''.util_html_secure($text_array[$i]).'\':'.$id_array[$i].','; } $returnString .= '}'; break; } } return $returnString; } /** * buildArrays - Build the arrays to call html_build_select_box_from_arrays() * * @param array Array of groups. * @param array Reference to the array of ids that will be build * @param array Reference to the array of group names * @param array Array of IDs of groups that should not be displayed * @param int The ID of the parent whose childs are being showed (0 for root groups) * @param int The current level */ function buildArrays($group_arr, &$id_array, &$text_array, &$dont_display, $parent = 0, $level = 0) { if (!is_array($group_arr) || !array_key_exists("$parent", $group_arr)) return; $child_count = count($group_arr["$parent"]); for ($i = 0; $i < $child_count; $i++) { $doc_group =& $group_arr["$parent"][$i]; // Should we display this element? if (in_array($doc_group->getID(), $dont_display)) continue; $margin = str_repeat("--", $level); $id_array[] = $doc_group->getID(); $text_array[] = $margin.$doc_group->getName(); // Show childs (if any) $this->buildArrays($group_arr, $id_array, $text_array, $dont_display, $doc_group->getID(), $level+1); } } } ?>