コード例 #1
0
 private function getParentItem(Docman_Item $item, Project $project)
 {
     if (!$item->getParentId()) {
         return;
     }
     return Docman_ItemFactory::instance($project->getID())->getItemFromDb($item->getParentId());
 }
コード例 #2
0
 /**
  * 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());
 }
コード例 #3
0
 /**
  * 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'));
         }
     }
 }
コード例 #4
0
 /**
  * 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;
 }