Example #1
0
 /**
  * Returns class instance
  *
  * @return YNSOCIALCONNECT_CLASS_SocialConnect
  */
 public static function getInstance()
 {
     if (!isset(self::$classInstance)) {
         self::$classInstance = new self();
     }
     return self::$classInstance;
 }
Example #2
0
 /**
  * Constructor.
  *
  */
 public function __construct()
 {
     //	init
     parent::__construct();
     $this->consoleItem = new BASE_CMP_ConsoleItem();
     $this->addClass('ow_console_button');
     $staticUrl = OW::getPluginManager()->getPlugin('ynsocialconnect')->getStaticUrl();
     $document = OW::getDocument();
     $document->addScript($staticUrl . 'js/ynsocialconnect.js');
     //	process
     $iLimit = OW::getConfig()->getValue('ynsocialconnect', 'limit_providers_view_on_login_header');
     $iLimitSelected = OW::getConfig()->getValue('ynsocialconnect', 'limit_providers_view_on_login_header');
     //$aOpenProviders = YNSOCIALCONNECT_BOL_ServicesService::getInstance() -> getEnabledProviders($iLimit, (int)$iLimitSelected);
     $aOpenProviders = YNSOCIALCONNECT_BOL_ServicesService::getInstance()->getProvidersByStatus($bDisplay = true);
     $listProvider = array();
     $step = 0;
     foreach ($aOpenProviders as $item) {
         if (in_array($item->name, array('facebook', 'twitter', 'linkedin'))) {
             if (!YNSOCIALCONNECT_CLASS_SocialConnect::getInstance()->checkSocialBridgePlugin($item->name)) {
                 continue;
             }
         }
         $listProvider[] = $item;
         $step++;
         if ($step >= $iLimit) {
             break;
         }
     }
     $iIconSize = intval(OW::getConfig()->getValue('ynsocialconnect', 'size_of_provider_icon_px')) >= 0 ? intval(OW::getConfig()->getValue('ynsocialconnect', 'size_of_provider_icon_px')) : 24;
     $iWidth = (count($listProvider) + 1) * ($iIconSize + 6);
     $minusSign = '';
     if (22 < $iIconSize) {
         $minusSign = '-';
         $marginTop = ceil(($iIconSize - 22) / 2);
         $marginTop = $minusSign . $marginTop;
     } else {
         $marginTop = ceil((22 - $iIconSize) / 2);
     }
     $this->assign('marginTop', $marginTop);
     $this->assign('iLimitView', $iLimit);
     $this->assign('iLimitSelected', $iLimitSelected);
     $this->assign('aOpenProviders', $listProvider);
     $this->assign('iIconSize', $iIconSize);
     $this->assign('iWidth', $iWidth);
     $this->assign('sCoreUrl', OW_DIR_ROOT);
     $this->assign('sImgSrc', OW::getPluginManager()->getPlugin('ynsocialconnect')->getStaticUrl() . 'img/');
     $this->addComponent('eicmp', new YNSOCIALCONNECT_CMP_ViewMore());
     YNSOCIALCONNECT_CLASS_Helper::getInstance()->setIsViewMore('1');
     //	set url redirect to session
     $uri = OW::getRequest()->getRequestUri();
     // @formatter:off
     if (isset($uri) && strpos($uri, 'socialbridge') === false && strpos($uri, 'ynsocialbridge') === false && strpos($uri, 'ynsocialconnect') === false && strpos($uri, 'socialconnect') === false) {
         $uri = OW_URL_HOME . $uri;
         $_SESSION['ynsc_session']['urlRedirect'] = $uri;
     }
     // @formatter:on
 }
