public function createNewLinkVersion(Docman_Link $link, $label, $changelog, $date)
 {
     $label = $this->da->quoteSmart($label);
     $changelog = $this->da->quoteSmart($changelog);
     $date = $this->da->escapeInt($date);
     $link_url = $this->da->quoteSmart($link->getUrl());
     $item_id = $this->da->escapeInt($link->getId());
     $user_id = $this->da->escapeInt($link->getOwnerId());
     $sql = "INSERT INTO plugin_docman_link_version (item_id, number, user_id, label, changelog, date, link_url)\n                SELECT {$item_id}, IFNULL(MAX(number), 0) + 1 as number, {$user_id}, {$label}, {$changelog}, {$date}, {$link_url}\n                FROM plugin_docman_link_version\n                WHERE item_id = {$item_id}";
     return $this->update($sql);
 }
 public function queueNewDocumentLinkVersion(Docman_Link $item, Docman_LinkVersion $version)
 {
     if ($this->plugin->isAllowed($item->getGroupId()) && $version->getNumber() > 1) {
         $this->system_event_manager->createEvent(SystemEvent_FULLTEXTSEARCH_DOCMAN_UPDATELINK::NAME, $this->getDocmanSerializedParameters($item, array($version->getNumber())), SystemEvent::PRIORITY_MEDIUM, SystemEvent::OWNER_APP);
     }
 }
 /**
  * @return Docman_LinkVersion
  */
 public function getLatestVersion(Docman_Link $link)
 {
     $row = $this->dao->searchByItemId($link->getId())->getRow();
     return new Docman_LinkVersion($row);
 }
 private function updateLink(Codendi_Request $request, Docman_Link $item, PFUser $user)
 {
     $data = $request->get('item');
     $item->setUrl($data['link_url']);
     $updated = $this->_getItemFactory()->updateLink($item, $request->get('version'));
     $this->manageLockNewVersion($user, $item, $request);
     // Approval table
     $link_version_factory = new Docman_LinkVersionFactory();
     $last_version = $link_version_factory->getLatestVersion($item);
     if ($last_version) {
         // Approval table creation needs the item currentVersion to be set.
         $item->setCurrentVersion($last_version);
         $this->newVersionApprovalTable($request, $item, $user);
     }
     $this->_controler->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'info_create_newversion'));
     $event_data = array('item' => $item, 'version' => $last_version);
     $this->event_manager->processEvent(PLUGIN_DOCMAN_EVENT_NEW_LINKVERSION, $event_data);
     return $updated;
 }
 public function updateLink(Docman_Link $link, array $version_data)
 {
     $update = $this->update(array('id' => $link->getId(), 'group_id' => $link->getGroupId(), 'title' => $link->getTitle(), 'user_id' => $link->getOwnerId(), 'item_type' => PLUGIN_DOCMAN_ITEM_TYPE_LINK, 'link_url' => $link->getUrl()));
     $link_version_factory = new Docman_LinkVersionFactory();
     $create = $link_version_factory->create($link, $version_data['label'], $version_data['changelog'], $_SERVER['REQUEST_TIME']);
     return $update && $create;
 }