Пример #1
0
function ynsocialpublisher_on_entity_add(OW_Event $event)
{
    $params = $event->getParams();
    $data = $event->getData();
    $pluginKey = $params['pluginKey'];
    $entityType = $params['entityType'];
    $entityId = $params['entityId'];
    $userId = $params['userId'];
    $service = YNSOCIALPUBLISHER_BOL_Service::getInstance();
    $userSetting = $service->getUsersetting($userId, $pluginKey);
    $supportedPluginType = YNSOCIALPUBLISHER_CLASS_Core::getInstance()->getTypesByPluginKey($pluginKey);
    $count = 0;
    foreach (array('facebook', 'twitter', 'linkedin') as $serviceName) {
        if (YNSOCIALBRIDGE_BOL_ApisettingService::getInstance()->getConfig($serviceName)) {
            $count++;
        }
    }
    /*
     * Must check:
     * _ Setting is available
     * _ At least one provider is available
     * _ Option is not 'Do not ask me again' (2)
     */
    if (!empty($userSetting) && count($userSetting['providers']) > 0 && in_array($entityType, $supportedPluginType) && $count) {
        $providers = $userSetting['providers'];
        if ($userSetting['option'] == YNSOCIALPUBLISHER_BOL_UsersettingDao::OPTIONS_ASK) {
            if ($pluginKey == 'newsfeed') {
                $params = implode(';', array($entityId, $userId));
                setcookie('ynsocialpublisher_feed_data_' . $entityId, $params, time() + 300, '/');
            } else {
                $_SESSION[YNSOCIALPUBLISHER_SESSION_DATA] = implode(';', array($pluginKey, $entityType, $entityId));
            }
        } elseif ($userSetting['option'] == YNSOCIALPUBLISHER_BOL_UsersettingDao::OPTIONS_AUTO) {
            // auto publish to selected providers
            $core = YNSOCIALPUBLISHER_CLASS_Core::getInstance();
            $language = OW::getLanguage();
            $status = $core->getDefaultStatus($pluginKey, $entityType, $entityId);
            $postData = $core->getPostData($pluginKey, $entityId, $entityType, $providers, $status);
            $coreBridge = new YNSOCIALBRIDGE_CLASS_Core();
            foreach ($providers as $provider) {
                $clientConfig = YNSOCIALBRIDGE_BOL_ApisettingService::getInstance()->getConfig($provider);
                if ($clientConfig && isset($postData[$provider])) {
                    $obj = $coreBridge->getInstance($provider);
                    try {
                        $obj->postActivity($postData[$provider]);
                    } catch (Exception $e) {
                        //echo $e->getMessage();
                    }
                }
            }
        }
    }
}
Пример #2
0
 public function getProvider($sService)
 {
     static $oProviders = array();
     $sService = strtolower($sService);
     if (!isset($oProviders[$sService])) {
         if (!$this->hasProvider($sService)) {
             throw new Exception('system does not support provider ' . $sService);
         }
         $core = new YNSOCIALBRIDGE_CLASS_Core();
         $oProviders[$sService] = $core->getInstance($sService);
     }
     return $oProviders[$sService];
 }
Пример #3
0
 public function processAjaxPublish($pluginKey, $entityId, $entityType, $providers, $status)
 {
     $userId = OW::getUser()->getId();
     $core = YNSOCIALPUBLISHER_CLASS_Core::getInstance();
     $postData = $core->getPostData($pluginKey, $entityId, $entityType, $providers, $status);
     $coreBridge = new YNSOCIALBRIDGE_CLASS_Core();
     $language = OW::getLanguage();
     $responseMessage = array();
     foreach ($providers as $provider) {
         if (isset($postData[$provider])) {
             $obj = $coreBridge->getInstance($provider);
             try {
                 $postStatus = $obj->postActivity($postData[$provider]);
                 if ($postStatus != true) {
                     $responseMessage[] = sprintf($language->text('ynsocialpublisher', 'Can not publish to %s'), ucfirst($provider));
                 }
             } catch (Exception $e) {
                 //echo $e->getMessage();
             }
         }
     }
     return $responseMessage;
 }
Пример #4
0
 public function getPostData($pluginKey, $entityId, $entityType, $providers, $status)
 {
     $postData = array();
     if (count($providers) == 0) {
         return $postData;
     }
     $core = YNSOCIALPUBLISHER_CLASS_Core::getInstance();
     // get media type
     $mediaType = $this->getMediaType($entityType, $entityId);
     // share link
     $shareLink = $core->getUrl($pluginKey, $entityType, $entityId);
     // title
     $title = $core->getTitle($pluginKey, $entityType, $entityId);
     // site title
     $siteTitle = OW::getConfig()->getValue('base', 'site_name');
     // user id
     $userId = OW::getUser()->getId();
     // photo url for provider
     $photoUrl = '';
     foreach ($providers as $provider) {
         $coreBridge = new YNSOCIALBRIDGE_CLASS_Core();
         $obj = $coreBridge->getInstance($provider);
         $values = array('service' => $provider, 'userId' => $userId);
         //$tokenDto = $obj -> getToken($values);
         $accessToken = null;
         $secretToken = null;
         if (!empty($_SESSION['socialbridge_session'][$provider])) {
             $accessToken = $_SESSION['socialbridge_session'][$provider]['access_token'];
             $secretToken = isset($_SESSION['socialbridge_session'][$provider]['secret_token']) ? $_SESSION['socialbridge_session'][$provider]['secret_token'] : '';
         }
         /*elseif($tokenDto)
           {
               $accessToken = $tokenDto->accessToken;
               $secretToken = $tokenDto->secretToken;
           }*/
         if (!empty($accessToken)) {
             switch ($provider) {
                 case 'twitter':
                     $postData[$provider] = array('access_token' => $accessToken, 'secret_token' => $secretToken, 'message' => $status, 'link' => $shareLink);
                     // for type == link --- later
                     break;
                 case 'facebook':
                 case 'linkedin':
                     $photoUrl = $this->getPhotoUrlForProvider($pluginKey, $entityType, $entityId);
                     if (empty($photoUrl) || $photoUrl == 'undefined') {
                         $userId = OW::getUser()->getId();
                         $photoUrl = BOL_AvatarService::getInstance()->getAvatarUrl($userId);
                         if (empty($photoUrl)) {
                             $photoUrl = BOL_AvatarService::getInstance()->getDefaultAvatarUrl(2);
                         }
                     }
                     if ($provider == 'facebook') {
                         $postData[$provider] = array('access_token' => $accessToken, 'link' => $shareLink, 'name' => $title, 'caption' => $status, 'message' => $title, 'description' => $siteTitle);
                         if (empty($title)) {
                             $postData[$provider] = array('access_token' => $accessToken, 'link' => $shareLink, 'name' => $status, 'caption' => $title, 'message' => $title, 'description' => $siteTitle);
                         }
                         $postData[$provider]['picture'] = $photoUrl;
                     } elseif ($provider == 'linkedin') {
                         $postData[$provider] = array('access_token' => $accessToken, 'secret_token' => $secretToken, 'comment' => '', 'title' => $status, 'submitted-url' => $shareLink, 'description' => $title);
                         $postData[$provider]['submitted-image-url'] = $photoUrl;
                     }
                     break;
                 default:
                     break;
             }
         }
     }
     return $postData;
 }
