views
4 days ago
Dashboard.php
5 months ago
EditProfile.php
6 months ago
Login.php
5 months ago
PublicProfile.php
6 months ago
Register.php
5 months ago
User.php
2 months ago
UserController.php
4 months ago
PublicProfile.php
109 lines
| 1 | <?php |
| 2 | namespace WPDM\User; |
| 3 | |
| 4 | |
| 5 | use WPDM\__\__; |
| 6 | use WPDM\__\Crypt; |
| 7 | use WPDM\__\Messages; |
| 8 | |
| 9 | class PublicProfile |
| 10 | { |
| 11 | |
| 12 | public $profile_menu; |
| 13 | public $user; |
| 14 | |
| 15 | private static $instance; |
| 16 | |
| 17 | public static function getInstance() |
| 18 | { |
| 19 | if (self::$instance === null) { |
| 20 | self::$instance = new self; |
| 21 | } |
| 22 | return self::$instance; |
| 23 | } |
| 24 | |
| 25 | function __construct(){ |
| 26 | add_action("init", array($this, 'profileMenuInit')); |
| 27 | add_action("wp_ajax_wpdm_get_profile_menu_content", array($this, 'menuContent')); |
| 28 | add_action("wp_ajax_nopriv_wpdm_get_profile_menu_content", array($this, 'menuContent')); |
| 29 | add_shortcode("wpdm_user_profile", array($this, 'profile')); |
| 30 | } |
| 31 | |
| 32 | function profileMenuInit(){ |
| 33 | $this->profile_menu['downloads'] = array('icon' => 'fas fa-arrow-alt-circle-down', 'name'=> __( "Downloads" , "download-manager" ), 'content' => array($this, 'downloads')); |
| 34 | $this->profile_menu['favourites'] = array('icon' => 'fas fa-heart', 'name'=> __( "Favourites" , "download-manager" ), 'content' => array($this, 'favourites')); |
| 35 | $this->profile_menu = apply_filters("wpdm_user_profile_menu", $this->profile_menu); |
| 36 | } |
| 37 | |
| 38 | function menuContent(){ |
| 39 | call_user_func($this->profile_menu[wpdm_query_var('__pmenu')]['content']); |
| 40 | die(); |
| 41 | } |
| 42 | |
| 43 | function profile($params = array()){ |
| 44 | global $wp_query; |
| 45 | |
| 46 | if(!isset($params) || !is_array($params)) $params = array(); |
| 47 | |
| 48 | //if(is_admin()) return ""; |
| 49 | |
| 50 | ob_start(); |
| 51 | |
| 52 | $username = urldecode(get_query_var('profile')); |
| 53 | if(is_author()) |
| 54 | $username = get_query_var('author_name'); |
| 55 | if($username) |
| 56 | $user = get_user_by('slug', $username); |
| 57 | else |
| 58 | $user = wp_get_current_user(); |
| 59 | |
| 60 | $cols = isset($params['cols'])?$params['cols']:3; |
| 61 | $items_per_page = isset($params['items_per_page'])?$params['items_per_page']:$cols*3; |
| 62 | $cols = 12/$cols; |
| 63 | $template = isset($params['template'])?$params['template']:'link-template-panel.php'; |
| 64 | $header = __::valueof($params, 'header', ['default' => 'default']); |
| 65 | $headers = ['default' => 'default.php', 'facebook' => 'facebook.php']; |
| 66 | $header = isset($headers[$header]) ? $headers[$header] : 'default.php'; |
| 67 | |
| 68 | $user_ID = $user->ID; |
| 69 | $store = get_user_meta($user_ID, '__wpdm_public_profile', true); |
| 70 | if(!is_array($store)) $store = array(); |
| 71 | $store['logo'] = isset($store['logo'])?$store['logo']:get_avatar_url($user_ID); |
| 72 | $store['title'] = isset($store['title']) && $store['title'] != '' ? $store['title'] : $user->display_name; |
| 73 | $store['intro'] = isset($store['intro']) && $store['intro'] != '' ? $store['intro'] : ''; |
| 74 | $store['description'] = isset($store['description']) && $store['description'] != '' ? $store['description'] : ''; |
| 75 | $store['banner'] = isset($store['banner']) && $store['banner'] != '' ? $store['banner'] : ''; |
| 76 | $store['bgcolor'] = isset($store['bgcolor']) && $store['bgcolor'] != '' ? $store['bgcolor'] : '#eeeeee'; |
| 77 | $store['txtcolor'] = isset($store['txtcolor']) && $store['txtcolor'] != '' ? $store['txtcolor'] : '#333333'; |
| 78 | $mydownloads = count_user_posts($user->ID, 'wpdmpro'); |
| 79 | $rgb = wpdm_hex2rgb($store['bgcolor']); |
| 80 | $first_menu = array_keys($this->profile_menu); |
| 81 | $first_menu = $first_menu[0]; |
| 82 | include WPDM()->template->locate('public-profile.php', __DIR__.'/views'); |
| 83 | return ob_get_clean(); |
| 84 | } |
| 85 | |
| 86 | |
| 87 | function downloads(){ |
| 88 | $params = Crypt::decrypt(wpdm_query_var('__scp'), true); |
| 89 | $params['author'] = wpdm_query_var('__pu', 'int'); |
| 90 | $params['async'] = 1; |
| 91 | echo WPDM()->package->shortCodes->packages($params); |
| 92 | } |
| 93 | |
| 94 | function favourites(){ |
| 95 | $params = Crypt::decrypt(wpdm_query_var('__scp'), true); |
| 96 | $myfavs = maybe_unserialize(get_user_meta(wpdm_query_var('__pu', 'int'), '__wpdm_favs', true)); |
| 97 | if(!is_array($myfavs) || count($myfavs) === 0) { |
| 98 | Messages::info("Do not have any favourite item yet!"); |
| 99 | die(); |
| 100 | } |
| 101 | $params['post__in'] = implode(",", $myfavs); |
| 102 | echo WPDM()->package->shortCodes->packages($params); |
| 103 | |
| 104 | } |
| 105 | |
| 106 | |
| 107 | } |
| 108 | |
| 109 |