* @copyright Alex Kovalev 05.06.2018 * @version 1.0 */ /** * Admin warning notices */ function wbcr_inp_admin_conflict_notices_error($notices, $plugin_name) { if( $plugin_name != WINP_Plugin::app()->getPluginName() ) { return $notices; } if( isset($_COOKIE['wbcr-php-snippets-safe-mode']) ) { $disable_safe_mode_url = add_query_arg(array('wbcr-php-snippets-disable-safe-mode' => 1)); $safe_mode_notice = WINP_Plugin::app() ->getPluginTitle() . ': ' . __('Running in safe mode. This mode your snippets will not be started.', 'insert-php'); $safe_mode_notice .= ' Disable Safe Mode'; $notices[] = array( 'id' => 'inp_safe_mode', 'type' => 'success', 'dismissible' => false, 'dismiss_expires' => 0, 'text' => '

' . $safe_mode_notice . '

' ); } $create_notice_url = admin_url('edit.php?post_type=' . WINP_SNIPPETS_POST_TYPE); $upgrade_plugin_notice = '' . WINP_Plugin::app() ->getPluginTitle() . ': ' . __('Attention! This new 2.0 plugin version, we added the ability to insert php code using snippets. This is a more convenient and secure way than using shortcodes [insert_php] code execute [/ insert_php]. However, for compatibility reasons, we left support for [insert_php] shortcodes, but we will depreciate them in the next versions of the plugin.', 'insert-php'); $upgrade_plugin_notice .= '

' . __('We strongly recommend you to transfer your php code to snippets and call them in your posts/pages and widgets using [wbcr_php_snippet id = "000"] shortcodes.', 'insert-php'); //$upgrade_plugin_notice .= '

' . __('If you have updated from version 1.3 of the plugin (Insert php). Please deactivate and activate the plugin to update the settings.', 'insert-php') . ''; $upgrade_plugin_notice .= '

' . __('Create new php snippet', 'insert-php') . ' '; $upgrade_plugin_notice .= '' . __('Download old version', 'insert-php') . '

'; $upgrade_plugin_notice .= sprintf(__('If you have issues with the plugin new version or any suggestions, please contact us on our forum.', 'insert-php'), 'https://wordpress.org/support/plugin/insert-php'); $upgrade_plugin_notice .= '
' . sprintf(__('We tried to make the plugin better and more convenient. If you like the new version, feel free to leave your feedback. It will give us motivation for further improvements.', 'insert-php'), 'https://wordpress.org/support/plugin/insert-php/reviews/#new-post'); $notices[] = array( 'id' => 'inp_upgrade_plugin', 'type' => 'warning', 'dismissible' => true, 'dismiss_expires' => 0, 'text' => '

' . $upgrade_plugin_notice . '

' ); /** * Show error notification after saving snippet. We can also show this message when the snippet is activated. * We must warn the user that we can not perform the spippet due to an error. */ if( isset($_GET['wbcr_inp_save_snippet_result']) && $_GET['wbcr_inp_save_snippet_result'] == 'code-error' ) { $post_id = isset($_GET['post']) ? intval($_GET['post']) : null; if( $post_id && $error = WINP_Plugin::app()->getSnippetError($post_id) ) { $error_message = sprintf('

%s

%s

', sprintf(__('The snippet has been deactivated due to an error on line %d:', 'insert-php'), $error['line']), $error['message']); $notices[] = array( 'id' => 'inp_result_error', 'where' => array('post', 'post-new', 'edit'), 'type' => 'error', 'dismissible' => false, 'dismiss_expires' => 0, 'text' => $error_message ); } } return $notices; } add_filter('wbcr_factory_admin_notices', 'wbcr_inp_admin_conflict_notices_error', 10, 2); function wbcr_inp_admin_init() { $plugin = WINP_Plugin::app(); // Disable safe mode if( isset($_COOKIE['wbcr-php-snippets-safe-mode']) && isset($_REQUEST['wbcr-php-snippets-disable-safe-mode']) && $plugin->currentUserCan() ) { unset($_COOKIE['wbcr-php-snippets-safe-mode']); setcookie('wbcr-php-snippets-safe-mode', null, -1); wp_safe_redirect(remove_query_arg(array('wbcr-php-snippets-disable-safe-mode'))); exit; } // Register metaboxes require_once(WINP_PLUGIN_DIR . '/admin/metaboxes/base-options.php'); Wbcr_FactoryMetaboxes403::registerFor(new WINP_BaseOptionsMetaBox($plugin), WINP_SNIPPETS_POST_TYPE, $plugin); require_once(WINP_PLUGIN_DIR . '/admin/metaboxes/info.php'); Wbcr_FactoryMetaboxes403::registerFor(new WINP_InfoMetaBox($plugin), WINP_SNIPPETS_POST_TYPE, $plugin); // Upgrade up to new version if( !$plugin->getOption('upgrade_up_to_201', false) ) { $role = get_role('administrator'); if( !$role ) { return; } $role->add_cap('edit_' . WINP_SNIPPETS_POST_TYPE); $role->add_cap('read_' . WINP_SNIPPETS_POST_TYPE); $role->add_cap('delete_' . WINP_SNIPPETS_POST_TYPE); $role->add_cap('edit_' . WINP_SNIPPETS_POST_TYPE . 's'); $role->add_cap('edit_others_' . WINP_SNIPPETS_POST_TYPE . 's'); $role->add_cap('publish_' . WINP_SNIPPETS_POST_TYPE . 's'); $role->add_cap('read_private_' . WINP_SNIPPETS_POST_TYPE . 's'); $plugin->updateOption('upgrade_up_to_201', 1); } } add_action('admin_init', 'wbcr_inp_admin_init'); // --- // Editor // /** * Asset scripts for the tinymce editor * * @param string $hook */ function wbcr_inp_enqueue_tinymce_assets($hook) { $pages = array( 'post.php', 'post-new.php', 'widgets.php' ); if( !in_array($hook, $pages) || !current_user_can('manage_options') ) { return; } wp_enqueue_script('wbcr-inp-tinymce-button-widget', WINP_PLUGIN_URL . '/admin/assets/js/tinymce4.4.js', array('jquery'), WINP_Plugin::app() ->getPluginVersion(), true); } add_action('admin_enqueue_scripts', 'wbcr_inp_enqueue_tinymce_assets'); /** * Adds js variable required for shortcodes. * * @see before_wp_tiny_mce * @since 1.1.0 */ function wbcr_inp_tinymce_data($hook) { if( !current_user_can('manage_options') ) { return; } // styles for the plugin shorcodes $shortcode_icon = WINP_PLUGIN_URL . '/admin/assets/img/shortcode-icon.png'; $shortcode_title = __('PHP snippets', 'insert-php'); $snippets = get_posts(array( 'post_type' => WINP_SNIPPETS_POST_TYPE, 'meta_key' => WINP_Plugin::app()->getPrefix() . 'snippet_scope', 'meta_value' => 'shortcode', 'post_status' => 'publish', 'numberposts' => -1 )); $result = array(); foreach((array)$snippets as $snippet) { $result[] = array( 'id' => $snippet->ID, 'title' => empty($snippet->post_title) ? '(no titled, ID=' . $snippet->ID . ')' : $snippet->post_title ); } $shortcode_snippets_json = json_encode($result); ?>