Пример #5
0
 public function queueProcess()
 {
     $queues = YNSOCIALBRIDGE_BOL_QueueService::getInstance()->getAllQueues();
     $core = new YNSOCIALBRIDGE_CLASS_Core();
     foreach ($queues as $queue) {
         switch ($queue->type) {
             case 'sendInvite':
                 $extra_params = unserialize($queue->extraParams);
                 $token = YNSOCIALBRIDGE_BOL_TokenService::getInstance()->findById($queue->tokenId);
                 $obj = $core->getInstance($queue->service);
                 $params['list'] = $extra_params['list'];
                 $params['link'] = $extra_params['link'];
                 $params['message'] = $extra_params['message'];
                 $params['uid'] = $token->uid;
                 $params['user_id'] = $queue->userId;
                 $params['access_token'] = $token->accessToken;
                 $params['secret_token'] = $token->secretToken;
                 echo ucfirst($queue->service) . ": " . $token->uid . ": Send invite successfully! ";
                 if ($obj->sendInvites($params)) {
                     echo " <br/>  ";
                     YNSOCIALBRIDGE_BOL_QueueService::getInstance()->delete($queue);
                 }
                 break;
             case 'getFeed':
                 $configs = OW::getConfig()->getValues('ynsocialstream');
                 if (isset($configs['get_feed_cron']) && $configs['get_feed_cron']) {
                     $service = $queue->service;
                     $token = YNSOCIALBRIDGE_BOL_TokenService::getInstance()->findById($queue->tokenId);
                     //get user & check authorized get feed
                     OW_User::getInstance()->login($token->userId);
                     if (!OW::getUser()->isAuthorized('ynsocialstream', 'get_feed')) {
                         break;
                     }
                     //check preferences
                     if (!$configs['enable_' . $service . '_' . $token->userId]) {
                         break;
                     }
                     if ($token && isset($configs['cron_job_user_' . $token->userId]) && $configs['cron_job_user_' . $token->userId]) {
                         $uid = $token->uid;
                         //get Feeds
                         $obj = $core->getInstance($service);
                         $feedService = YNSOCIALSTREAM_BOL_SocialstreamFeedService::getInstance();
                         $feedLast = $feedService->getFeedLast($service, $uid);
                         $arr_token = array('access_token' => $token->accessToken, 'secret_token' => $token->secretToken);
                         $arr_token['lastFeedTimestamp'] = 0;
                         if ($feedLast) {
                             $arr_token['lastFeedTimestamp'] = $feedLast['timestamp'];
                         }
                         $arr_token['limit'] = $configs['max_' . $service . '_get_feed'];
                         $arr_token['uid'] = $uid;
                         $arr_token['type'] = 'user';
                         $activities = $obj->getActivity($arr_token);
                         if ($activities != null) {
                             $obj->insertFeeds(array('activities' => $activities, 'user_id' => $token->userId, 'timestamp' => $arr_token['lastFeedTimestamp'], 'access_token' => $token->accessToken, 'secret_token' => $token->secretToken, 'uid' => $uid));
                         }
                         $queue->lastRun = date('Y-m-d H:i:s');
                         YNSOCIALBRIDGE_BOL_QueueService::getInstance()->save($queue);
                         echo ucfirst($service) . ": " . $token->uid . ": Get feed successfully!";
                         echo " <br/>  ";
                     }
                     OW_User::getInstance()->logout();
                 }
                 break;
             default:
                 break;
         }
     }
 }
