function fetch($id, $params)
 {
     $html = '';
     if ($params['user_can_manage']) {
         $titles = array();
         $titles[] = $GLOBALS['Language']->getText('plugin_docman', 'details_permissions_ugroups');
         $titles[] = $GLOBALS['Language']->getText('plugin_docman', 'details_permissions_perms');
         $html .= html_build_list_table_top($titles, false, false, false);
         $odd_even = array('boxitem', 'boxitemalt');
         $i = 0;
         $ugroups = permission_get_ugroups_permissions($params['group_id'], $id, array('PLUGIN_DOCMAN_READ', 'PLUGIN_DOCMAN_WRITE', 'PLUGIN_DOCMAN_MANAGE'), false);
         ksort($ugroups);
         foreach ($ugroups as $ugroup) {
             $html .= '<tr class="' . $odd_even[$i++ % count($odd_even)] . '">';
             $html .= '<td>' . $ugroup['ugroup']['name'] . '</td>';
             $html .= '<td style="text-align:center;"><select name="permissions[' . $ugroup['ugroup']['id'] . ']">';
             $html .= '<option value="100">-</option>';
             $perms = array('PLUGIN_DOCMAN_READ', 'PLUGIN_DOCMAN_WRITE', 'PLUGIN_DOCMAN_MANAGE');
             $i = 1;
             foreach ($perms as $perm) {
                 if (isset($params['force_permissions'][$ugroup['ugroup']['id']])) {
                     $selected = $params['force_permissions'][$ugroup['ugroup']['id']] == $i ? 'selected="selected"' : '';
                 } else {
                     $selected = isset($ugroup['permissions'][$perm]) ? 'selected="selected"' : '';
                 }
                 $html .= '<option value="' . $i++ . '" ' . $selected . '>' . permission_get_name($perm) . '</option>';
             }
             $html .= '</select></td>';
             $html .= '</tr>';
         }
         $html .= '</table>';
     } else {
         $html .= $GLOBALS['Language']->getText('plugin_docman', 'new_same_perms_as_parent');
         // Will be created with the same permissions than its parent.
         $html .= $GLOBALS['Language']->getText('plugin_docman', 'new_need_to_be_manager');
         // <br />You need Manage permission to define permissions.
     }
     return $html;
 }
 public function emitFeedback($permission_type)
 {
     foreach ($this->override_by as $catch_all_ugroup_id => $override_ids) {
         $GLOBALS['Response']->addFeedback(Feedback::WARN, $GLOBALS['Language']->getText('project_admin_permissions', 'override', array(permission_get_name($permission_type), $this->getUGroupNameImplode($override_ids), $this->getUGroupNameById($catch_all_ugroup_id))));
     }
 }