Example #3
0
 public function render()
 {
     //	init
     $iLimit = OW::getConfig()->getValue('ynsocialconnect', 'limit_providers_view_on_login_header');
     $iLimitSelected = OW::getConfig()->getValue('ynsocialconnect', 'limit_providers_view_on_login_header');
     //	process
     //$aOpenProviders = YNSOCIALCONNECT_BOL_ServicesService::getInstance() -> getEnabledProviders($iLimit, (int)$iLimitSelected);
     $aOpenProviders = YNSOCIALCONNECT_BOL_ServicesService::getInstance()->getProvidersByStatus($bDisplay = true);
     $listProvider = array();
     $step = 0;
     foreach ($aOpenProviders as $item) {
         if (in_array($item->name, array('facebook', 'twitter', 'linkedin'))) {
             if (!YNSOCIALCONNECT_CLASS_SocialConnect::getInstance()->checkSocialBridgePlugin($item->name)) {
                 continue;
             }
         }
         $listProvider[] = $item;
         $step++;
         if ($step >= $iLimit) {
             break;
         }
     }
     $iIconSize = intval(OW::getConfig()->getValue('ynsocialconnect', 'size_of_provider_icon_px')) >= 0 ? intval(OW::getConfig()->getValue('ynsocialconnect', 'size_of_provider_icon_px')) : 24;
     $iWidth = (count($listProvider) + 1) * ($iIconSize + 6);
     $this->assign('iLimitView', $iLimit);
     $this->assign('iLimitSelected', $iLimitSelected);
     $this->assign('aOpenProviders', $listProvider);
     $this->assign('iIconSize', $iIconSize);
     $this->assign('iWidth', $iWidth);
     $this->assign('sCoreUrl', OW_DIR_ROOT);
     $this->assign('sImgSrc', OW::getPluginManager()->getPlugin('ynsocialconnect')->getStaticUrl() . 'img/');
     //	set url redirect to session
     $uri = OW::getRequest()->getRequestUri();
     // @formatter:off
     if (isset($uri) && strpos($uri, 'socialbridge') === false && strpos($uri, 'ynsocialbridge') === false && strpos($uri, 'ynsocialconnect') === false && strpos($uri, 'socialconnect') === false) {
         $uri = OW_URL_HOME . $uri;
         $_SESSION['ynsc_session']['urlRedirect'] = $uri;
     }
     // @formatter:on
     if (OW::getSession()->isKeySet(YNSOCIALCONNECT_CTRL_Sync::SESSION_SIGNUP_DATA)) {
         $signupData = OW::getSession()->get(YNSOCIALCONNECT_CTRL_Sync::SESSION_SIGNUP_DATA);
         $profilePicture = YNSOCIALCONNECT_CLASS_SocialConnect::getInstance()->getPhotoUrlFromTokenData($signupData['user'], $signupData['service']);
         if ($profilePicture == null) {
             //OW::getSession() -> set(self::SESSION_USE_PROFILE_PHOTO, 'not_use');
             $profilePicture = "";
         } else {
             //OW::getSession() -> set(self::SESSION_USE_PROFILE_PHOTO, 'use');
             $url = OW::getRouter()->urlFor('YNSOCIALCONNECT_CTRL_Sync', 'removeAvatar');
             $removeEl = "<div class=\"ow_avatar_change\"><a href=\"javascript:void(0);\" onclick=\"YNSocialConnect.removeAvatar(\\'{$url}\\');\" class=\"ow_lbutton\">X</a></div>";
             //$removeEl = "<div class=\"ow_avatar_change\"><a href=\"javascript:void(0);\" onclick=\"YNSocialConnect.removeAvatar();\" class=\"ow_lbutton\">X</a></div>";
             $profilePicture = "<div id=\"ynsc_profile_picture\" class=\"ynsc_profile_photo_center\"><img class=\"ynsc_profile_phpto\" src=\"" . $profilePicture . "\">" . $removeEl . "</div><br />";
         }
         $this->assign('profilePicture', $profilePicture);
     }
     //	end
     return parent::render();
 }
