PluginProbe ʕ •ᴥ•ʔ
Download Manager / trunk
Download Manager vtrunk
3.3.62 3.3.61 3.3.60 3.3.59 3.3.58 3.3.57 3.3.56 trunk 2.1.3 2.3.0 2.5.96 2.5.97 2.6.2 2.6.96 2.8.3 2.9.99 3.0.4 3.1.05 3.1.07 3.1.08 3.1.11 3.1.12 3.1.14 3.1.17 3.1.18 3.1.22 3.1.23 3.1.24 3.1.25 3.1.26 3.1.27 3.1.28 3.2.04 3.2.13 3.2.14 3.2.16 3.2.18 3.2.19 3.2.21 3.2.22 3.2.23 3.2.24 3.2.25 3.2.27 3.2.28 3.2.29 3.2.30 3.2.31 3.2.32 3.2.33 3.2.34 3.2.35 3.2.37 3.2.38 3.2.39 3.2.40 3.2.41 3.2.42 3.2.43 3.2.44 3.2.45 3.2.46 3.2.47 3.2.48 3.2.49 3.2.50 3.2.51 3.2.52 3.2.53 3.2.54 3.2.55 3.2.56 3.2.57 3.2.58 3.2.59 3.2.60 3.2.61 3.2.63 3.2.64 3.2.65 3.2.66 3.2.67 3.2.68 3.2.69 3.2.70 3.2.71 3.2.72 3.2.73 3.2.74 3.2.75 3.2.76 3.2.77 3.2.78 3.2.79 3.2.80 3.2.81 3.2.82 3.2.83 3.2.84 3.2.85 3.2.86 3.2.87 3.2.88 3.2.89 3.2.90 3.2.91 3.2.92 3.2.93 3.2.94 3.2.95 3.2.96 3.2.97 3.2.98 3.2.99 3.3.00 3.3.01 3.3.02 3.3.03 3.3.04 3.3.05 3.3.06 3.3.07 3.3.08 3.3.09 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.15 3.3.16 3.3.17 3.3.18 3.3.19 3.3.20 3.3.21 3.3.22 3.3.23 3.3.24 3.3.25 3.3.26 3.3.27 3.3.28 3.3.29 3.3.30 3.3.31 3.3.32 3.3.33 3.3.34 3.3.35 3.3.36 3.3.37 3.3.38 3.3.39 3.3.40 3.3.41 3.3.42 3.3.43 3.3.44 3.3.45 3.3.46 3.3.47 3.3.48 3.3.49 3.3.50 3.3.51 3.3.52 3.3.53 3.3.54 3.3.55
download-manager / src / __ / DownloadStats.php
download-manager / src / __ Last commit date
HTML 1 year ago views 5 months ago Apply.php 6 months ago Cron.php 1 year ago CronJob.php 7 months ago CronJobs.php 2 months ago Crypt.php 1 month ago DownloadStats.php 5 months ago Email.php 5 days ago EmailCron.php 1 year ago FileSystem.php 1 year ago Installer.php 14 hours ago Messages.php 1 year ago Query.php 4 months ago Session.php 14 hours ago Settings.php 4 years ago SimpleMath.php 4 years ago TempStorage.php 14 hours ago Template.php 5 months ago UI.php 6 months ago Updater.php 4 years ago UserAgent.php 2 years ago __.php 1 month ago __MailUI.php 3 years ago
DownloadStats.php
167 lines
1 <?php
2 /**
3 * Class DownloadStats
4 */
5
6 namespace WPDM\__;
7
8 global $userDownloadCount;
9 $userDownloadCount = [];
10
11 class DownloadStats
12 {
13
14 private $dbTable;
15
16
17 function __construct()
18 {
19 global $wpdb;
20 $this->dbTable = "{$wpdb->prefix}ahm_download_stats";
21 }
22
23 /**
24 * @param $pid
25 * @param $filename
26 * @param $oid
27 */
28 function add($pid, $filename, $oid = null){
29
30 if(defined("WPDM_DISABLE_STATS") && WPDM_DISABLE_STATS === true) return;
31
32 global $wpdb;
33
34 $current_user = wp_get_current_user();
35
36 //Handle downloads from email lock
37 if(wpdm_query_var('subscriber' )){
38 $subscriber = Crypt::decrypt(wpdm_query_var('subscriber' ));
39 $wpdb->update("{$wpdb->prefix}ahm_emails", ['request_status' => 1], ['id' => $subscriber]);
40 }
41
42 $uid = get_current_user_id();
43 $ip = (get_option('__wpdm_noip') == 0) ? wpdm_get_client_ip() : "";
44 $agent = sanitize_text_field($_SERVER['HTTP_USER_AGENT']);
45 $hash = "uniq_".md5($pid.$uid.date("Y-m-d-h-i").wpdm_get_client_ip());
46 if((int)Session::get($hash) === 1 || wpdm_query_var('nostat', ['validate' => 'int']) === 1) return;
47 Session::set($hash, 1);
48 $version = get_post_meta($pid, '__wpdm_version', true);
49 $wpdb->insert("{$this->dbTable}", array('pid' => (int)$pid, 'uid' => (int)$uid, 'oid' => $oid, 'year' => date("Y"), 'month' => date("m"), 'day' => date("d"), 'timestamp' => time(), 'ip' => "$ip", 'filename' => $filename, 'agent' => $agent, 'version' => $version));
50 update_post_meta($pid, '__wpdm_download_count', (int)get_post_meta($pid, '__wpdm_download_count', true) + 1);
51
52 $this->updateUserDownloadCount($pid, $uid, $filename);
53
54 if (is_user_logged_in()) {
55 $index = $current_user->ID;
56 } else {
57 $index = str_replace(".", "_", $ip);
58 if ($index == '') $index = uniqid();
59 }
60
61 if ($ip == '') $ip = $index;
62 Session::set('downloaded_' . $pid, $ip);
63 }
64
65 /**
66 * Get user download count for the given package
67 * @param $packageID
68 * @param null $userID
69 * @return int|null
70 */
71 function userDownloadCount($packageID, $userID = null)
72 {
73 global $wpdb, $userDownloadCount;
74 $packageID = (int)$packageID;
75
76 if(!$userID) {
77 if(is_user_logged_in())
78 $userID = get_current_user_id();
79 else {
80 $userID = wpdm_get_client_ip();
81 }
82 }
83 $userID = esc_sql($userID);
84
85 $piduid = $packageID."_".$userID;
86
87 if(isset($userDownloadCount[$piduid])) return $userDownloadCount[$piduid];
88 $sql = "select download_count from {$wpdb->prefix}ahm_user_download_counts WHERE user = '{$userID}' and package_id = '{$packageID}'";
89 $download_count = (int)$wpdb->get_var($sql);
90 $userDownloadCount[$piduid] = $download_count;
91 return $download_count;
92 }
93
94 /**
95 * Reset user download count for the given package
96 * @param $packageID
97 * @param null $userID
98 * @return bool|int
99 */
100 function resetUserDownloadCount($packageID, $userID = null)
101 {
102 global $wpdb;
103 $packageID = (int)$packageID;
104 $where['package_id'] = $packageID;
105 if($userID !== 'all') {
106 if (!$userID) {
107 if (is_user_logged_in())
108 $userID = get_current_user_id();
109 else {
110 $userID = wpdm_get_client_ip();
111 }
112 }
113 $userID = esc_sql($userID);
114 $where['user'] = $userID;
115 }
116 return $wpdb->update("{$wpdb->prefix}ahm_user_download_counts", ['donwload_count' => 0], $where);
117 }
118
119 /**
120 * Update user download count for the given package
121 * @param $packageID
122 * @param null $userID
123 */
124 function updateUserDownloadCount($packageID, $userID = null, $file = '')
125 {
126 global $wpdb;
127 $packageID = (int)$packageID;
128
129 if(!$userID) {
130 if(is_user_logged_in())
131 $userID = get_current_user_id();
132 else {
133 $userID = wpdm_get_client_ip();
134 }
135 }
136 $userID = esc_sql($userID);
137 $download_count = (int)$this->userDownloadCount($packageID, $userID);
138 $download_count++;
139 $found = $wpdb->get_var("select count(ID) from {$wpdb->prefix}ahm_user_download_counts where user = '$userID' and package_id = '$packageID'");
140 if(!$found)
141 $wpdb->insert("{$wpdb->prefix}ahm_user_download_counts", ['download_count' => $download_count, 'user' => $userID, 'package_id' => $packageID]);
142 else
143 $wpdb->update("{$wpdb->prefix}ahm_user_download_counts", ['download_count' => $download_count], ['user' => $userID, 'package_id' => $packageID]);
144
145 do_action("wpdm_after_update_download_count", $packageID, $userID, $file);
146 }
147
148
149
150 /**
151 * @deprecated Use <strong>add</strong> method, WPDM()->downloadHistory->add($pid, $filename, $oid = null);
152 * @param $pid
153 * @param $uid
154 * @param $oid
155 * @param string $filename
156 */
157 function newStat($pid, $uid, $oid, $filename = "")
158 {
159 global $wpdb, $current_user;
160 return true;
161
162 //Deprecated
163 }
164
165
166 }
167