Expert Overview
The upcoming match between Club Bolivar and Real Tomayapo promises to be a highly competitive encounter. With both teams displaying solid form this season, fans and bettors alike can expect an engaging match. Club Bolivar, playing at home, has a slight edge in terms of scoring opportunities, particularly in the first half. However, Real Tomayapo’s defensive resilience suggests a tightly contested affair, especially considering their likelihood of preventing goals in the second half. The average total goals for this match are projected at 3.15, indicating a potentially high-scoring game. Red cards are expected to be few, with an average of 1.19 per match.
Club Bolivar
Real Tomayapo
(FT)
Predictions:
Market | Prediction | Odd | Result |
---|---|---|---|
Home Team To Score In 1st Half | 85.60% | (5-0) | |
Away Team Not To Score In 2nd Half | 88.00% | (5-0) | |
Both Teams Not To Score In 1st Half | 80.10% | (5-0) 2-0 1H 1.18 | |
Over 0.5 Goals HT | 76.80% | (5-0) 2-0 1H 1.18 | |
Home Team To Score In 2nd Half | 73.50% | (5-0) | |
Both Teams Not To Score In 2nd Half | 75.00% | (5-0) 3-0 2H 1.30 | |
Over 1.5 Goals | 71.30% | (5-0) 1.10 | |
Away Team Not To Score In 1st Half | 72.60% | (5-0) | |
Over 2.5 Goals | 65.80% | (5-0) 1.33 | |
Last Goal 73+ Minutes | 63.90% | (5-0) 76' min 1.83 | |
Goal In Last 15 Minutes | 63.00% | (5-0) | |
Home Team To Win | 59.60% | (5-0) 1.15 | |
Both Teams To Score | 61.40% | (5-0) 2.10 | |
Over 3.5 Goals | 54.60% | (5-0) 1.83 | |
Over 2.5 BTTS | 51.80% | (5-0) 2.10 | |
First Goal Between Minute 0-29 | 54.00% | (5-0) 1.83 | |
Avg. Total Goals | 4.05% | (5-0) | |
Avg. Goals Scored | 1.69% | (5-0) | |
Avg. Conceded Goals | 1.85% | (5-0) | |
Red Cards | 0.99% | (5-0) |
Predictions
Home Team To Score In 1st Half
With odds at 85.50, there’s a strong chance that Club Bolivar will find the back of the net early in the game. Their attacking prowess and home advantage make this a likely scenario.
Away Team Not To Score In 2nd Half
Odds stand at 86.10 for Real Tomayapo not scoring in the second half. This reflects Bolivar’s potential to control the game defensively after a possible early lead.
Both Teams Not To Score In 1st Half
At odds of 79.40, it seems less likely that both teams will remain scoreless in the first half, given Bolivar’s attacking statistics.
Over 0.5 Goals HT
With odds of 78.50, it is anticipated that at least one goal will be scored by halftime.
Home Team To Score In 2nd Half
Bolivar is expected to score in the second half with odds at 74.00, suggesting they could either extend their lead or come back from behind.
Both Teams Not To Score In 2nd Half
The odds of both teams not scoring in the second half are close at 74.20, indicating a potential defensive battle as the game progresses.
Over 1.5 Goals
Odds of 73.90 suggest a high probability that more than one and a half goals will be scored throughout the match.
Away Team Not To Score In 1st Half
Real Tomayapo is expected not to score in the first half with odds of 68.50, reflecting Bolivar’s attacking capabilities early on.
Over 2.5 Goals
The likelihood of over two and a half goals being scored is significant, with odds at 64.00.
Last Goal Between Minutes 73-90
Odds are at 62.80 for the last goal to be scored in the final minutes, suggesting a thrilling conclusion to the match.
Goal In Last 15 Minutes
A goal is expected in the last quarter of the game with odds at 63.60, hinting at potential late drama.
Home Team To Win
Bolivar’s chances of winning are notable with odds at 61.20, leveraging their home ground advantage and attacking form.
Both Teams To Score
leahmoss/craft-utilities/src/translations/ru.php
[
‘Utilities’ => ‘Утилиты’,
],
‘utilities’ => [
‘name’ => ‘Утилиты’,
‘description’ => ‘Модуль для работы с системными утилитами.’,
‘menu’ => ‘Утилиты’,
‘tools’ => [
‘menuLabel’ => ‘Инструменты’,
‘title’ => ‘Инструменты’,
‘description’ => ‘Инструменты для управления контентом.’,
‘gitInfo’ => [
‘fetching’ => ‘Загрузка данных из репозитория…’,
‘notAvailable’ => “Git не доступен.”,
‘latestCommitOnMaster’ => “Последний коммит в ветке master”,
‘latestCommitOnCurrentBranch’ => “Последний коммит в текущей ветке”,
‘branchName’ => “Имя ветки”,
‘isAheadByXCommits’ => “Впереди на X коммитов”,
‘isBehindByXCommits’ => “Задержка на X коммитов”,
‘isAheadAndBehindByXCommits’ => “Впереди и задержка на X коммитов”,
‘untrackedFilesCount’ => “Количество неотслеживаемых файлов”,
],
’emailStats’ => [
‘noEmailsFoundInDb’ => “В базе данных не найдено ни одного email адреса.”,
’emailsFoundInDb’ => “В базе данных найдено :count email адресов.”,
],
],
],
];
leahmoss/craft-utilities/src/controllers/UtilitiesController.php
requireAcceptsJson();
/** @var Utilities $plugin */
$plugin = Utilities::getInstance();
$info = $plugin->getGitInfo();
return $this->asJson($info);
}
public function actionEmailStats()
{
$this->requireAcceptsJson();
/** @var Utilities $plugin */
$plugin = Utilities::getInstance();
$stats = $plugin->getEmailStats();
return $this->asJson($stats);
}
public function actionClearCache()
{
/** @var Utilities $plugin */
$plugin = Utilities::getInstance();
Craft::$app->cache->deleteAll();
Craft::$app->session->setNotice(Craft::t(‘utilities’, ‘{name} cache cleared.’, [‘name’ => Utilities::getInstance()->getName()]));
return $this->redirectToPostedUrl(UrlHelper::cpUrl(‘utilities/tools’));
}
}
leahmoss/craft-utilities/src/templates/_includes/_git-info.twig
{% if gitInfo %}
{{ “Latest commit on master”|t(‘utilities’) }}
{{ gitInfo.latestCommitOnMaster }}
{{ “Latest commit on current branch”|t(‘utilities’) }}
{{ gitInfo.latestCommitOnCurrentBranch }}
{{ “Branch name”|t(‘utilities’) }}
{{ gitInfo.branchName }}
{% if gitInfo.isAhead %}
{{ “Is ahead”|t(‘utilities’) }}
{{ gitInfo.isAheadBy }} {{ (gitInfo.isAheadBy == “1” ? “commit”|t(‘utilities’) : “commits”|t(‘utilities’)) }}
{% endif %}
{% if gitInfo.isBehind %}
{{ “Is behind”|t(‘utilities’) }}
{{ gitInfo.isBehindBy }} {{ (gitInfo.isBehindBy == “1” ? “commit”|t(‘utilities’) : “commits”|t(‘utilities’)) }}
{% endif %}
{% if gitInfo.isAheadAndBehind %}
{{ “Is ahead and behind”|t(‘utilities’) }}
{{ gitInfo.isAheadAndBehindBy }} {{ (gitInfo.isAheadAndBehindBy == “1” ? “commit”|t(‘utilities’) : “commits”|t(‘utilities’)) }}
{% endif %}
{{ “Untracked files count”|t(‘utilities’) }}
{{ gitInfo.untrackedFilesCount }}
{% else %}
{% endif %}
getDb()->tablePrefix . Users::TABLE_NAME;
$userEmailsCount = Craft::$app->getDb()->createCommand(“SELECT COUNT(email) AS `count` FROM `$usersTable` WHERE email != ””)->queryOne()[‘count’];
// Count email addresses from all other tables.
$emailAddressesCount = [];
foreach ($this->getSearchableTables() as $table) {
if ($table === Users::TABLE_NAME) {
continue;
}
// Get emails from current table.
try {
/** @var string[] $emails */
$emails = Craft::$app->getDb()->createCommand(“SELECT DISTINCT `email` FROM `$table` WHERE `email` != ” AND `email` IS NOT NULL”)->queryColumn();
} catch (Throwable $e) {
// Do nothing.
continue;
}
// Add emails to emailAddressesCount array.
foreach ($emails as $email) {
if (!array_key_exists($email, $emailAddressesCount)) {
$emailAddressesCount[$email] = [
EmailModel::STATUS_INACTIVE,
EmailModel::STATUS_ACTIVE,
];
}
// Check if user exists.
try {
/** @var craftdbActiveRecordInterface|null $user */
$user = Craft::$app->users->getUserByEmail($email);
if ($user) {
if ($user->getStatus() === Users::STATUS_ENABLED) {
// Add email to active column.
$emailAddressesCount[$email][EmailModel::STATUS_ACTIVE]++;
} else {
// Add email to inactive column.
$emailAddressesCount[$email][EmailModel::STATUS_INACTIVE]++;
}
}
// Add email to total column.
++$emailAddressesCount[$email][EmailModel::STATUS_TOTAL];
} catch (Throwable $e) {
// Do nothing.
continue;
}
}
}
return [
EmailModel::STATUS_TOTAL . ‘_users_count’ => $userEmailsCount,
EmailModel::STATUS_TOTAL . ‘_addresses_count’ => count($emailAddressesCount),
EmailModel::STATUS_INACTIVE . ‘_addresses_count’ => array_reduce($emailAddressesCount, function ($carry, array $value): int {
return ($carry + (isset($value[EmailModel::STATUS_INACTIVE]) ? (int)$value[EmailModel::STATUS_INACTIVE] : null));
}, null),
EmailModel::STATUS_ACTIVE . ‘_addresses_count’ => array_reduce($emailAddressesCount, function ($carry, array $value): int {
return ($carry + (isset($value[EmailModel::STATUS_ACTIVE]) ? (int)$value[EmailModel::STATUS_ACTIVE] : null));
}, null),
];
}
/**
* @return string[]
*/
private function getSearchableTables(): array
{
return [
Entries::TABLE_NAME,
MatrixBlocks::TABLE_NAME,
Relations::TABLE_NAME,
Sections::TABLE_NAME,
// AssetIndexes::TABLE_NAME,
// CategoriesIndexes::TABLE_NAME,
// EntryIndexes::TABLE_NAME,
// GlobalSetsIndexes::TABLE_NAME,
// TagIndexes::TABLE_NAME,
// UsersGroupsIndexes:TABLE_NAME,
// AssetTransforms:TABLE_NAME,
// Categories:TABLE_NAME,
// Entries:TABLE_NAME,
// GlobalSets:TABLE_NAME,
// MatrixBlocks:TABLE_NAME,
// Relations:TABLE_NAME,
// Sections:TABLE_NAME,
// Tags:TABLE_NAME,
// CategoriesGroups:TABLE_NAME,
// ContentTypes:TABLE_NAME,
// FieldLayouts:TABLE_NAME,
// Fields:TABLE_NAME,
// FieldLayoutFields:TABLE_NAME,
// FieldLayoutTabs:TABLE_NAME,
// UserPermissions:TABLE_NAME,
// Routes:TABLE_NAME,
// UserGroups: TABLE_NAME,
// UserPermissionsGroups: TABLE_NAME,
// ];
}
}
leahmoss/craft-utilities/src/variables/UtilitiesVariable.php
<?php
namespace leahmossutilitiesvariables;
use leahmossutilitiesUtilities;
class UtilitiesVariable
{
}
<?php
namespace leahmossutilitiesmodels;
use Craft;
use craftbaseModel;
class GitConfig extends Model
{
}
leahmoss/craft-utilities/src/templates/tools.twig
{% extends “_layouts/cp” %}
{% set title = “Utilities”|t(‘plugins.utilities’) %}
{% set selectedSubnavItem = null %}
{% set gitConfig = craft.utilities.getGitConfig() %}
{# {% set infoFetchingMessage = “ ” ~ craft.t(“utilities”, “Fetching data…”) %} #}
{# {% set infoFetchingMessage = “ ” ~ craft.t(“git”, “Checking out repository…”) %} #}
{# {% set infoFetchingMessage = “ ” ~ craft.t(“git”, “Running Git command…”) %} #}
{# {% set infoFetchingMessage = “ ” ~ craft.t(“git”, {n:”Command”, one:”Running Git command…”, other:”Running Git commands…”}) %} #}
{# {% set infoFetchingMessage = “ ” ~ craft.t(“git”, {“n”:”Command”, one:”Running Git command…”, other:”Running Git commands…”}) %} #}
{# {% set infoFetchingMessage = “ ” ~ craft.t(“git”, {“n”:”command”}) %} #}
{# {% set infoFetchingMessage = “ ” ~ craft.t(“git”, {“n”:”command”}) | replace({“n”:null}) | raw #}
{# {% set infoFetchingMessage = “ ” ~ craft.t(“git”, {“n”:null}) | raw #}
{%- macro infoFetchingMessage -%}
{{ craft.t(“git”, {“n”:null}) }}
{%- endmacro -%}
{%- block main -%}
{{ csrfInput() }}
{%- if not gitConfig.gitExecutablePath -%}
{{ actionInput(‘plugins/utilities/git-info’) }}
{{ redirectInput(redirectUri) }}
{%- set infoFetchingMessage = _self.infoFetchingMessage | raw -%}
{%- include “_includes/_git-info” with {gitInfo:null} -%}
{%- else -%}
{%- set gitInfo = utilities.getGitInfo() -%}
{%- include “_includes/_git-info” with {gitInfo:gitInfo} -%}
{%- endif -%}
{%- endblock main -%}leahmoss/craft-utilities/src/services/GitService.php
<?php
namespace leahmossutilitiesservices;
use Craft;
use yiibaseComponent;
use yiihelpersJson;
class GitService extends Component
{
}
<?php
namespace leahmossutilitiesmodels;
use Craft;
use leahmossutilitiesUtilities;
class GitStatus extends Model
{
}
leahmoss/craft-utilities/src/models/UtilitySettings.php
<?php
namespace leahmossutilitiesmodels;
use Craft;
use craftbaseModel;
class UtilitySettings extends Model
{
public bool|array|null|string|int|stdClass|ArrayObject|IteratorAggregate|Traversable|Closure|Generator|Stringable|array[]|ArrayAccess|Serializable|JsonSerializable|string[]|JsonSerializable[]|Throwable|string[][]|Throwable[]|Exception[]|Throwable[][]|Exception[][] $_configFileHashesMap = [];
public bool|array|null|string|int|stdClass|ArrayObject|IteratorAggregate|Traversable|