C:\xampp\htdocs\landing\wp-content\updraft\plugins-old\updraftplus\includes\updraft-notices.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php

if (!defined('ABSPATH')) die('No direct access allowed');

/**
 * If we ever change the API of the Updraft_Notices class, then we'll need to rename and version it, e.g. Updraft_Notices_1_0, because otherwise a plugin may find that it's loaded an older instance than it wanted from another plugin.
 */
abstract class Updraft_Notices {

    protected 
$notices_content;
    
    
// These variables are just short-hands to be used in advert content.
    
protected $dashboard_top = array('top');

    protected 
$dashboard_top_or_report = array('top''report''report-plain');

    protected 
$dashboard_bottom_or_report = array('bottom''report''report-plain');

    protected 
$anywhere = array('top''bottom''report''report-plain');

    protected 
$autobackup = array('autobackup');

    protected 
$autobackup_bottom_or_report = array('autobackup''bottom''report''report-plain');

    protected function 
populate_notices_content() {
        
// Global adverts that appear in all products will be returned to the child to display
        
return array();
    }
    
    
/**
     * Call this method to setup the notices
     */
    
abstract protected function notices_init();

    protected function 
translation_needed($plugin_base_dir$product_name) {
        
$wplang get_locale();
        if (
strlen($wplang) < || 'en_US' == $wplang || 'en_GB' == $wplang) return false;
        if (
defined('WP_LANG_DIR') && is_file(WP_LANG_DIR.'/plugins/'.$product_name.'-'.$wplang.'.mo')) return false;
        if (
is_file($plugin_base_dir.'/languages/'.$product_name.'-'.$wplang.'.mo')) return false;
        return 
true;
    }
    
    protected function 
url_start($html_allowed$url$https false$website_home null) {
        
$proto = ($https) ? 'https' 'http';
        if (
strpos($url$website_home) !== false) {
            return 
$html_allowed "<a href=".apply_filters(str_replace('.''_'$website_home).'_link'$proto.'://'.$url).">" "";
        } else {
            return 
$html_allowed "<a href=\"$proto://$url\">" "";
        }
    }

    protected function 
url_end($html_allowed$url$https false) {
        
$proto = ($https) ? 'https' 'http';
        return 
$html_allowed '</a>' " ($proto://$url)";
    }

    public function 
do_notice($notice false$position 'top'$return_instead_of_echo false) {

        
$this->notices_init();
    
        if (
false === $notice$notice apply_filters('updraft_notices_force_id'false$this);
        
        
$notice_content $this->get_notice_data($notice$position);
        
        if (
false != $notice_content) {
            return 
$this->render_specified_notice($notice_content$return_instead_of_echo$position);
        }
    }

    
/**
     * This method will return a notice ready for display.
     *
     * @param  boolean $notice   the notice to grab the data
     * @param  string  $position position of notice
     * @return array
     */
    
protected function get_notice_data($notice false$position 'top') {

        
// If a specific notice has been passed to this method then return that notice.
        
if ($notice) {
            if (!isset(
$this->notices_content[$notice])) return false;
        
            
// Does the notice support the position specified?
            
if (isset($this->notices_content[$notice]['supported_positions']) && !in_array($position$this->notices_content[$notice]['supported_positions'])) return false;

            
/*
                First check if the advert passed can be displayed and hasn't been dismissed, we do this by checking what dismissed value we should be checking.
             */
            
$dismiss_time $this->notices_content[$notice]['dismiss_time'];

            
$dismiss $this->check_notice_dismissed($dismiss_time);

            if (
$dismiss) return false;

            
// If the advert has a validity function, then require the advert to be valid
            
if (!empty($this->notices_content[$notice]['validity_function']) && !call_user_func(array($this$this->notices_content[$notice]['validity_function']))) return false;

            return 
$this->notices_content[$notice];
        }

        
// create an array to add non-seasonal adverts to so that if a seasonal advert can't be returned we can choose a random advert from this array.
        
$available_notices = array();

        
// If Advert wasn't passed then next we should check to see if a seasonal advert can be returned.
        
foreach ($this->notices_content as $notice_id => $notice_data) {
            
// Does the notice support the position specified?
            
if (isset($this->notices_content[$notice_id]['supported_positions']) && !in_array($position$this->notices_content[$notice_id]['supported_positions'])) continue;
            
            
// If the advert has a validity function, then require the advert to be valid
            
if (!empty($notice_data['validity_function']) && !call_user_func(array($this$notice_data['validity_function']))) continue;
        
            if (isset(
$notice_data['valid_from']) && isset($notice_data['valid_to'])) {

                if (
$this->skip_seasonal_notices($notice_data)) return $notice_data;

            } else {

                
$dismiss_time $this->notices_content[$notice_id]['dismiss_time'];
                
$dismiss $this->check_notice_dismissed($dismiss_time);
            
                if (!
$dismiss$available_notices[$notice_id] = $notice_data;
            }
        }
        
        if (empty(
$available_notices)) return false;

        
// If a seasonal advert can't be returned then we will return a random advert

        // Here we give a 25% chance for the rate advert to be returned before selecting a random advert from the entire collection which also includes the rate advert
        
if (== rand(03) && isset($available_notices['rate'])) return $available_notices['rate'];

        
/*
            Using shuffle here as something like rand which produces a random number and uses that as the array index fails, this is because in future an advert may not be numbered and could have a string as its key which will then cause errors.
        */
        
        
shuffle($available_notices);
        return 
$available_notices[0];
    }

    protected function 
skip_seasonal_notices($notice_data) {// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
        
return false;
    }

    abstract protected function 
check_notice_dismissed($dismiss_time);
}
x

Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586