Example #4
0
 public function index($params)
 {
     //	init
     if (!isset($params['service']) || !strlen($service = trim($params['service']))) {
         $this->redirect(OW_URL_HOME);
         //throw new Redirect404Exception();
     }
     $type = '';
     if (!isset($params['type']) || !strlen(trim($params['type']))) {
         $type = '';
     } else {
         $type = trim($params['type']);
     }
     //	process
     $sCallbackUrl = '';
     switch ($type) {
         case 'sync':
             if (OW::getUser()->isAuthenticated()) {
                 $this->redirect(OW_URL_HOME);
             }
             $sCallbackUrl = OW::getRouter()->urlFor('YNSOCIALCONNECT_CTRL_Sync', 'index', array('service' => $service));
             break;
         case 'linking':
             if (!OW::getUser()->isAuthenticated()) {
                 $this->redirect(OW_URL_HOME);
             }
             $sCallbackUrl = OW::getRouter()->urlFor('YNSOCIALCONNECT_CTRL_Userlinking', 'linking', array('service' => $service));
             break;
         default:
             if (OW::getUser()->isAuthenticated()) {
                 $this->redirect(OW_URL_HOME);
             }
             $sCallbackUrl = OW::getRouter()->urlFor('YNSOCIALCONNECT_CTRL_Sync', 'index', array('service' => $service));
             break;
     }
     $sUrl = YNSOCIALCONNECT_CLASS_SocialConnect::getInstance()->getReturnUrl($service, $sCallbackUrl);
     // 	end
     $this->redirect($sUrl);
 }
