fooplugins /
foogallery
This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
| 1 | <?php |
||
| 2 | /* |
||
| 3 | * FooGallery Admin Notices class |
||
| 4 | */ |
||
| 5 | |||
| 6 | if ( ! class_exists( 'FooGallery_Admin_Notices' ) ) { |
||
| 7 | |||
| 8 | class FooGallery_Admin_Notices { |
||
|
0 ignored issues
–
show
|
|||
| 9 | |||
| 10 | public function __construct() { |
||
| 11 | add_action( 'admin_notices', array( $this, 'display_thumb_test_notice') ); |
||
| 12 | add_action( 'admin_notices', array( $this, 'display_rating_notice') ); |
||
| 13 | add_action( 'foogallery_thumbnail_generation_test', array( $this, 'save_test_results') ); |
||
| 14 | |||
| 15 | add_action( 'wp_ajax_foogallery_admin_rating_notice_dismiss', array( $this, 'admin_rating_notice_dismiss' ) ); |
||
| 16 | } |
||
| 17 | |||
| 18 | function should_run_tests() { |
||
|
0 ignored issues
–
show
|
|||
| 19 | $option = get_option( FOOGALLERY_OPTION_THUMB_TEST ); |
||
| 20 | $option_value = $this->generate_option_value(); |
||
| 21 | |||
| 22 | if ( !isset( $option ) ) { |
||
| 23 | //we have never run tests before |
||
| 24 | return true; |
||
| 25 | } else { |
||
| 26 | $option_key = $option['key']; |
||
| 27 | if ( $option_value !== $option_key ) { |
||
| 28 | //either the PHP version or Host has changed. In either case, we should run tests again! |
||
| 29 | return true; |
||
| 30 | } |
||
| 31 | } |
||
| 32 | |||
| 33 | return false; |
||
| 34 | } |
||
| 35 | |||
| 36 | function should_show_alert() { |
||
|
0 ignored issues
–
show
|
|||
| 37 | $option = get_option( FOOGALLERY_OPTION_THUMB_TEST ); |
||
| 38 | |||
| 39 | if ( isset( $option ) && array_key_exists( 'results', $option ) ) { |
||
| 40 | $results = $option['results']; |
||
| 41 | //should show the alert if the tests were not a success |
||
| 42 | return !$results['success']; |
||
| 43 | } |
||
| 44 | |||
| 45 | return false; |
||
| 46 | } |
||
| 47 | |||
| 48 | function generate_option_value() { |
||
|
0 ignored issues
–
show
|
|||
| 49 | $php_version = phpversion(); |
||
| 50 | $host = home_url(); |
||
| 51 | return "php$($php_version}-{$host}"; |
||
| 52 | } |
||
| 53 | |||
| 54 | function save_test_results($results) { |
||
|
0 ignored issues
–
show
|
|||
| 55 | update_option( FOOGALLERY_OPTION_THUMB_TEST, array ( |
||
| 56 | 'key' => $this->generate_option_value(), |
||
| 57 | 'results' => $results |
||
| 58 | )); |
||
| 59 | } |
||
| 60 | |||
| 61 | /** |
||
| 62 | * Dismiss the admin rating notice forever |
||
| 63 | */ |
||
| 64 | function admin_rating_notice_dismiss() { |
||
|
0 ignored issues
–
show
|
|||
| 65 | if ( check_admin_referer( 'foogallery_admin_rating_notice_dismiss' ) ) { |
||
| 66 | update_option( 'foogallery_admin_rating_notice_dismiss', 'hide' ); |
||
| 67 | } |
||
| 68 | } |
||
| 69 | |||
| 70 | function should_show_rating_message() { |
||
|
0 ignored issues
–
show
|
|||
| 71 | //first try to get the saved option |
||
| 72 | $show_message = get_option( 'foogallery_admin_rating_notice_dismiss', 0 ); |
||
| 73 | |||
| 74 | if ( 'hide' === $show_message ) { |
||
| 75 | return false; //never show - user has dismissed |
||
| 76 | } |
||
| 77 | |||
| 78 | if ( 'show' === $show_message ) { |
||
| 79 | return true; //always show - user has created 5 or more galleries |
||
| 80 | } |
||
| 81 | |||
| 82 | |||
| 83 | //we must show the message - get out early |
||
| 84 | if ( 0 === $show_message ) { |
||
| 85 | $gallery_count = count( get_posts( array( |
||
| 86 | 'post_type' => FOOGALLERY_CPT_GALLERY, |
||
| 87 | 'post_status' => array( 'publish', 'draft' ), |
||
| 88 | 'cache_results' => false, |
||
| 89 | 'nopaging' => true, |
||
| 90 | ) ) ); |
||
| 91 | |||
| 92 | if ( $gallery_count >= 5 ) { |
||
| 93 | update_option( 'foogallery_admin_rating_notice_dismiss', 'show' ); |
||
| 94 | } |
||
| 95 | } |
||
| 96 | } |
||
| 97 | |||
| 98 | function display_rating_notice() { |
||
|
0 ignored issues
–
show
|
|||
| 99 | if ( $this->should_show_rating_message() ) { |
||
| 100 | |||
| 101 | $url = 'https://fooplugins.link/please-rate-foogallery'; |
||
| 102 | ?> |
||
| 103 | <script type="text/javascript"> |
||
| 104 | (function ($) { |
||
| 105 | $(document).ready(function () { |
||
| 106 | $('.foogallery-rating-notice.is-dismissible') |
||
| 107 | .on('click', '.notice-dismiss', function (e) { |
||
| 108 | e.preventDefault(); |
||
| 109 | $.post(ajaxurl, { |
||
| 110 | action : 'foogallery_admin_rating_notice_dismiss', |
||
| 111 | url : '<?php echo admin_url( 'admin-ajax.php' ); ?>', |
||
| 112 | _wpnonce: '<?php echo wp_create_nonce( 'foogallery_admin_rating_notice_dismiss' ); ?>' |
||
| 113 | }); |
||
| 114 | }); |
||
| 115 | }); |
||
| 116 | })(jQuery); |
||
| 117 | </script> |
||
| 118 | <style> |
||
| 119 | .foogallery-rating-notice { |
||
| 120 | border-left-color: #ff69b4; |
||
| 121 | } |
||
| 122 | |||
| 123 | .foogallery-rating-notice .dashicons-heart { |
||
| 124 | color: #ff69b4; |
||
| 125 | } |
||
| 126 | </style> |
||
| 127 | <div class="foogallery-rating-notice notice notice-success is-dismissible"> |
||
| 128 | <p> |
||
| 129 | <strong><?php _e('Thanks for using FooGallery') ?> <span class="dashicons dashicons-heart"></span></strong><br /> |
||
| 130 | <?php _e('We noticed you have created 5 galleries in FooGallery. If you love FooGallery, please consider giving it a 5 star rating on WordPress.org. Your positive ratings help spread the word and help us grow.', 'foogallery'); ?><br /> |
||
| 131 | <br/> |
||
| 132 | <a class="button button-primary button-large" target="_blank" href="<?php echo $url; ?>"><?php _e( 'Rate FooGallery on WordPress.org', 'foogallery' ); ?></a> |
||
| 133 | </p> |
||
| 134 | </div> |
||
| 135 | <?php |
||
| 136 | } |
||
| 137 | } |
||
| 138 | |||
| 139 | function display_thumb_test_notice() { |
||
|
0 ignored issues
–
show
|
|||
| 140 | //check if we are on specific admin pages |
||
| 141 | if ( FOOGALLERY_CPT_GALLERY === foo_current_screen_post_type() ) { |
||
| 142 | |||
| 143 | if ($this->should_run_tests()) { |
||
| 144 | $thumbs = new FooGallery_Thumbnails(); |
||
| 145 | $thumbs->run_thumbnail_generation_tests(); |
||
| 146 | } |
||
| 147 | |||
| 148 | if ($this->should_show_alert()) { |
||
| 149 | ?> |
||
| 150 | <div class="notice error"> |
||
| 151 | <p> |
||
| 152 | <strong><?php _e('Thumbnail Generation Alert!', 'foogallery'); ?></strong><br/> |
||
| 153 | <?php _e('There is a problem generating thumbnails for your gallery. Please check that your hosting provider has the GD Image Library extension installed and enabled.' , 'foogallery'); ?><br /> |
||
| 154 | <?php _e('If thumbnails cannot be generated, then full-sized, uncropped images will be used instead. This will result in slow page load times, and thumbnails that do not look correct.', 'foogallery'); ?> |
||
| 155 | <br/> |
||
| 156 | </p> |
||
| 157 | </div> |
||
| 158 | <?php |
||
| 159 | } |
||
| 160 | } |
||
| 161 | } |
||
| 162 | } |
||
| 163 | |||
| 164 | } |
You can fix this by adding a namespace to your class:
When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.