/** * Save upload item in the database. * * @param UserDao $userDao * @param string $name * @param string $url * @param null|int $parent * @param int $sizebytes * @param string $checksum * @return ItemDao * @throws Zend_Exception */ public function createLinkItem($userDao, $name, $url, $parent = null, $sizebytes = 0, $checksum = ' ') { /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); /** @var FolderModel $folderModel */ $folderModel = MidasLoader::loadModel('Folder'); /** @var AssetstoreModel $assetstoreModel */ $assetstoreModel = MidasLoader::loadModel('Assetstore'); /** @var ItemRevisionModel $itemRevisionModel */ $itemRevisionModel = MidasLoader::loadModel('ItemRevision'); if ($userDao == null) { throw new Zend_Exception('Please log in'); } if (is_numeric($parent)) { $parent = $folderModel->load($parent); } if ($parent == false || !$folderModel->policyCheck($parent, $userDao, MIDAS_POLICY_WRITE)) { throw new Zend_Exception('Parent permissions errors'); } Zend_Loader::loadClass('ItemDao', BASE_PATH . '/core/models/dao'); $item = new ItemDao(); $item->setName($name); $item->setDescription(''); $item->setSizebytes($sizebytes); $item->setType(0); $item->setPrivacyStatus(MIDAS_PRIVACY_PRIVATE); // Must set this flag private initially $itemModel->save($item, false); $folderModel->addItem($parent, $item); $itemModel->copyParentPolicies($item, $parent); Zend_Loader::loadClass('ItemRevisionDao', BASE_PATH . '/core/models/dao'); $itemRevisionDao = new ItemRevisionDao(); $itemRevisionDao->setChanges('Initial revision'); $itemRevisionDao->setUser_id($userDao->getKey()); $itemRevisionDao->setDate(date('Y-m-d H:i:s')); $itemRevisionDao->setLicenseId(null); $itemModel->addRevision($item, $itemRevisionDao); // Add bitstreams to the revision Zend_Loader::loadClass('BitstreamDao', BASE_PATH . '/core/models/dao'); $bitstreamDao = new BitstreamDao(); $bitstreamDao->setName($url); $bitstreamDao->setPath($url); $bitstreamDao->setMimetype('url'); $bitstreamDao->setSizebytes($sizebytes); $bitstreamDao->setChecksum($checksum); $assetstoreDao = $assetstoreModel->getDefault(); $bitstreamDao->setAssetstoreId($assetstoreDao->getKey()); $itemRevisionModel->addBitstream($itemRevisionDao, $bitstreamDao); $this->getLogger()->debug('Link item created (' . $item->getName() . ', id=' . $item->getKey() . ')'); return $item; }