function massUpdate($srcItemId, $mdLabel, $itemIdArray)
 {
     $mdFactory = new Docman_MetadataFactory($this->groupId);
     if ($mdFactory->isRealMetadata($mdLabel)) {
         $md = $mdFactory->getFromLabel($mdLabel);
         $dao =& $this->getDao();
         $dao->massUpdate($srcItemId, $md->getId(), $md->getType(), $itemIdArray);
     } else {
         $itemFactory = new Docman_ItemFactory($this->groupId);
         $itemFactory->massUpdate($srcItemId, $mdLabel, $itemIdArray);
     }
 }
 /**
  * Checks that the updating property have a non-empty name,
  * and if the name have been changed, also checks that the same
  * name is not already taken by another property
  */
 private function validateUpdateMetadata($name, $label)
 {
     $name = trim($name);
     if ($name == '') {
         $valid = false;
         $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'admin_metadata_new_name_missing'));
     } else {
         $mdFactory = new Docman_MetadataFactory($this->groupId);
         $md = $mdFactory->getFromLabel($label);
         // name has changed
         if ($md !== null && $md->getName() != $name) {
             if ($mdFactory->findByName($name)->count() == 0) {
                 $valid = true;
             } else {
                 $valid = false;
                 $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'admin_metadata_new_name_exists', $name));
             }
         } else {
             $valid = true;
         }
     }
     return $valid;
 }
 function admin_delete_love()
 {
     $request =& HTTPRequest::instance();
     $_loveId = (int) $request->get('loveid');
     $_mdLabel = $request->get('md');
     $_gid = (int) $request->get('group_id');
     $mdFactory = new Docman_MetadataFactory($_gid);
     $md =& $mdFactory->getFromLabel($_mdLabel);
     if ($md !== null && $md->getType() == PLUGIN_DOCMAN_METADATA_TYPE_LIST && $md->getLabel() != 'status') {
         $love = new Docman_MetadataListOfValuesElement($md->getId());
         $love->setId($_loveId);
         // Delete value
         $loveFactory = new Docman_MetadataListOfValuesElementFactory($md->getId());
         $deleted = $loveFactory->delete($love);
         if ($deleted) {
             $this->_controler->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'admin_metadata_delete_element'));
             $this->_controler->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'admin_metadata_reset_delete_element'));
         } else {
             $this->_controler->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'admin_metadata_error_delete_element'));
         }
     } else {
         // Sth really strange is happening... user try to delete a value
         // that do not belong to a metadata with a List type !?
         // If this happen, shutdown the server, format the hard drive and
         // leave computer science to keep goat on the Larzac.
     }
 }
 /**
  * Returns the list of values for the given list metadata.
  */
 function getMetadataListOfValues()
 {
     $request =& $this->_controler->request;
     $groupId = $request->get('group_id');
     $metadataFactory = new Docman_MetadataFactory($groupId);
     $metadataLovFactory = new Docman_MetadataListOfValuesElementFactory();
     $label = $request->get('label');
     $md = $metadataFactory->getFromLabel($label);
     $res = array();
     if ($md->getType() == PLUGIN_DOCMAN_METADATA_TYPE_LIST) {
         foreach ($metadataLovFactory->getListByFieldId($md->id, $md->label, true) as $val) {
             $res[] = $val;
         }
     }
     $this->_controler->_viewParams['action_result'] = $res;
 }
