File Editor
Directories:
.. (Back)
Diff
dashboard
rest-api
Files:
Diff.php
IPTraf.php
IPTrafList.php
WFLSPHP52Compatability.php
compat.php
diffResult.php
email_genericAlert.php
email_newIssues.php
email_unlockRequest.php
email_unsubscribeRequest.php
flags.php
live_activity.php
menu_dashboard.php
menu_dashboard_options.php
menu_firewall.php
menu_firewall_blocking.php
menu_firewall_blocking_options.php
menu_firewall_waf.php
menu_firewall_waf_options.php
menu_install.php
menu_options.php
menu_scanner.php
menu_scanner_credentials.php
menu_scanner_options.php
menu_support.php
menu_tools.php
menu_tools_diagnostic.php
menu_tools_importExport.php
menu_tools_livetraffic.php
menu_tools_twoFactor.php
menu_tools_whois.php
menu_wordfence_central.php
sysinfo.php
viewFullActivityLog.php
wf503.php
wfAPI.php
wfActivityReport.php
wfAdminNoticeQueue.php
wfAlerts.php
wfArray.php
wfBrowscap.php
wfBrowscapCache.php
wfBulkCountries.php
wfCache.php
wfCentralAPI.php
wfConfig.php
wfCrawl.php
wfCredentialsController.php
wfCrypt.php
wfCurlInterceptor.php
wfDB.php
wfDashboard.php
wfDateLocalization.php
wfDeactivationOption.php
wfDiagnostic.php
wfDict.php
wfDirectoryIterator.php
wfFileUtils.php
wfHelperBin.php
wfHelperString.php
wfIPWhitelist.php
wfImportExportController.php
wfInvalidPathException.php
wfIpLocation.php
wfIpLocator.php
wfIssues.php
wfJWT.php
wfLicense.php
wfLockedOut.php
wfLog.php
wfMD5BloomFilter.php
wfModuleController.php
wfNotification.php
wfOnboardingController.php
wfPersistenceController.php
wfRESTAPI.php
wfScan.php
wfScanEngine.php
wfScanEntrypoint.php
wfScanFile.php
wfScanFileLink.php
wfScanMonitor.php
wfScanPath.php
wfSchema.php
wfStyle.php
wfSupportController.php
wfUnlockMsg.php
wfUpdateCheck.php
wfUtils.php
wfVersionCheckController.php
wfView.php
wfViewResult.php
wfWebsite.php
wordfenceClass.php
wordfenceConstants.php
wordfenceHash.php
wordfenceScanner.php
wordfenceURLHoover.php
Create New File
Create
Edit File: wfAdminNoticeQueue.php
<?php class wfAdminNoticeQueue { protected static function _notices() { return self::_purgeObsoleteNotices(wfConfig::get_ser('adminNoticeQueue', array())); } private static function _purgeObsoleteNotices($notices) { $altered = false; foreach ($notices as $id => $notice) { if ($notice['category'] === 'php8') { unset($notices[$id]); $altered = true; } } if ($altered) self::_setNotices($notices); return $notices; } protected static function _setNotices($notices) { wfConfig::set_ser('adminNoticeQueue', $notices); } /** * Adds an admin notice to the display queue. * * @param string $severity * @param string $messageHTML * @param bool|string $category If not false, notices with the same category will be removed prior to adding this one. * @param bool|array $users If not false, an array of user IDs the notice should show for. */ public static function addAdminNotice($severity, $messageHTML, $category = false, $users = false) { $notices = self::_notices(); foreach ($notices as $id => $n) { $usersMatches = false; if (isset($n['users'])) { $usersMatches = wfUtils::sets_equal($n['users'], $users); } else if ($users === false) { $usersMatches = true; } $categoryMatches = false; if ($category !== false && isset($n['category']) && $n['category'] == $category) { $categoryMatches = true; } if ($usersMatches && $categoryMatches) { unset($notices[$id]); } } $id = wfUtils::uuid(); $notices[$id] = array( 'severity' => $severity, 'messageHTML' => $messageHTML, ); if ($category !== false) { $notices[$id]['category'] = $category; } if ($users !== false) { $notices[$id]['users'] = $users; } self::_setNotices($notices); } /** * Removes an admin notice using one of three possible search methods: * * 1. If $id matches. $category and $users are ignored * 2. If $category matches. $users must be false for this. * 3. If $category matches and the notice's user IDs matches $users. * * @param bool|int $id * @param bool|string $category * @param bool|int[] $users */ public static function removeAdminNotice($id = false, $category = false, $users = false) { if ($id === false && $category === false && $users === false) { return; } else if ($id !== false) { $category = false; $users = false; } $notices = self::_notices(); $found = false; foreach ($notices as $nid => $n) { if ($id == $nid) { //ID match unset($notices[$nid]); $found=true; break; } else if ($id !== false) { continue; } if ($category !== false && isset($n['category']) && $category == $n['category']) { if ($users !== false) { if (isset($n['users']) && wfUtils::sets_equal($users, $n['users'])) { unset($notices[$nid]); $found=true; } } else { unset($notices[$nid]); $found=true; } } } if($found) self::_setNotices($notices); } public static function hasNotice($category = false, $users = false) { $notices = self::_notices(); foreach ($notices as $nid => $n) { $categoryMatches = false; if (($category === false && !isset($n['category'])) || ($category !== false && isset($n['category']) && $category == $n['category'])) { $categoryMatches = true; } $usersMatches = false; if (($users === false && !isset($n['users'])) || ($users !== false && isset($n['users']) && wfUtils::sets_equal($users, $n['users']))) { $usersMatches = true; } if ($categoryMatches && $usersMatches) { return true; } } return false; } public static function enqueueAdminNotices() { $user = wp_get_current_user(); if ($user->ID == 0) { return false; } $networkAdmin = is_multisite() && is_network_admin(); $notices = self::_notices(); $added = false; foreach ($notices as $nid => $n) { if (isset($n['users']) && array_search($user->ID, $n['users']) === false) { continue; } $notice = new wfAdminNotice($nid, $n['severity'], $n['messageHTML']); if ($networkAdmin) { add_action('network_admin_notices', array($notice, 'displayNotice')); } else { add_action('admin_notices', array($notice, 'displayNotice')); } $added = true; } return $added; } } class wfAdminNotice { const SEVERITY_CRITICAL = 'critical'; const SEVERITY_WARNING = 'warning'; const SEVERITY_INFO = 'info'; private $_id; private $_severity; private $_messageHTML; public function __construct($id, $severity, $messageHTML) { $this->_id = $id; $this->_severity = $severity; $this->_messageHTML = $messageHTML; } public function displayNotice() { $severityClass = 'notice-info'; if ($this->_severity == self::SEVERITY_CRITICAL) { $severityClass = 'notice-error'; } else if ($this->_severity == self::SEVERITY_WARNING) { $severityClass = 'notice-warning'; } echo '<div class="wf-admin-notice notice ' . $severityClass . '" data-notice-id="' . esc_attr($this->_id) . '"><p>' . $this->_messageHTML . '</p><p><a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.dismissAdminNotice(\'' . esc_attr($this->_id) . '\'); return false;" role="button">' . esc_html__('Dismiss', 'wordfence') . '</a></p></div>'; } }
Save Changes
Rename File
Rename