protected function injector() { if (!isset($this->_injector)) { if (class_exists('bucket_Container')) { $this->_injector = new \Slipstream\Common\Injector\BucketAdapter(new \bucket_Container()); //$this->_injector->register('\Slipstream\Common\ConfigurationInterface','Slipstream\JsonRest\Configuration'); $this->_injector->register('Slipstream\\Common\\ConfigurationInterface', 'Slipstream\\JsonRest\\Configuration'); $this->_injector->set($this->_configuration, 'Slipstream\\JsonRest\\Configuration'); } } return $this->_injector; }
/** * Notify Event Handler * * @param unknown_type $event * @access public */ function notify($event) { // Make entity $f = owa_coreAPI::entityFactory('base.feed_request'); $f->load($event->get('guid')); if (!$f->wasPersisted()) { // rekey Feed subscription id tracking code // @todo check the wordpress plugin to see if this is even needed if (!$event->get('feed_subscription_id')) { $event->set('feed_subscription_id', $event->get(owa_coreAPI::getSetting('base', 'feed_subscription_param'))); } // needed?? $event->set('feed_reader_guid', $event->setEnvGUID()); // set feedreader flag to true, browser flag to false $event->set('is_feedreader', true); $event->set('is_browser', false); // set params on entity $f->setProperties($event->getProperties()); // Set Primary Key $f->set('id', $event->get('guid')); // Make ua id $f->set('ua_id', owa_lib::setStringGuid($event->get('HTTP_USER_AGENT'))); // Make OS id $f->set('os_id', owa_lib::setStringGuid($event->get('os'))); // Make document id $f->set('document_id', owa_lib::setStringGuid($event->get('page_url'))); // Generate Host id $f->set('host_id', owa_lib::setStringGuid($event->get('host'))); $f->set('subscription_id', $event->get('feed_subscription_id')); // Persist to database $ret = $f->create(); if ($ret) { $eq = owa_coreAPI::getEventDispatch(); $nevent = $eq->makeEvent($event->getEventType() . '_logged'); $nevent->setProperties($event->getProperties()); $eq->notify($nevent); return OWA_EHS_EVENT_HANDLED; } else { return OWA_EHS_EVENT_FAILED; } } else { owa_coreAPI::debug('Not persisting. Feed request already exists.'); return OWA_EHS_EVENT_HANDLED; } }
/** * Notify Event Handler * * @param unknown_type $event * @access public */ function notify($event) { if ($event->get('location_id') || $event->get('ip_address')) { $h = owa_coreAPI::entityFactory('base.location_dim'); // look for location id on the event. This happens when // another event has already created it. if ($event->get('location_id')) { $location_id = $event->get('location_id'); // else look to see if he event has the minimal geo properties // if it does then assume that geo properties are set. } elseif ($event->get('country')) { $key = $event->get('country') . $event->get('city'); $location_id = $h->generateId($key); // load the geo properties from the geo service. } else { $location = owa_coreAPI::getGeolocationFromIpAddress($event->get('ip_address')); owa_coreAPI::debug('geolocation: ' . print_r($location, true)); //set properties of the session $event->set('country', $location->getCountry()); $event->set('city', $location->getCity()); $event->set('latitude', $location->getLatitude()); $event->set('longitude', $location->getLongitude()); $event->set('country_code', $location->getCountryCode()); $event->set('state', $location->getState()); $key = $event->get('country') . $event->get('city'); $location_id = $h->generateId($key); } // look up the county code if it's missing if (!$event->get('country_code') && $event->get('country')) { $event->set('country_code', $this->lookupCountryCodeFromName($event->get('country'))); } $h->getByPk('id', $location_id); $id = $h->get('id'); if (!$id) { $location = owa_coreAPI::getGeolocationFromIpAddress($event->get('ip_address')); owa_coreAPI::debug('geolocation: ' . print_r($location, true)); //set properties of the session $h->set('country', $event->get('country')); $h->set('city', $event->get('city')); $h->set('latitude', $event->get('latitude')); $h->set('longitude', $event->get('longitude')); $h->set('country_code', $event->get('country_code')); $h->set('state', $event->get('state')); $h->set('id', $location_id); $ret = $h->create(); if ($ret) { return OWA_EHS_EVENT_HANDLED; } else { return OWA_EHS_EVENT_FAILED; } } else { owa_coreAPI::debug('Not Logging. Location already exists'); return OWA_EHS_EVENT_HANDLED; } } else { owa_coreAPI::notice('Not persisting location dimension. Location id or ip address missing from event.'); return OWA_EHS_EVENT_HANDLED; } }
/** * 添加记录 * * @param unknown_type $type * @param unknown_type $ttl */ public static function addprocess($type = null,$ttl = 600){ if (!self::$ifopen) return; self::init($type); $tims = self::parsetimes($type); $t = self::$lock->get(self::$processid[$type]); if ($t >= $tims-1) { self::addlock($type,$ttl); self::$lock->rm(self::$processid[$type]); }else{ if (empty($t)) $t = 0; self::$lock->set(self::$processid[$type],$t+1,'',$ttl); } }
/** * Parse a member for display * * @param mixed Either array of member data, or member ID to self load * @param array Array of flags to parse: 'signature', 'customFields', 'warn' * @return array Parsed member data */ public static function buildDisplayData($member, $_parseFlags = array()) { $_NOW = IPSDebug::getMemoryDebugFlag(); /* test to see if member_title has been passed */ if (isset($member['member_title'])) { $member['title'] = $member['member_title']; } //----------------------------------------- // Figure out parse flags //----------------------------------------- $parseFlags = array('signature' => isset($_parseFlags['signature']) ? $_parseFlags['signature'] : 0, 'customFields' => isset($_parseFlags['customFields']) ? $_parseFlags['customFields'] : 0, 'reputation' => isset($_parseFlags['reputation']) ? $_parseFlags['reputation'] : 1, 'warn' => isset($_parseFlags['warn']) ? $_parseFlags['warn'] : 1, 'cfSkinGroup' => isset($_parseFlags['cfSkinGroup']) ? $_parseFlags['cfSkinGroup'] : '', 'cfGetGroupData' => isset($_parseFlags['cfGetGroupData']) ? $_parseFlags['cfGetGroupData'] : '', 'cfLocation' => isset($_parseFlags['cfLocation']) ? $_parseFlags['cfLocation'] : '', 'checkFormat' => isset($_parseFlags['checkFormat']) ? $_parseFlags['checkFormat'] : 0, 'photoTagSize' => isset($_parseFlags['photoTagSize']) ? $_parseFlags['photoTagSize'] : false, 'spamStatus' => isset($_parseFlags['spamStatus']) ? $_parseFlags['spamStatus'] : 0); if (isset($_parseFlags['__all__'])) { foreach ($parseFlags as $k => $v) { if (in_array($k, array('cfSkinGroup', 'cfGetGroupData', 'photoTagSize'))) { continue; } $parseFlags[$k] = 1; } $parseFlags['spamStatus'] = !empty($parseFlags['spamStatus']) ? 1 : 0; } //----------------------------------------- // Load the member? //----------------------------------------- if (!is_array($member) and ($member == intval($member) and $member > 0)) { $member = self::load($member, 'all'); } //----------------------------------------- // Caching //----------------------------------------- static $buildMembers = array(); $_key = $member['member_id']; $_arr = serialize($member); foreach ($parseFlags as $_flag => $_value) { $_key .= $_flag . $_value; } $_key = md5($_key . $_arr); if (isset($buildMembers[$_key])) { IPSDebug::setMemoryDebugFlag("IPSMember::buildDisplayData: " . $member['member_id'] . " - CACHED", $_NOW); return $buildMembers[$_key]; } //----------------------------------------- // Basics //----------------------------------------- if (!$member['member_group_id']) { $member['member_group_id'] = ipsRegistry::$settings['guest_group']; } /* Unpack bitwise if required */ if (!isset($member['bw_is_spammer'])) { $member = self::buildBitWiseOptions($member); } //----------------------------------------- // INIT //----------------------------------------- $rank_cache = ipsRegistry::cache()->getCache('ranks'); $group_cache = ipsRegistry::cache()->getCache('group_cache'); $group_name = self::makeNameFormatted($group_cache[$member['member_group_id']]['g_title'], $member['member_group_id']); $pips = 0; $topic_id = intval(isset(ipsRegistry::$request['t']) ? ipsRegistry::$request['t'] : 0); $forum_id = intval(isset(ipsRegistry::$request['f']) ? ipsRegistry::$request['f'] : 0); //----------------------------------------- // SEO Name //----------------------------------------- $member['members_seo_name'] = self::fetchSeoName($member); $member['_group_formatted'] = $group_name; //----------------------------------------- // Ranks //----------------------------------------- if (is_array($rank_cache) and count($rank_cache)) { foreach ($rank_cache as $k => $v) { if ($member['posts'] >= $v['POSTS']) { if (empty($member['title'])) { $member['title'] = $v['TITLE']; } $pips = $v['PIPS']; break; } } } //----------------------------------------- // Group image //----------------------------------------- $member['member_rank_img'] = ''; $member['member_rank_img_i'] = ''; if ($group_cache[$member['member_group_id']]['g_icon']) { $_img = $group_cache[$member['member_group_id']]['g_icon']; if (substr($_img, 0, 4) != 'http' and strpos($_img, '{style_images_url}') === false) { $_img = ipsRegistry::$settings['_original_base_url'] . '/' . ltrim($_img, '/'); } $member['member_rank_img_i'] = 'img'; $member['member_rank_img'] = $_img; } else { if ($pips and $member['member_id']) { if (is_numeric($pips)) { for ($i = 1; $i <= $pips; ++$i) { $member['member_rank_img_i'] = 'pips'; $member['member_rank_img'] = $member['member_rank_img'] . ipsRegistry::getClass('output')->getReplacement('pip_pip'); } } else { $member['member_rank_img_i'] = 'img'; $member['member_rank_img'] = ipsRegistry::$settings['public_dir'] . 'style_extra/team_icons/' . $pips; } } } //----------------------------------------- // Moderator data //----------------------------------------- if (($parseFlags['spamStatus'] or $parseFlags['warn']) and $member['member_id']) { /* Possible forums class isn't init at this point */ if (!ipsRegistry::isClassLoaded('class_forums')) { try { $viewingMember = IPSMember::setUpModerator(ipsRegistry::member()->fetchMemberData()); ipsRegistry::member()->setProperty('forumsModeratorData', $viewingMember['forumsModeratorData']); } catch (Exception $error) { IPS_exception_error($error); } } $moderator = ipsRegistry::member()->getProperty('forumsModeratorData'); } $forum_id = isset(ipsRegistry::$request['f']) ? intval(ipsRegistry::$request['f']) : 0; //----------------------------------------- // Spammer status //----------------------------------------- if ($parseFlags['spamStatus'] and $member['member_id'] and ipsRegistry::member()->getProperty('member_id')) { /* Defaults */ $member['spamStatus'] = NULL; $member['spamImage'] = NULL; if (!empty($moderator[$forum_id]['bw_flag_spammers']) or ipsRegistry::member()->getProperty('g_is_supmod')) { if (!ipsRegistry::$settings['warn_on'] or !IPSMember::isInGroup($member, explode(',', ipsRegistry::$settings['warn_protected']))) { if ($member['bw_is_spammer']) { $member['spamStatus'] = TRUE; } else { $member['spamStatus'] = FALSE; } } } } //----------------------------------------- // Warny porny? //----------------------------------------- $member['show_warn'] = FALSE; if ($parseFlags['warn'] and $member['member_id']) { if (ipsRegistry::$settings['warn_on'] and !IPSMember::isInGroup($member, explode(',', ipsRegistry::$settings['warn_protected']))) { /* Warnings */ if (!empty($moderator[$forum_id]['allow_warn']) or ipsRegistry::member()->getProperty('g_is_supmod') or ipsRegistry::$settings['warn_show_own'] and ipsRegistry::member()->getProperty('member_id') == $member['member_id']) { $member['show_warn'] = TRUE; } else { if (is_array($moderator) && count($moderator) && !$forum_id) { foreach ($moderator as $forum) { if ($forum['allow_warn']) { $member['show_warn'] = TRUE; break; } } } } } } //----------------------------------------- // Profile fields stuff //----------------------------------------- $member['custom_fields'] = ""; if ($parseFlags['customFields'] == 1 and $member['member_id']) { if (isset(self::$_parsedCustomFields[$member['member_id']])) { $member['custom_fields'] = self::$_parsedCustomFields[$member['member_id']]; if ($parseFlags['cfGetGroupData'] and isset(self::$_parsedCustomGroups[$member['member_id']]) and is_array(self::$_parsedCustomGroups[$member['member_id']])) { $member['custom_field_groups'] = self::$_parsedCustomGroups[$member['member_id']]; } else { if ($parseFlags['cfGetGroupData']) { $member['custom_field_groups'] = self::$custom_fields_class->fetchGroupTitles(); self::$_parsedCustomGroups[$member['member_id']] = $member['custom_field_groups']; } } } else { if (!is_object(self::$custom_fields_class)) { $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . 'sources/classes/customfields/profileFields.php', 'customProfileFields'); self::$custom_fields_class = new $classToLoad(); } if (self::$custom_fields_class) { self::$custom_fields_class->member_data = $member; self::$custom_fields_class->skinGroup = $parseFlags['cfSkinGroup']; self::$custom_fields_class->initData(); self::$custom_fields_class->parseToView($parseFlags['checkFormat'], $parseFlags['cfLocation']); $member['custom_fields'] = self::$custom_fields_class->out_fields; self::$_parsedCustomFields[$member['member_id']] = $member['custom_fields']; if ($parseFlags['cfGetGroupData']) { $member['custom_field_groups'] = self::$custom_fields_class->fetchGroupTitles(); self::$_parsedCustomGroups[$member['member_id']] = $member['custom_field_groups']; } } } } //----------------------------------------- // Profile photo //----------------------------------------- $member = self::buildProfilePhoto($member); if (!empty($parseFlags['photoTagSize'])) { $parseFlags['photoTagSize'] = is_array($parseFlags['photoTagSize']) ? $parseFlags['photoTagSize'] : array($parseFlags['photoTagSize']); foreach ($parseFlags['photoTagSize'] as $size) { $member['photoTag' . ucfirst($size)] = self::buildPhotoTag($member, $size); } } //----------------------------------------- // Signature bbcode //----------------------------------------- if (!empty($member['signature']) and $parseFlags['signature']) { if (isset(self::$_parsedSignatures[$member['member_id']])) { $member['signature'] = self::$_parsedSignatures[$member['member_id']]; } else { if ($member['cache_content']) { $member['signature'] = '<!--signature-cached-' . gmdate('r', $member['cache_updated']) . '-->' . $member['cache_content']; } else { /* Grab the parser file */ if (self::$_sigParser === null) { /* Load parser */ $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser'); self::$_sigParser = new $classToLoad(); } /* set up parser */ self::$_sigParser->set(array('memberData' => $member, 'parseBBCode' => 1, 'parseHtml' => $group_cache[$member['member_group_id']]['g_dohtml'] && $member['bw_html_sig'], 'parseEmoticons' => 1, 'parseArea' => 'signatures')); $member['signature'] = self::$_sigParser->display($member['signature']); IPSContentCache::update($member['member_id'], 'sig', $member['signature']); } self::$_parsedSignatures[$member['member_id']] = $member['signature']; } } //----------------------------------------- // If current session, reset last_activity //----------------------------------------- if (!empty($member['running_time'])) { $member['last_activity'] = $member['running_time'] > $member['last_activity'] ? $member['running_time'] : $member['last_activity']; } //----------------------------------------- // Online? //----------------------------------------- $time_limit = time() - ipsRegistry::$settings['au_cutoff'] * 60; $member['_online'] = 0; $bypass_anon = ipsRegistry::member()->getProperty('g_access_cp') ? 1 : 0; list($be_anon, $loggedin) = explode('&', empty($member['login_anonymous']) ? '0&0' : $member['login_anonymous']); /* Is not anon but the group might be forced to? */ if (empty($be_anon) && self::isLoggedInAnon($member)) { $be_anon = 1; } /* Finally set the online flag */ if (($member['last_visit'] > $time_limit or $member['last_activity'] > $time_limit) and ($be_anon != 1 or $bypass_anon == 1) and $loggedin == 1) { $member['_online'] = 1; } //----------------------------------------- // Last Active //----------------------------------------- $member['_last_active'] = ipsRegistry::getClass('class_localization')->getDate($member['last_activity'], 'SHORT'); // Member last logged in anonymous ? if ($be_anon == 1 && !ipsRegistry::member()->getProperty('g_access_cp')) { $member['_last_active'] = ipsRegistry::getClass('class_localization')->words['private']; } //----------------------------------------- // Rating //----------------------------------------- $member['_pp_rating_real'] = intval($member['pp_rating_real']); //----------------------------------------- // Display name formatted //----------------------------------------- $member['members_display_name_formatted'] = self::makeNameFormatted($member['members_display_name'], $member['member_id'] ? $member['member_group_id'] : ipsRegistry::$settings['guest_group']); //----------------------------------------- // Long display names //----------------------------------------- $member['members_display_name_short'] = IPSText::truncate($member['members_display_name'], 16); //----------------------------------------- // Reputation //----------------------------------------- $member['pp_reputation_points'] = $member['pp_reputation_points'] ? $member['pp_reputation_points'] : 0; if ($parseFlags['reputation'] and $member['member_id']) { if (!ipsRegistry::isClassLoaded('repCache')) { $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . 'sources/classes/class_reputation_cache.php', 'classReputationCache'); ipsRegistry::setClass('repCache', new $classToLoad()); } $member['author_reputation'] = ipsRegistry::getClass('repCache')->getReputation($member['pp_reputation_points']); } //----------------------------------------- // Other stuff not worthy of individual comments //----------------------------------------- $member['members_profile_views'] = isset($member['members_profile_views']) ? $member['members_profile_views'] : 0; /* BG customization */ if ($member['pp_customization'] and !empty($member['gbw_allow_customization']) and !$member['bw_disable_customization']) { $member['customization'] = IPSLib::safeUnserialize($member['pp_customization']); if (is_array($member['customization'])) { /* Figure out BG URL */ if ($member['customization']['type'] == 'url' and $member['customization']['bg_url'] and $member['gbw_allow_url_bgimage']) { $member['customization']['_bgUrl'] = $member['customization']['bg_url']; } else { if ($member['customization']['type'] == 'upload' and $member['customization']['bg_url'] and $member['gbw_allow_upload_bgimage']) { $member['customization']['_bgUrl'] = ipsRegistry::$settings['upload_url'] . '/' . $member['customization']['bg_url']; } else { if ($member['customization']['bg_color']) { $member['customization']['type'] = 'bgColor'; } } } } } /* Title is ambigious */ $member['member_title'] = $member['title']; IPSDebug::setMemoryDebugFlag("IPSMember::buildDisplayData: " . $member['member_id'] . " - Completed", $_NOW); $buildMembers[$_key] = $member; return $member; }
/** * checks to see if the filesize is set and sets it if not * @param unknown_type $image * @return object */ function quota_image_refresh($image) { $image->set('filesize', filesize($image->localpath)); $image->save(); return $image; }
function login() { //check if user is logged into fb $fblogin = $this->checkUserLoggedIn(); //debug($fblogin); //check cake login $cakelogin = $this->controller->Auth->User() ? true : false; //setup user fields $fields = Configure::read('facebook.UserFields'); $fieldId = $fields['id']; $fieldPassword = $fields['password']; $fieldEmail = $fields['email']; $fieldUsername = $fields['username']; $fieldFacebook_id = $fields['facebook_id']; $fieldPasswordConfirm = $fields['password_confirm']; //save to facebook model $saveToFacebookModel = Configure::read('facebook.saveFBdata'); $this->controller->set('test', array('facebook' => $fblogin, 'cake' => $cakelogin, 'token' => $this->facebook->getAccessToken(), 'fbid' => $this->fbuser, 'fbuser' => $this->fbuser)); //Logged into facebook but not into system if ($fblogin && !$cakelogin) { $user_record = null; //do we have access to facebook email? if (isset($this->fbuser['email'])) { //see if user is in database already $user_record = $this->controller->User->find('first', array('conditions' => array('OR' => array($fieldFacebook_id => $this->fbuser['id'], $fieldEmail => $this->fbuser['email'])))); //look based on facebook id } else { //see if user is in database already $user_record = $this->controller->User->find('first', array('conditions' => array(array($fieldFacebook_id => $this->fbuser['id'])), 'contain' => array())); } //user did not exist, lets create one if (empty($user_record)) { //build user data $password = $this->fbuser['birthday']; //build remainder of user ifnormation $user_record['User'][$fieldUsername] = $this->fbuser['email']; $user_record['User'][$fieldFacebook_id] = $this->fbuser['id']; $user_record['User'][$fieldPasswordConfirm] = $password; $user_record['User'][$fieldPassword] = AuthComponent::password($password); $user_record['User']['fname'] = $this->fbuser['first_name']; $user_record['User']['lname'] = $this->fbuser['last_name']; $user_record['User']['sex'] = strtoupper($this->fbuser['gender']); $user_record['User']['group_id'] = Configure::read('userconfig.default.group'); $user_record['User']['birthdate'] = strtotime($this->fbuser['birthday']); $user_record['User']['active'] = 1; //add to facebook userdata...used by the email method $this->fbuser['generatedPassword'] = $password; //Create the User if ($this->controller->User->save($user_record, array('validate' => false))) { // login user $this->controller->Auth->login($user_record); //send user email if (Configure::read('facebook.sendNewUserEmail') && isset($this->fbuser['email'])) { $this->sendNewUserEmail(); } //add the first time user prompts $this->controller->User->Prompt->addFirstTimeUserPrompt($this->controller->User->id); //save facebook if ($saveToFacebookModel) { $this->saveMeData($this->fbuser['id'], $this->controller->User->id, $this->getMe()); } //forward to correct url $this->controller->redirect(Configure::read('facebook.afterregister.forward')); } else { array_push($this->error, 'Failed to create user'); } //found user by email } elseif (isset($this->fbuser['email']) && isset($user_record['User'][$fieldEmail]) && Configure::read('facebook.useFBemailToLogin')) { //the facebook email and user email match if ($user_record['User'][$fieldEmail] == $this->fbuser['email']) { //user does not have a facebook id if (empty($user_record['User'][$fieldFacebook_id])) { //skip validation $save_options = array('validate' => false); //update the facebook_id $user_record['User'][$fieldFacebook_id] = $this->fbuser['id']; $this->controller->User->save($user_record, $save_options); } } $this->controller->Auth->login($user_record); //forward to correct url $this->controller->redirect(Configure::read('facebook.afterlogin.forward')); } //login user $this->controller->Auth->login($user_record); //forward to correct url $this->controller->redirect(Configure::read('facebook.afterlogin.forward')); //need to make sure we have the user facebook id in DB, if not add it } elseif ($cakelogin && $fblogin) { //skip validation $save_options = array('validate' => false); $user = $this->controller->Auth->user(); //see if user is in database already $user_record = $this->controller->User->find('first', array('conditions' => array('User.' . $fieldId => $user['User']['id']))); //build user data $user['User'][$fieldUsername] = $user_record['User'][$fieldUsername]; $user['User'][$fieldEmail] = $user_record['User'][$fieldEmail]; $user['User'][$fieldFacebook_id] = $this->fbuser['id']; //also check that email if (!isset($user['User'][$fieldEmail]) && isset($this->fbuser['email']) || empty($user['User'][$fieldEmail])) { $user['User'][$fieldEmail] = $this->fbuser['email']; } if ($user_record['User'][$fieldPassword] == '') { $password = $this->generatePassword(); $user['User'][$fieldPassword] = AuthComponent::password($password); $this->fbuser['generatedPassword'] = $password; $this->fbuser['username'] = $user['User'][$fieldUsername]; //not really a new user, but we have reset a password, so we need to send them something if (Configure::read('facebook.sendNewUserEmail')) { $this->sendNewUserEmail(); } } $this->controller->User->save($user, $save_options); if ($saveToFacebookModel) { $this->saveMeData($this->fbuser['id'], $user['User'][$fieldId], $this->getMe()); } } }