[ Index ]

PHP Cross Reference of GlotPress

title

Body

[close]

/gp-includes/ -> advanced-permissions.php (source)

   1  <?php
   2  
   3  /**
   4   * Filter for can_user, which tries if the user
   5   * has permissions on project parents
   6   */
   7  function gp_recurse_project_permissions( $verdict, $args ) {
   8      if ( !( !$verdict && $args['object_type'] == 'project' && $args['object_id'] && $args['user'] ) ) {
   9          return $verdict;
  10      }
  11      $project = GP::$project->get( $args['object_id'] );
  12      if ( $project->parent_project_id ) {
  13          return $args['user']->can( $args['action'], 'project', $project->parent_project_id );
  14      }
  15      return false;
  16  }
  17  
  18  function gp_recurse_validator_permission( $verdict, $args ) {
  19      if ( !( !$verdict && $args['object_type'] == GP::$validator_permission->object_type && $args['object_id'] && $args['user'] ) ) {
  20          return $verdict;
  21      }
  22      list( $project_id, $locale_slug, $set_slug ) = GP::$validator_permission->project_id_locale_slug_set_slug( $args['object_id'] );
  23      $project = GP::$project->get( $project_id );
  24      if ( $project->parent_project_id ) {
  25          return $args['user']->can( $args['action'], $args['object_type'], $project->parent_project_id.'|'.$locale_slug.'|'.$set_slug );
  26      }
  27      return false;
  28  }
  29  
  30  
  31  function gp_route_translation_set_permissions_to_validator_permissions( $verdict, $args ) {
  32      if ( !( $verdict == 'no-verdict' && $args['action'] == 'approve' && $args['object_type'] == 'translation-set'
  33              && $args['object_id'] && $args['user'] ) ) {
  34          return $verdict;
  35      }
  36      if ( isset( $args['extra']['set'] ) && $args['extra']['set'] && $args['extra']['set']->id == $args['object_id'] )
  37          $set = $args['extra']['set'];
  38      else
  39          $set = GP::$translation_set->get( $args['object_id'] );
  40      return $args['user']->can( 'approve', GP::$validator_permission->object_type,
  41          GP::$validator_permission->object_id( $set->project_id, $set->locale, $set->slug ) );
  42      
  43  }
  44  
  45  add_filter( 'can_user', 'gp_recurse_project_permissions', 10, 2 );
  46  add_filter( 'can_user', 'gp_recurse_validator_permission', 10, 2 );
  47  add_filter( 'pre_can_user', 'gp_route_translation_set_permissions_to_validator_permissions', 10, 2 );


Generated: Thu May 24 03:59:35 2012 Hosted by follow the white rabbit.