예제 #3
0
 $title_arr[] = $Language->getText('project_admin_editugroup', 'permission');
 $title_arr[] = $Language->getText('project_admin_editugroup', 'resource_name');
 echo html_build_list_table_top($title_arr, false, false, false);
 $row_num = 0;
 while ($row = db_fetch_array($res)) {
     if (strpos($row['permission_type'], 'TRACKER_FIELD') === 0) {
         $atid = permission_extract_atid($row['object_id']);
         if (isset($tracker_field_displayed[$atid])) {
             continue;
         }
         $objname = permission_get_object_name('TRACKER_ACCESS_FULL', $atid);
     } else {
         $objname = permission_get_object_name($row['permission_type'], $row['object_id']);
     }
     echo '<TR class="' . util_get_alt_row_color($row_num) . '">';
     echo '<TD>' . permission_get_name($row['permission_type']) . '</TD>';
     if ($row['permission_type'] == 'PACKAGE_READ') {
         echo '<TD>' . $Language->getText('project_admin_editugroup', 'package') . ' <a href="/file/admin/editpackagepermissions.php?package_id=' . $row['object_id'] . '&group_id=' . $group_id . '">' . $objname . '</a></TD>';
     } else {
         if ($row['permission_type'] == 'RELEASE_READ') {
             $package_id = file_get_package_id_from_release_id($row['object_id']);
             echo '<TD>' . $Language->getText('project_admin_editugroup', 'release') . ' <a href="/file/admin/editreleasepermissions.php?release_id=' . $row['object_id'] . '&group_id=' . $group_id . '&package_id=' . $package_id . '">' . file_get_release_name_from_id($row['object_id']) . '</a> (' . $Language->getText('project_admin_editugroup', 'from_package') . ' <a href="/file/admin/editreleases.php?package_id=' . $package_id . '&group_id=' . $group_id . '">' . $objname . '</a></TD>';
         } else {
             if ($row['permission_type'] == 'DOCUMENT_READ') {
                 echo '<TD>' . $Language->getText('project_admin_editugroup', 'document') . ' <a href="/docman/admin/editdocpermissions.php?docid=' . $row['object_id'] . '&group_id=' . $group_id . '">' . $objname . '</a></TD>';
             } else {
                 if ($row['permission_type'] == 'DOCGROUP_READ') {
                     echo '<TD>' . $Language->getText('project_admin_editugroup', 'document_group') . ' <a href="/docman/admin/editdocgrouppermissions.php?doc_group=' . $row['object_id'] . '&group_id=' . $group_id . '">' . $objname . '</a></TD>';
                 } else {
                     if ($row['permission_type'] == 'WIKI_READ') {
                         echo '<TD>' . $Language->getText('project_admin_editugroup', 'wiki') . ' <a href="/wiki/admin/index.php?view=wikiPerms&group_id=' . $group_id . '">' . $objname . '</a></TD>';
 /**
  * @param Docman_Item  $item  The id of the item
  * @param bool         $force true if you want to bypass permissions checking (@see permission_add_ugroup)
  * @param PFUser         $user  The current user
  */
 private function setPermissionsOnItem(Docman_Item $item, $force, PFUser $user)
 {
     $permission_definition = array(100 => array('order' => 0, 'type' => null, 'label' => null, 'previous' => null), 1 => array('order' => 1, 'type' => 'PLUGIN_DOCMAN_READ', 'label' => permission_get_name('PLUGIN_DOCMAN_READ'), 'previous' => 0), 2 => array('order' => 2, 'type' => 'PLUGIN_DOCMAN_WRITE', 'label' => permission_get_name('PLUGIN_DOCMAN_WRITE'), 'previous' => 1), 3 => array('order' => 3, 'type' => 'PLUGIN_DOCMAN_MANAGE', 'label' => permission_get_name('PLUGIN_DOCMAN_MANAGE'), 'previous' => 2));
     $permissions = $this->_controler->request->get('permissions');
     $old_permissions = permission_get_ugroups_permissions($item->getGroupId(), $item->getId(), array('PLUGIN_DOCMAN_READ', 'PLUGIN_DOCMAN_WRITE', 'PLUGIN_DOCMAN_MANAGE'), false);
     $done_permissions = array();
     $history = array('PLUGIN_DOCMAN_READ' => false, 'PLUGIN_DOCMAN_WRITE' => false, 'PLUGIN_DOCMAN_MANAGE' => false);
     foreach ($permissions as $ugroup_id => $wanted_permission) {
         $this->_setPermission($item->getGroupId(), $item->getId(), $permission_definition, $old_permissions, $done_permissions, $ugroup_id, $permissions, $history, $force);
     }
     $updated = false;
     foreach ($history as $perm => $put_in_history) {
         if ($put_in_history) {
             permission_add_history($item->getGroupId(), $perm, $item->getId());
             $updated = true;
         }
     }
     $this->_controler->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'info_perms_updated'));
     // If requested by user, apply permissions recursively on sub items
     if ($this->_controler->request->get('recursive')) {
         //clone permissions for sub items
         // Recursive application via a callback of Docman_Actions::recursivePermissions in
         // Docman_ItemFactory::breathFirst
         $item_factory = $this->_getItemFactory();
         $item_factory->breathFirst($item->getId(), array(&$this, 'recursivePermissions'), array('id' => $item->getId()));
         $this->_controler->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'info_perms_recursive_updated'));
     }
 }
 function getContent()
 {
     $folder_or_document = is_a($this->item, 'Docman_Folder') ? 'folder' : 'document';
     $content = '';
     $content .= '<form action="' . $this->url . '" method="post">';
     //{{{ Explanations
     /* => in the doc
        $content .= '<div>';
        $content .= 'Readers can:<ul>
                        <li>access to document/folder,</li>
                        <li>access to properties of the document/folder.</li>
                     </ul>';
        $content .= 'Writers have the same rights than readers plus:<ul>
                        <li>update the document (create a new version),</li>
                        <li>update the properties of the document/folder,</li>
                        <li>move the document/folder,</li>
                        <li>create a sub-item for the folder.</li>
                     </ul>';
        $content .= 'Managers have the same rights than writers plus:<ul>
                        <li>delete the document/folder,</li>
                        <li>change permissions of the document/folder.</li>
                     </ul>';
        $content .= '</div>';
        */
     //}}}
     //{{{ Permissions
     $content .= '<div>';
     $titles = array();
     $titles[] = $GLOBALS['Language']->getText('plugin_docman', 'details_permissions_ugroups');
     $titles[] = $GLOBALS['Language']->getText('plugin_docman', 'details_permissions_perms');
     $content .= html_build_list_table_top($titles, false, false, false);
     $odd_even = array('boxitem', 'boxitemalt');
     $i = 0;
     $ugroups = permission_get_ugroups_permissions($this->item->getGroupId(), $this->item->getId(), array('PLUGIN_DOCMAN_READ', 'PLUGIN_DOCMAN_WRITE', 'PLUGIN_DOCMAN_MANAGE'), false);
     ksort($ugroups);
     foreach ($ugroups as $ugroup) {
         $content .= '<tr class="' . $odd_even[$i++ % count($odd_even)] . '">';
         $content .= '<td>' . $ugroup['ugroup']['name'] . '</td>';
         $content .= '<td style="text-align:center;"><select name="permissions[' . $ugroup['ugroup']['id'] . ']">';
         $content .= '<option value="100">-</option>';
         $perms = array('PLUGIN_DOCMAN_READ', 'PLUGIN_DOCMAN_WRITE', 'PLUGIN_DOCMAN_MANAGE');
         $i = 1;
         foreach ($perms as $perm) {
             $content .= '<option value="' . $i++ . '" ' . (isset($ugroup['permissions'][$perm]) ? 'selected="selected"' : '') . '>' . permission_get_name($perm) . '</option>';
         }
         $content .= '</select></td>';
         $content .= '</tr>';
     }
     $content .= '</table>';
     if (is_a($this->item, 'Docman_Folder')) {
         $content .= '<div>';
         $content .= '<input type="checkbox" name="recursive" id="docman_recusrsive_permissions" value="1" /><label for="docman_recusrsive_permissions">' . $GLOBALS['Language']->getText('plugin_docman', 'details_permissions_recursive') . '</label>';
         $content .= '</div>';
     }
     $content .= '<div>';
     $content .= '<input type="hidden" name="action" value="permissions" />';
     $content .= '<input type="hidden" name="id"     value="' . $this->item->getId() . '" />';
     $content .= '<input type="submit" name="update" value="' . $GLOBALS['Language']->getText('project_admin_permissions', 'submit_perm') . '" />';
     $content .= '</div>';
     $content .= '</div>';
     //}}}
     $content .= '</form>';
     return $content;
 }
예제 #6
0
 public function getContent()
 {
     $content = '<h2>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'permissions_title') . '</h2>';
     $this->permissions_manager = PermissionsManager::instance();
     $dar = $this->permissions_manager->searchByUgroupId($this->ugroup->getId());
     if ($dar && !$dar->isError() && $dar->rowCount() > 0) {
         $content .= '<p>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'ug_perms') . '<p>';
         $title_arr = array();
         $title_arr[] = $GLOBALS['Language']->getText('project_admin_editugroup', 'permission');
         $title_arr[] = $GLOBALS['Language']->getText('project_admin_editugroup', 'resource_name');
         $content .= '<table class="admin_permissions table table-bordered table-striped">';
         $content .= '<thead><tr>';
         $content .= '<th>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'permission') . '</th>';
         $content .= '<th>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'resource_name') . '</th>';
         $content .= '</tr></thead>';
         $content .= '<tbody>';
         $row_num = 0;
         foreach ($dar as $row) {
             if (strpos($row['permission_type'], 'TRACKER_FIELD') === 0) {
                 $atid = permission_extract_atid($row['object_id']);
                 if (isset($tracker_field_displayed[$atid])) {
                     continue;
                 }
                 $objname = permission_get_object_name('TRACKER_ACCESS_FULL', $atid);
             } else {
                 $objname = permission_get_object_name($row['permission_type'], $row['object_id']);
             }
             $content .= '<TR>';
             $content .= '<TD>' . permission_get_name($row['permission_type']) . '</TD>';
             if ($row['permission_type'] == 'PACKAGE_READ') {
                 $content .= '<TD>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'package') . ' <a href="/file/admin/editpackagepermissions.php?package_id=' . $row['object_id'] . '&group_id=' . $this->ugroup->getProjectId() . '">' . $objname . '</a></TD>';
             } else {
                 if ($row['permission_type'] == 'RELEASE_READ') {
                     $package_id = file_get_package_id_from_release_id($row['object_id']);
                     $content .= '<TD>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'release') . ' <a href="/file/admin/editreleasepermissions.php?release_id=' . $row['object_id'] . '&group_id=' . $this->ugroup->getProjectId() . '&package_id=' . $package_id . '">' . file_get_release_name_from_id($row['object_id']) . '</a> (' . $GLOBALS['Language']->getText('project_admin_editugroup', 'from_package') . ' <a href="/file/admin/editreleases.php?package_id=' . $package_id . '&group_id=' . $this->ugroup->getProjectId() . '">' . $objname . '</a></TD>';
                 } else {
                     if ($row['permission_type'] == 'DOCUMENT_READ') {
                         $content .= '<TD>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'document') . ' <a href="/docman/admin/editdocpermissions.php?docid=' . $row['object_id'] . '&group_id=' . $this->ugroup->getProjectId() . '">' . $objname . '</a></TD>';
                     } else {
                         if ($row['permission_type'] == 'DOCGROUP_READ') {
                             $content .= '<TD>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'document_group') . ' <a href="/docman/admin/editdocgrouppermissions.php?doc_group=' . $row['object_id'] . '&group_id=' . $this->ugroup->getProjectId() . '">' . $objname . '</a></TD>';
                         } else {
                             if ($row['permission_type'] == 'WIKI_READ') {
                                 $content .= '<TD>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'wiki') . ' <a href="/wiki/admin/index.php?view=wikiPerms&group_id=' . $this->ugroup->getProjectId() . '">' . $objname . '</a></TD>';
                             } else {
                                 if ($row['permission_type'] == 'WIKIPAGE_READ') {
                                     $content .= '<TD>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'wiki_page') . ' <a href="/wiki/admin/index.php?group_id=' . $this->ugroup->getProjectId() . '&view=pagePerms&id=' . $row['object_id'] . '">' . $objname . '</a></TD>';
                                 } else {
                                     if (strpos($row['permission_type'], 'TRACKER_ACCESS') === 0) {
                                         $content .= '<TD>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'tracker') . ' <a href="/tracker/admin/?func=permissions&perm_type=tracker&group_id=' . $this->ugroup->getProjectId() . '&atid=' . $row['object_id'] . '">' . $objname . '</a></TD>';
                                     } else {
                                         if (strpos($row['permission_type'], 'TRACKER_FIELD') === 0) {
                                             $tracker_field_displayed[$atid] = 1;
                                             $atid = permission_extract_atid($row['object_id']);
                                             $content .= '<TD>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'tracker_field') . ' <a href="/tracker/admin/?group_id=' . $this->ugroup->getProjectId() . '&atid=' . $atid . '&func=permissions&perm_type=fields&group_first=1&selected_id=' . $this->ugroup->getId() . '">' . $objname . '</a></TD>';
                                         } else {
                                             if ($row['permission_type'] == 'TRACKER_ARTIFACT_ACCESS') {
                                                 $content .= '<td>' . $this->html_purifier->purify($objname, CODENDI_PURIFIER_BASIC) . '</td>';
                                             } else {
                                                 $results = false;
                                                 $this->event_manager->processEvent('permissions_for_ugroup', array('permission_type' => $row['permission_type'], 'object_id' => $row['object_id'], 'objname' => $objname, 'group_id' => $this->ugroup->getProjectId(), 'ugroup_id' => $this->ugroup->getId(), 'results' => &$results));
                                                 if ($results) {
                                                     $content .= '<TD>' . $results . '</TD>';
                                                 } else {
                                                     $content .= '<TD>' . $row['object_id'] . '</TD>';
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             $content .= '</TR>';
             $row_num++;
         }
         $content .= '</tbody></table><p>';
     } else {
         $content .= '<p>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'no_perms') . '.</p>';
     }
     return $content;
 }