class OrderAdminController in Ubercart 8.4
Controller routines for order routes.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\uc_order\Controller\OrderAdminController implements ContainerInjectionInterface
Expanded class hierarchy of OrderAdminController
File
- uc_order/
src/ Controller/ OrderAdminController.php, line 18
Namespace
Drupal\uc_order\ControllerView source
class OrderAdminController extends ControllerBase implements ContainerInjectionInterface {
/**
* The database service.
*
* @var \Drupal\Core\Database\Connection
*/
protected $database;
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('database'));
}
/**
* Constructs an OrderAdminController object.
*
* @param \Drupal\Core\Database\Connection $database
* A database connection.
*/
public function __construct(Connection $database) {
$this->database = $database;
}
/**
* Displays a form to select a previously entered address.
*/
public function addressBook(Request $request) {
$uid = intval($request->request
->get('uid'));
$type = $request->request
->get('type');
$func = $request->request
->get('func');
$form = $this
->formBuilder()
->getForm('\\Drupal\\uc_order\\Form\\AddressBookForm', $uid, $type, $func);
return new Response(\Drupal::service('renderer')
->render($form));
}
/**
* Presents the customer search results and let one of them be chosen.
*/
public function selectCustomer(Request $request, $email = NULL, $operation = NULL) {
$build = [];
$options = NULL;
// Return the search results and let them pick one!
switch ($operation) {
case 'search':
$first_name = str_replace('*', '%', $this->database
->escapeLike($request->request
->get('first_name')));
$last_name = str_replace('*', '%', $this->database
->escapeLike($request->request
->get('last_name')));
$email = str_replace('*', '%', $this->database
->escapeLike($request->request
->get('email')));
$query = $this->database
->select('users_field_data', 'u')
->distinct();
$query
->leftJoin('uc_orders', 'o', 'u.uid = o.uid');
$query
->fields('u', [
'uid',
'mail',
])
->fields('o', [
'billing_first_name',
'billing_last_name',
])
->condition('u.uid', 0, '>')
->orderBy('o.billing_last_name');
if ($first_name && $first_name !== '%') {
$query
->condition('o.billing_first_name', $first_name, 'LIKE');
}
if ($last_name && $last_name !== '%') {
$query
->condition('o.billing_last_name', $last_name, 'LIKE');
}
if ($email && $email !== '%') {
$query
->condition((new Condition('OR'))
->condition('o.primary_email', $email, 'LIKE')
->condition('u.mail', $email, 'LIKE'));
}
$result = $query
->execute();
$options = [];
foreach ($result as $user) {
if (empty($user->billing_first_name) && empty($user->billing_last_name)) {
$name = '';
}
else {
$name = $user->billing_last_name . ', ' . $user->billing_first_name . ' ';
}
$options[$user->uid . ':' . $user->mail] = $name . '(' . $user->mail . ')';
}
if (count($options) == 0) {
$build['description'] = [
'#prefix' => '<p>',
'#markup' => $this
->t('Search returned no results.'),
'#suffix' => '</p>',
];
$options = NULL;
}
else {
$build['description'] = [
'#prefix' => '<p>',
'#markup' => $this
->t('Search returned the following:'),
'#suffix' => '</p>',
];
}
break;
case 'new':
if ($request->request
->get('check') == TRUE) {
// Check to see if the e-mail address for a new user is unique.
$email = SafeMarkup::checkPlain($request->request
->get('email'));
$build['email'] = [
'#markup' => '',
];
$result = $this->database
->query("SELECT uid, mail FROM {users_field_data} WHERE mail = :mail", [
':mail' => $email,
]);
if ($user_field_data = $result
->fetchObject()) {
$build['#attached']['drupalSettings'] = [
'userId' => $user_field_data->uid,
'userEmail' => $user_field_data->mail,
];
$build['email']['#markup'] .= $this
->t('An account already exists for that e-mail.') . '<br /><br />';
$build['email']['#markup'] .= '<b>' . $this
->t('Use this account now?') . '</b><br />' . $this
->t('User @uid - @mail', [
'@uid' => $user_field_data->uid,
'@mail' => $user_field_data->mail,
]) . ' <input type="button" id="select-existing-customer" value="' . $this
->t('Apply') . '" /><br /><br /><hr /><br/>';
}
else {
$name = uc_store_email_to_username($email);
$fields = [
'name' => $name,
'mail' => $email,
// @todo Replace the following line with:
// 'pass' => \Drupal::service('password_generator')->generate(),
// when Drupal 9.1 becomes the lowest-supported version of Drupal.
// @see https://www.drupal.org/project/ubercart/issues/3217319
'pass' => user_password(6),
'status' => $this
->config('uc_cart.settings')
->get('new_customer_status_active') ? 1 : 0,
];
$account = User::create($fields);
$account
->save();
if ($request->request
->get('sendmail') == 'true') {
// Manually set the password so it appears in the e-mail.
$account->password = $fields['pass'];
// Send the e-mail through the user module.
\Drupal::service('plugin.manager.mail')
->mail('user', 'register_admin_created', $email, uc_store_mail_recipient_langcode($email), [
'account' => $account,
], uc_store_email_from());
$build['email']['#markup'] .= $this
->t('Account details sent to e-mail provided.<br /><br /><strong>Username:</strong> @username<br /><strong>Password:</strong> @password', [
'@username' => $fields['name'],
'@password' => $fields['pass'],
]) . '<br /><br />';
}
$build['#attached']['drupalSettings'] = [
'userId' => $account
->id(),
'userEmail' => $account
->getEmail(),
];
$build['result'] = [
'#markup' => '<strong>' . $this
->t('Use this account now?') . '</strong><br />' . $this
->t('User @uid - @mail', [
'@uid' => $account
->id(),
'@mail' => $account
->getEmail(),
]) . ' <input type="button" ' . 'id="select-existing-customer" value="' . $this
->t('Apply') . '" /><br /><br /><hr /><br/>',
];
}
}
break;
default:
break;
}
$build['customer_select_form'] = $this
->formBuilder()
->getForm('\\Drupal\\uc_order\\Form\\SelectCustomerForm', $operation, $options);
return new Response(\Drupal::service('renderer')
->render($build));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
OrderAdminController:: |
protected | property | The database service. | |
OrderAdminController:: |
public | function | Displays a form to select a previously entered address. | |
OrderAdminController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
OrderAdminController:: |
public | function | Presents the customer search results and let one of them be chosen. | |
OrderAdminController:: |
public | function | Constructs an OrderAdminController object. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |