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(); } } } } } }
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]; }
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; }
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; }
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; } } }
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; } }
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))); }
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')); }
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 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; } }
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); }
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); }
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); } } }
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; }
/** * constructor. */ public function __construct() { if (!OW::getPluginManager()->isPluginActive('ynsocialbridge')) { return; } $socialBridgeObj = new YNSOCIALBRIDGE_CLASS_Core(); $this->_facebookAPI = $socialBridgeObj->getInstance('facebook'); }
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 }
/** * 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; } } } }