Beispiel #1
0
 function display($tpl = null)
 {
     $user = JFactory::getUser();
     $providers = JFBCFactory::getAllProviders();
     $providerData = array();
     foreach ($providers as $provider) {
         if ($provider->appId && $provider->secretKey) {
             $userModel = JFBConnectModelUserMap::getUser($user->get('id'), $provider->systemName);
             $userData = $userModel->getData();
             $providerInfo = new stdClass();
             $providerInfo->profileUrl = $userData->params->get('data.profile_url');
             if (empty($providerInfo->profileUrl)) {
                 //JOOMLA 2.5
                 $providerInfo->profileUrl = $userData->params->get('profile_url');
             }
             $providerInfo->isMapped = $userData->provider != null;
             $providerInfo->name = $provider->name;
             $providerInfo->provider = $provider;
             $providerInfo->systemName = $provider->systemName;
             $providerData[$provider->name] = $providerInfo;
         }
     }
     $this->providerData = $providerData;
     JFBCFactory::addStylesheet('jfbconnect.css');
     parent::display($tpl);
 }
Beispiel #2
0
 public function register($data = null)
 {
     //require_once (JPATH_COMPONENT.'/libraries/profile.php');
     $mainframe = JFactory::getApplication();
     $my = CFactory::getUser();
     $config = CFactory::getConfig();
     /**
      * Opengraph
      */
     CHeadHelper::setType('website', JText::_('COM_COMMUNITY_REGISTER_NEW'));
     // Hide this form for logged in user
     if ($my->id) {
         $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_REGISTER_ALREADY_USER'), 'warning');
         return;
     }
     // If user registration is not allowed, show 403 not authorized.
     $usersConfig = JComponentHelper::getParams('com_users');
     if ($usersConfig->get('allowUserRegistration') == '0') {
         //show warning message
         $this->addWarning(JText::_('COM_COMMUNITY_REGISTRATION_DISABLED'));
         return;
     }
     $fields = array();
     $post = JRequest::get('post');
     $isUseFirstLastName = CUserHelper::isUseFirstLastName();
     $data = array();
     $data['fields'] = $fields;
     $data['html_field']['jsname'] = empty($post['jsname']) ? '' : $post['jsname'];
     $data['html_field']['jsusername'] = empty($post['jsusername']) ? '' : $post['jsusername'];
     $data['html_field']['jsemail'] = empty($post['jsemail']) ? '' : $post['jsemail'];
     $data['html_field']['jsfirstname'] = empty($post['jsfirstname']) ? '' : $post['jsfirstname'];
     $data['html_field']['jslastname'] = empty($post['jslastname']) ? '' : $post['jslastname'];
     // $js = 'assets/validate-1.5.min.js';
     // CFactory::attach($js, 'js');
     $recaptcha = new CRecaptchaHelper();
     $recaptchaHTML = $recaptcha->html();
     $fbHtml = '';
     if ($config->get('fbconnectkey') && $config->get('fbconnectsecret') && !$config->get('usejfbc')) {
         //CFactory::load( 'libraries' , 'facebook' );
         $facebook = new CFacebook();
         $fbHtml = $facebook->getLoginHTML();
     }
     if ($config->get('usejfbc')) {
         if (class_exists('JFBCFactory')) {
             $providers = JFBCFactory::getAllProviders();
             foreach ($providers as $p) {
                 $fbHtml .= $p->loginButton();
             }
         }
     }
     $tmpl = new CTemplate();
     $content = $tmpl->set('data', $data)->set('recaptchaHTML', $recaptchaHTML)->set('config', $config)->set('isUseFirstLastName', $isUseFirstLastName)->set('fbHtml', $fbHtml)->fetch('register/base');
     $appsLib = CAppPlugins::getInstance();
     $appsLib->loadApplications();
     $args = array(&$content);
     $appsLib->triggerEvent('onUserRegisterFormDisplay', $args);
     echo $this->_getProgressBar(1);
     echo $content;
 }
Beispiel #3
0
 function __construct($params)
 {
     $this->params = $params;
     $this->user = JFactory::getUser();
     $this->doc = JFactory::getDocument();
     if (class_exists('JFBCFactory')) {
         $this->isJFBConnectInstalled = true;
         $this->providers = JFBCFactory::getAllProviders();
     }
     $this->getPasswordAndProfileLinks();
 }
 protected function getOptions()
 {
     $options = array();
     $options[] = JHtml::_('select.option', "--", "-- Select a Provider --");
     $providers = JFBCFactory::getAllProviders();
     foreach ($providers as $p) {
         $channels = $p->getChannelsOutbound();
         if (count($channels) > 0) {
             $options[] = JHtml::_('select.option', strtolower($p->name), $p->name);
         }
     }
     return $options;
 }
 public function getButtons()
 {
     if (!$this->exists()) {
         return;
     }
     $providers = JFBCFactory::getAllProviders();
     $params = array('buttonSize' => 'icon_text_button');
     $buttons = '';
     foreach ($providers as $provider) {
         $buttons .= $provider->loginButton($params);
     }
     return $buttons;
 }
