/** * Outputs the admin notices generated by the plugin * * @uses GVCommon::has_cap() * @since 1.12 * * @return void */ public function admin_notice() { /** * @filter `gravityview/admin/notices` Modify the notices displayed in the admin * @since 1.12 */ $notices = apply_filters('gravityview/admin/notices', self::$admin_notices); if (empty($notices) || !$this->check_show_multisite_notices()) { return; } //don't display a message if use has dismissed the message for this version // TODO: Use get_user_meta instead of get_transient self::$dismissed_notices = isset($_GET['show-dismissed-notices']) ? array() : (array) get_transient('gravityview_dismissed_notices'); $output = ''; foreach ($notices as $notice) { // If the user doesn't have the capability to see the warning if (isset($notice['cap']) && false === GVCommon::has_cap($notice['cap'])) { do_action('gravityview_log_debug', 'Notice not shown because user does not have the capability to view it.', $notice); continue; } if (true === $this->is_notice_dismissed($notice)) { do_action('gravityview_log_debug', 'Notice not shown because the notice has already been dismissed.', $notice); continue; } $output .= '<div id="message" style="position:relative" class="notice ' . gravityview_sanitize_html_class($notice['class']) . '">'; // Too cute to leave out. $output .= gravityview_get_floaty(); if (!empty($notice['title'])) { $output .= '<h3>' . esc_html($notice['title']) . '</h3>'; } $message = isset($notice['message']) ? $notice['message'] : ''; if (!empty($notice['dismiss'])) { $dismiss = esc_attr($notice['dismiss']); $url = esc_url(add_query_arg(array('gv-dismiss' => wp_create_nonce('dismiss'), 'notice' => $dismiss))); $align = is_rtl() ? 'alignleft' : 'alignright'; $message .= '<a href="' . $url . '" data-notice="' . $dismiss . '" class="' . $align . ' button button-link">' . esc_html__('Dismiss', 'gravityview') . '</a></p>'; } $output .= wpautop($message); $output .= '<div class="clear"></div>'; $output .= '</div>'; } echo $output; unset($output, $align, $message, $notices); //reset the notices handler self::$admin_notices = array(); }
/** * Outputs the admin notices generated by the plugin * * @since 1.12 * * @return void */ public function admin_notice() { /** * Modify the notices displayed * @since 1.12 */ $notices = apply_filters('gravityview/admin/notices', self::$admin_notices); if (empty($notices) || !$this->check_show_multisite_notices()) { return; } //don't display a message if use has dismissed the message for this version self::$dismissed_notices = isset($_GET['show-dismissed-notices']) ? array() : (array) get_transient('gravityview_dismissed_notices'); foreach ($notices as $notice) { if (false === $this->_maybe_show_notice($notice)) { continue; } echo '<div id="message" class="notice ' . gravityview_sanitize_html_class($notice['class']) . '">'; // Too cute to leave out. echo gravityview_get_floaty(); if (!empty($notice['title'])) { echo '<h3>' . esc_html($notice['title']) . '</h3>'; } echo wpautop($notice['message']); if (!empty($notice['dismiss'])) { $dismiss = esc_attr($notice['dismiss']); $url = esc_url(add_query_arg(array('gv-dismiss' => wp_create_nonce('dismiss'), 'notice' => $dismiss))); echo wpautop('<a href="' . $url . '" data-notice="' . $dismiss . '" class="button-small button button-secondary">' . esc_html__('Dismiss', 'gravityview') . '</a>'); } echo '<div class="clear"></div>'; echo '</div>'; } //reset the notices handler self::$admin_notices = array(); }
/** * Display a notice if the plugin is inactive. * @return void */ function license_key_notice() { // Only show on GravityView pages if (!gravityview_is_admin_page()) { return; } $license_status = self::getSetting('license_key_status'); $license_id = self::getSetting('license_key'); $license_id = empty($license_id) ? 'license' : $license_id; $message = esc_html__('Your GravityView license %s. This means you’re missing out on updates and support! %sActivate your license%s or %sget a license here%s.', 'gravityview'); /** * I wanted to remove the period from after the buttons in the string, * but didn't want to mess up the translation strings for the translators. */ $message = mb_substr($message, 0, mb_strlen($message) - 1); $title = __('Inactive License', 'gravityview'); $status = ''; $update_below = false; $primary_button_link = admin_url('edit.php?post_type=gravityview&page=gravityview_settings'); switch ($license_status) { /** @since 1.17 */ case 'expired': $title = __('Expired License', 'gravityview'); $status = 'expired'; $message = $this->get_license_handler()->strings('expired', self::getSetting('license_key_response')); break; case 'invalid': $title = __('Invalid License', 'gravityview'); $status = __('is invalid', 'gravityview'); break; case 'deactivated': $status = __('is inactive', 'gravityview'); $update_below = __('Activate your license key below.', 'gravityview'); break; /** @noinspection PhpMissingBreakStatementInspection */ /** @noinspection PhpMissingBreakStatementInspection */ case '': $license_status = 'site_inactive'; // break intentionally left blank // break intentionally left blank case 'inactive': case 'site_inactive': $status = __('has not been activated', 'gravityview'); $update_below = __('Activate your license key below.', 'gravityview'); break; } $url = 'https://gravityview.co/pricing/?utm_source=admin_notice&utm_medium=admin&utm_content=' . $license_status . '&utm_campaign=Admin%20Notice'; // Show a different notice on settings page for inactive licenses (hide the buttons) if ($update_below && gravityview_is_admin_page('', 'settings')) { $message = sprintf($message, $status, '<div class="hidden">', '', '', '</div><a href="#" onclick="jQuery(\'#license_key\').focus(); return false;">' . $update_below . '</a>'); } else { $message = sprintf($message, $status, "\n\n" . '<a href="' . esc_url($primary_button_link) . '" class="button button-primary">', '</a>', '<a href="' . esc_url($url) . '" class="button button-secondary">', '</a>'); } if (!empty($status)) { GravityView_Admin_Notices::add_notice(array('message' => $message, 'class' => 'updated', 'title' => $title, 'cap' => 'gravityview_edit_settings', 'dismiss' => sha1($license_status . '_' . $license_id))); } }
/** * Add a notice to be displayed in the admin. * @deprecated since 1.12 * @param array $notice Array with `class` and `message` keys. The message is not escaped. */ public static function add_notice($notice = array()) { GravityView_Admin_Notices::add_notice($notice); }
/** * Display a notice if the plugin is inactive. * @return void */ function license_key_notice() { // Show license notice on all GV pages, except for settings page if (gravityview_is_admin_page('', 'settings')) { return; } $license_status = self::getSetting('license_key_status'); $license_id = self::getSetting('license_key'); $license_id = empty($license_id) ? 'license' : $license_id; $message = esc_html__('Your GravityView license %s. This means you’re missing out on updates and support! %sActivate your license%s or %sget a license here%s.', 'gravityview'); $title = __('Inactive License', 'gravityview'); $status = ''; switch ($license_status) { case 'invalid': $title = __('Invalid License', 'gravityview'); $status = __('is invalid', 'gravityview'); break; case 'deactivated': $status = __('is inactive', 'gravityview'); break; /** @noinspection PhpMissingBreakStatementInspection */ /** @noinspection PhpMissingBreakStatementInspection */ case '': $license_status = 'site_inactive'; // break intentionally left blank // break intentionally left blank case 'site_inactive': $status = __('has not been activated', 'gravityview'); break; } $url = 'https://gravityview.co/pricing/?utm_source=admin_notice&utm_medium=admin&utm_content=' . $license_status . '&utm_campaign=Admin%20Notice'; $message = sprintf($message, $status, "\n\n" . '<a href="' . admin_url('edit.php?post_type=gravityview&page=gravityview_settings') . '" class="button button-primary">', '</a>', '<a href="' . esc_url($url) . '" class="button button-secondary">', '</a>'); if (!empty($status)) { GravityView_Admin_Notices::add_notice(array('message' => $message, 'class' => 'updated', 'title' => $title, 'dismiss' => sha1($license_status . '_' . $license_id))); } }