Plugin index

<?php
if (class_exists('\Textpattern\Tag\Registry')) {
  
Txp::get('\Textpattern\Tag\Registry')
    ->
register('rvm_privileged')
    ->
register('rvm_if_privileged')
    ->
register('rvm_privileged_user');
}


function 
rvm_privileged($atts)
{
  
extract(lAtts(array(
    
'name' => '',
    
'level'  => ''
  
), $atts));

  if (!
rvm_is_privileged($name$level))
  {
    
ob_clean();
    
txp_die('Forbidden'403);
  }
}


function 
rvm_if_privileged($atts$thing '')
{
  
extract(lAtts(array(
    
'name' => '',
    
'level' => ''
  
), $atts));

  return 
parse(EvalElse($thingrvm_is_privileged($name$level)));
}


function 
rvm_is_privileged($name$level)
{
  static 
$ili 0;

  if (
$ili === 0$ili is_logged_in();

  if (!
$ili) return FALSE;

  
$isname  = ($name and in_array($ili['name'], do_list($name)));
  
$islevel = ($level and in_array($ili['privs'], do_list($level)));

  if (
$name)
  {
    if (
$level)
    {
      return (
$isname and $islevel);
    }
    else
    {
      return 
$isname;
    }
  }
  elseif(
$level)
  {
    return 
$islevel;
  }
  else
  {
    return 
TRUE;
  }
}


function 
rvm_privileged_user($atts)
{
  
extract(lAtts(array(
    
'type' => 'RealName'
  
), $atts));

  static 
$ili 0;

  if (
$ili === 0$ili is_logged_in();

  
$types = array('RealName''name''email''privilege''level');

  if (!
$ili or !in_array($type$types)) return;

  
$levels = array('none''publisher''managing editor''copy editor''staff writer''freelancer''designer');

  switch (
$type)
  {
    case 
'privilege'$out $levels[$ili['privs']]; break;
    case 
'level'    $out $ili['privs']; break;
    default         : 
$out $ili[$type];
  }

  return 
htmlspecialchars($out);
}
?>