<?php 
// TODO: redo the crap! 
/** 
 * Implements qtag USERATTRIBUTE. 
 * 
 * Returns an user attribute of a given user. 
 * 
 * @param Environment $env 
 *   The Environment. 
 * 
 * @param string $target 
 *   The qtag's target. 
 * 
 * @param array $attributes 
 *   The qtag's attributes. 
 * 
 * @return string 
 *   The rendered qtag. 
 */ 
function qtag_USERATTRIBUTE($env, $target, $attributes) { 
  $user = ($target == NULL) ? UserFactory::current($env) : new User($env, $target); 
  switch ($attributes['name']) { 
 
    // User's login name. 
    case 'username': 
      $string = $user->getName(); 
      break; 
    // User's last name. 
    case 'last_name': 
      $string = $user->getLastName(); 
      break; 
    // User's email. 
    case 'email': 
      $string = $user->getEmail(); 
      break; 
 
    // User's first name. 
    case 'first_name': 
      $string = $user->getFirstName(); 
      break; 
 
    default: 
      $string = qtag_ATTRIBUTE($env, $user->getName(), $attributes); 
      break; 
  } 
  return $string; 
} 
 
/** 
 * Implements qtag LOGIN. 
 * 
 * Renders an user login link. 
 * 
 * @param Environment $env 
 *   The Environment. 
 * 
 * @param string $target 
 *   The qtag's target. 
 * 
 * @param array $attributes 
 *   The qtag's attributes. 
 * 
 * @return string 
 *   The rendered qtag. 
 */ 
function qtag_LOGIN($env, $target, $attributes) { 
  $user = UserFactory::current($env); 
  if ($user->exists) { 
    $title = isset($attributes['title']) ? $attributes['title'] : 'Logout'; 
    $link = '[LINK|title=' . $title . '|class=logout-link]'; 
  } 
  else { 
    $title = isset($attributes['title']) ? $attributes['title'] : 'Login'; 
    $link = '[LINK|title=' . $title . '|class=login-link]'; 
  } 
  return $link; 
} 
 
/** 
 * Implements qtag REGISTER. 
 * 
 * Renders an user sign up / registration link. 
 * 
 * @param Environment $env 
 *   The Environment. 
 * 
 * @param string $target 
 *   The qtag's target. 
 * 
 * @param array $attributes 
 *   The qtag's attributes. 
 * 
 * @return string 
 *   The rendered qtag. 
 */ 
function qtag_REGISTER($env, $target, $attributes) { 
  $user = UserFactory::current($env); 
  if (UserAccess::check($env, USER_ACTION_REGISTER, array('user' => $user))) { 
    $title = isset($attributes['title']) ? $attributes['title'] : 'Sign up'; 
    return $user->exists ? '' : '[LINK|title=' . $title . '|class=register-link]'; 
  } 
  else { 
    return ''; 
  } 
} 
 
/** 
 * Implements qtag USER_EDIT. 
 * 
 * Renders a link to edit an user profile. 
 * 
 * @param Environment $env 
 *   The Environment. 
 * 
 * @param string $target 
 *   The qtag's target. 
 * 
 * @param array $attributes 
 *   The qtag's attributes. 
 * 
 * @return string 
 *   The rendered qtag. 
 */ 
function qtag_USER_EDIT($env, $target, $attributes) { 
  $user = ($target == NULL) ? UserFactory::current($env) : new User($env, $target); 
  if (UserAccess::check($env, USER_ACTION_EDIT, array('user' => $user))) { 
    $title = isset($attributes['title']) ? $attributes['title'] : 'Edit profile'; 
    return $user->exists ? '[LINK|title=' . $title . '|class=user-edit-link]' : $target; 
  } 
  else { 
    return ''; 
  } 
} 
 
/** 
 * Implements qtag USER_EDIT. 
 * 
 * Renders a link to edit an user profile. 
 * 
 * @param Environment $env 
 *   The Environment. 
 * 
 * @param string $target 
 *   The qtag's target. 
 * 
 * @param array $attributes 
 *   The qtag's attributes. 
 * 
 * @return string 
 *   The rendered qtag. 
 */ 
function qtag_USER_EDIT_OWN($env, $target, $attributes) { 
  $user = ($target == NULL) ? UserFactory::current($env) : new User($env, $target); 
  if (UserAccess::check($env, USER_ACTION_EDIT, array('user' => $user))) { 
    $title = isset($attributes['title']) ? $attributes['title'] : 'Edit your profile'; 
    return $user->exists ? '[LINK|title=' . $title . '|class=user-edit-own-link]' : $target; 
  } 
  else { 
    return ''; 
  } 
}
 
 |