public function index() { $language = OW::getLanguage(); $this->setPageHeading($language->text('ynsocialpublisher', 'admin_config')); $this->setPageHeadingIconClass('ow_ic_picture'); $item = new BASE_MenuItem(); $item->setLabel($language->text('ynsocialpublisher', 'admin_menu_general')); $item->setUrl(OW::getRouter()->urlForRoute('ynsocialpublisher.admin')); $item->setKey('general'); $item->setIconClass('ow_ic_gear_wheel'); $item->setOrder(0); $item->setActive(true); $menu = new BASE_CMP_ContentMenu(array($item)); $this->addComponent('menu', $menu); $service = YNSOCIALPUBLISHER_BOL_Service::getInstance(); $plugins = $service->getEnabledPlugins(); $this->assign('plugins', $plugins); $form_url = OW::getRouter()->urlForRoute('ynsocialpublisher.admin'); $this->assign('form_url', $form_url); if (OW::getRequest()->isPost()) { // get plugins data from post $params = $_POST['params']; foreach ($params as $key => $settings) { if (!isset($settings['providers'])) { $settings['providers'] = array(); } OW::getConfig()->saveConfig('ynsocialpublisher', $key, json_encode($settings)); } OW::getFeedback()->info($language->text('ynsocialpublisher', 'settings_updated')); $this->redirect($form_url); } }
/** * Returns an instance of class (singleton pattern implementation). * * @return YNSOCIALPUBLISHER_BOL_Service */ public static function getInstance() { if (self::$classInstance === null) { self::$classInstance = new self(); } return self::$classInstance; }
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 __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 ajaxPublish() { if (!OW::getRequest()->isAjax()) { throw new Redirect404Exception(); } if (OW::getRequest()->isPost()) { $language = OW::getLanguage(); try { $preText = 'ynsocialpublisher_'; $pluginKey = $_POST["{$preText}pluginKey"]; $entityId = $_POST["{$preText}entityId"]; $entityType = $_POST["{$preText}entityType"]; $status = !empty($_POST["{$preText}status"]) ? $_POST["{$preText}status"] : ''; $options = $_POST["{$preText}options"]; $facebook = isset($_POST["{$preText}facebook"]) ? $_POST["{$preText}facebook"] : ''; $twitter = isset($_POST["{$preText}twitter"]) ? $_POST["{$preText}twitter"] : ''; $linkedin = isset($_POST["{$preText}linkedin"]) ? $_POST["{$preText}linkedin"] : ''; $providers = array(); if ($facebook == 'on') { $providers[] = 'facebook'; } if ($twitter == 'on') { $providers[] = 'twitter'; } if ($linkedin == 'on') { $providers[] = 'linkedin'; } $result = array(); if (count($providers) > 0) { $result = $this->processAjaxPublish($pluginKey, $entityId, $entityType, $providers, $status); } else { //exit(json_encode(array('result' => false, 'message' => $language->text('ynsocialpublisher','ajax_error_providers')))); } // save user settings $userId = OW::getUser()->getId(); $service = YNSOCIALPUBLISHER_BOL_Service::getInstance(); $usersettingDto = $service->findByUserIdOrKey($userId, $pluginKey); if (!$usersettingDto) { $usersettingDto = new YNSOCIALPUBLISHER_BOL_Usersetting(); $usersettingDto->userId = $userId; $usersettingDto->key = $pluginKey; } $usersettingDto->option = $options; $usersettingDto->providers = json_encode($providers); $service->saveOrUpdateUsersetting($usersettingDto); } catch (LogicException $e) { exit(json_encode(array('result' => false, 'message' => $language->text('ynsocialpublisher', 'ajax_error')))); } $message = implode(';', $result); if (empty($message)) { exit(json_encode(array('result' => true, 'message' => $language->text('ynsocialpublisher', 'ajax_successful')))); } else { exit(json_encode(array('result' => true, 'message' => $message))); } exit(json_encode(array())); } exit(json_encode(array())); }