notices.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. /**
  3. * Notices page to house all of the admin notices for Core
  4. *
  5. * Can be simply used be adding another line into the nf_admin_notices() function
  6. *
  7. * The class NF_Notices in notices-class.php can be extended to create more advanced notices to include triggered events
  8. *
  9. * @since 2.9
  10. */
  11. function nf_admin_notices( $notices ) {
  12. if( ! ninja_forms_three_addons_check() || ( ninja_forms_three_addons_version_check() && ninja_forms_three_addons_check() ) ){
  13. /*
  14. * Upgrade Now
  15. */
  16. $upgrade_link = admin_url( 'admin.php?page=ninja-forms-three' );
  17. $notice = array(
  18. 'title' => __( 'Upgrade to Ninja Forms THREE', 'ninja-forms' ),
  19. 'link' => '',
  20. 'int' => 0,
  21. 'blacklist' => array( 'ninja-forms', 'ninja-forms-three' ),
  22. );
  23. if ( ! get_option( 'ninja_forms_has_invalid_addons' ) ) {
  24. $notice[ 'msg' ] = sprintf( __( 'You are eligible to upgrade to Ninja Forms THREE! %sUpgrade Now%s', 'ninja-forms' ), '<a target="_blank" href="' . $upgrade_link . '">', '</a>' );
  25. } else {
  26. if ( ! function_exists( 'get_plugins' ) ) {
  27. // Require the core file.
  28. require_once ABSPATH . 'wp-admin/includes/plugin.php';
  29. }
  30. // Get a list of plugins.
  31. $plugins = get_plugins();
  32. $not_ours = array();
  33. // For each plugin...
  34. foreach( $plugins as $plugin => $data ){
  35. // If this isn't Ninja Forms Core...
  36. // AND If it includes a ninja-forms prefix...
  37. if ( 'ninja-forms/ninja-forms.php' != $plugin && 0 === strncmp( $plugin, 'ninja-forms-', 12 ) ){
  38. // Get the plugin slug.
  39. $slug = explode( '/', $plugin );
  40. // If the plugin is not active...
  41. // Exit early.
  42. if ( ! is_plugin_active( $plugin ) ) continue;
  43. // If the plugin is not in our list...
  44. if ( ! ninja_forms_valid_slug( $slug[ 0 ] ) ) {
  45. // Add it onto our array of data
  46. $not_ours[ $plugin ] = $data;
  47. }
  48. }
  49. }
  50. $display = sprintf( __( 'You are eligible to upgrade to Ninja Forms THREE! However, the following plugins are not compatible with Ninja Forms THREE and could lead to issues with the upgrade process.%sPlease deactivate and remove the following before attempting to upgrade:%s', 'ninja-forms' ), '<br />', '<br />' );
  51. foreach( $not_ours as $plugin ) {
  52. $display .= __( $plugin[ 'Name' ], $plugin[ 'TextDomain' ] ) . ', ';
  53. }
  54. $display = substr( $display, 0, strlen( $display ) - 2 );
  55. $notice[ 'msg' ] = $display;
  56. $notice[ 'blacklist' ] = array( 'ninja-forms-three' );
  57. }
  58. $notices['three_upgrade'] = $notice;
  59. } else {
  60. /*
  61. * THREE is Coming!
  62. */
  63. $three_info = add_query_arg( array( 'nf_admin_notice_ignore' => 'three_info' ) );
  64. $three_link = nf_aff_link( 'https://ninjaforms.com/three/?utm_medium=plugin&utm_source=admin-notice&utm_campaign=Ninja+Forms+THREE&utm_content=Learn+More' );
  65. $notices['three_info'] = array(
  66. 'title' => __( 'THREE is coming!', 'ninja-forms' ),
  67. 'msg' => sprintf( __( 'A major update is coming to Ninja Forms. %sLearn more about new features, backwards compatibility, and more Frequently Asked Questions.%s', 'ninja-forms' ), '<a target="_blank" href="' . $three_link . '">', '</a>' ),
  68. 'link' => '',
  69. 'int' => 0,
  70. 'blacklist' => array( 'ninja-forms', 'ninja-forms-three' ),
  71. );
  72. }
  73. $one_week_support = add_query_arg( array( 'nf_admin_notice_ignore' => 'one_week_support' ) );
  74. $support_link = nf_aff_link( 'https://ninjaforms.com/contact/?utm_medium=plugin&utm_source=admin-notice&utm_campaign=Ninja+Forms+Upsell&utm_content=Ninja+Forms+Support' );
  75. $support_docs_link = nf_aff_link( 'http://docs.ninjaforms.com/?utm_medium=plugin&utm_source=admin-notice&utm_campaign=Ninja+Forms+Upsell&utm_content=Ninja+Forms+Docs' );
  76. $notices['one_week_support'] = array(
  77. 'title' => __( 'How\'s It Going?', 'ninja-forms' ),
  78. 'msg' => __( 'Thank you for using Ninja Forms! We hope that you\'ve found everything you need, but if you have any questions:', 'ninja-forms' ),
  79. 'link' => '<li><span class="dashicons dashicons-media-text"></span><a target="_blank" href="' . $support_docs_link . '">' . __( 'Check out our documentation', 'ninja-forms' ) . '</a></li>
  80. <li><span class="dashicons dashicons-sos"></span><a target="_blank" href="' . $support_link . '">' . __( 'Get Some Help' ,'ninja-forms' ) . '</a></li>
  81. <li><span class="dashicons dashicons-dismiss"></span><a href="' . $one_week_support . '">' . __( 'Dismiss' ,'ninja-forms' ) . '</a></li>',
  82. 'int' => 7,
  83. 'blacklist' => array( 'ninja-forms-three' ),
  84. );
  85. // $two_week_review_ignore = add_query_arg( array( 'nf_admin_notice_ignore' => 'two_week_review' ) );
  86. // $two_week_review_temp = add_query_arg( array( 'nf_admin_notice_temp_ignore' => 'two_week_review', 'int' => 14 ) );
  87. // $notices['two_week_review'] = array(
  88. // 'title' => __( 'Leave A Review?', 'ninja-forms' ),
  89. // 'msg' => __( 'We hope you\'ve enjoyed using Ninja Forms! Would you consider leaving us a review on WordPress.org?', 'ninja-forms' ),
  90. // 'link' => '<li> <span class="dashicons dashicons-smiley"></span><a href="' . $two_week_review_ignore . '"> ' . __( 'I\'ve already left a review', 'ninja-forms' ) . '</a></li>
  91. // <li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $two_week_review_temp . '">' . __( 'Maybe Later' ,'ninja-forms' ) . '</a></li>
  92. // <li><span class="dashicons dashicons-external"></span><a href="http://wordpress.org/support/view/plugin-reviews/ninja-forms?filter=5" target="_blank">' . __( 'Sure! I\'d love to!', 'ninja-forms' ) . '</a></li>',
  93. // 'int' => 14
  94. // );
  95. return $notices;
  96. }
  97. // This function is used to hold all of the basic notices
  98. // Date format accepts most formats but can get confused so preferred methods are m/d/Y or d-m-Y
  99. add_filter( 'nf_admin_notices', 'nf_admin_notices' );
  100. // Require any files that contain class extensions for NF_Notices
  101. require_once( NF_PLUGIN_DIR . 'classes/notices-multipart.php' );
  102. // Require any files that contain class extensions for NF_Notices
  103. require_once( NF_PLUGIN_DIR . 'classes/notices-save-progress.php' );