degov-8.x-2.0/modules/degov_social_media_instagram/src/Plugin/Block/InstagramFeedBlock.php

modules/degov_social_media_instagram/src/Plugin/Block/InstagramFeedBlock.php
<?php

namespace Drupal\degov_social_media_instagram\Plugin\Block;

use Drupal\Core\Block\BlockBase;
use InstagramScraper\Instagram;

/**
 * Provides a 'InstagramFeedBlock' block.
 *
 * @Block(
 *  id = "degov_social_media_instagram",
 *  admin_label = @Translation("Instagram Feed Block"),
 * )
 */
class InstagramFeedBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    $build = [];

    $config = \Drupal::service('config.factory')
      ->get('degov_social_media_instagram.settings');
    $user = $config->get('user');
    $max = $config->get('number_of_posts');
    $maxLenth = $config->get('number_of_characters');

    if (is_numeric($max)) {
      $max = intval($max);
    }

    $instagram = new Instagram();
    $nonPrivateAccountMedias = $instagram->getMedias($user, $max);

    foreach ($nonPrivateAccountMedias as $media) {
      $build['degov_social_media_instagram'][] = [
        '#theme' => 'degov_social_media_instagram',
        '#imageUrl' => $media->getImageThumbnailUrl(),
        '#link' => $media->getLink(),
        '#link_display' => $this->_shortDescription($media->getLink(),32,'...'),
        '#type' => $media->getType(),
        '#caption' => $this->_shortDescription($media->getCaption(), $maxLenth, "..."),
        '#views' => $media->getVideoViews(),
        '#likes' => $media->getLikesCount(),
        '#comments' => $media->getCommentsCount(),
        '#date' => \Drupal::service('date.formatter')
        ->formatTimeDiffSince($media->getCreatedTime()),
        '#cache' => ['max-age' => (60 * 5)],
      ];
    }
    return $build;
  }

  function _shortDescription($string, $maxLenth, $replacement) {
    if (strlen($string) > $maxLenth) {
      return substr($string, 0, $maxLenth) . $replacement;
    }
    else {
      return $string;
    }
  }
}

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

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