Пример #6
0
 public function connect()
 {
     try {
         // if ( !OW::getUser()->isAuthorized('ynsocialstream', 'get_feed') )
         // {
         // $this->setTemplate(OW::getPluginManager()->getPlugin('base')->getCtrlViewDir() . 'authorization_failed.html');
         // return;
         // }
         //get provider
         $provider = $_POST['service'];
         $oxUrl = $_POST['url'];
         if (!isset($provider) || $provider == '') {
             throw new InvalidArgumentException('Invalid parameter provider');
             exit;
         }
         if (in_array($provider, array('facebook', 'twitter', 'linkedin'))) {
             $core = new YNSOCIALSTREAM_CLASS_Core();
             if (!$core->checkSocialBridgePlugin($provider)) {
                 exit("invalid url");
                 //OW::getFeedback()->warning(OW::getLanguage() -> text('ynsocialstream', 'selected_fail'));
                 //$this->redirect($importUrl);
                 throw new InvalidArgumentException('Not find social bridge plug-in');
                 exit;
             }
             $viewer_id = OW::getUser()->getId();
             $core = new YNSOCIALBRIDGE_CLASS_Core();
             //get facebook or twitter or linkedin token
             $obj = $core->getInstance($provider);
             $values = array('service' => $provider, 'userId' => $viewer_id);
             $token = $obj->getToken($values);
             $callbackUrl = OW::getRouter()->urlForRoute('ynsocialstream-get-feed');
             $url = NULL;
             switch ($provider) {
                 case 'facebook':
                     if ($token && $token->accessToken) {
                         $_SESSION['socialbridge_session']['facebook']['access_token'] = $token->accessToken;
                         $url = $callbackUrl . '?service=facebook' . '&url=' . $oxUrl;
                         $uid = $obj->getOwnerId(array('access_token' => $_SESSION['socialbridge_session']['facebook']['access_token']));
                         $permissions = $obj->hasPermission(array('uid' => $uid, 'access_token' => $_SESSION['socialbridge_session']['facebook']['access_token']));
                         if (empty($permissions[0]['publish_stream']) || empty($permissions[0]['status_update']) || empty($permissions[0]['read_stream'])) {
                             $url = $obj->getConnectUrl() . '?scope=publish_stream,status_update,read_stream' . '&' . http_build_query(array('callbackUrl' => $callbackUrl . '?service=facebook' . '&url=' . $oxUrl));
                         }
                     } else {
                         $url = $obj->getConnectUrl() . '?scope=user_photos,publish_stream,status_update,read_stream' . '&' . http_build_query(array('callbackUrl' => $callbackUrl . '?service=facebook' . '&url=' . $oxUrl));
                     }
                     break;
                 case 'twitter':
                     if ($token && $token->accessToken) {
                         $_SESSION['socialbridge_session']['twitter']['access_token'] = $token->accessToken;
                         $_SESSION['socialbridge_session']['twitter']['secret_token'] = $token->secretToken;
                         $_SESSION['socialbridge_session']['twitter']['owner_id'] = $token->uid;
                         $url = $callbackUrl . '?service=twitter' . '&url=' . $oxUrl;
                     } else {
                         $url = $obj->getConnectUrl() . '?scope=rw_nus' . '&' . http_build_query(array('callbackUrl' => $callbackUrl . '?service=twitter' . '&url=' . $oxUrl));
                     }
                     break;
                 case 'linkedin':
                     if ($token && isset($_SESSION['socialbridge_session']['linkedin']['stream'])) {
                         $url = $callbackUrl . '?service=linkedin' . '&url=' . $oxUrl;
                     } else {
                         $url = $obj->getConnectUrl() . '?scope=rw_nus,r_basicprofile' . '&' . http_build_query(array('callbackUrl' => $callbackUrl . '?service=linkedin' . '&url=' . $oxUrl));
                     }
                     break;
             }
             //echo $url;die;
             exit(json_encode($url));
             //return $this -> redirect($url);
         }
     } catch (Exception $ex) {
         throw $ex;
     }
 }
Пример #7
0
 public function index()
 {
     $this->setPageHeading(OW::getLanguage()->text('ynsocialconnect', 'h_synchronize_user'));
     //	init
     if (OW::getUser()->isAuthenticated()) {
         $this->redirect(OW_URL_HOME);
         //throw new AuthenticateException();
     }
     $oBridge = YNSOCIALCONNECT_CLASS_SocialBridge::getInstance();
     $signupData = OW::getSession()->get(YNSOCIALCONNECT_CTRL_Sync::SESSION_SIGNUP_DATA);
     //	process
     $form = new YNSOCIALCONNECT_CLASS_UserSyncForm();
     $email = $signupData['user']['email'];
     if (!$email) {
         $email = '';
     }
     if (OW::getRequest()->isPost() && $form->isValid($_POST)) {
         $data = $form->getValues();
         if ($data['form_name'] == YNSOCIALCONNECT_CLASS_UserSyncForm::FORM_NAME) {
             if (isset($_POST['no'])) {
                 //	sign up
                 $this->redirect(OW::getRouter()->urlForRoute('base_join'));
             }
             if (isset($_POST['synchronize'])) {
                 //	synchronize with existed account
                 $aUser = BOL_UserService::getInstance()->findByEmail($email);
                 $sUrlRedirect = '';
                 if ($aUser) {
                     ////		update ow_base_remote_auth
                     $authAdapter = new YNSOCIALCONNECT_CLASS_AuthAdapter($signupData['identity'], $signupData['service']);
                     $authAdapter->register($aUser->id);
                     ////	add agent
                     $provider = YNSOCIALCONNECT_BOL_ServicesService::getInstance()->getProvider($signupData['service']);
                     $entity = new YNSOCIALCONNECT_BOL_Agents();
                     $entity->userId = (int) $aUser->id;
                     $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
                     if ($oBridge->hasProvider(strtolower($signupData['service']))) {
                         $core = new YNSOCIALBRIDGE_CLASS_Core();
                         $oProvider = $core->getInstance($signupData['service']);
                         $values = array('service' => strtolower($signupData['service']), 'userId' => $aUser->id);
                         $tokenDto = $oProvider->getToken($values);
                         if (!$tokenDto) {
                             //
                             $obj = $core->getInstance($signupData['service']);
                             $obj->saveToken();
                         }
                     }
                     ////	update statistics with "sync" type
                     YNSOCIALCONNECT_BOL_ServicesService::getInstance()->updateStatistics($signupData['service'], 'sync');
                     ////		add user linking
                     $entityUserlinking = new YNSOCIALCONNECT_BOL_Userlinking();
                     $entityUserlinking->userId = (int) $aUser->id;
                     $entityUserlinking->identity = $signupData['identity'];
                     $entityUserlinking->serviceId = $provider->id;
                     YNSOCIALCONNECT_BOL_UserlinkingService::getInstance()->save($entityUserlinking);
                     ////	clear sign up session
                     OW::getSession()->delete(YNSOCIALCONNECT_CTRL_Sync::SESSION_SIGNUP_DATA);
                     ////	redirect
                     $authResult = OW::getUser()->authenticate($authAdapter);
                     if ($authResult->isValid()) {
                         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;
                         }
                         $this->redirect($sUrlRedirect);
                     } else {
                         $this->redirect(OW_URL_HOME);
                     }
                 }
             }
         }
     }
     // 	end
     //// 	clear session
     if (isset($_SESSION['socialbridge_session'][$signupData['service']])) {
         unset($_SESSION['socialbridge_session'][$signupData['service']]);
     }
     $this->addForm($form);
     $this->assign('email', $email);
     $this->assign('question', OW::getLanguage()->text('ynsocialconnect', 'txt_sync_question', array('email' => $email)));
 }
