Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 45 |
| ContactController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
72 | |
0.00% |
0 / 45 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| contactSitePage | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 27 |
|||
| contactPersonalPage | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 12 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\contact\Controller\ContactController. | |
| */ | |
| namespace Drupal\contact\Controller; | |
| use Drupal\Core\Controller\ControllerBase; | |
| use Drupal\contact\ContactFormInterface; | |
| use Drupal\Core\Render\RendererInterface; | |
| use Drupal\user\UserInterface; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | |
| /** | |
| * Controller routines for contact routes. | |
| */ | |
| class ContactController extends ControllerBase { | |
| /** | |
| * The renderer. | |
| * | |
| * @var \Drupal\Core\Render\RendererInterface | |
| */ | |
| protected $renderer; | |
| /** | |
| * Constructs a ContactController object. | |
| * | |
| * @param \Drupal\Core\Render\RendererInterface $renderer | |
| * The renderer. | |
| */ | |
| public function __construct(RendererInterface $renderer) { | |
| $this->renderer = $renderer; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container) { | |
| return new static( | |
| $container->get('renderer') | |
| ); | |
| } | |
| /** | |
| * Presents the site-wide contact form. | |
| * | |
| * @param \Drupal\contact\ContactFormInterface $contact_form | |
| * The contact form to use. | |
| * | |
| * @return array | |
| * The form as render array as expected by drupal_render(). | |
| * | |
| * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException | |
| * Exception is thrown when user tries to access non existing default | |
| * contact form. | |
| */ | |
| public function contactSitePage(ContactFormInterface $contact_form = NULL) { | |
| $config = $this->config('contact.settings'); | |
| // Use the default form if no form has been passed. | |
| if (empty($contact_form)) { | |
| $contact_form = $this->entityManager() | |
| ->getStorage('contact_form') | |
| ->load($config->get('default_form')); | |
| // If there are no forms, do not display the form. | |
| if (empty($contact_form)) { | |
| if ($this->currentUser()->hasPermission('administer contact forms')) { | |
| drupal_set_message($this->t('The contact form has not been configured. <a href=":add">Add one or more forms</a> .', array( | |
| ':add' => $this->url('contact.form_add'))), 'error'); | |
| return array(); | |
| } | |
| else { | |
| throw new NotFoundHttpException(); | |
| } | |
| } | |
| } | |
| $message = $this->entityManager() | |
| ->getStorage('contact_message') | |
| ->create(array( | |
| 'contact_form' => $contact_form->id(), | |
| )); | |
| $form = $this->entityFormBuilder()->getForm($message); | |
| $form['#title'] = $contact_form->label(); | |
| $form['#cache']['contexts'][] = 'user.permissions'; | |
| $this->renderer->addCacheableDependency($form, $config); | |
| return $form; | |
| } | |
| /** | |
| * Form constructor for the personal contact form. | |
| * | |
| * @param \Drupal\user\UserInterface $user | |
| * The account for which a personal contact form should be generated. | |
| * | |
| * @return array | |
| * The personal contact form as render array as expected by drupal_render(). | |
| * | |
| * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException | |
| * Exception is thrown when user tries to access a contact form for a | |
| * user who does not have an email address configured. | |
| */ | |
| public function contactPersonalPage(UserInterface $user) { | |
| // Do not continue if the user does not have an email address configured. | |
| if (!$user->getEmail()) { | |
| throw new NotFoundHttpException(); | |
| } | |
| $message = $this->entityManager()->getStorage('contact_message')->create(array( | |
| 'contact_form' => 'personal', | |
| 'recipient' => $user->id(), | |
| )); | |
| $form = $this->entityFormBuilder()->getForm($message); | |
| $form['#title'] = $this->t('Contact @username', array('@username' => $user->getDisplayName())); | |
| $form['#cache']['contexts'][] = 'user.permissions'; | |
| return $form; | |
| } | |
| } |