Example #5
0
 public function index($params)
 {
     //	init
     if (OW::getUser()->isAuthenticated()) {
         $this->redirect(OW_URL_HOME);
         //throw new AuthenticateException();
     }
     if (!isset($params['service']) || !strlen(trim($params['service']))) {
         $this->redirect(OW_URL_HOME);
         //throw new Redirect404Exception();
     }
     $oBridge = YNSOCIALCONNECT_CLASS_SocialBridge::getInstance();
     //	process
     $sService = isset($params['service']) ? strtolower($params['service']) : null;
     $type = 'bridge';
     $sIdentity = null;
     $data = NULL;
     if ($oBridge->hasProvider($sService)) {
         //	process Facebook, Twitter, LinkedIn
         $profile = null;
         //check enable API
         $clientConfig = YNSOCIALBRIDGE_BOL_ApisettingService::getInstance()->getConfig($sService);
         if ($clientConfig) {
             $core = new YNSOCIALBRIDGE_CLASS_Core();
             $oProvider = $core->getInstance($sService);
             $values = array('service' => $sService, 'userId' => OW::getUser()->getId());
             $tokenDto = $oProvider->getToken($values);
             if (!empty($_SESSION['socialbridge_session'][$sService])) {
                 try {
                     $profile = $oProvider->getOwnerInfo($_SESSION['socialbridge_session'][$sService]);
                 } catch (Exception $e) {
                     $profile = null;
                 }
             } else {
                 if ($tokenDto) {
                     $profile = $oProvider->getOwnerInfo(array('access_token' => $tokenDto->accessToken, 'secret_token' => $tokenDto->secretToken, 'user_id' => $tokenDto->uid));
                 }
             }
             //
             if ($profile) {
                 $sIdentity = isset($profile['identity']) ? $profile['identity'] : null;
                 ////	filter data
                 $profile = YNSOCIALCONNECT_CLASS_SocialConnect::getInstance()->filterProfile($profile, $sService);
                 $data = $profile;
             }
         }
     } else {
         //	process with other services
         $type = 'not_bridge';
         $sIdentity = isset($_REQUEST['identity']) ? $_REQUEST['identity'] : null;
         $data = $_REQUEST;
     }
     $provider = YNSOCIALCONNECT_BOL_ServicesService::getInstance()->getProvider($sService);
     $aUser = YNSOCIALCONNECT_BOL_AgentsService::getInstance()->getUserByIdentityAndService($sIdentity, $sService, $provider->id, $data);
     $sUrlRedirect = '';
     if (NULL == $aUser && NULL == $sIdentity) {
         if ($oBridge->hasProvider($sService)) {
             $type = 'close_not_loading';
             $this->assign('type', $type);
             $this->assign('sUrlRedirect', $sUrlRedirect);
         }
     }
     if ($aUser) {
         //	login again
         //	logining which happen in YNSOCIALCONNECT_BOL_AgentsDao after execute checkExistingAgent
         //	now, redirect by url in session
         // @formatter:off
         if (isset($_SESSION['ynsc_session']) && isset($_SESSION['ynsc_session']['urlRedirect']) && strlen(trim($_SESSION['ynsc_session']['urlRedirect'])) > 0) {
             $sUrlRedirect = $_SESSION['ynsc_session']['urlRedirect'];
         } else {
             $sUrlRedirect = OW_URL_HOME;
         }
         // @formatter:on
         //	update login statistic
         YNSOCIALCONNECT_BOL_ServicesService::getInstance()->updateStatistics($sService, 'login');
     } else {
         //	sign up now
         //	saved data to session
         try {
             OW::getSession()->set(self::SESSION_SIGNUP_DATA, array('service' => $sService, 'identity' => $sIdentity, 'user' => $data));
         } catch (Exception $e) {
         }
         $sUrlRedirect = OW::getRouter()->urlForRoute('base_join');
         //	mapping profile in session
         $questions = $this->__mappingProfile($data, $sService);
         //	update later signup statistic in quick signup
         //	check existed user by email
         $checkExist = false;
         $checkEmail = false;
         if (isset($data['email'])) {
             $email = $data['email'];
             $aUser = BOL_UserService::getInstance()->findByEmail($email);
             if ($aUser) {
                 //	redirect to synchronize page
                 $sUrlRedirect = OW::getRouter()->urlFor('YNSOCIALCONNECT_CTRL_UserSync', 'index');
                 $checkExist = true;
             }
             if ($data['email']) {
                 $checkEmail = true;
             }
         }
         $plugin = OW::getPluginManager()->getPlugin('ynsocialconnect');
         $key = strtolower($plugin->getKey());
         if (!OW::getConfig()->getValue($key, 'signup_mode') && !$checkExist && $checkEmail && $questions['username']) {
             $username = $questions['username'];
             $password = uniqid();
             $user = BOL_UserService::getInstance()->createUser($username, $password, $questions['email'], null, true);
             BOL_QuestionService::getInstance()->saveQuestionsData(array_filter($questions), $user->id);
             OW_User::getInstance()->login($user->id);
             $event = new OW_Event(OW_EventManager::ON_USER_REGISTER, array('userId' => $user->id, 'quick_signup' => true));
             OW::getEventManager()->trigger($event);
             $sUrlRedirect = OW_URL_HOME;
         }
     }
     $this->assign('type', $type);
     $this->assign('sUrlRedirect', $sUrlRedirect);
     // 	end
 }
