disabled; }); $options = []; if ($includeNone === TRUE) { $options = [NULL => t('- None -')]; } foreach ($all_views as $view) { $view_name = $view->human_name ?: $view->name; foreach ($view->display as $display) { $display_name = $display->display_title . " [$display->id]"; $options[$view->name . $delimiter . $display->id] = $view_name . ': ' . $display_name; } } return $options; } function _mkbh_blocks_switch_region_view_mode(&$regions, $wideRegions, $allRegionsToRandomize) { foreach ($regions as $region => &$build) { if (in_array($region, $allRegionsToRandomize)) { $isWide = in_array($region, $wideRegions); $build['#theme'] = $isWide ? 'mkbh_article_display__view_mode_medium' : 'mkbh_article_display__view_mode_small'; unset($build['#main_image_view_mode'], $build['#orientation']); if ($isWide) { $build['#main_image_view_mode'] = 'homepage_medium_image'; $build['#orientation'] = 'horizontal'; } } } } function _mkbh_blocks_search_result_render_node_widget($node, $mainImageViewMode = 'search_page_result', $showReadMore = FALSE, $showPostDate = FALSE) { /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterInterface $adapter */ $adapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($node); switch ($adapter->getArticleType()) { case 8: // opinion $build = [ '#theme' => 'mkbh_article_display__view_mode_medium', '#node' => $node, '#adapter' => $adapter, '#orientation' => 'vertical', '#main_image_view_mode' => $mainImageViewMode, '#show_shares_count' => FALSE, '#show_color' => TRUE, '#show_breadcrumbs' => FALSE, '#show_writer_name' => TRUE, '#show_body' => FALSE, '#show_read_more' => $showReadMore, '#show_post_date' => $showPostDate, '#link_target' => '_blank' ]; break; default: if ($node->type == 'vision') { $build = [ '#theme' => 'mkbh_vision_display__view_mode_small', '#node' => $node, '#adapter' => $adapter, '#orientation' => 'vertical', '#main_image_view_mode' => $mainImageViewMode, '#show_shares_count' => FALSE, '#show_color' => FALSE, '#trim_length' => 256, '#show_read_more' => $showReadMore, '#show_post_date' => $showPostDate, '#link_target' => '_blank' ]; } else { $build = [ '#theme' => 'mkbh_article_display__view_mode_medium', '#node' => $node, '#adapter' => $adapter, '#orientation' => 'vertical', '#main_image_view_mode' => $mainImageViewMode, '#show_shares_count' => FALSE, '#show_color' => FALSE, '#trim_length' => 256, '#show_read_more' => $showReadMore, '#show_post_date' => $showPostDate, '#link_target' => '_blank' ]; } } return render($build); } function _mkbh_blocks_views_sort_by_argument_position($row1, $row2, $view) { $args = $view->args[0]; if (empty($args)) { return 0; } $row1_position = (int)stripos($args, $row1->nid); $row2_position = (int)stripos($args, $row2->nid); if ($row1_position == $row2_position) { return 0; } return $row1_position > $row2_position ? 1 : -1; } function _mkbh_blocks_user_has_stripe_subscription($email) { if (is_object($email) && property_exists($email, 'mail')) { $email = $email->mail; } $email = trim($email); if ($email === '') { return false; } $user = user_load_by_mail($email); if(!$user) { return false; } $userWhitelistedRole = array_intersect($user->roles ?? [], [ 'administrator', 'journalist', 'senior journalist', ]); if (count($userWhitelistedRole) > 0) { return false; } // check manual stripe plans $hasStripeManualSubscriptions = mkbh_general_stripe_manual_plan_ids($user)->isNotEmpty(); if ($hasStripeManualSubscriptions) { return true; } // check aggregation table $isAggregatedSubscriber = database() ->table('mkbh_subscribers_aggregation') ->where('user_email', '=', $email) ->exists(); if ($isAggregatedSubscriber === true) { return true; } // check regular stripe subscription $isStripeCustomer = database()->table('mkbh_stripe_customers as MSC') ->leftJoin('mkbh_stripe_subscriptions as MSS', 'MSC.customer_id', '=', 'MSS.customer_id') ->where('MSC.user_email', '=', $email) ->whereNotNull('MSS.customer_id') ->exists(); $isMasterSubscriberWithoutAccess = database()->table('mkbh_business_info') ->join('users', 'users.uid', '=', 'mkbh_business_info.master_uid') ->where('users.mail', $email) ->where('mkbh_business_info.master_takes_seat', 0) ->exists(); // only allow access if user is stripe customer and IS NOT a business master without access if ($isStripeCustomer === true && $isMasterSubscriberWithoutAccess === false) { return true; } // check business subscriptions $isMasterSubscriberWithAccess = database()->table('mkbh_business_info') ->join('users', 'users.uid', '=', 'mkbh_business_info.master_uid') ->where('users.mail', $email) ->where('mkbh_business_info.master_takes_seat', 1) ->exists(); $isSubAccount = database()->table('mkbh_business_sub_accounts') ->join('users', 'users.uid', '=', 'mkbh_business_sub_accounts.sub_uid') ->where('users.mail', $email) ->exists(); if ($isMasterSubscriberWithAccess || $isSubAccount) { return true; } // check mobile pay subscriptions /** @var MobilePayRepository $mobilePayRepository */ $mobilePayRepository = container()->make(MobilePayRepository::class); if ($mobilePayRepository->existsForAccountInStatus($user, MobilePayAgreementStatusEnum::ACTIVE)) { return true; } return false; } function _mkbh_blocks_block_render($module, $block, $build = TRUE) { $block = block_load($module, $block); $blockBuild = _block_get_renderable_array(_block_render_blocks([$block])); if ($build === TRUE) { return $blockBuild; } return drupal_render($blockBuild); } function _mkbh_block_new_sponsor_bar_process_textarea($text) { return collect(preg_split('/\r\n|[\r\n]/', $text)) ->map(function ($item) { $items = explode(':', $item); $title = array_shift($items); $link = implode(':', $items); return collect([$title, $link])->filter()->toArray(); }) ->filter() ->toArray(); } function mkbh_views_embed_view($name, $display_id = 'default') { return html_entity_decode( views_embed_view($name, $display_id) ); }