Пример #8
0
 public function disconnect()
 {
     $serviceName = $_REQUEST['service'];
     $core = new YNSOCIALBRIDGE_CLASS_Core();
     //clear session
     if (isset($_SESSION['socialbridge_session'][$serviceName])) {
         unset($_SESSION['socialbridge_session'][$serviceName]);
     }
     //remove token
     $obj = $core->getInstance($serviceName);
     $values = array('service' => $serviceName, 'userId' => OW::getUser()->getId());
     $tokenDto = $obj->getToken($values);
     if ($tokenDto) {
         YNSOCIALBRIDGE_BOL_TokenService::getInstance()->delete($tokenDto);
     }
     $this->redirect(OW::getRouter()->urlForRoute('ynsocialbridge-connects'));
 }
Пример #9
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);
 }
Пример #10
0
 public function invite()
 {
     if (!OW::getUser()->isAuthenticated()) {
         throw new AuthenticateException();
     }
     if (!OW::getUser()->isAuthorized('yncontactimporter', 'invite')) {
         $this->setTemplate(OW::getPluginManager()->getPlugin('base')->getCtrlViewDir() . 'authorization_failed.html');
         return;
     }
     if (OW::getRequest()->isPost()) {
         try {
             //start invite
             $values = $_POST;
             $provider = $values['provider'];
             $userId = OW::getUser()->getId();
             $selected_contacts = array();
             $max_invitation = OW::getConfig()->getValue('yncontactimporter', 'max_invite_per_times');
             if (!$max_invitation) {
                 $max_invitation = 10;
             }
             $aFriendIdSelected = explode(',', $values['friendIds']);
             $aFriendNameSelected = explode(',', $values['friendNames']);
             foreach ($aFriendIdSelected as $key => $val) {
                 if ($val) {
                     if ($provider == "myspace") {
                         $user_id = $val;
                         $strpos = strpos($user_id, 'friendid=');
                         if ($strpos) {
                             $user_id = substr($user_id, $strpos + 9);
                         }
                         $selected_contacts[$user_id] = $aFriendNameSelected[$key];
                     } else {
                         $selected_contacts[$val] = $aFriendNameSelected[$key];
                     }
                     if (--$max_invitation < 1) {
                         break;
                     }
                 }
             }
             if (count($selected_contacts) == 0) {
                 OW::getFeedback()->warning(OW::getLanguage()->text('yncontactimporter', 'no_contact_selected'));
                 $this->redirect(OW::getRouter()->urlForRoute('yncontactimporter-import'));
             }
             // ADD INVITE HERE
             $message = $values['message'];
             $message = trim($message);
             if (is_array($selected_contacts) && !empty($selected_contacts)) {
                 $link = OW::getRequest()->buildUrlQueryString(OW::getRouter()->urlForRoute('yncontactimporter-user-join'), array('refId' => $userId));
                 $obj = null;
                 if (in_array($provider, array('facebook', 'twitter', 'linkedin'))) {
                     $core = new YNSOCIALBRIDGE_CLASS_Core();
                     $obj = $core->getInstance($provider);
                     $tokenDto = null;
                     if (empty($_SESSION['socialbridge_session'][$provider])) {
                         $values = array('service' => $provider, 'userId' => OW::getUser()->getId());
                         $tokenDto = $obj->getToken($values);
                     }
                 }
                 switch ($values['provider']) {
                     case 'twitter':
                         if (!empty($_SESSION['socialbridge_session'][$provider]) || $tokenDto) {
                             if ($tokenDto) {
                                 $_SESSION['socialbridge_session'][$provider]['access_token'] = $tokenDto->accessToken;
                                 $_SESSION['socialbridge_session'][$provider]['secret_token'] = $tokenDto->secretToken;
                                 $_SESSION['socialbridge_session'][$provider]['owner_id'] = $tokenDto->uid;
                             }
                             $params = $_SESSION['socialbridge_session'][$provider];
                             $params['list'] = $selected_contacts;
                             $params['link'] = $link;
                             $params['message'] = $message;
                             $params['user_id'] = OW::getUser()->getId();
                             $params['uid'] = $_SESSION['socialbridge_session'][$provider]['owner_id'];
                             $obj->sendInvites($params);
                             YNCONTACTIMPORTER_BOL_InvitationService::getInstance()->addInvitations($userId, 'social', $values['provider'], $selected_contacts, $message);
                         }
                         break;
                     case 'linkedin':
                         if (!empty($_SESSION['socialbridge_session'][$provider]) || $tokenDto) {
                             if ($tokenDto) {
                                 $_SESSION['socialbridge_session'][$provider]['access_token'] = $tokenDto->accessToken;
                                 $_SESSION['socialbridge_session'][$provider]['secret_token'] = $tokenDto->secretToken;
                             }
                             $params = $_SESSION['socialbridge_session'][$provider];
                             $params['list'] = $selected_contacts;
                             $params['link'] = $link;
                             $params['message'] = $message;
                             $params['user_id'] = OW::getUser()->getId();
                             $params['uid'] = $obj->getOwnerId($_SESSION['socialbridge_session'][$provider]);
                             $obj->sendInvites($params);
                             YNCONTACTIMPORTER_BOL_InvitationService::getInstance()->addInvitations($userId, 'social', $values['provider'], $selected_contacts, $message);
                         }
                         break;
                     case 'facebook':
                         if (!empty($_SESSION['socialbridge_session'][$provider]) || $tokenDto) {
                             if ($tokenDto) {
                                 $_SESSION['socialbridge_session'][$provider]['access_token'] = $tokenDto->accessToken;
                             }
                             $params['list'] = $selected_contacts;
                             $params['link'] = $link;
                             $params['message'] = $message;
                             $params['uid'] = $obj->getOwnerId(array('access_token' => $_SESSION['socialbridge_session']['facebook']['access_token']));
                             $params['user_id'] = OW::getUser()->getId();
                             $params['access_token'] = $_SESSION['socialbridge_session']['facebook']['access_token'];
                             $obj->sendInvites($params);
                             YNCONTACTIMPORTER_BOL_InvitationService::getInstance()->addInvitations($userId, 'social', $values['provider'], $selected_contacts, $message);
                         }
                         break;
                         // Send mail with oxwall mail
                     // Send mail with oxwall mail
                     case 'gmail':
                     case 'yahoo':
                     case 'hotmail':
                     case 'mail2world':
                     case 'File CSV':
                         $displayName = BOL_UserService::getInstance()->getDisplayName($userId);
                         $vars = array('inviter' => $displayName, 'siteName' => OW::getConfig()->getValue('base', 'site_name'), 'customMessage' => $message);
                         foreach ($selected_contacts as $email => $name) {
                             $vars['siteInviteURL'] = $link;
                             $mail = OW::getMailer()->createMail();
                             $mail->setSubject(OW::getLanguage()->text('yncontactimporter', 'mail_email_invite_subject', $vars));
                             $mail->setHtmlContent(OW::getLanguage()->text('yncontactimporter', 'mail_email_invite_msg_html', $vars));
                             $mail->setTextContent(OW::getLanguage()->text('yncontactimporter', 'mail_email_invite_msg_txt', $vars));
                             $mail->addRecipientEmail($email);
                             YNCONTACTIMPORTER_BOL_PendingService::getInstance()->savePending($mail);
                         }
                         YNCONTACTIMPORTER_BOL_InvitationService::getInstance()->addInvitations($userId, 'email', $values['provider'], $selected_contacts, $message);
                         break;
                 }
             }
             unset($_SESSION['ynfriends_checked']);
             // END INVITE
             OW::getFeedback()->info(OW::getLanguage()->text('yncontactimporter', 'invite_successfully'));
             $this->redirect(OW::getRouter()->urlForRoute('yncontactimporter-import'));
             exit;
         } catch (Exception $e) {
             echo $e->getMessage() . $e->getFile() . $e->getLine();
             die;
             OW::getFeedback()->warning(OW::getLanguage()->text('yncontactimporter', 'invite_failed'));
             $this->redirect(OW::getRouter()->urlForRoute('yncontactimporter-import'));
             exit;
         }
     } else {
         $this->redirect(OW::getRouter()->urlForRoute('yncontactimporter-import'));
         exit;
     }
 }