Example #6
0
 public function linking($params)
 {
     if (!OW::getUser()->isAuthenticated()) {
         $this->redirect(OW_URL_HOME);
         //throw new AuthenticateException();
     }
     if (!isset($params['service']) || !strlen(trim($params['service']))) {
         $this->redirect(OW_URL_HOME);
         //throw new Redirect404Exception();
     }
     //	init
     $oBridge = YNSOCIALCONNECT_CLASS_SocialBridge::getInstance();
     $sService = isset($params['service']) ? strtolower($params['service']) : null;
     $sIdentity = null;
     $data = NULL;
     $type = 'bridge';
     $sUrlRedirect = OW::getRouter()->urlForRoute('ynsocialconnect_user_user_linking');
     //	process
     if ($oBridge->hasProvider($sService)) {
         //	process Facebook, Twitter, LinkedIn
         $profile = null;
         //check enable API
         $clientConfig = YNSOCIALBRIDGE_BOL_ApisettingService::getInstance()->getConfig($sService);
         if ($clientConfig) {
             $core = new YNSOCIALBRIDGE_CLASS_Core();
             $oProvider = $core->getInstance($sService);
             if (!empty($_SESSION['socialbridge_session'][$sService])) {
                 try {
                     $profile = $oProvider->getOwnerInfo($_SESSION['socialbridge_session'][$sService]);
                 } catch (Exception $e) {
                     $profile = null;
                 }
             }
             //
             if ($profile) {
                 $sIdentity = isset($profile['identity']) ? $profile['identity'] : null;
                 ////	filter data
                 $profile = YNSOCIALCONNECT_CLASS_SocialConnect::getInstance()->filterProfile($profile, $sService);
                 $data = $profile;
             }
         }
     } else {
         //	process with other services
         $type = 'not_bridge';
         $sIdentity = isset($_REQUEST['identity']) ? $_REQUEST['identity'] : null;
         $data = $_REQUEST;
     }
     if (NULL == $sIdentity) {
         $type = 'close_not_loading';
     } else {
         ////		update ow_base_remote_auth
         $authAdapter = new YNSOCIALCONNECT_CLASS_AuthAdapter($sIdentity, $sService);
         $authAdapter->register(OW::getUser()->getId());
         ////		update agent table in social connect
         $provider = YNSOCIALCONNECT_BOL_ServicesService::getInstance()->getProvider($sService);
         $entity = new YNSOCIALCONNECT_BOL_Agents();
         $entity->userId = (int) OW::getUser()->getId();
         $entity->identity = $sIdentity;
         $entity->serviceId = $provider->id;
         $entity->ordering = 0;
         $entity->status = 'linking';
         $entity->login = '******';
         $entity->data = base64_encode(serialize($data));
         $entity->tokenData = base64_encode(serialize($data));
         $entity->token = time();
         $entity->createdTime = time();
         $entity->loginTime = time();
         $entity->logoutTime = time();
         YNSOCIALCONNECT_BOL_AgentsService::getInstance()->save($entity);
         ////		delete old token and add new token in social bridge
         if ($oBridge->hasProvider($sService)) {
             //	remove old token
             $values = array('service' => $sService, 'userId' => OW::getUser()->getId());
             $tokenDto = $oProvider->getToken($values);
             if ($tokenDto) {
                 YNSOCIALBRIDGE_BOL_TokenService::getInstance()->delete($tokenDto);
             }
             //	add new token
             $oProvider->saveToken();
         }
         ////		add user linking
         $entityUserlinking = new YNSOCIALCONNECT_BOL_Userlinking();
         $entityUserlinking->userId = (int) OW::getUser()->getId();
         $entityUserlinking->identity = $sIdentity;
         $entityUserlinking->serviceId = $provider->id;
         YNSOCIALCONNECT_BOL_UserlinkingService::getInstance()->save($entityUserlinking);
     }
     //	end
     //// 	clear session
     if (isset($_SESSION['socialbridge_session'][$sService])) {
         unset($_SESSION['socialbridge_session'][$sService]);
     }
     $this->assign('type', $type);
     $this->assign('sUrlRedirect', $sUrlRedirect);
 }