Beispiel #5
0
 function fetchLogsForItem($item_id, $display_access_logs)
 {
     $html = '';
     $uh = UserHelper::instance();
     $hp = Codendi_HTMLPurifier::instance();
     $html .= '<h3>' . $GLOBALS['Language']->getText('plugin_docman', 'details_history_logs') . '</h3>';
     $dar = $this->dao->searchByItemIdOrderByTimestamp($item_id);
     if ($dar && !$dar->isError()) {
         if ($dar->valid()) {
             $titles = array();
             $titles[] = $GLOBALS['Language']->getText('plugin_docman', 'details_history_logs_when');
             $titles[] = $GLOBALS['Language']->getText('plugin_docman', 'details_history_logs_who');
             $titles[] = $GLOBALS['Language']->getText('plugin_docman', 'details_history_logs_what');
             $titles[] = $GLOBALS['Language']->getText('plugin_docman', 'details_history_logs_old_value');
             $titles[] = $GLOBALS['Language']->getText('plugin_docman', 'details_history_logs_new_value');
             $html .= html_build_list_table_top($titles, false, false, false);
             $odd_even = array('boxitem', 'boxitemalt');
             $i = 0;
             $_previous_date = -1;
             $_previous_auth = -1;
             while ($dar->valid()) {
                 $row = $dar->current();
                 if ($row['type'] != PLUGIN_DOCMAN_EVENT_ACCESS || $display_access_logs) {
                     $user = $row['user_id'] ? $hp->purify($uh->getDisplayNameFromUserId($row['user_id'])) : $GLOBALS['Language']->getText('plugin_docman', 'details_history_anonymous');
                     $html .= '<tr class="' . $odd_even[$i++ % count($odd_even)] . '">';
                     $html .= '<td>' . html_time_ago($row['time']) . '</td>';
                     $html .= '<td>' . $user . '</td>';
                     if ($row['type'] == PLUGIN_DOCMAN_EVENT_METADATA_UPDATE) {
                         $_old_v = $row['old_value'];
                         $_new_v = $row['new_value'];
                         $mdFactory = new Docman_MetadataFactory($row['group_id']);
                         $md =& $mdFactory->getFromLabel($row['field']);
                         if ($md->getType() == PLUGIN_DOCMAN_METADATA_TYPE_LIST) {
                             $mdlovebo = new Docman_MetadataListOfValuesElementFactory();
                             $_old_e =& $mdlovebo->getByElementId($row['old_value'], $md->getLabel());
                             $_new_e =& $mdlovebo->getByElementId($row['new_value'], $md->getLabel());
                             if ($_old_e !== null) {
                                 $_old_v = $_old_e->getName();
                             }
                             if ($_new_e !== null) {
                                 $_new_v = $_new_e->getName();
                             }
                         } else {
                             if ($md->getType() == PLUGIN_DOCMAN_METADATA_TYPE_DATE) {
                                 $_old_v = format_date($GLOBALS['Language']->getText('system', 'datefmt'), $_old_v);
                                 $_new_v = format_date($GLOBALS['Language']->getText('system', 'datefmt'), $_new_v);
                             }
                         }
                         $html .= '<td>' . $GLOBALS['Language']->getText('plugin_docman', 'details_history_logs_change_field', array($md->getName())) . '</td>';
                         $html .= '<td>' . $_old_v . '</td>';
                         $html .= '<td>' . $_new_v . '</td>';
                     } elseif ($row['type'] == PLUGIN_DOCMAN_EVENT_WIKIPAGE_UPDATE) {
                         $old_version = $row['old_value'];
                         $new_version = $row['new_value'];
                         $dIF = $this->_getItemFactory($row['group_id']);
                         $pagename = $dIF->getItemFromDb($item_id)->getPageName();
                         $difflink = '/wiki/index.php?group_id=' . $row['group_id'];
                         $difflink .= '&pagename=' . urlencode($pagename) . '&action=diff';
                         $difflink .= '&versions%5b%5d=' . $old_version . '&versions%5b%5d=' . $new_version;
                         $html .= '<td colspan>' . $this->getText($row['type']) . '</td>';
                         $html .= '<td colspan="2" align="center"><a href=' . $difflink . '>diffs</a>';
                     } elseif ($row['type'] == PLUGIN_DOCMAN_EVENT_SET_VERSION_AUTHOR) {
                         $newUser = $row['new_value'];
                         $html .= '<td>' . $this->getText($row['type']) . '</td>';
                         $html .= "<td>&nbsp;</td>";
                         $html .= "<td>{$newUser}</td>";
                     } elseif ($row['type'] == PLUGIN_DOCMAN_EVENT_SET_VERSION_DATE) {
                         $newDate = format_date($GLOBALS['Language']->getText('system', 'datefmt'), $row['new_value']);
                         $html .= '<td>' . $this->getText($row['type']) . '</td>';
                         $html .= "<td>&nbsp;</td>";
                         $html .= "<td>{$newDate}</td>";
                     } elseif ($row['type'] == PLUGIN_DOCMAN_EVENT_DEL_VERSION) {
                         $old_version = $row['old_value'];
                         $html .= '<td>' . $this->getText($row['type']) . '</td>';
                         $html .= '<td colspan="2" align="center">' . $old_version . '</td>';
                     } elseif ($row['type'] == PLUGIN_DOCMAN_EVENT_RESTORE_VERSION) {
                         $versionNumber = $row['old_value'];
                         $html .= '<td>' . $this->getText($row['type']) . '</td>';
                         $html .= '<td colspan="2" align="center">' . $versionNumber . '</td>';
                     } else {
                         $html .= '<td colspan>' . $this->getText($row['type']) . '</td><td colspan="2">&nbsp;</td>';
                     }
                     $html .= '</tr>';
                     $_previous_date = $row['time'];
                     $_previous_auth = $row['user_id'];
                 }
                 $dar->next();
             }
             $html .= '</table>';
         } else {
             $html .= '<div>' . $GLOBALS['Language']->getText('plugin_docman', 'details_history_logs_no') . '</div>';
         }
     } else {
         $html .= '<div>' . $GLOBALS['Language']->getText('plugin_docman', 'details_history_logs_error') . '</div>';
         $html .= $dar->isError();
     }
     return $html;
 }
 /**
  *
  */
 function cloneFilter($srcFilter, $dstReport, $metadataMapping)
 {
     $dstMdFactory = new Docman_MetadataFactory($dstReport->getGroupId());
     $newLabel = null;
     if ($dstMdFactory->isRealMetadata($srcFilter->md->getLabel())) {
         // Check if there is a corresponding MD in the dst project
         // Should never happens in case of initial template clone
         // but main exists with 'clone this report' function
         if (isset($metadataMapping['md'][$srcFilter->md->getId()])) {
             // For real metadata, create MD based on the new ID
             $newLabel = 'field_' . $metadataMapping['md'][$srcFilter->md->getId()];
         }
     } else {
         // Check in use
         $newLabel = $srcFilter->md->getLabel();
     }
     if ($newLabel !== null) {
         $dstFilterFactory = $this->getFilterFactory($dstReport->getGroupId());
         $gsMd = $this->getGlobalSearchMetadata();
         if ($newLabel == $gsMd->getLabel()) {
             $newMd = $gsMd;
         } else {
             $itMd = $this->getItemTypeSearchMetadata();
             if ($newLabel == $itMd->getLabel()) {
                 $newMd = $itMd;
             } else {
                 $newMd = $dstMdFactory->getFromLabel($newLabel);
             }
         }
         if ($newMd->isUsed()) {
             // Create new filter
             $dstFilter = $dstFilterFactory->createFromMetadata($newMd, $dstReport->getAdvancedSearch());
             // Append values
             $this->cloneFilterValues($srcFilter, $dstFilter, $metadataMapping);
             // Save filter
             $dstFilterFactory->createFilter($dstReport->getId(), $dstFilter);
         }
     }
 }