private function getParentItem(Docman_Item $item, Project $project) { if (!$item->getParentId()) { return; } return Docman_ItemFactory::instance($project->getID())->getItemFromDb($item->getParentId()); }
/** * Mark item as deleted * * @param Docman_Item $item * * @return void */ function delete($item) { // The event must be processed before the item is deleted $um = UserManager::instance(); $user = $um->getCurrentUser(); $itemParent = $this->getItemFromDb($item->getParentId()); $item->fireEvent('plugin_docman_event_del', $user, $itemParent); // Delete Lock if any $lF = new Docman_LockFactory(); if ($lF->itemIsLocked($item)) { $lF->unlock($item); } $item->setDeleteDate(time()); $this->delCutPreferenceForAllUsers($item->getId()); $this->delCopyPreferenceForAllUsers($item->getId()); $dao = $this->_getItemDao(); $dao->updateFromRow($item->toRow()); $dao->storeDeletedItem($item->getId()); }
/** * Perform paste operation after cut * * @param Docman_Item $itemToMove Item to move * @param Docman_Folder $newParentItem New parent item * @param PFUser $user User who perform the paste * @param String $ordering Where the item should be paste within the new folder * * @return void */ protected function _doCutPaste($itemToMove, $newParentItem, $user, $ordering) { if ($itemToMove && $newParentItem && $newParentItem->getId() != $itemToMove->getId()) { $item_factory = $this->_getItemFactory(); $old_parent = $item_factory->getItemFromDb($itemToMove->getParentId()); if ($item_factory->setNewParent($itemToMove->getId(), $newParentItem->getId(), $ordering)) { $itemToMove->fireEvent('plugin_docman_event_move', $user, $newParentItem); $hp = Codendi_HTMLPurifier::instance(); $this->_controler->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'info_item_moved', array($itemToMove->getGroupId(), $old_parent->getId(), $hp->purify($old_parent->getTitle(), CODENDI_PURIFIER_CONVERT_HTML), $newParentItem->getId(), $hp->purify($newParentItem->getTitle(), CODENDI_PURIFIER_CONVERT_HTML))), CODENDI_PURIFIER_DISABLED); $item_factory->delCopyPreference(); $item_factory->delCutPreference(); } else { $this->_controler->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_item_not_moved')); } } }
/** * Returns the list of users monitoring the given item with an array associated to the item the user actually monitors: * getListeningUsers(item(10)) * => * array(101 => item(10) // The user is monitoring the item(10) directly * 102 => item(20) // The user is monitoring item(10) through item(20) "sub-hierarchy" * ) * * @param Docman_Item $item Item which listenners will be retrieved * @param Array $users Array where listeners are inserted. * @param String $type Type of listener, in order to retrieve listeners that monitor this item on a sub-hierarchy or not. * * @return Array */ public function getListeningUsers(Docman_Item $item, $users = array(), $type = PLUGIN_DOCMAN_NOTIFICATION) { $dar = $this->dao->searchUserIdByObjectIdAndType($item->getId(), $type ? $type : PLUGIN_DOCMAN_NOTIFICATION_CASCADE); if ($dar) { foreach ($dar as $user) { if (!array_key_exists($user['user_id'], $users)) { $users[$user['user_id']] = $item; } } } if ($id = $item->getParentId()) { $item = $this->_item_factory->getItemFromDb($id); $users = $this->getListeningUsers($item, $users, PLUGIN_DOCMAN_NOTIFICATION_CASCADE); } return $users; }