openlucius-2.0.0-alpha3/modules/apps/ol_stream/src/Controller/StreamController.php

modules/apps/ol_stream/src/Controller/StreamController.php
<?php

namespace Drupal\ol_stream\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Form\FormBuilder;
use Drupal\ol_members\Services\OlMembers;
use Drupal\ol_stream\Services\OlStream;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\ol_main\Services\OlGroups;

/**
 * Class StreamController.
 */
class StreamController extends ControllerBase {

  /**
   * @var $members
   */
  protected $members;

  /**
   * @var $form_builder
   */
  protected $form_builder;

  /**
   * @var $groups
   */
  protected $groups;

  /**
   * @var $stream
   */
  protected $stream;

  /**
   * {@inheritdoc}
   */
  public function __construct(OlMembers $members, FormBuilder $form_builder, OlGroups $groups, OlStream $stream) {
    $this->members = $members;
    $this->form_builder = $form_builder;
    $this->groups = $groups;
    $this->stream = $stream;
  }
  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('olmembers.members'),
      $container->get('form_builder'),
      $container->get('olmain.groups'),
      $container->get('olstream.stream')
    );
  }

  public function getStream($gid){
    // Group uuid is used in Javascript, for socket.io room id and ajax calls.
    // This is for security hardening.
    $group_uuid = $this->groups->getGroupUuidById($gid);
    $username = $this->members->getUserName();
    $user_picture = $this->members->getUserPictureUrl();
    $node_server = \Drupal::config('ol_main.admin_settings')->get('nodejs_server_url');
    // Get forms.
    $stream_form = $this->form_builder->getForm(\Drupal\ol_stream\Form\StreamItemForm::class, $node_server);
    $load_more = $this->form_builder->getForm(\Drupal\ol_stream\Form\LoadPreviousStreamItemsForm::class);
    // This is needed to determine refreshing (via javascript).
    $last_message_timestamp = $this->stream->getLastMessageTimestamp($group_uuid);
    // Build it.
    $theme_vars = [
      'stream_form' => $stream_form,
      'load_more' => $load_more,
      'last_message_timestamp' => $last_message_timestamp,
      'node_server' => $node_server,
    ];
    return [
      '#theme' => 'stream_wrapper',
      '#attached' => [
        'library' => [
          'ol_stream/node_server', // Build dynamically in ol_stream_library_info_build().
          'ol_stream/stream',
        ],
        'drupalSettings' => [
          'group_uuid' => $group_uuid,
          'node_server' => $node_server,
          'username' => $username,
          'user_picture' => $user_picture
        ],
      ],
        '#vars' => $theme_vars,
    ];
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc