Files
gustavoo-me/wp-content/plugins/fluent-crm/app/Http/Controllers/DashboardController.php
T
2026-07-23 22:56:30 -03:00

269 lines
15 KiB
PHP

<?php
namespace FluentCrm\App\Http\Controllers;
use FluentCrm\App\Models\CampaignEmail;
use FluentCrm\App\Services\Helper;
use FluentCrm\App\Services\Stats;
use FluentCrm\Framework\Support\Arr;
/**
* DashboardController - REST API Handler Class
*
* REST API Handler
*
* @package FluentCrm\App\Http
*
* @version 1.0.0
*/
class DashboardController extends Controller
{
public function getStats(Stats $stats)
{
$overallStats = $stats->getCounts();
$nextMinuteTask = Helper::getNextMinuteTaskTimeStamp();
$notices = [];
if ((time() - $nextMinuteTask) > 120) {
$notices[] = '<div class=""><b>Attention: </b> Looks like the scheduled cron jobs are not running timely. Please consider setup server side cron. <a href="' . admin_url('admin.php?page=fluentcrm-admin#/settings/settings_tools') . '">Click here to check the status</a></div>';
}
$systemTips = '';
$emailsCount = Arr::get($overallStats, 'email_sent.count', 0);
if ($emailsCount > 400000) {
$lastEmail = CampaignEmail::orderBy('id', 'ASC')->first();
if ($lastEmail && strtotime($lastEmail->created_at) < strtotime('-120 days')) {
$emailsCount = number_format($emailsCount, 0);
$sysBody = '<div class="fc_system_tips">';
/* translators: %s: number of emails in the database */
$sysBody .= '<p>' . sprintf(__('You have %s email history in the database. Consider cleaning up old email history to speed up your next email campaign.', 'fluent-crm'), $emailsCount) . '</p>';
$sysBody .= '<a href="' . fluentcrm_menu_url_base('settings/settings_tools') . '" class="el-button fcrm_primary_btn">' . __('View Data Cleanup', 'fluent-crm') . '</a>';
$sysBody .= '</div>';
$systemTips = [
'title' => __('Database Cleanup Suggestion', 'fluent-crm'),
'body' => $sysBody,
];
}
}
/**
* Define the FluentCRM dashboard notices.
*
* This filter allows modification of the notices displayed on the FluentCRM dashboard.
*
* @since 2.8.40
*
* @param array $notices An array of notices to be displayed on the dashboard.
*/
$notices = apply_filters('fluent_crm/dashboard_notices', $notices);
/**
* Define the dashboard data for FluentCRM.
*
* @since 2.9.23
*
* @param array {
* The dashboard data array.
*
* @type array $stats Overall statistics.
* @type array $sales Sales statistics.
* @type array $dashboard_notices Notices to be displayed on the dashboard.
* @type array $onboarding Onboarding statistics.
* @type array $quick_links Quick links for the dashboard.
* @type array $ff_config FluentForm configuration.
* @type array $recommendation Recommendations for the user.
* @type array $system_tips System tips for the user.
* }
*/
return apply_filters('fluent_crm/dashboard_data', [
'stats' => $overallStats,
/**
* Determine the FluentCRMsales statistics data.
*
* This filter allows modification of the sales statistics data before it is used.
*
* @since 2.7.0
*
* @param array An array of sales statistics data.
*/
'sales' => apply_filters('fluent_crm/sales_stats', []),
'dashboard_notices' => $notices,
'onboarding' => $stats->getOnboardingStat(),
'quick_links' => $stats->getQuickLinks(),
'ff_config' => [
'is_installed' => defined('FLUENTFORM'),
'create_form_link' => admin_url('admin.php?page=fluent_forms#add=1')
],
'recommendation' => $this->recommendation(),
'system_tips' => $systemTips,
'recent_contacts' => $stats->getRecentContacts(3),
'active_automations' => $stats->getActiveAutomations(3),
'recent_campaigns' => $stats->getRecentCampaigns(3),
'triggers' => $this->getTriggers()
]);
}
private function recommendation()
{
if (defined('FLUENTCAMPAIGN')) {
return false;
}
$recommendations = [];
if (defined('WC_PLUGIN_FILE')) {
$recommendations[] = [
'provider' => 'WooCommerce',
'title' => __('Do more with WooCommerce + FluentCRM', 'fluent-crm'),
'description' => __('Integrate FluentCRM with WooCommerce and segment your customers by purchase behavior, send super targeted emails, onboarding emails, cross promotions and many more.', 'fluent-crm'),
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'learn_more' => 'https://fluentcrm.com/integrations/woocommerce-marketing-automation/',
'base_title' => __('Supercharge your WooCommerce store by upgrading FluentCRM Pro', 'fluent-crm')
];
$recommendations[] = [
'provider' => 'WooCommerce',
'title' => __('Do more with WooCommerce + FluentCRM', 'fluent-crm'),
'description' => __('Integrate FluentCRM with WooCommerce and segment your customers by purchase behavior, send super targeted emails, onboarding emails, cross promotions and many more.', 'fluent-crm'),
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'learn_more' => 'https://fluentcrm.com/integrations/woocommerce-marketing-automation/',
'base_title' => __('Supercharge your WooCommerce store by upgrading FluentCRM Pro', 'fluent-crm')
];
}
if (Helper::isEdd3()) {
$recommendations[] = [
'provider' => 'EDD',
'title' => __('Do more with EDD + FluentCRM', 'fluent-crm'),
'description' => __('Integrate FluentCRM with Easy Digital Downloads and segment your customers by purchase behavior, send super targeted emails, onboarding emails, cross promotions and many more.', 'fluent-crm'),
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'learn_more' => 'https://fluentcrm.com/integrations/easy-digital-downloads-integration-fluentcrm/',
'base_title' => __('Supercharge your Digital Downloads store by upgrading FluentCRM Pro', 'fluent-crm')
];
}
if (defined('LLMS_PLUGIN_FILE')) {
$recommendations[] = [
'provider' => 'LifterLMS',
'title' => __('Do more with LifterLMS + FluentCRM', 'fluent-crm'),
'description' => __('Integrate LifterLMS with FluentCRM and segment your students by courses, send super targeted emails, onboarding emails, cross promote more courses and many more.', 'fluent-crm'),
'learn_more' => 'https://fluentcrm.com/integrations/lifterlms/',
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'base_title' => __('Supercharge your LMS by upgrading FluentCRM Pro', 'fluent-crm')
];
$recommendations[] = [
'provider' => 'LifterLMS',
'title' => __('Do more with LifterLMS + FluentCRM', 'fluent-crm'),
'description' => __('Integrate LifterLMS with FluentCRM and segment your students by courses, send super targeted emails, onboarding emails, cross promote more courses and many more.', 'fluent-crm'),
'learn_more' => 'https://fluentcrm.com/integrations/lifterlms/',
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'base_title' => __('Supercharge your LMS by upgrading FluentCRM Pro', 'fluent-crm')
];
} else if (defined('LEARNDASH_VERSION')) {
$recommendations[] = [
'provider' => 'LearnDash',
'title' => __('Do more with LearnDash + FluentCRM', 'fluent-crm'),
'description' => __('Integrate LearnDash with FluentCRM and segment your students by courses, send super targeted emails, onboarding emails, cross promote more courses and many more.', 'fluent-crm'),
'learn_more' => 'https://fluentcrm.com/integrations/learndash-integration-fluentcrm/',
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'base_title' => __('Supercharge your LMS by upgrading FluentCRM Pro', 'fluent-crm')
];
$recommendations[] = [
'provider' => 'LearnDash',
'title' => __('Do more with LearnDash + FluentCRM', 'fluent-crm'),
'description' => __('Integrate LearnDash with FluentCRM and segment your students by courses, send super targeted emails, onboarding emails, cross promote more courses and many more.', 'fluent-crm'),
'learn_more' => 'https://fluentcrm.com/integrations/learndash-integration-fluentcrm/',
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'base_title' => __('Supercharge your LMS by upgrading FluentCRM Pro', 'fluent-crm')
];
} else if (defined('TUTOR_VERSION')) {
$recommendations[] = [
'provider' => 'TutorLMS',
'title' => __('Do more with TutorLMS + FluentCRM', 'fluent-crm'),
'description' => __('Integrate TutorLMS with FluentCRM and segment your students by courses, send super targeted emails, onboarding emails, cross promote more courses and many more.', 'fluent-crm'),
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'learn_more' => 'https://fluentcrm.com/docs/tutorlms-integration-with-fluentcrm/',
'base_title' => __('Supercharge your LMS by upgrading FluentCRM Pro', 'fluent-crm')
];
} else if (defined('LP_PLUGIN_FILE')) {
$recommendations[] = [
'provider' => 'LearnPress',
'title' => __('Do more with LearnPress + FluentCRM', 'fluent-crm'),
'description' => __('Integrate LearnPress with FluentCRM and segment your students by courses, send super targeted emails, onboarding emails, cross promote more courses and many more.', 'fluent-crm'),
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'learn_more' => 'https://fluentcrm.com/docs/learpress-integration-with-fluentcrm/',
'base_title' => __('Supercharge your LMS by upgrading FluentCRM Pro', 'fluent-crm')
];
}
if (defined('PMPRO_VERSION')) {
$recommendations[] = [
'provider' => 'PaidMembership Pro',
'title' => __('Do more with PaidMembership Pro + FluentCRM', 'fluent-crm'),
'description' => __('Integrate PaidMembership Pro with FluentCRM and segment your members by membership levels, send super targeted emails, onboarding emails, cross promote more levels and many more.', 'fluent-crm'),
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'base_title' => __('Supercharge your Membership Site by upgrading FluentCRM Pro', 'fluent-crm')
];
} else if (defined('WLM3_PLUGIN_VERSION')) {
$recommendations[] = [
'provider' => 'Wishlist Member',
'title' => __('Do more with Wishlist Member + FluentCRM', 'fluent-crm'),
'description' => __('Integrate Wishlist Member with FluentCRM and segment your members by membership levels, send super targeted emails, onboarding emails, cross promote more levels and many more.', 'fluent-crm'),
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'base_title' => __('Supercharge your Membership Site by upgrading FluentCRM Pro', 'fluent-crm')
];
} else if (defined('MEPR_PLUGIN_NAME')) {
$recommendations[] = [
'provider' => 'MemberPress',
'title' => __('Do more with MemberPress + FluentCRM', 'fluent-crm'),
'description' => __('Integrate MemberPress with FluentCRM and segment your members by membership levels, send super targeted emails, onboarding emails, cross promote more levels and many more.', 'fluent-crm'),
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'base_title' => __('Supercharge your Membership Site by upgrading FluentCRM Pro', 'fluent-crm')
];
} else if (class_exists('\Restrict_Content_Pro')) {
$recommendations[] = [
'provider' => 'Restrict Content Pro',
'title' => __('Do more with Restrict Content Pro + FluentCRM', 'fluent-crm'),
'description' => __('Integrate Restrict Content Pro with FluentCRM and segment your members by membership levels, send super targeted emails, onboarding emails, cross promote more levels and many more.', 'fluent-crm'),
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'base_title' => __('Supercharge your Membership Site by upgrading FluentCRM Pro', 'fluent-crm')
];
}
if (defined('BP_REQUIRED_PHP_VERSION') && function_exists('\buddypress')) {
$title = defined('BP_PLATFORM_VERSION') ? 'BuddyBoss' : 'BuddyPress';
$recommendations[] = [
'provider' => $title,
/* translators: %s: plugin name (BuddyBoss or BuddyPress) */
'title' => sprintf(__('Do more with %s + FluentCRM', 'fluent-crm'), $title),
/* translators: %s: plugin name (BuddyBoss or BuddyPress) */
'description' => sprintf(__('Integrate %s with FluentCRM and segment your members by different group, send super targeted emails, onboarding emails, cross promote more groups and many more.', 'fluent-crm'), $title),
'btn_text' => __('Upgrade to Pro', 'fluent-crm'),
'base_title' => __('Supercharge your Community Site by upgrading FluentCRM Pro', 'fluent-crm')
];
}
if (!$recommendations) {
return false;
}
return $recommendations[array_rand($recommendations)];
}
private function getTriggers()
{
/**
* Determine the list of funnel triggers in FluentCRM.
*
* This filter allows you to modify the array of funnel triggers.
*
* @since 1.0.0
*
* @param array An array of funnel triggers.
*/
return apply_filters('fluentcrm_funnel_triggers', []);
}
}