/** * Returns class instance * * @return YNCONTACTIMPORTER_BOL_ProviderService */ public static function getInstance() { if (!isset(self::$classInstance)) { self::$classInstance = new self(); } return self::$classInstance; }
public function __construct(BASE_CLASS_WidgetParameter $params) { parent::__construct(); if (!OW::getUser()->isAuthorized('yncontactimporter', 'invite')) { $this->setVisible(false); return; } //load css $cssUrl = OW::getPluginManager()->getPlugin('yncontactimporter')->getStaticCssUrl() . 'yncontactimporter.css'; OW::getDocument()->addStyleSheet($cssUrl); $limit = (int) $params->customParamList['count']; if (!$limit) { $limit = 5; } $providers = YNCONTACTIMPORTER_BOL_ProviderService::getInstance()->getAllProviders(array('limit' => $limit, 'enable' => 1)); $arr_providers = array(); foreach ($providers as $provider) { if (in_array($provider->name, array('facebook', 'twitter', 'linkedin'))) { $core = new YNCONTACTIMPORTER_CLASS_Core(); if (!$core->checkSocialBridgePlugin($provider->name)) { continue; } } $item = array(); $item['title'] = $provider->title; $item['name'] = $provider->name; $item['id'] = $provider->id; $item['logo'] = OW::getPluginManager()->getPlugin('yncontactimporter')->getStaticUrl() . "img/" . $provider->name . ".png"; $arr_providers[] = $item; } $this->assign('providers', $arr_providers); $this->assign('viewMore', OW::getRouter()->urlForRoute('yncontactimporter-import')); $this->assign('authorization', OW::getLanguage()->text('yncontactimporter', 'authorization')); $this->assign('import_your_contacts', OW::getLanguage()->text('yncontactimporter', 'import_your_contacts')); $this->assign("uploadCSVTitle", OW::getLanguage()->text('yncontactimporter', 'upload_csv_file')); //check show more $this->assign("showMore", 0); if ($limit < 9) { $this->assign("showMore", 1); } //get config $width = '30px'; $height = '30px'; $configs = OW::getConfig()->getValues('yncontactimporter'); if (isset($configs['logo_width'])) { $width = $configs['logo_width'] . "px"; } if (isset($configs['logo_height'])) { $height = $configs['logo_height'] . "px"; } $this->assign("width", $width); $this->assign("height", $height); OW::getLanguage()->importPluginLangs(OW::getPluginManager()->getPlugin('yncontactimporter')->getRootDir() . 'langs.zip', 'yncontactimporter'); }
public function __construct($providerId) { parent::__construct(); $providerEditForm = new YNCONTACTIMPORTER_CLASS_ProviderEditForm($providerId); $this->addForm($providerEditForm); $provider = YNCONTACTIMPORTER_BOL_ProviderService::getInstance()->findProviderById($providerId); $providerEditForm->getElement('id')->setValue($providerId); $providerEditForm->getElement('title')->setValue($provider->title); $providerEditForm->getElement('order')->setValue($provider->order); $providerEditForm->getElement('enable')->setValue($provider->enable); }
/** * Class constructor */ public function __construct($providerId) { parent::__construct('provider-edit-form'); $this->setAjax(true); $this->bindJsFunction(Form::BIND_SUCCESS, 'function(data){if( data.result ){OW.info(data.message);setTimeout(function(){location.reload();}, 1000);}else{OW.error(data.message);}}'); $this->setAction(OW::getRouter()->urlForRoute('yncontactimporter-admin-ajaxEditProvider')); $language = OW::getLanguage(); $provider = YNCONTACTIMPORTER_BOL_ProviderService::getInstance()->findProviderById($providerId); // provider id field $providerIdField = new HiddenField('id'); $providerIdField->setRequired(true); $this->addElement($providerIdField); // provider title $providerTitle = new TextField('title'); $providerTitle->setLabel($language->text('yncontactimporter', 'provider_title')); $providerTitle->setRequired(true); $this->addElement($providerTitle); for ($i = 1; $i <= 10; $i++) { $option[$i] = $i; } // provider order $providerOrder = new Selectbox('order'); $providerOrder->setLabel($language->text('yncontactimporter', 'order')); $providerOrder->addOptions($option); $providerOrder->setHasInvitation(false); $this->addElement($providerOrder); // provider enable $providerEnable = new Selectbox('enable'); $providerEnable->setLabel($language->text('yncontactimporter', 'enabled_disabled')); $providerEnable->addOptions(array(1 => 'Enabled', 0 => 'Disabled')); $providerEnable->setHasInvitation(false); $this->addElement($providerEnable); $submit = new Submit('edit'); $submit->setValue($language->text('yncontactimporter', 'save_btn_label')); $this->addElement($submit); }
public function import() { if (!OW::getUser()->isAuthenticated()) { throw new AuthenticateException(); } if (!OW::getUser()->isAuthorized('yncontactimporter', 'invite')) { $this->setTemplate(OW::getPluginManager()->getPlugin('base')->getCtrlViewDir() . 'authorization_failed.html'); return; } $el = $this->menu->getElement('1'); if ($el) { $el->setActive(true); } OW::getDocument()->setTitle(OW::getLanguage()->text('yncontactimporter', 'meta_title_invite_import')); OW::getDocument()->setDescription(OW::getLanguage()->text('yncontactimporter', 'meta_description_invite_import')); $userId = OW::getUser()->getId(); if (isset($_REQUEST['service']) || OW::getRequest()->isPost()) { //add friends if the email was been used in system if (isset($_REQUEST['task']) && $_REQUEST['task'] == 'do_add') { $service = FRIENDS_BOL_Service::getInstance(); $count_addFriends = 0; $aFriendIdSelected = explode(',', $_POST['friendIds']); foreach ($aFriendIdSelected as $key => $val) { if ($val) { $email = $val; $user = BOL_UserService::getInstance()->findByEmail($email); if ($user && $service->findFriendship($userId, $user->id) === null) { $service->request($userId, $user->id); $this->onRequest($user->id); $count_addFriends++; } } } if ($count_addFriends > 0) { OW::getFeedback()->info(OW::getLanguage()->text('friends', 'feedback_request_was_sent')); } } //end add friends $provider = ''; if (isset($_REQUEST['service'])) { $provider = $_REQUEST['service']; } if (isset($_POST['contact']) && $_POST['contact'] != "") { $provider = "yahoo_google_hotmail_csv"; } $importUrl = OW::getRouter()->urlForRoute('yncontactimporter-import'); $useSocialBridge = 0; $contacts = null; $totalFriends = 0; $totalFriendSearch = 0; $contacts_add = NULL; $maxInvite = 10; $totalIvited = 0; $gmailContacts = ""; $obj = null; if (in_array($provider, array('facebook', 'twitter', 'linkedin'))) { $core = new YNCONTACTIMPORTER_CLASS_Core(); if (!$core->checkSocialBridgePlugin($provider)) { OW::getFeedback()->warning(OW::getLanguage()->text('yncontactimporter', 'selected_fail')); $this->redirect($importUrl); } $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); } $useSocialBridge = 1; $clientConfig = YNSOCIALBRIDGE_BOL_ApisettingService::getInstance()->getConfig($provider); if ($clientConfig) { $api_params = unserialize($clientConfig->apiParams); if (isset($api_params['max_invite_day'])) { $maxInvite = $api_params['max_invite_day']; } } } switch ($provider) { case 'facebook': if (!empty($_SESSION['socialbridge_session'][$provider]['access_token']) || $tokenDto) { if ($tokenDto) { $_SESSION['socialbridge_session'][$provider]['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]['access_token'])); if (empty($permissions[0]['publish_stream']) || empty($permissions[0]['xmpp_login'])) { $this->redirect($importUrl); } else { $friendsInvited = YNCONTACTIMPORTER_BOL_InvitationService::getInstance()->getInvitationsByUserId(array('userId' => $userId, 'provider' => 'facebook')); $arr_invited = array(); foreach ($friendsInvited as $invitation) { $arr_invited[] = $invitation->friendId; } $params = $_SESSION['socialbridge_session'][$provider]; $params['invited'] = $arr_invited; $totalFriends = $obj->getTotalFriends($params); $totalFriendSearch = $totalFriends; $contactPerPage = (int) OW::getConfig()->getValue('yncontactimporter', 'contact_per_page'); $params['limit'] = $contactPerPage; $params['offset'] = 0; if (isset($_REQUEST['search_page_id'])) { $params['offset'] = $contactPerPage * ($_REQUEST['search_page_id'] - 1); } if (isset($_REQUEST['search'])) { $params['search'] = $_REQUEST['search']; $totalFriendSearch = $obj->getTotalFriends($params); } $contacts = $obj->getContacts($params); //get total invited $values = array('uid' => $uid, 'service' => $provider, 'date' => date('Y-m-d')); $totalIvited = $obj->getTotalInviteOfDay($values); } } else { $this->redirect($obj->getConnectUrl() . '?scope=publish_stream,xmpp_login' . '&' . http_build_query(array('callbackUrl' => $importUrl))); } break; case 'twitter': if (!empty($_SESSION['socialbridge_session'][$provider]['access_token']) || $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['user_id'] = $params['owner_id']; $tmp_contacts = $obj->getContacts($params); foreach ($tmp_contacts as $key => $value) { if (!YNCONTACTIMPORTER_BOL_InvitationService::getInstance()->checkInvitedUser($key)) { $contacts[$key] = $value; } } //get total invited $values = array('uid' => $params['user_id'], 'service' => $provider, 'date' => date('Y-m-d')); $totalIvited = $obj->getTotalInviteOfDay($values); } else { $this->redirect($obj->getConnectUrl() . '?' . http_build_query(array('callbackUrl' => $importUrl))); } break; case 'linkedin': if (!empty($_SESSION['socialbridge_session'][$provider]['access_token']) || $tokenDto) { if ($tokenDto) { $_SESSION['socialbridge_session'][$provider]['access_token'] = $tokenDto->accessToken; $_SESSION['socialbridge_session'][$provider]['secret_token'] = $tokenDto->secretToken; } $params = $_SESSION['socialbridge_session'][$provider]; $tmp_contacts = $obj->getContacts($params); foreach ($tmp_contacts as $key => $value) { if (!YNCONTACTIMPORTER_BOL_InvitationService::getInstance()->checkInvitedUser($key)) { $contacts[$key] = $value; } } //get total invited $values = array('uid' => $obj->getOwnerId($params), 'service' => $provider, 'date' => date('Y-m-d')); $totalIvited = $obj->getTotalInviteOfDay($values); } else { $this->redirect($obj->getConnectUrl() . '?scope=r_network,w_messages&' . http_build_query(array('callbackUrl' => $importUrl))); } break; case 'yahoo_google_hotmail_csv': $aContacts = $_POST['contact']; $gmailContacts = $aContacts; $aContacts = urldecode($aContacts); $aContacts = json_decode($aContacts); foreach ($aContacts as $aContact) { //check email if ($user = BOL_UserService::getInstance()->findByEmail($aContact->email)) { $service = FRIENDS_BOL_Service::getInstance(); if ($service->findFriendship($userId, $user->id) === null && $userId != $user->id) { $contacts_add[$aContact->email] = $aContact->name; } } else { if (!YNCONTACTIMPORTER_BOL_InvitationService::getInstance()->checkInvitedUser($aContact->email)) { $contacts[$aContact->email] = $aContact->name; } } } break; } if (count($contacts) == 0) { OW::getFeedback()->warning(OW::getLanguage()->text('yncontactimporter', 'no_contact')); } $this->assign('showContacts', true); //check invite or add friends $component = new YNCONTACTIMPORTER_CMP_InviteFriends(array('contacts' => $contacts, 'totalFriends' => $totalFriends, 'totalFriendSearch' => $totalFriendSearch, 'contacts_add' => $contacts_add, 'provider' => $provider, 'service' => $_REQUEST['service'], 'useSocialBridge' => $useSocialBridge, 'maxInvite' => $maxInvite, 'totalInvited' => $totalIvited, 'gmailContacts' => $gmailContacts)); $this->addComponent('contactImports', $component); } else { $this->assign('showContacts', false); $providers = YNCONTACTIMPORTER_BOL_ProviderService::getInstance()->getAllProviders(array('enable' => 1)); $arr_providers = array(); foreach ($providers as $provider) { if (in_array($provider->name, array('facebook', 'twitter', 'linkedin'))) { $core = new YNCONTACTIMPORTER_CLASS_Core(); if (!$core->checkSocialBridgePlugin($provider->name)) { continue; } } $item = array(); $item['title'] = $provider->title; $item['name'] = $provider->name; $item['id'] = $provider->id; $item['logo'] = OW::getPluginManager()->getPlugin('yncontactimporter')->getStaticUrl() . "img/" . $provider->name . ".png"; $arr_providers[] = $item; } $this->assign('providers', $arr_providers); $this->assign("uploadCSVTitle", OW::getLanguage()->text('yncontactimporter', 'upload_csv_file')); $this->assign("customInviteTitle", OW::getLanguage()->text('yncontactimporter', 'custom_invite')); $this->assign("customInviteDescription", OW::getLanguage()->text('yncontactimporter', 'custom_invite_description')); $link = OW::getRequest()->buildUrlQueryString(OW::getRouter()->urlForRoute('yncontactimporter-user-join'), array('refId' => $userId)); $this->assign('urlInvite', $link); $this->assign('authorization', OW::getLanguage()->text('yncontactimporter', 'authorization')); $this->assign('import_your_contacts', OW::getLanguage()->text('yncontactimporter', 'import_your_contacts')); // get top inviter $this->assign('topInviters', YNCONTACTIMPORTER_BOL_InvitationService::getInstance()->getTopInviters()); // get statistic $this->assign('statistics', YNCONTACTIMPORTER_BOL_InvitationService::getInstance()->getStatistics()); unset($_SESSION['ynfriends_checked']); } }
/** * ajax edit provider action */ public function ajaxEditProvider() { if (!OW::getRequest()->isAjax()) { throw new Redirect404Exception(); } if (OW::getRequest()->isPost()) { try { $values = $_POST; $id = (int) $values['id']; $providerEditForm = new YNCONTACTIMPORTER_CLASS_ProviderEditForm($id); if ($providerEditForm->isValid($_POST)) { $provider = YNCONTACTIMPORTER_BOL_ProviderService::getInstance()->findProviderById($id); if ($provider && ($provider->title != trim($values['title']) || $provider->enable != $values['enable'] || $provider->order != $values['order'])) { $provider->title = $values['title']; $provider->enable = $values['enable']; $provider->order = $values['order']; YNCONTACTIMPORTER_BOL_ProviderService::getInstance()->save($provider); } exit(json_encode(array('result' => true, 'message' => OW::getLanguage()->text('yncontactimporter', 'provider_updated')))); } } catch (LogicException $e) { exit(json_encode(array('result' => false, 'message' => 'Error!'))); } } exit(json_encode(array('result' => true, 'message' => OW::getLanguage()->text('yncontactimporter', 'provider_updated')))); }
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); }