Пример #11
0
 public function __construct($providerId)
 {
     parent::__construct();
     $provider = YNCONTACTIMPORTER_BOL_ProviderService::getInstance()->findProviderById($providerId);
     $importUrl = OW::getRouter()->urlForRoute('yncontactimporter-import');
     $des = "";
     if ($provider->type == 'social') {
         $des = OW::getLanguage()->text('yncontactimporter', 'social_require', array('provider' => ucfirst($provider->name)));
     } else {
         $des = OW::getLanguage()->text('yncontactimporter', 'email_login', array('provider' => ucfirst($provider->name)));
     }
     $this->assign("des", $des);
     //check permission to get contacts
     $url = "";
     if (in_array($provider->name, array('facebook', 'twitter', 'linkedin'))) {
         $core = new YNSOCIALBRIDGE_CLASS_Core();
         $obj = $core->getInstance($provider->name);
         $tokenDto = null;
         if (empty($_SESSION['socialbridge_session'][$provider->name])) {
             $values = array('service' => $provider->name, 'userId' => OW::getUser()->getId());
             $tokenDto = $obj->getToken($values);
         }
     }
     switch ($provider->name) {
         case 'facebook':
             if (!empty($_SESSION['socialbridge_session'][$provider->name]) || $tokenDto) {
                 if ($tokenDto) {
                     $_SESSION['socialbridge_session'][$provider->name]['access_token'] = $tokenDto->accessToken;
                 }
                 $uid = $obj->getOwnerId(array('access_token' => $_SESSION['socialbridge_session']['facebook']['access_token']));
                 $permissions = $obj->hasPermission(array('uid' => $uid, 'access_token' => $_SESSION['socialbridge_session'][$provider->name]['access_token']));
                 if (empty($permissions[0]['publish_stream']) || empty($permissions[0]['xmpp_login'])) {
                     $url = $obj->getConnectUrl() . '?scope=publish_stream,xmpp_login' . '&' . http_build_query(array('callbackUrl' => $importUrl));
                 } else {
                     $url = $importUrl . "?service=" . $provider->name;
                 }
             } else {
                 $url = $obj->getConnectUrl() . '?scope=publish_stream,xmpp_login' . '&' . http_build_query(array('callbackUrl' => $importUrl));
             }
             break;
         case 'twitter':
             if (!empty($_SESSION['socialbridge_session'][$provider->name]) || $tokenDto) {
                 if ($tokenDto) {
                     $_SESSION['socialbridge_session'][$provider->name]['access_token'] = $tokenDto->accessToken;
                     $_SESSION['socialbridge_session'][$provider->name]['secret_token'] = $tokenDto->secretToken;
                     $_SESSION['socialbridge_session'][$provider->name]['owner_id'] = $tokenDto->uid;
                 }
                 $url = $importUrl . "?service=" . $provider->name;
             } else {
                 $url = $obj->getConnectUrl() . '?' . http_build_query(array('callbackUrl' => $importUrl));
             }
             break;
         case 'linkedin':
             if (!empty($_SESSION['socialbridge_session'][$provider->name]) || $tokenDto) {
                 if ($tokenDto) {
                     $_SESSION['socialbridge_session'][$provider->name]['access_token'] = $tokenDto->accessToken;
                     $_SESSION['socialbridge_session'][$provider->name]['secret_token'] = $tokenDto->secretToken;
                 }
                 $url = $importUrl . "?service=" . $provider->name;
             } else {
                 $url = $obj->getConnectUrl() . '?scope=r_network,w_messages&' . http_build_query(array('callbackUrl' => $importUrl));
             }
             break;
         case 'hotmail':
             $url = "http://openid.younetid.com/v3/contact/index.php?service=live&login=1&" . http_build_query(array('callbackUrl' => $importUrl . "?service=" . $provider->name));
             break;
         default:
             $url = "http://openid.younetid.com/v3/contact/index.php?service=" . $provider->name . "&" . http_build_query(array('callbackUrl' => $importUrl . "?service=" . $provider->name));
             break;
     }
     $this->assign('importUrl', $url);
 }
