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 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 __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); }