Example #7
0
 public function onUserRegister(OW_Event $event)
 {
     //	init
     $params = $event->getParams();
     $signupData = OW::getSession()->get(YNSOCIALCONNECT_CTRL_Sync::SESSION_SIGNUP_DATA);
     if (NULL != $params && is_array($params) && NULL != $signupData) {
         //	process
         ////		update ow_base_remote_auth
         $authAdapter = new YNSOCIALCONNECT_CLASS_AuthAdapter($signupData['identity'], $signupData['service']);
         $authAdapter->register($params['userId']);
         ////		update agent table in social connect
         $provider = YNSOCIALCONNECT_BOL_ServicesService::getInstance()->getProvider($signupData['service']);
         $entity = new YNSOCIALCONNECT_BOL_Agents();
         $entity->userId = (int) $params['userId'];
         $entity->identity = $signupData['identity'];
         $entity->serviceId = $provider->id;
         $entity->ordering = 0;
         $entity->status = 'login';
         $entity->login = '******';
         $entity->data = base64_encode(serialize($signupData['user']));
         $entity->tokenData = base64_encode(serialize($signupData['user']));
         $entity->token = time();
         $entity->createdTime = time();
         $entity->loginTime = time();
         $entity->logoutTime = time();
         YNSOCIALCONNECT_BOL_AgentsService::getInstance()->save($entity);
         ////add token in social bridge
         $oBridge = YNSOCIALCONNECT_CLASS_SocialBridge::getInstance();
         if ($oBridge->hasProvider(strtolower($signupData['service']))) {
             $core = new YNSOCIALBRIDGE_CLASS_Core();
             $obj = $core->getInstance($signupData['service']);
             $obj->saveToken();
         }
         ////update signup statistic
         YNSOCIALCONNECT_BOL_ServicesService::getInstance()->updateStatistics($signupData['service'], 'signup');
         ////add user linking
         $entityUserlinking = new YNSOCIALCONNECT_BOL_Userlinking();
         $entityUserlinking->userId = (int) $params['userId'];
         $entityUserlinking->identity = $signupData['identity'];
         $entityUserlinking->serviceId = $provider->id;
         YNSOCIALCONNECT_BOL_UserlinkingService::getInstance()->save($entityUserlinking);
         //	end
         if (isset($_SESSION['socialbridge_session'][$signupData['service']])) {
             unset($_SESSION['socialbridge_session'][$signupData['service']]);
         }
         ////		clear session
         OW::getSession()->delete(YNSOCIALCONNECT_CTRL_Sync::SESSION_SIGNUP_DATA);
         //	update avatar
         ////	if avatar doesn't exist, update with profile image
         if (in_array($signupData['service'], array('facebook', 'linkedin', 'twitter'))) {
             $useProfilePhoto = OW::getSession()->get(YNSOCIALCONNECT_CMP_ViewInJoinPage::SESSION_USE_PROFILE_PHOTO);
             if ($useProfilePhoto == null || $useProfilePhoto != 'not_use') {
                 $avatar = BOL_AvatarService::getInstance()->findByUserId($params['userId']);
                 if (!$avatar) {
                     $profilePicture = YNSOCIALCONNECT_CLASS_SocialConnect::getInstance()->getPhotoUrlFromTokenData($signupData['user'], $signupData['service']);
                     //	with facebook, linkedin, twitter
                     if ($profilePicture != null) {
                         $pluginfilesDir = Ow::getPluginManager()->getPlugin('ynsocialconnect')->getPluginFilesDir();
                         $tmpImgPath = $pluginfilesDir . 'img_' . uniqid() . '.jpg';
                         YNSOCIALCONNECT_CLASS_SocialConnect::getInstance()->fetchImage($profilePicture, $tmpImgPath);
                         BOL_AvatarService::getInstance()->setUserAvatar($params['userId'], $tmpImgPath);
                         @unlink($tmpImgPath);
                     }
                 }
             }
         }
         if (isset($params['quick_signup']) && $params['quick_signup']) {
             $userId = (int) $params['userId'];
             $event = new OW_Event('feed.action', array('pluginKey' => 'base', 'entityType' => 'user_join', 'entityId' => $userId, 'userId' => $userId, 'replace' => true), array('string' => OW::getLanguage()->text('base', 'feed_user_join'), 'view' => array('iconClass' => 'ow_ic_user')));
             OW::getEventManager()->trigger($event);
         }
     }
 }