/** * Parse a member's profile photo * * @access public * @param mixed Either array of member data, or member ID to self load * @return array Member's photo details */ public static function buildProfilePhoto($member) { //----------------------------------------- // Load the member? //----------------------------------------- if (!is_array($member) and $member == intval($member) and $member > 0) { $member = self::load($member, 'extendedProfile'); } else { if ($member == 0) { $member = array(); } } //----------------------------------------- // Facebook Sync //----------------------------------------- if (IPSLib::fbc_enabled() === TRUE) { if ($member['fb_uid'] and $member['fb_bwoptions']) { $_sync = time() - 86400; $_active = time() - 86400 * 90; /* We have a linked member and options, so check if they haven't sync'd in 24 hours and have been active in the past 90 days... */ if ($member['fb_lastsync'] < $_sync and $member['last_visit'] > $_active) { require_once IPS_ROOT_PATH . 'sources/classes/facebook/connect.php'; $facebook = new facebook_connect(ipsRegistry::instance()); try { $member = $facebook->syncMember($member); } catch (Exception $error) { $msg = $error->getMessage(); switch ($msg) { case 'NOT_LINKED': case 'NO_MEMBER': break; } } } } } //----------------------------------------- // Facebook? //----------------------------------------- if ($member['fb_photo'] and ipsRegistry::member()->getProperty('g_mem_info')) { $member['_has_photo'] = 1; /* Main... */ $member['pp_main_photo'] = $member['fb_photo']; $member['pp_main_width'] = '*'; $member['pp_main_height'] = '*'; /* Thumb */ $member['pp_thumb_photo'] = $member['fb_photo_thumb']; $member['pp_thumb_width'] = 50; $member['pp_thumb_height'] = 50; /* Mini */ $member['pp_mini_photo'] = $member['fb_photo_thumb']; $member['pp_mini_width'] = 25; $member['pp_mini_height'] = 25; } else { //----------------------------------------- // Main photo //----------------------------------------- if (!$member['pp_main_photo'] or !ipsRegistry::member()->getProperty('g_mem_info')) { $member['pp_main_photo'] = ipsRegistry::$settings['img_url'] . '/profile/default_large.png'; $member['pp_main_width'] = 150; $member['pp_main_height'] = 150; $member['_has_photo'] = 0; } else { $member['pp_main_photo'] = ipsRegistry::$settings['upload_url'] . '/' . $member['pp_main_photo']; $member['_has_photo'] = 1; } //----------------------------------------- // Thumbie //----------------------------------------- if (!$member['pp_thumb_photo'] or $member['pp_thumb_photo'] == 'profile/') { if ($member['_has_photo']) { $member['pp_thumb_photo'] = $member['pp_main_photo']; } else { $member['pp_thumb_photo'] = ipsRegistry::$settings['img_url'] . '/profile/default_thumb.png'; } $member['pp_thumb_width'] = 50; $member['pp_thumb_height'] = 50; } else { if ($member['_has_photo']) { $member['pp_thumb_photo'] = ipsRegistry::$settings['upload_url'] . '/' . $member['pp_thumb_photo']; } else { $member['pp_thumb_photo'] = ipsRegistry::$settings['img_url'] . '/profile/default_thumb.png'; } } //----------------------------------------- // Mini //----------------------------------------- $_data = IPSLib::scaleImage(array('max_height' => 25, 'max_width' => 25, 'cur_width' => $member['pp_thumb_width'], 'cur_height' => $member['pp_thumb_height'])); $member['pp_mini_photo'] = $member['pp_thumb_photo']; $member['pp_mini_width'] = $_data['img_width']; $member['pp_mini_height'] = $_data['img_height']; } return $member; }
/** * UserCP Save Form: Ignore Users * * @access public * @return array Errors */ public function saveFacebook() { if (!IPSLib::fbc_enabled()) { $this->registry->getClass('output')->showError('fbc_disabled', 1005); } //----------------------------------------- // Data //----------------------------------------- $toSave = IPSBWOptions::thaw($this->memberData['members_bitoptions'], 'members'); //----------------------------------------- // Loop and save... simple //----------------------------------------- foreach (array('fbc_s_pic', 'fbc_s_avatar', 'fbc_s_status', 'fbc_s_aboutme') as $field) { $toSave[$field] = intval($this->request[$field]); } IPSMember::save($this->memberData['member_id'], array('extendedProfile' => array('fb_bwoptions' => IPSBWOptions::freeze($toSave, 'facebook')))); //----------------------------------------- // Now sync //----------------------------------------- require_once IPS_ROOT_PATH . 'sources/classes/facebook/connect.php'; $facebook = new facebook_connect($this->registry); try { $facebook->syncMember($this->memberData); } catch (Exception $error) { $msg = $error->getMessage(); switch ($msg) { case 'NOT_LINKED': case 'NO_MEMBER': break; } } return TRUE; }