Esempio n. 1
0
 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;
     }
 }
Esempio n. 4
0
	/**
	 * 添加记录
	 *
	 * @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;
 }
Esempio n. 6
0
/**
 * 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;
}
Esempio n. 7
0
 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());
         }
     }
 }