class FaqAskController in FAQ_Ask 8
Controller routines for FAQ Ask routes.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\faq_ask\Controller\FaqAskController
Expanded class hierarchy of FaqAskController
File
- src/
Controller/ FaqAskController.php, line 18 - Contains \Drupal\faq\Controller\FaqAskController.
Namespace
Drupal\faq_ask\ControllerView source
class FaqAskController extends ControllerBase {
/**
* Renders the form for the FAQ ASK Settings page - Experts tab.
*/
public function expertsSettings() {
$build = array();
$build['faq_experts_settings_form'] = $this
->formBuilder()
->getForm('Drupal\\faq_ask\\Form\\ExpertsForm');
return $build;
}
/**
* Get the FAQ ask question form.
*/
public function askPageSettings() {
return new RedirectResponse(URL::fromUserInput('/node/add/faq?ask=TRUE')
->toString());
}
/**
* This function is called when an expert selects a question to answer.
*
* It changes the status option to "published" then goes
* to the regular FAQ edit function.
*/
public function askAnswerViewSettings($nid) {
$faq_ask_settings = \Drupal::config('faq_ask.settings');
$user = \Drupal::currentUser();
// If user is not logged in.
if ($user
->id() == '0') {
// Log in first.
$path = URL::fromUserInput('/user', array(
'query' => drupal_get_destination(),
))
->toString();
return new RedirectResponse($path);
}
// Validate the request.
if (!isset($_REQUEST['token']) || !Utility::faqAskValidToken($_REQUEST['token'], "faq_ask/answer/" . $nid)) {
\Drupal::logger('Faq_Ask')
->error("Received an invalid answer request (@query_string) from @user_ip.", array(
'@query_string' => $_SERVER['QUERY_STRING'],
'@user_ip' => ip_address(),
));
throw new AccessDeniedHttpException();
}
$reassign_opt = $faq_ask_settings
->get('expert_own');
// Check if we need to reassign to the expert.
switch ($reassign_opt) {
case 0:
break;
case 1:
if ($node->uid == 0) {
Utility::faqAskReassign($node);
}
break;
case 2:
Utility::faqAskReassign($node);
break;
}
// Change the status to published.
$node = node_load($nid);
$node->status->value = 1;
$node
->save();
// Need to invoke node/#/edit.
return new RedirectResponse(URL::fromUserInput('/node/' . $nid . '/edit')
->toString());
}
/**
* This function is called when an expert selects a question to answer.
*
* It changes the status option to "published" then goes to
* the regular FAQ edit function.
*/
public function askAnswerEditSettings($nid) {
// Node object.
$node = node_load($nid);
if ($node
->get('status')->value == 1) {
drupal_set_message($this
->t('That question has already been answered.'), 'status');
}
else {
if (node_access('update', $node)) {
// Log in first.
$path = URL::fromUserInput('/node/' . $node
->get('nid')->value . '/edit', array(
'query' => array(
'ask' => 'TRUE',
),
))
->toString();
return new RedirectResponse($path);
}
else {
drupal_set_message($this
->t('You are not allowed to edit that question.'), 'error');
}
}
return new RedirectResponse(URL::fromUserInput('/node')
->toString());
}
/**
* This function lists all the unanswered questions.
*
* It is used by the "more..." link from the block,
* but can also be called independently,
* hence user is allowed to see..
*/
public function askUnanswerSettings() {
$build['#markup'] = Utility::faqAskListUnanswered(9999999);
return $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:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
40 |
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. | |
FaqAskController:: |
public | function | This function is called when an expert selects a question to answer. | |
FaqAskController:: |
public | function | This function is called when an expert selects a question to answer. | |
FaqAskController:: |
public | function | Get the FAQ ask question form. | |
FaqAskController:: |
public | function | This function lists all the unanswered questions. | |
FaqAskController:: |
public | function | Renders the form for the FAQ ASK Settings page - Experts tab. | |
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. | |
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. |