View source
<?php
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;
class userloginbar extends BlockBase implements ContainerFactoryPluginInterface {
protected $container;
protected $request;
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;
}
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();
}
}
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,
));
$items = array();
if ($config
->get('register')) {
$items[] = l(t('Register'), 'user/register', array(
'attributes' => array(
'title' => t('Create a new user account.'),
),
)) . ' | ';
}
$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;
}
}