示例#1
0
文件: init.php 项目: vazahat/dudex
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 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;
 }
示例#3
0
文件: core.php 项目: vazahat/dudex
 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;
 }
示例#4
0
文件: popup.php 项目: vazahat/dudex
 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);
 }