Пример #12
0
 public function __construct($pluginKey, $entityType, $entityId)
 {
     // remove newfeeds cookie if has
     setcookie('ynsocialpublisher_feed_data_' . $entityId, '', -1, '/');
     parent::__construct();
     $userId = OW::getUser()->getId();
     $language = OW::getLanguage();
     $service = YNSOCIALPUBLISHER_BOL_Service::getInstance();
     $core = YNSOCIALPUBLISHER_CLASS_Core::getInstance();
     // user setting
     $userSetting = $service->getUsersetting($userId, $pluginKey);
     $this->assign('userSetting', $userSetting);
     // avatar
     $avatar = BOL_AvatarService::getInstance()->getAvatarUrl($userId);
     if (empty($avatar)) {
         $avatar = BOL_AvatarService::getInstance()->getDefaultAvatarUrl();
     }
     $this->assign('avatar', $avatar);
     // default status
     $defaultStatus = $core->getDefaultStatus($pluginKey, $entityType, $entityId);
     $this->assign('defaultStatus', $defaultStatus);
     // entity url
     $url = $core->getUrl($pluginKey, $entityType, $entityId);
     $this->assign('url', $url);
     // title
     $title = $core->getTitle($pluginKey, $entityType, $entityId);
     $this->assign('title', $title);
     // -- connect each provider to get data
     // callbackUrl
     $callbackUrl = OW::getRouter()->urlForRoute('ynsocialbridge-connects');
     $coreBridge = new YNSOCIALBRIDGE_CLASS_Core();
     $arrObjServices = array();
     foreach (array('facebook', 'twitter', 'linkedin') as $serviceName) {
         $profile = null;
         $connect_url = "";
         $access_token = "";
         $scope = '';
         $objService = array();
         //check enable API
         $clientConfig = YNSOCIALBRIDGE_BOL_ApisettingService::getInstance()->getConfig($serviceName);
         if ($clientConfig) {
             $obj = $coreBridge->getInstance($serviceName);
             $values = array('service' => $serviceName, 'userId' => OW::getUser()->getId());
             //$tokenDto = $obj -> getToken($values);
             //print_r($_SESSION['socialbridge_session'][$serviceName]);die;
             $disconnect_url = OW::getRouter()->urlForRoute('ynsocialbridge-disconnect') . "?service=" . $serviceName;
             if (!empty($_SESSION['socialbridge_session'][$serviceName]['access_token'])) {
                 if ($serviceName == 'facebook') {
                     $access_token = $_SESSION['socialbridge_session'][$serviceName]['access_token'];
                     //check permission
                     $me = $obj->getOwnerInfo(array('access_token' => $access_token));
                     $uid = $me['id'];
                     $permissions = $obj->hasPermission(array('uid' => $uid, 'access_token' => $access_token));
                     if ($permissions) {
                         if (empty($permissions[0]['publish_stream']) || empty($permissions[0]['status_update'])) {
                             $scope = 'publish_stream,status_update';
                             //$scope = "email,user_about_me,user_birthday,user_hometown,user_interests,user_location,user_photos,user_website,publish_stream,status_update";
                         } else {
                             try {
                                 $profile = $obj->getOwnerInfo($_SESSION['socialbridge_session'][$serviceName]);
                             } catch (Exception $e) {
                                 $profile = null;
                             }
                         }
                     }
                 } else {
                     $profile = $obj->getOwnerInfo($_SESSION['socialbridge_session'][$serviceName]);
                 }
             } else {
                 $scope = "";
                 switch ($serviceName) {
                     case 'facebook':
                         //$scope = "email,user_about_me,user_birthday,user_hometown,user_interests,user_location,user_photos,user_website";
                         $scope = 'publish_stream,status_update';
                         break;
                     case 'twitter':
                         $scope = "";
                         break;
                     case 'linkedin':
                         $scope = "r_basicprofile,rw_nus,r_network,w_messages";
                         break;
                 }
             }
             $connect_url = $obj->getConnectUrl() . "?scope=" . $scope . "&" . http_build_query(array('callbackUrl' => $callbackUrl, 'isFromSocialPublisher' => 1, 'pluginKey' => $pluginKey, 'entityType' => $entityType, 'entityId' => $entityId));
             $objService['has_config'] = 1;
         } else {
             $objService['has_config'] = 0;
         }
         $objService['serviceName'] = $serviceName;
         $objService['connectUrl'] = $connect_url;
         $objService['disconnectUrl'] = $disconnect_url;
         $objService['profile'] = $profile;
         $objService['logo'] = OW::getPluginManager()->getPlugin('ynsocialpublisher')->getStaticUrl() . "img/" . $serviceName . ".png";
         $arrObjServices[$serviceName] = $objService;
     }
     //print_r($userSetting);
     //print_r($arrObjServices);
     $this->assign('arrObjServices', $arrObjServices);
     // create form
     $formUrl = OW::getRouter()->urlFor('YNSOCIALPUBLISHER_CTRL_Ynsocialpublisher', 'ajaxPublish');
     $form = new Form('ynsocialpubisher_share');
     $form->setAction($formUrl);
     $form->setAjax();
     // -- hidden fields
     // for plugin key
     $pluginKeyHiddenField = new HiddenField('ynsocialpublisher_pluginKey');
     $pluginKeyHiddenField->setValue($pluginKey);
     $form->addElement($pluginKeyHiddenField);
     // for entity id
     $entityIdHiddenField = new HiddenField('ynsocialpublisher_entityId');
     $entityIdHiddenField->setValue($entityId);
     $form->addElement($entityIdHiddenField);
     // for entity type
     $entityTypeHiddenField = new HiddenField('ynsocialpublisher_entityType');
     $entityTypeHiddenField->setValue($entityType);
     $form->addElement($entityTypeHiddenField);
     // Status - textarea
     $status = new Textarea('ynsocialpublisher_status');
     $status->setValue($defaultStatus);
     $form->addElement($status);
     // Options - radio buttons
     $options = new RadioField('ynsocialpublisher_options');
     $options->setRequired();
     $options->addOptions(array('0' => $language->text('ynsocialpublisher', 'ask'), '1' => $language->text('ynsocialpublisher', 'auto'), '2' => $language->text('ynsocialpublisher', 'not_ask')));
     $options->setValue($userSetting['option']);
     $form->addElement($options);
     // Providers - checkboxes
     foreach (array('facebook', 'twitter', 'linkedin') as $provider) {
         if (in_array($provider, $userSetting['adminProviders']) && $arrObjServices[$provider]['has_config']) {
             $providerField = new CheckboxField('ynsocialpublisher_' . $provider);
             $form->addElement($providerField);
         }
     }
     // add js action to form
     $form->bindJsFunction(Form::BIND_SUCCESS, 'function(data){if( data.result ){OW.info(data.message);OWActiveFloatBox.close();}else{OW.error(data.message);}}');
     // submit button
     $submit = new Submit('submit');
     $submit->setValue(OW::getLanguage()->text('ynsocialpublisher', 'submit_label'));
     $form->addElement($submit);
     $this->addForm($form);
     // assign to view
     $this->assign('formUrl', $formUrl);
 }
