/** * 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 }
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(); }
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); }
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 }
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); }
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); } } }