function visitLink(&$item, $params = array())
 {
     if (isset($params['version_number'])) {
         $version_factory = new Docman_LinkVersionFactory();
         $version = $version_factory->getSpecificVersion($item, $params['version_number']);
         if ($version) {
             return $version->getLink();
         }
     }
     return $item->getUrl();
 }
 public function __construct(Docman_Link $item, $versionNumber = null)
 {
     parent::__construct($item);
     $this->dao = new Docman_ApprovalTableLinkDao();
     $vFactory = new Docman_LinkVersionFactory();
     $dar = $this->dao->getLatestTableByItemId($item->getId(), 'ver.number');
     if ($dar && !$dar->isError() && $dar->rowCount() == 1) {
         $row = $dar->getRow();
         $lastVersionNumber = $row['number'];
         $lastItemVersion = $vFactory->getSpecificVersion($item, $lastVersionNumber);
         if ($versionNumber !== null && $lastItemVersion->getNumber() != $versionNumber) {
             $this->itemVersion = $vFactory->getSpecificVersion($item, $versionNumber);
             $this->customizable = false;
         } else {
             $this->itemVersion = $lastItemVersion;
         }
     } else {
         $this->itemVersion = $item->getCurrentVersion();
     }
 }
 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;
 }
 private function getLinkVersions()
 {
     $uh = UserHelper::instance();
     $content = '<h3>' . $GLOBALS['Language']->getText('plugin_docman', 'details_history_versions') . '</h3>';
     $version_factory = new Docman_LinkVersionFactory();
     $versions = $version_factory->getAllVersionForItem($this->item);
     if ($versions) {
         $titles = array($GLOBALS['Language']->getText('plugin_docman', 'details_history_versions_version'), $GLOBALS['Language']->getText('plugin_docman', 'details_history_versions_date'), $GLOBALS['Language']->getText('plugin_docman', 'details_history_versions_author'), $GLOBALS['Language']->getText('plugin_docman', 'details_history_versions_label'), $GLOBALS['Language']->getText('plugin_docman', 'details_history_versions_changelog'));
         $content .= html_build_list_table_top($titles, false, false, false);
         $odd_even = array('boxitem', 'boxitemalt');
         $i = 0;
         foreach (array_keys($versions) as $key) {
             $download = Docman_View_View::buildUrl($this->url, array('action' => 'show', 'id' => $this->item->getId(), 'version_number' => $versions[$key]->getNumber()));
             $user = $versions[$key]->getAuthorId() ? $uh->getDisplayNameFromUserId($versions[$key]->getAuthorId()) : $GLOBALS['Language']->getText('plugin_docman', 'details_history_anonymous');
             $content .= '<tr class="' . $odd_even[$i++ % count($odd_even)] . '">';
             $content .= '<td align="center"><a href="' . $download . '">' . $versions[$key]->getNumber() . '</a></td>';
             $content .= '<td>' . html_time_ago($versions[$key]->getDate()) . '</td>';
             $content .= '<td>' . $this->hp->purify($user) . '</td>';
             $content .= '<td>' . $this->hp->purify($versions[$key]->getLabel()) . '</td>';
             $content .= '<td>' . $this->hp->purify($versions[$key]->getChangelog(), CODENDI_PURIFIER_LIGHT) . '</td>';
             $content .= '</tr>';
         }
         $content .= '</table>';
     } else {
         $content .= '<div>' . $GLOBALS['Language']->getText('plugin_docman', 'details_history_versions_error') . '</div>';
     }
     return $content;
 }