Пример #13
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);
         }
     }
 }
Пример #14
0
 public function getReturnUrl($sService, $sCallbackUrl = '')
 {
     $oBridge = YNSOCIALCONNECT_CLASS_SocialBridge::getInstance();
     $sUrl = '';
     if ($oBridge->hasProvider($sService)) {
         $core = new YNSOCIALBRIDGE_CLASS_Core();
         if (in_array(strtolower($sService), array('facebook', 'twitter', 'linkedin'))) {
             //check enable API
             $clientConfig = YNSOCIALBRIDGE_BOL_ApisettingService::getInstance()->getConfig($sService);
             if ($clientConfig) {
                 $obj = $core->getInstance($sService);
                 $tokenDto = null;
                 // if (empty($_SESSION['socialbridge_session'][$sService]))
                 // {
                 // $values = array(
                 // 'service' => $sService,
                 // 'userId' => OW::getUser() -> getId()
                 // );
                 // $tokenDto = $obj -> getToken($values);
                 // }
                 $scope = "";
                 switch ($sService) {
                     case 'facebook':
                         $scope = "email,user_about_me,user_birthday,user_hometown,user_interests,user_location,user_photos,user_website";
                         if (!empty($_SESSION['socialbridge_session'][$sService]['access_token']) || $tokenDto) {
                             if ($tokenDto) {
                                 $_SESSION['socialbridge_session'][$sService]['access_token'] = $tokenDto->accessToken;
                             }
                             $uid = $obj->getOwnerId(array('access_token' => $_SESSION['socialbridge_session']['facebook']['access_token']));
                             $permissions = $obj->hasPermission(array('uid' => $uid, 'access_token' => $_SESSION['socialbridge_session'][$sService]['access_token']));
                             // @formatter:off
                             if (empty($permissions[0]['email']) || empty($permissions[0]['user_about_me']) || empty($permissions[0]['user_birthday']) || empty($permissions[0]['user_hometown']) || empty($permissions[0]['user_interests']) || empty($permissions[0]['user_location']) || empty($permissions[0]['user_photos']) || empty($permissions[0]['user_website'])) {
                                 $connect_url = $obj->getConnectUrl() . '?scope=' . $scope . '&' . http_build_query(array('callbackUrl' => $sCallbackUrl));
                             } else {
                                 $connect_url = $sCallbackUrl;
                             }
                             // @formatter:on
                         } else {
                             $connect_url = $obj->getConnectUrl() . '?scope=' . $scope . '&' . http_build_query(array('callbackUrl' => $sCallbackUrl));
                         }
                         break;
                     case 'twitter':
                         $scope = "";
                         if (!empty($_SESSION['socialbridge_session'][$sService]['access_token']) || $tokenDto) {
                             $connect_url = $sCallbackUrl;
                         } else {
                             $connect_url = $obj->getConnectUrl() . "?scope=" . $scope . "&" . http_build_query(array('callbackUrl' => $sCallbackUrl));
                         }
                         break;
                     case 'linkedin':
                         $scope = "r_basicprofile,rw_nus,r_network,w_messages";
                         if (!empty($_SESSION['socialbridge_session'][$sService]['access_token']) || $tokenDto) {
                             $connect_url = $sCallbackUrl;
                         } else {
                             $connect_url = $obj->getConnectUrl() . "?scope=" . $scope . "&" . http_build_query(array('callbackUrl' => $sCallbackUrl));
                         }
                         break;
                 }
                 $sUrl = $connect_url;
             }
         }
     } else {
         $sUrl = SOCIALCONNECT_CENTRALIZE_URL . '?' . http_build_query(array('service' => $sService, 'returnurl' => $sCallbackUrl));
     }
     return $sUrl;
 }
