Файловый менеджер - Редактировать - /home/infrafs/INFRABIKEUS/wp-content/plugins/copy-delete-posts/modules/tryOutPlugins/tryOutPlugins.php
Назад
<?php /** * File for our cool try it out module * That allows people to try out any plugin within WP directory * Before they install it on their real website, this feature * Is completely free and available for everyone * * @category Child Plugin * @version v0.1.3 * @since v0.1.0 * @author iClyde <kontakt@iclyde.pl> */ // Namespace namespace Inisev\Subs; // Disallow direct access if (defined('ABSPATH')) { /** * Main class for handling the Review */ if (!class_exists('Inisev\Subs\Inisev_Try_Out_Plugins')) { class Inisev_Try_Out_Plugins { function __construct($plugin_file, $plugin_dir, $plugin_name, $plugin_menu_page) { if (!is_admin() || !current_user_can('install_plugins')) return; if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'POST') { add_action('wp_ajax_tifm_notice_actions', [&$this, 'noticeAjax']); } if (get_option('_tifm_force_disable_feature_fix', 'no') === 'no') { delete_option('_tifm_hide_notice_forever'); update_option('_tifm_feature_enabled', 'disabled'); update_option('_tifm_disable_feature_forever', true); update_option('_tifm_force_disable_feature_fix', true); } global $pagenow; if (!($pagenow == 'plugin-install.php' || $pagenow == 'admin-ajax.php')) return; if (get_option('_tifm_disable_feature_forever', false) != false) return; $this->pluginDir = $plugin_dir; $this->pluginFile = $plugin_file; $this->pluginName = $plugin_name; $this->pluginPageURL = admin_url($plugin_menu_page) . '&scrollToSection=testPlugins'; $this->showInformativeNotice(); $this->insertActionButton(); } public function showInformativeNotice() { add_action('in_admin_footer', [&$this, 'tryItOutScript']); if (get_option('_tifm_hide_notice_forever', false) != false) return; add_action('admin_notices', [&$this, 'informativeAdminNoticeHandler']); add_action('admin_head', [&$this, 'noticeStyles']); add_action('in_admin_footer', [&$this, 'noticeScripts']); } public function noticeStyles() { ?> <style media="screen"> #tifm_paragraph_notice { display: flex; flex-direction: row; justify-content: space-between; } #tifm_paragraph_notice span { line-height: 30px; } #tifm_paragraph_notice .tifm_darker_a { color: #555; } #tifm_paragraph_notice .tifm_darker_a_muted { color: #999; } #tifm_paragraph_notice .tifm_brought_url { color: #00a32a; text-decoration: none; } #tifm_paragraph_notice .tifm-grow-1 { flex-grow: 1; } #tifm_paragraph_notice .tifm-grow-5 { flex-grow: 5; } @media screen and (max-width: 1400px) { #tifm_paragraph_notice { flex-direction: column; } } </style> <?php } public function noticeScripts() { ?> <script type="text/javascript"> jQuery(document).ready(function($) { $('#tifm_new_feature_notice').on('click', '.notice-dismiss', hideAndDismissNotice); $('#tifm_new_feature_notice').on('click', '.tifm_darker_a', hideAndDismissNotice); $('#tifm_new_feature_notice').on('click', '.tifm_darker_a_muted', disableFeatureAndDismiss); let nonce = "<?php echo wp_create_nonce('tifm_notice_nonce') ?>"; function hideAndDismissNotice(e) { let dismiss = false; if (typeof e != 'string') { e.preventDefault(); } else if (e = 'dismiss') { dismiss = true; } $('#tifm_new_feature_notice').hide(300); setTimeout(function () { $('#tifm_new_feature_notice').remove(); }, 350); let method = 'dismiss_notice'; if (dismiss == true) { method = 'dismiss_notice_and_disable'; } $.post(ajaxurl, { action: 'tifm_notice_actions', nonce: nonce, method: method }).done(function () { if (method == 'dismiss_notice_and_disable') { window.location.reload(); } }).fail(function (e) { alert('Error occurred, please refresh and try again.' + JSON.stringify(e)); }); } function disableFeatureAndDismiss(e) { e.preventDefault(); hideAndDismissNotice('dismiss'); } }); </script> <?php } public function tryItOutScript() { ?> <script type="text/javascript"> jQuery(document).ready(function($) { function makeButton(slug) { let a = document.createElement('A'); a.classList.add('button'); a.classList.add('button-primary'); a.classList.add('tifm-btn-iframe'); a.classList.add('right'); a.style.color = '#fff'; a.style.background = '#2d9418'; a.style.borderColor = '#2d9418'; a.style.boxShadow = 'none'; a.style.marginRight = '15px'; a.setAttribute('href', 'https://tastewp.com/plugins/' + slug); a.setAttribute('target', '_blank'); a.innerText = 'Try it first'; return a; } const observer = new MutationObserver(function (mutations_list) { mutations_list.forEach(function (mutation) { mutation.addedNodes.forEach(function (added_node) { if (added_node.id == 'TB_window') { $('#TB_window #TB_iframeContent')[0].onload = function () { let iframe = $('#TB_iframeContent').contents(); let footer = iframe.find('#plugin-information-footer'); let slug = footer.find('#plugin_install_from_iframe').data('slug'); let btn = makeButton(slug); footer.append(btn); } } }); }); }); observer.observe(document.querySelector('body'), { subtree: false, childList: true }); }); </script> <?php } public function informativeAdminNoticeHandler() { ?> <div class="notice notice-success is-dismissible" id="tifm_new_feature_notice"> <p id="tifm_paragraph_notice"> <span class="tifm-grow-1"> <b>New: </b> Click on the <a class="button" style="color:#2d9418;border-color:#2d9418;text-align:center;width:88px" href="#!">Try it first</a> button to first test a plugin on a new WP instance. </span> <span class="tifm-grow-5"> <a class="tifm_darker_a" href="#">Got it, close this notice</a> </span> <span class="tifm-grow-1"> <a class="tifm_darker_a_muted" href="#">Disable this feature</a> </span> <span> Brought to you by <a class="tifm_brought_url" href="<?php echo esc_html($this->pluginPageURL); ?>"><?php echo esc_html($this->pluginName); ?></a> </span> </p> </div> <?php } public function insertActionButton() { add_filter('plugin_install_action_links', [&$this, 'actionButtonHandler'], 10, 2); } public static function noticeAjax() { // Nonce verification if (!isset($_POST['nonce']) || !wp_verify_nonce(sanitize_text_field($_POST['nonce']), 'tifm_notice_nonce')) { wp_send_json_error(); return; } $method = ''; if (isset($_POST['method'])) { $method = sanitize_text_field($_POST['method']); } if ($method == 'dismiss_notice') { update_option('_tifm_hide_notice_forever', true); wp_send_json_success(); exit; } else if ($method == 'dismiss_notice_and_disable') { update_option('_tifm_hide_notice_forever', true); update_option('_tifm_disable_feature_forever', true); update_option('_tifm_feature_enabled', 'disabled'); wp_send_json_success(); exit; } else { wp_send_json_error(); exit; } } public function actionButtonHandler($links, $plugin) { $url = 'https://tastewp.com/plugins/' . $plugin['slug'] . '/?anchor=wpsite'; $button = ['<a class="button" style="color:#2d9418;border-color:#2d9418;text-align:center;width:88px" target="_blank" href="' . $url . '">Try it first</a>']; array_splice($links, 1, 0, $button); return $links; } } } }
| ver. 1.4 |
Github
|
.
| PHP 8.2.29 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка