You are here

userloginbar.php in UserLoginBar 8

File

lib/Drupal/userloginbar/Plugin/Block/userloginbar.php
View source
<?php

/**
* @file
* Contains \Drupal\userloginbar\Plugin\Block\userloginbar.
*/
namespace Drupal\userloginbar\Plugin\Block;

use Drupal\block\BlockBase;
use Drupal\Component\Annotation\Plugin;
use Drupal\Core\Annotation\Translation;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\user\Form\UserLoginForm;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;

/**
* Provides a simple block.
*
* @Plugin(
*   id = "userloginbar_block",
*   admin_label = @Translation("User Login Bar Block"),
*   module = "userloginbar"
* )
*/
class userloginbar extends BlockBase implements ContainerFactoryPluginInterface {

  /**
   * The DI Container.
   *
   * @var \Symfony\Component\DependencyInjection\ContainerInterface
   */
  protected $container;

  /**
   * The request object.
   *
   * @var \Symfony\Component\HttpFoundation\Request
   */
  protected $request;

  /**
   * Constructs a new UserLoginBlock.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin ID for the plugin instance.
   * @param array $plugin_definition
   *   The plugin implementation definition.
   * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
   *   The DI Container.
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The request object.
   */
  public function __construct(array $configuration, $plugin_id, array $plugin_definition, ContainerInterface $container, Request $request) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->container = $container;
    $this->request = $request;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container, $container
      ->get('request'));
  }
  public function access() {
    if (!$GLOBALS['user']
      ->id() && !(arg(0) == 'user' && !is_numeric(arg(1)))) {
      return !$GLOBALS['user']
        ->id() && !(arg(0) == 'user' && !is_numeric(arg(1)));
    }
    else {
      return $GLOBALS['user']
        ->id();
    }
  }

  /**
   * Implements \Drupal\block\BlockBase::blockBuild().
   */
  public function build() {
    $config = \Drupal::config('user.settings');
    global $user;
    if (!$user
      ->id()) {
      $form = drupal_get_form(UserLoginForm::create($this->container), $this->request);
      unset($form['name']['#attributes']['autofocus']);
      unset($form['name']['#description']);
      unset($form['pass']['#description']);
      $form['name']['#size'] = 15;
      $form['pass']['#size'] = 15;
      $form['#action'] = url(current_path(), array(
        'query' => drupal_get_destination(),
        'external' => FALSE,
      ));

      // Build action links.
      $items = array();
      if ($config
        ->get('register')) {
        $items[] = l(t('Register'), 'user/register', array(
          'attributes' => array(
            'title' => t('Create a new user account.'),
          ),
        )) . ' | &nbsp;';
      }
      $items[] = l(t('Forgot Password?'), 'user/password', array(
        'attributes' => array(
          'title' => t('Request new password via e-mail.'),
        ),
      ));
      $form['actions']['links'] = array(
        '#markup' => theme('item_list', array(
          'items' => $items,
        )),
        '#weight' => 100,
      );
      $block['user_login_form'] = $form;
      $block['content'] = array(
        '#theme' => 'userloginbar',
        '#items' => $items,
      );
    }
    else {
      $block['content'] = array(
        '#theme' => 'userloginbar',
      );
    }
    return $block;
  }

}

Classes

Namesort descending Description
userloginbar Provides a simple block.