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; }
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> </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> </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"> </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); } } }