You are here

class ActivityOverviewBlock in Open Social 10.2.x

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  2. 8 modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  3. 8.2 modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  4. 8.3 modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  5. 8.4 modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  6. 8.5 modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  7. 8.6 modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  8. 8.7 modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  9. 8.8 modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  10. 10.3.x modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  11. 10.0.x modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock
  12. 10.1.x modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php \Drupal\social_landing_page\Plugin\Block\ActivityOverviewBlock

Provides a 'ActivityOverviewBlock' block.

Plugin annotation


@Block(
 id = "activity_overview_block",
 admin_label = @Translation("Activity overview"),
)

Hierarchy

Expanded class hierarchy of ActivityOverviewBlock

File

modules/social_features/social_landing_page/src/Plugin/Block/ActivityOverviewBlock.php, line 18

Namespace

Drupal\social_landing_page\Plugin\Block
View source
class ActivityOverviewBlock extends BlockBase implements ContainerFactoryPluginInterface {

  /**
   * Connection definition.
   *
   * @var \Drupal\Core\Database\Connection
   */
  protected $connection;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, Connection $connection) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->connection = $connection;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container
      ->get('database'));
  }

  /**
   * {@inheritdoc}
   */
  public function build() {
    return [
      [
        '#type' => 'container',
        '#attributes' => [
          'class' => [
            'activity-overview',
          ],
        ],
        'event_info' => [
          '#type' => 'container',
          '#attributes' => [
            'class' => [
              'event-info',
            ],
          ],
          'event' => [
            'icon' => [
              '#markup' => '<svg class="teaser__content-type-icon"><use xlink:href="#icon-event"></use></svg>',
              '#allowed_tags' => [
                'use',
                'svg',
              ],
            ],
            'content' => [
              '#type' => 'container',
              '#attributes' => [
                'class' => [
                  'info-wrapper',
                ],
              ],
              'value' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->getEventsCount(),
                '#attributes' => [
                  'class' => [
                    'value',
                  ],
                ],
              ],
              'name' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->t('events'),
                '#attributes' => [
                  'class' => [
                    'name',
                  ],
                ],
              ],
            ],
          ],
        ],
        'topic_info' => [
          '#type' => 'container',
          '#attributes' => [
            'class' => [
              'topic-info',
            ],
          ],
          'topic' => [
            'icon' => [
              '#markup' => '<svg class="teaser__content-type-icon"><use xlink:href="#icon-topic"></use></svg>',
              '#allowed_tags' => [
                'use',
                'svg',
              ],
            ],
            'content' => [
              '#type' => 'container',
              '#attributes' => [
                'class' => [
                  'info-wrapper',
                ],
              ],
              'value' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->getTopicsCount(),
                '#attributes' => [
                  'class' => [
                    'value',
                  ],
                ],
              ],
              'name' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->t('topics'),
                '#attributes' => [
                  'class' => [
                    'name',
                  ],
                ],
              ],
            ],
          ],
        ],
        'group_info' => [
          '#type' => 'container',
          '#attributes' => [
            'class' => [
              'group-info',
            ],
          ],
          'group' => [
            'icon' => [
              '#markup' => '<svg class="teaser__content-type-icon"><use xlink:href="#icon-group"></use></svg>',
              '#allowed_tags' => [
                'use',
                'svg',
              ],
            ],
            'content' => [
              '#type' => 'container',
              '#attributes' => [
                'class' => [
                  'info-wrapper',
                ],
              ],
              'value' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->getGroupsCount(),
                '#attributes' => [
                  'class' => [
                    'value',
                  ],
                ],
              ],
              'name' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->t('groups'),
                '#attributes' => [
                  'class' => [
                    'name',
                  ],
                ],
              ],
            ],
          ],
        ],
        'user_info' => [
          '#type' => 'container',
          '#attributes' => [
            'class' => [
              'user-info',
            ],
          ],
          'group' => [
            'icon' => [
              '#markup' => '<svg class="teaser__content-type-icon"><use xlink:href="#icon-account_circle"></use></svg>',
              '#allowed_tags' => [
                'use',
                'svg',
              ],
            ],
            'content' => [
              '#type' => 'container',
              '#attributes' => [
                'class' => [
                  'info-wrapper',
                ],
              ],
              'value' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->getUsersCount(),
                '#attributes' => [
                  'class' => [
                    'value',
                  ],
                ],
              ],
              'name' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->t('users'),
                '#attributes' => [
                  'class' => [
                    'name',
                  ],
                ],
              ],
            ],
          ],
        ],
        'post_info' => [
          '#type' => 'container',
          '#attributes' => [
            'class' => [
              'post-info',
            ],
          ],
          'post' => [
            'icon' => [
              '#markup' => '<svg class="teaser__content-type-icon"><use xlink:href="#icon-edit"></use></svg>',
              '#allowed_tags' => [
                'use',
                'svg',
              ],
            ],
            'content' => [
              '#type' => 'container',
              '#attributes' => [
                'class' => [
                  'info-wrapper',
                ],
              ],
              'value' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->getPostsCount(),
                '#attributes' => [
                  'class' => [
                    'value',
                  ],
                ],
              ],
              'name' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->t('posts'),
                '#attributes' => [
                  'class' => [
                    'name',
                  ],
                ],
              ],
            ],
          ],
        ],
        'comment_info' => [
          '#type' => 'container',
          '#attributes' => [
            'class' => [
              'comment-info',
            ],
          ],
          'comment' => [
            'icon' => [
              '#markup' => '<svg class="teaser__content-type-icon"><use xlink:href="#icon-comment"></use></svg>',
              '#allowed_tags' => [
                'use',
                'svg',
              ],
            ],
            'content' => [
              '#type' => 'container',
              '#attributes' => [
                'class' => [
                  'info-wrapper',
                ],
              ],
              'value' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->getCommentsCount(),
                '#attributes' => [
                  'class' => [
                    'value',
                  ],
                ],
              ],
              'name' => [
                '#type' => 'html_tag',
                '#tag' => 'span',
                '#value' => $this
                  ->t('comments'),
                '#attributes' => [
                  'class' => [
                    'name',
                  ],
                ],
              ],
            ],
          ],
        ],
      ],
      '#cache' => [
        'contexts' => [
          'user',
        ],
      ],
      '#attached' => [
        'library' => [
          'social_landing_page/activity_overview',
        ],
      ],
    ];
  }

  /**
   * Get total count of events.
   */
  protected function getEventsCount() {
    $query = $this->connection
      ->select('node_field_data', 'n');
    $query
      ->addExpression('COUNT(*)');
    $query
      ->condition('n.type', 'event');
    $query
      ->condition('n.status', 1);
    return $query
      ->execute()
      ->fetchField();
  }

  /**
   * Get total count of topics.
   */
  protected function getTopicsCount() {
    $query = $this->connection
      ->select('node_field_data', 'n');
    $query
      ->addExpression('COUNT(*)');
    $query
      ->condition('n.type', 'topic');
    $query
      ->condition('n.status', 1);
    return $query
      ->execute()
      ->fetchField();
  }

  /**
   * Get total count of groups.
   */
  protected function getGroupsCount() {

    // There is no unpublished option for groups.
    $query = $this->connection
      ->select('groups', 'g');
    $query
      ->addExpression('COUNT(*)');
    return $query
      ->execute()
      ->fetchField();
  }

  /**
   * Get total count of users.
   */
  protected function getUsersCount() {

    // Skip blocked users and user 1.
    $query = $this->connection
      ->select('users_field_data', 'u');
    $query
      ->addExpression('COUNT(*)');
    $query
      ->condition('u.status', 1);
    $query
      ->condition('u.uid', 1, '<>');
    return $query
      ->execute()
      ->fetchField();
  }

  /**
   * Get total count of posts.
   */
  protected function getPostsCount() {
    $query = $this->connection
      ->select('post_field_data', 'p');
    $query
      ->addExpression('COUNT(*)');
    $query
      ->condition('p.status', 1);
    return $query
      ->execute()
      ->fetchField();
  }

  /**
   * Get total count of comments.
   */
  protected function getCommentsCount() {

    // Count both comment and post_comment type.
    $query = $this->connection
      ->select('comment_field_data', 'c');
    $query
      ->addExpression('COUNT(*)');
    $query
      ->condition('c.status', 1);
    return $query
      ->execute()
      ->fetchField();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ActivityOverviewBlock::$connection protected property Connection definition.
ActivityOverviewBlock::build public function Builds and returns the renderable array for this block plugin. Overrides BlockPluginInterface::build
ActivityOverviewBlock::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
ActivityOverviewBlock::getCommentsCount protected function Get total count of comments.
ActivityOverviewBlock::getEventsCount protected function Get total count of events.
ActivityOverviewBlock::getGroupsCount protected function Get total count of groups.
ActivityOverviewBlock::getPostsCount protected function Get total count of posts.
ActivityOverviewBlock::getTopicsCount protected function Get total count of topics.
ActivityOverviewBlock::getUsersCount protected function Get total count of users.
ActivityOverviewBlock::__construct public function Overrides BlockPluginTrait::__construct
BlockBase::buildConfigurationForm public function Form constructor. Overrides PluginFormInterface::buildConfigurationForm 2
BlockPluginInterface::BLOCK_LABEL_VISIBLE constant Indicates the block label (title) should be displayed to end users.
BlockPluginTrait::$transliteration protected property The transliteration service.
BlockPluginTrait::access public function
BlockPluginTrait::baseConfigurationDefaults protected function Returns generic default configuration for block plugins.
BlockPluginTrait::blockAccess protected function Indicates whether the block should be shown. 16
BlockPluginTrait::blockForm public function 16
BlockPluginTrait::blockSubmit public function 13
BlockPluginTrait::blockValidate public function 3
BlockPluginTrait::buildConfigurationForm public function Creates a generic configuration form for all block types. Individual block plugins can add elements to this form by overriding BlockBase::blockForm(). Most block plugins should not override this method unless they need to alter the generic form elements. Aliased as: traitBuildConfigurationForm
BlockPluginTrait::calculateDependencies public function
BlockPluginTrait::defaultConfiguration public function 19
BlockPluginTrait::getConfiguration public function 1
BlockPluginTrait::getMachineNameSuggestion public function 1
BlockPluginTrait::getPreviewFallbackString public function 3
BlockPluginTrait::label public function
BlockPluginTrait::setConfiguration public function
BlockPluginTrait::setConfigurationValue public function
BlockPluginTrait::setTransliteration public function Sets the transliteration service.
BlockPluginTrait::submitConfigurationForm public function Most block plugins should not override this method. To add submission handling for a specific block type, override BlockBase::blockSubmit().
BlockPluginTrait::transliteration protected function Wraps the transliteration service.
BlockPluginTrait::validateConfigurationForm public function Most block plugins should not override this method. To add validation for a specific block type, override BlockBase::blockValidate(). 1
ContextAwarePluginAssignmentTrait::addContextAssignmentElement protected function Builds a form element for assigning a context to a given slot.
ContextAwarePluginAssignmentTrait::contextHandler protected function Wraps the context handler.
ContextAwarePluginTrait::$context protected property The data objects representing the context of this plugin.
ContextAwarePluginTrait::$initializedContextConfig protected property Tracks whether the context has been initialized from configuration.
ContextAwarePluginTrait::getCacheContexts public function 9
ContextAwarePluginTrait::getCacheMaxAge public function 7
ContextAwarePluginTrait::getCacheTags public function 4
ContextAwarePluginTrait::getContext public function
ContextAwarePluginTrait::getContextDefinition public function
ContextAwarePluginTrait::getContextDefinitions public function
ContextAwarePluginTrait::getContextMapping public function
ContextAwarePluginTrait::getContexts public function
ContextAwarePluginTrait::getContextValue public function
ContextAwarePluginTrait::getContextValues public function
ContextAwarePluginTrait::getPluginDefinition abstract protected function 1
ContextAwarePluginTrait::setContext public function 1
ContextAwarePluginTrait::setContextMapping public function
ContextAwarePluginTrait::setContextValue public function
ContextAwarePluginTrait::validateContexts public function
DependencySerializationTrait::$_entityStorages protected property
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::__sleep public function 2
DependencySerializationTrait::__wakeup public function 2
MessengerTrait::$messenger protected property The messenger. 27
MessengerTrait::messenger public function Gets the messenger. 27
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginWithFormsTrait::getFormClass public function Implements \Drupal\Core\Plugin\PluginWithFormsInterface::getFormClass().
PluginWithFormsTrait::hasFormClass public function Implements \Drupal\Core\Plugin\PluginWithFormsInterface::hasFormClass().
StringTranslationTrait::$stringTranslation protected property The string translation service. 4
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.