Beispiel #6
0
 protected function getInput()
 {
     require_once JPATH_ADMINISTRATOR . '/components/com_jfbconnect/models/fields/providerloginbutton.php';
     $html = array();
     $data = $this->form->getValue($this->fieldname, $this->group, null);
     // Support for SCLogin module
     $loginbuttonstype = $this->form->getValue('loginbuttonstype', 'params', null);
     if (!$loginbuttonstype) {
         // Support for SCSocialWidget module
         $loginbuttonstype = $this->form->getValue('loginbuttonstype', 'params.widget_settings', 'default');
     }
     if ($loginbuttonstype == 'default') {
         $noticeStyle = 'style="display:block"';
         $buttonStyle = "display:none";
     } else {
         $noticeStyle = 'style="display:none"';
         $buttonStyle = "display:block";
     }
     jimport('sourcecoast.utilities');
     SCStringUtilities::loadLanguage('com_jfbconnect', JPATH_ADMINISTRATOR);
     $html[] = '<div class="fieldsocialbuttons">';
     JFactory::getDocument()->addStyleDeclaration('.fieldsocialbuttons label { display: inline; float:left; }
         .fieldsocialbuttons input[type="radio"] { margin: 0 8px; }
         label.providername { width:60px; }');
     $html[] = '<div style="clear:both"> </div>';
     $html[] = '<fieldset id="loginbutton_custom_notice" ' . $noticeStyle . '>' . JText::_('COM_JFBCONNECT_LOGIN_BUTTON_CUSTOM_INSTRUCTIONS') . '</fieldset>';
     $providerFound = false;
     foreach (JFBCFactory::getAllProviders() as $p) {
         if ($p->appId) {
             $providerFound = true;
             $value = is_array($data) && array_key_exists($p->systemName, $data) ? $data[$p->systemName] : 'icon_label.png';
             $field = '<field type="providerloginbutton"
                 label="Default Login Button"
                 provider="' . $p->systemName . '"
                             name="' . $p->systemName . '"
                             required="true"
                             style="' . $buttonStyle . '"
                             />';
             $element = new SimpleXMLElement($field);
             $node = new JFormFieldProviderloginbutton($this->form);
             $node->setup($element, $value, $this->group . '.' . $this->fieldname);
             $html[] = $node->getInput();
         }
     }
     if (!$providerFound) {
         $html[] = '<label>No social networks are enabled. Please use the JFBConnect configuration area to set your App IDs and Secret Keys</label>';
     }
     $html[] = '</div>';
     return implode($html);
 }
Beispiel #7
0
 function display($tpl = null)
 {
     JForm::addFieldPath(JPATH_ADMINISTRATOR . '/components/com_jfbconnect/models/fields');
     $this->formLoad('config', JPATH_ADMINISTRATOR . '/components/com_jfbconnect/models/forms/config.xml');
     $this->formBind('config', JFBCFactory::config()->getSettings());
     foreach (JFBCFactory::getAllProviders() as $p) {
         $configPath = JPATH_SITE . '/components/com_jfbconnect/libraries/provider/' . strtolower($p->systemName) . '/config/';
         JForm::addFieldPath($configPath . 'fields');
         $this->formLoad($p->systemName, $configPath . 'config.xml');
         $loginField = '<form>' . '<fieldset name="login_button" label="' . JText::_('COM_JFBCONNECT_PROVIDER_MENU_LOGIN_BUTTON') . '">' . '<field type="providerloginbutton"
                 label="' . JText::_('COM_JFBCONNECT_CONFIG_LOGIN_BUTTON_DEFAULT_LABEL') . '"
                 description="' . JText::_('COM_JFBCONNECT_CONFIG_LOGIN_BUTTON_DEFAULT_DESC') . '"
                 provider="' . $p->systemName . '"
                 name="' . $p->systemName . '_login_button"
                 required="true"
                 default="icon_label.png"
                 />' . '</fieldset>' . '</form>';
         $this->forms[$p->systemName]->load($loginField);
         $this->formBind($p->systemName, JFBCFactory::config()->getSettings());
     }
     parent::display($tpl);
 }
Beispiel #8
0
 function display($tpl = null)
 {
     $configModel = JFBCFactory::config();
     $usermapModel = JFBCFactory::usermap();
     $autotuneModel = JModelLegacy::getInstance('AutoTune', 'JFBConnectModel');
     if (JFBCFactory::provider('facebook')->appId) {
         $appConfig = JFBCFactory::config()->get('autotune_app_config', null);
         if (!$appConfig || count($appConfig) == 0) {
             JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_MSG_RUN_AUTOTUNE', '<a href="index.php?option=com_jfbconnect&view=autotune">AutoTune</a>'), 'error');
         }
     }
     $userCounts = array();
     foreach (JFBCFactory::getAllProviders() as $p) {
         if ($p->appId) {
             $userCounts[$p->systemName] = $usermapModel->getTotalMappings($p->systemName);
         }
     }
     $this->configModel = $configModel;
     $this->autotuneModel = $autotuneModel;
     $this->usermapModel = $usermapModel;
     $this->userCounts = $userCounts;
     $this->addToolbar();
     parent::display($tpl);
 }
Beispiel #9
0
 private function getSelectedProviders($providerList)
 {
     if (!is_array($providerList)) {
         $providerList = str_replace("\r\n", ",", $providerList);
         $providerList = explode(',', $providerList);
     }
     $providers = array();
     foreach ($providerList as $p) {
         if ($p) {
             $providers[] = JFBCFactory::provider(trim($p));
         }
     }
     //For backwards compatibility:
     // - For Facebook, if no providers are specified, then show all providers
     // - For Others, if no providers are specified, just show the login button for that provider
     if (empty($providers)) {
         if ($this->provider->name == 'Facebook') {
             $providers = JFBCFactory::getAllProviders();
         } else {
             $providers[] = $this->provider;
         }
     }
     return $providers;
 }
Beispiel #10
0
 public function blockUnregister($uri = null)
 {
     $my = CFactory::getUser();
     $config = CFactory::getConfig();
     $usersConfig = JComponentHelper::getParams('com_users');
     if ($my->id == 0) {
         $config = CFactory::getConfig();
         if (empty($uri)) {
             $uri = CRoute::getURI(false);
         }
         $uri = base64_encode($uri);
         $tmpl = new CTemplate();
         $fbHtml = '';
         if ($config->get('fbconnectkey') && $config->get('fbconnectsecret') && !$config->get('usejfbc')) {
             $facebook = new CFacebook();
             $fbHtml = $facebook->getLoginHTML();
         }
         if ($config->get('usejfbc')) {
             if (class_exists('JFBCFactory')) {
                 $providers = JFBCFactory::getAllProviders();
                 $fbHtml = '';
                 foreach ($providers as $p) {
                     $fbHtml .= $p->loginButton();
                 }
             }
         }
         $tmpl->set('fbHtml', $fbHtml);
         $tmpl->set('return', $uri);
         $tmpl->set('allowUserRegister', $usersConfig->get('allowUserRegistration'));
         $tmpl->set('useractivation', $usersConfig->get('useractivation'));
         $html = $tmpl->fetch('guests.denied');
         echo $html;
         return true;
     }
     return false;
 }
Beispiel #11
0
 /**
  * Frontpage display
  * @param type $tpl
  */
 public function display($tpl = null)
 {
     /**
      * Init variables
      */
     $config = CFactory::getConfig();
     $document = JFactory::getDocument();
     $usersConfig = JComponentHelper::getParams('com_users');
     $my = CFactory::getUser();
     $model = CFactory::getModel('user');
     /**
      * Opengraph
      */
     CHeadHelper::setType('website', JText::sprintf('COM_COMMUNITY_FRONTPAGE_TITLE', $config->get('sitename')));
     /**
      * Init document
      */
     $feedLink = CRoute::_('index.php?option=com_community&view=frontpage&format=feed');
     $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_RECENT_ACTIVITIES_FEED') . '" href="' . $feedLink . '"/>';
     $document->addCustomTag($feed);
     // Process headers HTML output
     $headerHTML = '';
     $tmpl = new CTemplate();
     $alreadyLogin = 0;
     /* User is logged */
     if ($my->id != 0) {
         $headerHTML = $tmpl->fetch('frontpage.members');
         $alreadyLogin = 1;
     } else {
         /* User is not logged */
         $uri = CRoute::_('index.php?option=com_community&view=' . $config->get('redirect_login'), false);
         $uri = base64_encode($uri);
         $fbHtml = '';
         /* Facebook login */
         if ($config->get('fbconnectkey') && $config->get('fbconnectsecret') && !$config->get('usejfbc')) {
             $facebook = new CFacebook();
             $fbHtml = $facebook->getLoginHTML();
         }
         /* Joomla! Facebook Connect */
         if ($config->get('usejfbc')) {
             if (class_exists('JFBCFactory')) {
                 $providers = JFBCFactory::getAllProviders();
                 foreach ($providers as $p) {
                     $fbHtml .= $p->loginButton();
                 }
             }
         }
         //hero image
         $heroImage = JURI::root() . 'components/com_community/assets/frontpage-image-default.jpg';
         if (file_exists(COMMUNITY_PATH_ASSETS . 'frontpage-image.jpg')) {
             $heroImage = JURI::root() . 'components/com_community/assets/frontpage-image.jpg';
         } else {
             if (file_exists(COMMUNITY_PATH_ASSETS . 'frontpage-image.png')) {
                 $heroImage = JURI::root() . 'components/com_community/assets/frontpage-image.png';
             }
         }
         //add the hero image as the image metatdata
         $imgMeta = '<meta property="og:image" content="' . $heroImage . '"/>';
         $document->addCustomTag($imgMeta);
         $themeModel = CFactory::getModel('theme');
         $settings = $themeModel->getSettings();
         /* Generate header HTML for guest */
         if ($settings['general']['enable-frontpage-login']) {
             $headerHTML = $tmpl->set('allowUserRegister', $usersConfig->get('allowUserRegistration'))->set('heroImage', $heroImage)->set('fbHtml', $fbHtml)->set('useractivation', $usersConfig->get('useractivation'))->set('return', $uri)->set('settings', $settings)->fetch('frontpage/guest');
         } else {
             $headerHTML = '';
         }
     }
     /* Get site members count */
     $totalMembers = $model->getMembersCount();
     $latestActivitiesData = $this->showLatestActivities();
     $latestActivitiesHTML = $latestActivitiesData['HTML'];
     $tmpl = new CTemplate();
     $tmpl->set('totalMembers', $totalMembers)->set('my', $my)->set('alreadyLogin', $alreadyLogin)->set('header', $headerHTML)->set('userActivities', $latestActivitiesHTML)->set('config', $config)->set('customActivityHTML', $this->getCustomActivityHTML());
     $status = new CUserStatus();
     if ($my->authorise('community.view', 'frontpage.statusbox')) {
         // Add default status box
         CUserHelper::addDefaultStatusCreator($status);
         if (COwnerHelper::isCommunityAdmin() && $config->get('custom_activity')) {
             $template = new CTemplate();
             $template->set('customActivities', CActivityStream::getCustomActivities());
             $creator = new CUserStatusCreator('custom');
             $creator->title = JText::_('COM_COMMUNITY_CUSTOM');
             $creator->html = $template->fetch('status.custom');
             $status->addCreator($creator);
         }
     }
     /**
      * Misc variables
      * @since 3.3
      * Move out variable init in side template into view
      */
     $moduleCount = count(JModuleHelper::getModules('js_side_frontpage')) + count(JModuleHelper::getModules('js_side_top')) + count(JModuleHelper::getModules('js_side_bottom')) + count(JModuleHelper::getModules('js_side_frontpage_top')) + count(JModuleHelper::getModules('js_side_frontpage_bottom')) + count(JModuleHelper::getModules('js_side_frontpage_stacked')) + count(JModuleHelper::getModules('js_side_top_stacked')) + count(JModuleHelper::getModules('js_side_bottom_stacked')) + count(JModuleHelper::getModules('js_side_frontpage_top_stacked')) + count(JModuleHelper::getModules('js_side_frontpage_bottom_stacked'));
     $jinput = JFactory::getApplication()->input;
     /**
      * @todo 3.3
      * All of these code must be provided in object. DO NOT PUT ANY CODE LOGIC HERE !
      */
     $cconfig = CFactory::getConfig();
     $filter = $jinput->get('filter');
     $filterValue = $jinput->get('value', 'default_value', 'RAW');
     $filterText = JText::_("COM_COMMUNITY_FILTERBAR_ALL");
     $filterHashtag = false;
     $filterKeyword = false;
     if ($filter == 'apps') {
         switch ($filterValue) {
             case 'profile':
                 $filterText = JText::_("COM_COMMUNITY_FILTERBAR_TYPE_STATUS");
                 break;
             case 'photo':
                 $filterText = JText::_("COM_COMMUNITY_FILTERBAR_TYPE_PHOTO");
                 break;
             case 'video':
                 $filterText = JText::_("COM_COMMUNITY_FILTERBAR_TYPE_VIDEO");
                 break;
             case 'group':
                 $filterText = JText::_("COM_COMMUNITY_FILTERBAR_TYPE_GROUP");
                 break;
             case 'event':
                 $filterText = JText::_("COM_COMMUNITY_FILTERBAR_TYPE_EVENT");
                 break;
         }
     } else {
         if ($filter == 'hashtag') {
             $filterText = JText::_("COM_COMMUNITY_FILTERBAR_TYPE_HASHTAG") . ' #' . $filterValue;
             $filterHashtag = true;
         } else {
             if ($filter == 'keyword') {
                 $filterText = JText::_("COM_COMMUNITY_FILTERBAR_TYPE_KEYWORD") . ' ' . $filterValue;
                 $filterKeyword = true;
             } else {
                 switch ($filterValue) {
                     case 'me-and-friends':
                         $filterText = JText::_("COM_COMMUNITY_FILTERBAR_RELATIONSHIP_ME_AND_FRIENDS");
                         break;
                 }
             }
         }
     }
     echo $tmpl->set('userstatus', $status)->set('moduleCount', $moduleCount)->set('class', $moduleCount > 0 ? 'span8' : 'span12')->set('filterKey', $filter)->set('filter', $filter)->set('filterText', $filterText)->set('filterHashtag', $filterHashtag)->set('filterKeyword', $filterKeyword)->set('filterValue', $filterValue)->fetch('frontpage/base');
 }
Beispiel #12
0
 function login($provider = null)
 {
     if (!is_object($provider)) {
         $provider = JFBCFactory::provider(JRequest::getCmd('provider'));
     }
     // Let the provider do anything it wants before we try to login.
     $provider->onBeforeLogin();
     $loginRegisterModel = $this->getModel('LoginRegister', 'JFBConnectModel');
     // Set a cookie to prevent auto-logging in for the remainder of the session time
     $config = JFactory::getConfig();
     $lifetime = $config->get('lifetime', 15);
     setcookie('jfbconnect_autologin_disable', 1, time() + $lifetime * 60);
     // Not a perfect solution, but fixes autologin loops..
     $app = JFactory::getApplication();
     $providerUserId = $provider->getProviderUserId();
     if (!$providerUserId) {
         # Facebook isn't returning information about this user.  Redirect them.
         JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_UNABLE_TO_RETRIEVE_USER', $provider->name));
         $app->redirect('index.php');
     }
     $userMapModel = JFBCFactory::usermap();
     $jUser = JFactory::getUser();
     if (!$jUser->guest) {
         SCSocialUtilities::clearJFBCNewMappingEnabled();
         if ($userMapModel->map($jUser->get('id'), $providerUserId, strtolower($provider->name), $provider->client->getToken())) {
             JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_MAP_USER_SUCCESS', $provider->name));
         } else {
             JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_MAP_USER_FAIL', $provider->name));
         }
         $return = $loginRegisterModel->getLoginRedirect($provider);
         $app->redirect($return);
     }
     // They're not logged in. Check if they have a Joomla user and log that user in. If not, create them one
     $jUserId = $userMapModel->getJoomlaUserId($providerUserId, strtolower($provider->name));
     if (!$jUserId) {
         $profile = $provider->profile->fetchProfile($providerUserId, array('email'));
         $providerEmail = $profile->get('email', null);
         # Check if automatic email mapping is allowed, and see if that email is registered
         # AND the Facebook user doesn't already have a Joomla account
         if (!$provider->initialRegistration && JFBCFactory::config()->getSetting('facebook_auto_map_by_email')) {
             if ($providerEmail != null) {
                 $jUserEmailId = $userMapModel->getJoomlaUserIdFromEmail($providerEmail);
                 if (!empty($jUserEmailId)) {
                     // Found a user with the same email address
                     // do final check to make sure there isn't a FB account already mapped to it
                     $tempId = $userMapModel->getProviderUserId($jUserEmailId, strtolower($provider->name));
                     if (!$tempId) {
                         SCSocialUtilities::clearJFBCNewMappingEnabled();
                         if ($userMapModel->map($jUserEmailId, $providerUserId, strtolower($provider->name), $provider->client->getToken())) {
                             JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_MAP_USER_SUCCESS', $provider->name));
                             $jUserId = $jUserEmailId;
                             // Update the temp jId so that we login below
                         } else {
                             JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_MAP_USER_FAIL', $provider->name));
                         }
                     }
                 }
             }
         }
         // Check if no mapping, and Automatic Registration is set. If so, auto-create the new user.
         if (!$jUserId && JFBCFactory::config()->getSetting('automatic_registration')) {
             # User is not in system, should create their account automatically
             if ($loginRegisterModel->autoCreateUser($providerUserId, $provider)) {
                 $jUserId = $userMapModel->getJoomlaUserId($providerUserId, strtolower($provider->name));
             }
         }
         // At this point, we have nothing left to do but redirect the user to the registration page
         if (!$jUserId) {
             $return = $loginRegisterModel->getLoginRedirect($provider);
             $app = JFactory::getApplication();
             $regComponent = JFBCFactory::config()->get('registration_component');
             if ($regComponent == 'jfbconnect') {
                 $app->redirect(JRoute::_('index.php?option=com_jfbconnect&view=loginregister&provider=' . strtolower($provider->name) . '&return=' . base64_encode($return), false));
             } else {
                 $app->setUserState('com_jfbconnect.registration.alternateflow', true);
                 $app->setUserState('com_jfbconnect.registration.provider.name', strtolower($provider->name));
                 $app->setUserState('com_jfbconnect.registration.provider.user_id', $providerUserId);
                 $plugins = $app->triggerEvent('socialProfilesGetPlugins');
                 foreach ($plugins as $plugin) {
                     if ($plugin->getName() == $regComponent) {
                         $redirect = $plugin->registration_url;
                     }
                 }
                 if ($redirect) {
                     $app->redirect(JRoute::_($redirect, false));
                 }
             }
         }
     }
     $jUser = JUser::getInstance($jUserId);
     $loginSuccess = false;
     // Try to log the user, but not if blocked and initial registration (then there will be a pretty message on how to activate)
     if (!$provider->initialRegistration || $jUser->get('block') == 0 && $provider->initialRegistration) {
         $options = array('silent' => 1, 'provider' => $provider, 'provider_user_id' => $providerUserId);
         // Disable other authentication messages
         // hack for J3.2.0 bug. Should remove after 3.2.1 is available.
         $password = $provider->secretKey;
         $loginSuccess = $app->login(array('username' => $provider->appId, 'password' => $password), $options);
     }
     if ($loginSuccess) {
         // lets update the user's access token with whatever we just received
         $jUser = JFactory::getUser();
         $userMapModel->updateUserToken($jUser->get('id'), $provider->systemName, $provider->client->getToken());
         // Store Profile URL and Avatar URL
         $userModel = JFBConnectModelUserMap::getUser($jUser->get('id'), $provider->name);
         $userModel->saveParameter('profile_url', JFBCFactory::provider($provider->name)->profile->getProfileUrl($providerUserId));
         $avatarSettings = new JRegistry();
         $avatarSettings->set('width', 50);
         $avatarSettings->set('height', 50);
         $userModel->saveParameter('avatar_thumb', JFBCFactory::provider($provider->name)->profile->getAvatarUrl($providerUserId, false, $avatarSettings));
         if (!$provider->initialRegistration) {
             $args = array(strtolower($provider->name), $jUser->get('id'), $providerUserId);
             $app->triggerEvent('socialProfilesOnLogin', $args);
         }
     }
     JFactory::getApplication()->setUserState('com_jfbconnect.' . strtolower($provider->name) . '.checkForNewMapping', null);
     $allProviders = JFBCFactory::getAllProviders();
     foreach ($allProviders as $p) {
         $p->checkNewMapping();
     }
     $redirect = $loginRegisterModel->getLoginRedirect($provider);
     // Clear the 'alternate flow' session bit to prevent further alterations to reg pages for this user/session
     $app->setUserState('com_jfbconnect.registration.alternateflow', false);
     $app->redirect($redirect);
 }
Beispiel #13
0
 function display($tpl = null)
 {
     $app = JFactory::getApplication();
     $input = JFactory::getApplication()->input;
     $provider = $input->getCmd('provider', null);
     if (!$provider) {
         $app->redirect('index.php');
     }
     $provider = JFBCFactory::provider($provider);
     $providerUserId = $provider->getProviderUserId();
     $profile = $provider->profile->fetchProfile($providerUserId, array('first_name', 'last_name', 'email', 'full_name'));
     if ($providerUserId == null) {
         $app->redirect('index.php');
     }
     $args = array(strtolower($provider->name));
     $profileFields = $app->triggerEvent('socialProfilesOnShowRegisterForm', $args);
     // Get previously filled in values
     $postData = $app->getUserState('com_jfbconnect.registration.data', array());
     $email1 = '';
     $email2 = '';
     SCUserUtilities::getDisplayEmail($postData, $profile->get('email'), $email1, $email2);
     $config = JFBCFactory::config();
     $providerUsername = '';
     $postUsername = SCUserUtilities::getPostData($postData, 'username');
     if ($postUsername != '') {
         $providerUsername = $postUsername;
     } else {
         if (JFBCFactory::config()->get('registration_show_username') > USERNAME_LEAVE_BLANK) {
             $usernamePrefixFormat = $config->get('auto_username_format');
             $providerUsername = SCUserUtilities::getAutoUsername($profile->get('first_name'), $profile->get('last_name'), $profile->get('email'), $provider->usernamePrefix, $providerUserId, $usernamePrefixFormat);
         }
     }
     $providerMemberName = SCUserUtilities::getDisplayNameByFullName($postData, $profile->get('full_name'));
     $language = JFactory::getLanguage();
     $language->load('com_users');
     JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_users/models');
     $userModel = JModelLegacy::getInstance('Registration', 'UsersModel');
     $this->data = $userModel->getData();
     JForm::addFormPath(JPATH_SITE . '/components/com_users/models/forms');
     JForm::addFieldPath(JPATH_SITE . '/components/com_users/models/fields');
     $this->form = $userModel->getForm();
     // Setup the fields we can pre-populate
     // To do: Give option to show/hide the name on the form
     $this->form->setValue('name', null, $providerMemberName);
     if ($config->get('registration_show_name') == NAME_HIDE && $providerMemberName != '') {
         $this->form->setFieldAttribute('name', 'type', 'hidden');
     }
     $this->form->setValue('username', null, $providerUsername);
     if ($providerUsername != '') {
         if ($config->get('registration_show_username') == USERNAME_GENERATE_HIDE) {
             $this->form->setFieldAttribute('username', 'type', 'hidden');
         } else {
             if ($config->get('registration_show_username') == USERNAME_GENERATE_DISABLE) {
                 $this->form->setFieldAttribute('username', 'readonly', 'true');
             }
         }
     }
     $this->form->setValue('email1', null, $email1);
     $this->form->setValue('email2', null, $email2);
     if ($email1 != '' && $email2 != '') {
         if ($config->get('registration_show_email') == EMAIL_HIDE) {
             $this->form->setFieldAttribute('email1', 'type', 'hidden');
             $this->form->setFieldAttribute('email2', 'type', 'hidden');
         } else {
             if ($config->get('registration_show_email') == EMAIL_SHOW_DISABLE) {
                 $this->form->setFieldAttribute('email1', 'readonly', 'true');
                 $this->form->setFieldAttribute('email2', 'readonly', 'true');
             }
         }
     }
     if ($config->get('registration_show_password') == 1) {
         $password = JUserHelper::genRandomPassword();
         $this->form->setValue('password1', null, $password);
         $this->form->setValue('password2', null, $password);
         $this->form->setFieldAttribute('password1', 'type', 'hidden');
         $this->form->setFieldAttribute('password2', 'type', 'hidden');
     }
     // Set an inputbox style on all the input elements so that inherited template styles look better
     $this->form->setFieldAttribute('name', 'class', 'inputbox required');
     $this->form->setFieldAttribute('username', 'class', 'validate-username inputbox required');
     $this->form->setFieldAttribute('email1', 'class', 'inputbox required');
     $this->form->setFieldAttribute('email2', 'class', 'inputbox required');
     $this->form->setFieldAttribute('password1', 'class', 'validate-password inputbox required');
     $this->form->setFieldAttribute('password2', 'class', 'validate-password inputbox required');
     //Check for form validation from each of the plugins
     $areProfilesValidating = $app->triggerEvent('socialProfilesAddFormValidation');
     $defaultValidationNeeded = true;
     foreach ($areProfilesValidating as $hasDoneValidation) {
         if ($hasDoneValidation == true) {
             $defaultValidationNeeded = false;
             break;
         }
     }
     // Setup the view appearance
     // TODO: Make the addStyleSheet into a Utilities function to be used elsewhere.
     $displayType = $config->get('registration_display_mode');
     $css = JPath::find($this->_path['template'], 'loginregister.css');
     $css = str_replace(JPATH_SITE, '', $css);
     $css = JURI::root() . $css;
     $css = str_replace('\\', "/", $css);
     //Windows support for file separators
     $doc = JFactory::getDocument();
     $doc->addStyleSheet($css);
     // get the other providers, for showing their login buttons
     $altParams = array();
     $allProviders = JFBCFactory::getAllProviders();
     $altProviders = array();
     foreach ($allProviders as $p) {
         if ($p->name != $provider->name) {
             $altParams['providers'][] = $p->systemName;
         }
     }
     $altParams['image'] = 'icon.png';
     // Set the session bit to check for a new login on next page load
     SCSocialUtilities::setJFBCNewMappingEnabled();
     $this->altParams = $altParams;
     $this->assignRef('providerUserId', $providerUserId);
     $this->assignRef('profile', $profile);
     $this->assignRef('configModel', $config);
     $this->assignRef('profileFields', $profileFields);
     $this->assignRef('defaultValidationNeeded', $defaultValidationNeeded);
     $this->assignRef('displayType', $displayType);
     $this->assignRef('providerName', $provider->name);
     $this->assignRef('altProviders', $altProviders);
     parent::display($tpl);
 }
Beispiel #14
0
 public function getFieldMappingHTML()
 {
     $allProviders = JFBCFactory::getAllProviders();
     // Remove providers who aren't configured for authentication
     $providers = $allProviders;
     for ($i = 0; $i < count($allProviders); $i++) {
         $p = $allProviders[$i];
         if (!$p->appId) {
             unset($providers[$i]);
         }
     }
     $profileFields = $this->getProfileFields();
     $html = '<div class="row-fluid"><div class="span12">
         <div class="well">
 <legend>Social Network Profile Import Configuration</legend>
 <table>
     <tr>
         <th>' . ucwords($this->profileName) . " Field</th>";
     foreach ($providers as $provider) {
         $html .= "<th>" . $provider->name . "</th>";
     }
     $html .= "</tr>";
     foreach ($profileFields as $profileField) {
         $html .= '<tr><td>';
         $html .= JText::_($profileField->name);
         foreach ($providers as $provider) {
             $this->loadSettings(strtolower($provider->name));
             $fieldMap = $this->getFieldMap(strtolower($provider->name));
             if (property_exists($fieldMap, $profileField->id)) {
                 $fieldId = $profileField->id;
                 $selectedValue = $fieldMap->{$fieldId};
             } else {
                 $selectedValue = "0";
             }
             $html .= '</td><td>';
             $profile = $provider->profile;
             $html .= '<select name="profiles_' . $this->profileName . '_' . strtolower($provider->name) . '_field_map' . $profileField->id . '">';
             foreach ($profile->getProviderFields() as $name => $providerField) {
                 if ($name == $selectedValue) {
                     $selected = 'selected';
                 } else {
                     $selected = '';
                 }
                 $html .= '<option value="' . $name . '" ' . $selected . '>' . $providerField . '</option>';
             }
             $html .= '</select>';
         }
         $html .= '</td></tr>';
     }
     $html .= "</table>";
     $html .= "</div></div></div>";
     return $html;
 }
Beispiel #15
0
 public function saveBasicInfo()
 {
     $subscriberId = JRequest::getString('subscriberId');
     foreach (JFBCFactory::getAllProviders() as $provider) {
         $name = $provider->systemName;
         $appId = JRequest::getString($name . '_app_id');
         $secretKey = JRequest::getString($name . '_secret_key');
         JFBCFactory::config()->update($name . '_app_id', $appId);
         JFBCFactory::config()->update($name . '_secret_key', $secretKey);
     }
     JFBCFactory::config()->update('sc_download_id', $subscriberId);
     $this->setRedirect('index.php?option=com_jfbconnect&view=autotune&task=fbapp');
 }
Beispiel #16
0
 public function blockUnregister($uri = null)
 {
     $my = CFactory::getUser();
     $config = CFactory::getConfig();
     $usersConfig = JComponentHelper::getParams('com_users');
     if ($my->id == 0) {
         $config = CFactory::getConfig();
         if (empty($uri)) {
             $uri = CRoute::getURI(false);
         }
         $uri = base64_encode($uri);
         $tmpl = new CTemplate();
         $fbHtml = '';
         if ($config->get('fbconnectkey') && $config->get('fbconnectsecret') && !$config->get('usejfbc')) {
             $facebook = new CFacebook();
             $fbHtml = $facebook->getLoginHTML();
         }
         if ($config->get('usejfbc')) {
             if (class_exists('JFBCFactory')) {
                 $providers = JFBCFactory::getAllProviders();
                 $fbHtml = '';
                 foreach ($providers as $p) {
                     $fbHtml .= $p->loginButton();
                 }
             }
         }
         //hero image
         $heroImage = JURI::root() . 'components/com_community/assets/frontpage-image-default.jpg';
         if (file_exists(COMMUNITY_PATH_ASSETS . 'frontpage-image.jpg')) {
             $heroImage = JURI::root() . 'components/com_community/assets/frontpage-image.jpg';
         } else {
             if (file_exists(COMMUNITY_PATH_ASSETS . 'frontpage-image.png')) {
                 $heroImage = JURI::root() . 'components/com_community/assets/frontpage-image.png';
             }
         }
         $themeModel = CFactory::getModel('theme');
         $settings = $themeModel->getSettings();
         $tmpl->set('settings', $settings);
         $tmpl->set('heroImage', $heroImage);
         $tmpl->set('fbHtml', $fbHtml);
         $tmpl->set('return', $uri);
         $tmpl->set('allowUserRegister', $usersConfig->get('allowUserRegistration'));
         $tmpl->set('useractivation', $usersConfig->get('useractivation'));
         $html = $tmpl->fetch('guests.denied');
         echo $html;
         return true;
     }
     return false;
 }
Beispiel #17
0
 function &getViewLists()
 {
     $app = JFactory::getApplication();
     //Search
     $search = $app->getUserStateFromRequest('com_jfbconnect.usermap.search', 'search', '', 'string');
     $search = JString::strtolower($search);
     $lists['search'] = $search;
     //Filter
     $filter_network = $app->getUserStateFromRequest('com_jfbconnect.usermap.provider', 'provider', -1, 'string');
     $filter_network_options[] = JHTML::_('select.option', -1, JText::_('COM_JFBCONNECT_USERMAP_SELECT_NETWORK'));
     $providers = JFBCFactory::getAllProviders();
     foreach ($providers as $provider) {
         $filter_network_options[] = JHTML::_('select.option', $provider->systemName, $provider->name);
     }
     $lists['provider'] = JHTML::_('select.genericlist', $filter_network_options, 'provider', 'onchange="this.form.submit()"', 'value', 'text', $filter_network);
     //Order
     $filter_order = $app->getUserStateFromRequest('com_jfbconnect.usermap.filter_order', 'filter_order', 'id', 'cmd');
     $filter_order_Dir = $app->getUserStateFromRequest('com_jfbconnect.usermap.filter_order_Dir', 'filter_order_Dir', 'DESC', 'word');
     if (!$filter_order) {
         $filter_order = 'id';
     }
     $lists['order_Dir'] = $filter_order_Dir;
     $lists['order'] = $filter_order;
     return $lists;
 }
Beispiel #18
0
 private function replaceJSPlaceholders()
 {
     $contents = JResponse::getBody();
     $javascript = '';
     $providers = JFBCFactory::getAllProviders();
     foreach ($providers as $provider) {
         $javascript .= $provider->getHeadData();
     }
     $pinterestWidgets = JFBCFactory::getAllWidgets('pinterest');
     $javascript .= $pinterestWidgets[0]->getHeadData();
     JFBConnectProviderPinterestWidgetShare::$needsJavascript = false;
     $contents = str_replace('<SourceCoastProviderJSPlaceholder />', $javascript, $contents);
     JResponse::setBody($contents);
 }
Beispiel #19
0
 /**
  * Edits a user details
  *
  * @access	public
  * @param	array  An associative array to display the editing of the fields
  */
 public function editDetails(&$data)
 {
     $mainframe = JFactory::getApplication();
     // access check
     CFactory::setActiveProfile();
     if (!$this->accessAllowed('registered')) {
         return;
     }
     $my = CFactory::getUser();
     $config = CFactory::getConfig();
     $userParams = $my->getParams();
     $pathway = $mainframe->getPathway();
     $pathway->addItem(JText::_($my->getDisplayName()), CRoute::_('index.php?option=com_community&view=profile&userid=' . $my->id));
     $pathway->addItem(JText::_('COM_COMMUNITY_EDIT_DETAILS'), '');
     /**
      * Opengraph
      */
     CHeadHelper::setType('website', JText::_('COM_COMMUNITY_EDIT_DETAILS'));
     // $js = 'assets/validate-1.5.min.js';
     // CFactory::attach($js, 'js');
     $this->showSubmenu();
     $connectModel = CFactory::getModel('Connect');
     $associated = $connectModel->isAssociated($my->id);
     $fbHtml = '';
     if ($config->get('fbconnectkey') && $config->get('fbconnectsecret') && !$config->get('usejfbc')) {
         //CFactory::load( 'libraries' , 'facebook' );
         $facebook = new CFacebook();
         $fbHtml = $facebook->getLoginHTML();
     }
     if ($config->get('usejfbc')) {
         if (class_exists('JFBCFactory')) {
             $providers = JFBCFactory::getAllProviders();
             foreach ($providers as $p) {
                 $fbHtml .= $p->loginButton();
             }
         }
     }
     // If FIELD_GIVENNAME & FIELD_FAMILYNAME is in use
     $isUseFirstLastName = CUserHelper::isUseFirstLastName();
     $jConfig = JFactory::getConfig();
     //CFactory::load( 'libraries' , 'apps' );
     $app = CAppPlugins::getInstance();
     $appFields = $app->triggerEvent('onFormDisplay', array('jsform-profile-editdetails'));
     $beforeFormDisplay = CFormElement::renderElements($appFields, 'before');
     $afterFormDisplay = CFormElement::renderElements($appFields, 'after');
     $tmpl = new CTemplate();
     echo $tmpl->set('beforeFormDisplay', $beforeFormDisplay)->set('afterFormDisplay', $afterFormDisplay)->set('fbHtml', $fbHtml)->set('fbPostStatus', $userParams->get('postFacebookStatus'))->set('jConfig', $jConfig)->set('params', $data->params)->set('user', $my)->set('config', $config)->set('associated', $associated)->set('isAdmin', COwnerHelper::isCommunityAdmin())->set('offsetList', $data->offsetList)->set('isUseFirstLastName', $isUseFirstLastName)->fetch('profile.edit.details');
 }
Beispiel #20
0
                            });
                        }

                        if (typeof window.FB != 'undefined') {
                            jomFbButtonInit();
                        } else {
                            window.fbAsyncInit = jomFbButtonInit;
                        }
                    </script>
                    <fb:login-button onlogin="******" scope="read_stream,publish_actions,email,user_birthday,user_status"><?php 
                echo JText::_('COM_COMMUNITY_SIGN_IN_WITH_FACEBOOK');
                ?>
</fb:login-button>
                <?php 
            }
            if ($config->get('usejfbc')) {
                $fbHtml = '';
                if (class_exists('JFBCFactory')) {
                    $providers = JFBCFactory::getAllProviders();
                    foreach ($providers as $p) {
                        $fbHtml .= $p->loginButton();
                    }
                }
                echo $fbHtml;
            }
        }
    }
}
?>
</div>
Beispiel #21
0
 function saveSettings($configs)
 {
     $this->getSettings();
     // Create list of provider-specific settings. These to be moved to their own table ~6.2
     $providerSettings = array();
     foreach (JFBCFactory::getAllProviders() as $p) {
         foreach ($this->providerStandardSettings as $setting) {
             $providerSettings[$p->systemName . '_' . $setting] = '';
         }
     }
     $allSettings = array_merge($providerSettings, $this->componentSettings);
     $settings = array_intersect_key($configs, $allSettings);
     foreach ($settings as $setting => $value) {
         if ($setting == 'experimental') {
             $value = json_encode($value);
         }
         $this->update($setting, $value);
     }
     $this->settings = null;
     // Clear all the settings so they're reloaded next time any are needed
 }