Пример #15
0
 /**
  * constructor.
  */
 public function __construct()
 {
     if (!OW::getPluginManager()->isPluginActive('ynsocialbridge')) {
         return;
     }
     $socialBridgeObj = new YNSOCIALBRIDGE_CLASS_Core();
     $this->_facebookAPI = $socialBridgeObj->getInstance('facebook');
 }
Пример #16
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
 }
Пример #17
0
 /**
  * Insert feeds
  *
  * @param array(activities, viewer, timestamp)
  * @return bool
  */
 public function insertFeeds($params = array())
 {
     $this->_objPlugin->setAccessToken($params['access_token']);
     $user_id = $params['user_id'];
     $uid = $params['uid'];
     $activities = $params['activities'];
     //init Social stream feeds service
     $streamFeedService = YNSOCIALSTREAM_BOL_SocialstreamFeedService::getInstance();
     $now = time();
     foreach ($activities as $activity) {
         if (strtotime($activity['created_time']) > $params['timestamp']) {
             //insert feed to social stream feed
             try {
                 $core = new YNSOCIALBRIDGE_CLASS_Core();
                 $obj = $core->getInstance('facebook');
                 $actor = $obj->getUserInfo(array('uid' => $activity['from']['id']));
                 $attachment['name'] = @$activity['name'];
                 $attachment['src'] = @$activity['picture'];
                 $attachment['href'] = @$activity['link'];
                 $attachment['description'] = @$activity['description'];
                 $type = $activity['type'];
                 if (!isset($attachment['description']) || $attachment['description'] == "") {
                     if (isset($attachment['caption']) && $attachment['caption'] != "") {
                         $attachment['description'] = $attachment['caption'];
                     } else {
                         $attachment['description'] = "<a href = 'http://www.facebook.com' target='_blank'>www.facebook.com</a>";
                     }
                 }
                 $description = "";
                 if (isset($activity['message']) && $activity['message'] != "") {
                     $description = $activity['message'];
                 } elseif (isset($activity['story']) && $activity['story'] != "") {
                     $description = $activity['story'];
                 }
                 $regex = '@((https?://)?([-\\w]+\\.[-\\w\\.]+)+\\w(:\\d+)?(/([-\\w/_\\.]*(\\?\\S+)?)?)*)@';
                 $description = preg_replace($regex, '<a href="$1">$1</a>', $description);
                 if (isset($activity['place'])) {
                     $place = $activity['place'];
                     $place_link = "<a href = 'http://www.facebook.com/" . $place['id'] . "' target='_blank'>" . $place['name'] . "</a>";
                     $description .= ' - at ' . $place_link;
                 }
                 $values = array();
                 $values = array_merge(array('provider' => 'facebook', 'user_id' => $user_id, 'uid' => $uid, 'timestamp' => strtotime($activity['created_time']), 'update_key' => $activity['id'], 'update_type' => $type, 'photo_url' => $attachment['src'], 'title' => $attachment['name'], 'href' => $attachment['href'], 'description' => $attachment['description'], 'friend_id' => $activity['from']['id'], 'friend_name' => $actor['name'], 'friend_href' => $actor['link'], 'friend_description' => strip_tags($description), 'privacy' => json_encode($activity['privacy'])));
                 // save feed
                 $streamFeedDto = $streamFeedService->parseFeedArray($values);
                 $streamFeedService->saveFeed($streamFeedDto);
                 //attachment todo
                 $oembed = null;
                 $url = null;
                 $attachId = null;
                 $feed = "gets <a href=\"" . $values['friend_href'] . "\" target=\"_blank\">" . $values['friend_name'] . "'s</a>  feed from Facebook. <span class=\"feed_item_bodytext\">" . $values['friend_description'] . "</span>[ph:attachment]";
                 //$feed = $language->text('ynsocialstream', 'gets ')."<a href=\"".$values['friend_href']."\" target=\"_blank\">".$values['friend_name']."'s</a>".$language->text('ynsocialstream', '  feed from Facebook.')."<span class=\"feed_item_bodytext\">".$values['friend_description']."</span>[ph:attachment]";
                 //get privacy
                 $privacy = 'everybody';
                 $configs = OW::getConfig()->getValues('ynsocialstream');
                 if (isset($configs['auth_fb_' . $user_id])) {
                     $privacy = $configs['auth_fb_' . $user_id];
                 }
                 if (strlen($values['photo_url']) > 0) {
                     $oembed = array('uid' => 'nfa-feed1', 'type' => 'photo', 'genId' => null, 'thumbnail_url' => $values['photo_url'], 'href' => $values['href'], 'title' => $values['title'], 'description' => $values['description']);
                 }
                 if (!empty($oembed)) {
                     $event = new OW_Event('feed.action', array('pluginKey' => 'newsfeed', 'entityType' => 'action', 'entityId' => $streamFeedDto->id, 'userId' => $user_id, 'time' => $now++, 'privacy' => $privacy), array('string' => $feed, 'attachment' => array('oembed' => $oembed, 'url' => $url, 'attachId' => $attachId)));
                 } else {
                     $event = new OW_Event('feed.action', array('pluginKey' => 'newsfeed', 'entityType' => 'action', 'time' => $now++, 'entityId' => $streamFeedDto->id, 'userId' => $user_id, 'privacy' => $privacy), array('string' => $feed));
                 }
                 OW::getEventManager()->trigger($event);
             } catch (Exception $e) {
                 throw new InvalidArgumentException('Can not insert feed from Facebook in social stream feed');
                 exit;
             }
         }
     }
 }