From: <nk...@us...> - 2010-10-31 03:14:53
|
Revision: 30425 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=30425&view=rev Author: nkoth Date: 2010-10-31 03:14:46 +0000 (Sun, 31 Oct 2010) Log Message: ----------- [NEW] Login using Facebook account Modified Paths: -------------- trunk/lib/prefs/socialnetworks.php trunk/lib/setup/prefs.php trunk/lib/socialnetworkslib.php trunk/templates/modules/mod-login_box.tpl trunk/templates/register-email.tpl trunk/templates/register-login.tpl trunk/templates/tiki-admin_include_socialnetworks.tpl trunk/templates/tiki.tpl trunk/tiki-register.php trunk/tiki-socialnetworks.php Added Paths: ----------- trunk/register_ajax.php trunk/templates/tiki-socialnetworks_firstlogin.tpl trunk/templates/tiki-socialnetworks_firstlogin_launcher.tpl trunk/tiki-socialnetworks_firstlogin.php Modified: trunk/lib/prefs/socialnetworks.php =================================================================== --- trunk/lib/prefs/socialnetworks.php 2010-10-31 02:44:38 UTC (rev 30424) +++ trunk/lib/prefs/socialnetworks.php 2010-10-31 03:14:46 UTC (rev 30425) @@ -42,6 +42,61 @@ 'type' => 'text', 'size' => 60, ), + 'socialnetworks_facebook_login' => array( + 'name' => tra('Login using Facebook'), + 'description' => tra('Allow users to login using Facebook'), + 'keywords' => 'social networks', + 'type' => 'flag', + ), + 'socialnetworks_facebook_autocreateuser' => array( + 'name' => tra('Auto-create Tiki user'), + 'description' => tra('Automatically create a Tiki user by the username of fb_xxxxxxxx for users logging in using Facebook if they do not yet have a Tiki account. If not, they will be asked to link or register a Tiki account'), + 'keywords' => 'social networks', + 'type' => 'flag', + 'dependencies' => array( + 'socialnetworks_facebook_login', + ), + ), + 'socialnetworks_facebook_firstloginpopup' => array( + 'name' => tra('Require Facebook users to enter local account info'), + 'description' => tra('Require Facebook users to enter local account info, specifically email and local login name'), + 'keywords' => 'social networks', + 'type' => 'flag', + 'dependencies' => array( + 'socialnetworks_facebook_login', + 'socialnetworks_facebook_autocreateuser', + ), + ), + 'socialnetworks_facebook_offline_access' => array( + 'name' => tra('Tiki can access Facebook at any time'), + 'description' => tra('Even when user is not logged onto Facebook, Tiki can access it.'), + 'keywords' => 'social networks', + 'type' => 'flag', + ), + 'socialnetworks_facebook_publish_stream' => array( + 'name' => tra('Tiki can post to Wall'), + 'description' => tra('Tiki may post status messages, notes, photos, and videos to Facebook Wall'), + 'keywords' => 'social networks', + 'type' => 'flag', + ), + 'socialnetworks_facebook_manage_events' => array( + 'name' => tra('Tiki can manage events'), + 'description' => tra('Tiki may create and RSVP to Facebook events'), + 'keywords' => 'social networks', + 'type' => 'flag', + ), + 'socialnetworks_facebook_manage_pages' => array( + 'name' => tra('Tiki can manage pages'), + 'description' => tra('Tiki may manage user pages'), + 'keywords' => 'social networks', + 'type' => 'flag', + ), + 'socialnetworks_facebook_sms' => array( + 'name' => tra('Tiki can SMS'), + 'description' => tra('Tiki may SMS via Facebook'), + 'keywords' => 'social networks', + 'type' => 'flag', + ), 'socialnetworks_bitly_login' => array( 'name' => tra('bit.ly Login'), 'description' => tra('Site wide login (username) for bit.ly'), Modified: trunk/lib/setup/prefs.php =================================================================== --- trunk/lib/setup/prefs.php 2010-10-31 02:44:38 UTC (rev 30424) +++ trunk/lib/setup/prefs.php 2010-10-31 03:14:46 UTC (rev 30425) @@ -1585,6 +1585,14 @@ 'socialnetworks_facebook_api_key' =>'', 'socialnetworks_facebook_application_secr' => '', 'socialnetworks_facebook_application_id' => '', + 'socialnetworks_facebook_login' => 'n', + 'socialnetworks_facebook_autocreateuser' => 'n', + 'socialnetworks_facebook_firstloginpopup' => 'n', + 'socialnetworks_facebook_offline_access' => 'y', + 'socialnetworks_facebook_publish_stream' => 'y', + 'socialnetworks_facebook_manage_events' => 'y', + 'socialnetworks_facebook_manage_pages' => 'y', + 'socialnetworks_facebook_sms' => 'y', 'socialnetworks_bitly_login' => '', 'socialnetworks_bitly_key' => '', 'socialnetworks_bitly_sitewide' => 'n', Modified: trunk/lib/socialnetworkslib.php =================================================================== --- trunk/lib/socialnetworkslib.php 2010-10-31 02:44:38 UTC (rev 30424) +++ trunk/lib/socialnetworkslib.php 2010-10-31 03:14:46 UTC (rev 30425) @@ -129,13 +129,31 @@ if(!$this->facebookRegistered()) { return false; } + $scopes = array(); + if ($prefs["socialnetworks_facebook_offline_access"] == 'y') { + $scopes[] = 'offline_access'; + } + if ($prefs["socialnetworks_facebook_publish_stream"] == 'y') { + $scopes[] = 'publish_stream'; + } + if ($prefs["socialnetworks_facebook_manage_events"] == 'y') { + $scopes[] = 'create_event'; + $scopes[] = 'rsvp_event'; + } + if ($prefs["socialnetworks_facebook_sms"] == 'y') { + $scopes[] = 'sms'; + } + if ($prefs["socialnetworks_facebook_manage_pages"] == 'y') { + $scopes[] = 'manage_pages'; + } + $scope = implode(',', $scopes); $url=$this->getURL(); if (strpos($url,'?')!=0) { $url=preg_replace('/\?.*/','',$url); } $url=urlencode($url.'?request_facebook'); $url='https://graph.facebook.com/oauth/authorize?client_id=' . $prefs['socialnetworks_facebook_application_id'] . - '&scope=offline_access,publish_stream,create_event,rsvp_event,sms,manage_pages&redirect_uri='.$url; + '&scope=' . $scope . '&redirect_uri='.$url; header("Location: $url"); die(); } @@ -146,8 +164,8 @@ * @param string $user user Id of the user to store the access token for * @return bool true on success */ - function getFacebookAccessToken($user) { - global $prefs; + function getFacebookAccessToken() { + global $prefs, $user, $userlib; if($prefs['socialnetworks_facebook_application_id']=='' or $prefs['socialnetworks_facebook_api_key']=='' or $prefs['socialnetworks_facebook_application_secr']=='') { return false; } @@ -178,7 +196,48 @@ $ret=$ret[1]; if(substr($ret,0,13)=='access_token=') { - $this->set_user_preference($user, 'facebook_token', substr($ret,13)); + $access_token = substr($ret,13); + if ($endoftoken = strpos($access_token,'&')) { + // Returned string may have other var like expiry + $access_token = substr($access_token,0,$endoftoken); + } + $fb_profile = json_decode($this->facebookGraph('', 'me', array('access_token' => $access_token), false, 'GET')); + if (empty($fb_profile->id)) { + return false; + } + if (!$user) { + if ($prefs["socialnetworks_facebook_login"] != 'y') { + return false; + } + $local_user = $this->getOne("select `user` from `tiki_user_preferences` where `prefName` = 'facebook_id' and `value` = ?", array($fb_profile->id)); + if ($local_user) { + $user = $local_user; + } elseif ($prefs["socialnetworks_facebook_autocreateuser"] == 'y') { + $randompass = $userlib->genPass(); + $user = 'fb_' . $fb_profile->id; + $userlib->add_user($user, $randompass, ''); + $this->set_user_preference($user, 'realName', $fb_profile->name); + if ($prefs["socialnetworks_facebook_firstloginpopup"] == 'y') { + $this->set_user_preference($user, 'socialnetworks_user_firstlogin', 'y'); + } + } else { + global $smarty; + $smarty->assign('errortype', 'login'); + $smarty->assign('msg', tra('You need to link your local account to Facebook before you can login using it')); + $smarty->display('error.tpl'); + die; + } + global $user_cookie_site; + $_SESSION[$user_cookie_site] = $user; + $userlib->update_expired_groups(); + $this->set_user_preference($user, 'facebook_id', $fb_profile->id); + $this->set_user_preference($user, 'facebook_token', $access_token); + header("Location: tiki-index.php"); + die; + } else { + $this->set_user_preference($user, 'facebook_id', $fb_profile->id); + $this->set_user_preference($user, 'facebook_token', $access_token); + } return true; } else { return false; Added: trunk/register_ajax.php =================================================================== --- trunk/register_ajax.php (rev 0) +++ trunk/register_ajax.php 2010-10-31 03:14:46 UTC (rev 30425) @@ -0,0 +1,33 @@ +<?php + +function chkRegName($name) { + global $smarty, $ajaxlib, $userlib; + $pre_no = " <img src='pics/icons/exclamation.png' style='vertical-align: middle;' alt='Error' /> "; + $pre_yes = " <img src='pics/icons/accept.png' style='vertical-align:middle' alt='Correct' /> "; + $ajaxlib->registerTemplate('tiki-register.tpl'); + $objResponse = new xajaxResponse(); + if ( empty($name) ) { + $objResponse->assign('ajax_msg_name', "innerHTML", $pre_no.tra("Missing User Name")); + } elseif ( $userlib->user_exists($name) ) { + $objResponse->assign('ajax_msg_name', "innerHTML", $pre_no.tra("User Already Exists")); + } else { + $objResponse->assign('ajax_msg_name', "innerHTML", $pre_yes.tra("Valid User Name")); + } + return $objResponse; +} + +function chkRegEmail($mail) { + global $smarty, $ajaxlib; + $pre_no = " <img src='pics/icons/exclamation.png' style='vertical-align: middle;' alt='Error' /> "; + $pre_yes = " <img src='pics/icons/accept.png' style='vertical-align:middle' alt='Correct' /> "; + $ajaxlib->registerTemplate('tiki-register.tpl'); + $objResponse = new xajaxResponse(); + if (empty($mail)) { + $objResponse->assign("ajax_msg_mail", "innerHTML", $pre_no.tra("Missing Email")); + } elseif (!preg_match('/^[_a-z0-9\.\-]+@[_a-z0-9\.\-]+\.[a-z]{2,4}$/i', $mail)) { + $objResponse->assign("ajax_msg_mail", "innerHTML", $pre_no.tra('This is not a valid mail address')); + } else { + $objResponse->assign("ajax_msg_mail", "innerHTML", $pre_yes.tra("Valid Email")); + } + return $objResponse; +} Modified: trunk/templates/modules/mod-login_box.tpl =================================================================== --- trunk/templates/modules/mod-login_box.tpl 2010-10-31 02:44:38 UTC (rev 30424) +++ trunk/templates/modules/mod-login_box.tpl 2010-10-31 03:14:46 UTC (rev 30425) @@ -177,4 +177,7 @@ </fieldset> </form> {/if} + {if $prefs.socialnetworks_facebook_login eq 'y'} + <div style="text-align: center"><a href="tiki-socialnetworks.php?request_facebook=true"><img src="http://developers.facebook.com/images/devsite/login-button.png" /></a></div> + {/if} {/tikimodule} Modified: trunk/templates/register-email.tpl =================================================================== --- trunk/templates/register-email.tpl 2010-10-31 02:44:38 UTC (rev 30424) +++ trunk/templates/register-email.tpl 2010-10-31 03:14:46 UTC (rev 30425) @@ -1,4 +1,4 @@ -{if $prefs.user_register_prettytracker eq 'y' and $prefs.user_register_prettytracker_tpl} +{if $prefs.user_register_prettytracker eq 'y' and $prefs.user_register_prettytracker_tpl and $prefs.socialnetworks_user_firstlogin != 'y'} <input type="text" id="email" name="email" /><strong class='mandatory_star'>*</strong> {else} {if $prefs.login_is_email ne 'y'} @@ -13,9 +13,9 @@ <span id="ajax_msg_mail" style="vertical-align: middle;"></span> {/if} {if $prefs.validateUsers eq 'y' and $prefs.validateEmail ne 'y'} - <div class="highlight"> + <p class="highlight"> <em class='mandatory_note'>{tr}A valid email is mandatory to register{/tr}</em> - </div> + </p> {/if} </td> </tr> Modified: trunk/templates/register-login.tpl =================================================================== --- trunk/templates/register-login.tpl 2010-10-31 02:44:38 UTC (rev 30424) +++ trunk/templates/register-login.tpl 2010-10-31 03:14:46 UTC (rev 30425) @@ -1,4 +1,4 @@ -{if $prefs.user_register_prettytracker eq 'y' and $prefs.user_register_prettytracker_tpl} +{if $prefs.user_register_prettytracker eq 'y' and $prefs.user_register_prettytracker_tpl and $prefs.socialnetworks_user_firstlogin != 'y'} <input type="text" name="name" id="name" /><strong class='mandatory_star'>*</strong> {else} <tr> Modified: trunk/templates/tiki-admin_include_socialnetworks.tpl =================================================================== --- trunk/templates/tiki-admin_include_socialnetworks.tpl 2010-10-31 02:44:38 UTC (rev 30424) +++ trunk/templates/tiki-admin_include_socialnetworks.tpl 2010-10-31 03:14:46 UTC (rev 30425) @@ -34,6 +34,17 @@ {preference name=socialnetworks_facebook_api_key} {preference name=socialnetworks_facebook_application_secr} {preference name=socialnetworks_facebook_application_id} + {preference name=socialnetworks_facebook_login} + {preference name=socialnetworks_facebook_autocreateuser} + {preference name=socialnetworks_facebook_firstloginpopup} + {remarksbox type="note" title="{tr}Note{/tr}"} + {tr}The following preferences affect what permissions the user is asked to allow Tiki to do by Facebook when authorizing it.{/tr} + {/remarksbox} + {preference name=socialnetworks_facebook_offline_access} + {preference name=socialnetworks_facebook_publish_stream} + {preference name=socialnetworks_facebook_manage_events} + {preference name=socialnetworks_facebook_manage_pages} + {preference name=socialnetworks_facebook_sms} </div> </fieldset> Added: trunk/templates/tiki-socialnetworks_firstlogin.tpl =================================================================== --- trunk/templates/tiki-socialnetworks_firstlogin.tpl (rev 0) +++ trunk/templates/tiki-socialnetworks_firstlogin.tpl 2010-10-31 03:14:46 UTC (rev 30425) @@ -0,0 +1,66 @@ +{if $alldone} + +{jq} +window.parent.location = 'tiki-index.php'; +{/jq} +<p>{tr}You will be redirected to the home page shortly.{/tr} <a href="tiki-index.php" target="_parent">{tr}Click here{/tr}</a> {tr}to go to the home page immediately.{/tr}</p> + +{else} + +{if $msg}<p><strong>{$msg|escape}</strong></p>{/if} + +<h4>{tr}Please provide local account information{/tr}</h4> +<form action="tiki-socialnetworks_firstlogin.php" method="post" name="RegForm"> +<table class="formcolor"> +{include file="register-login.tpl"} +{include file="register-email.tpl"} +{include file="register-groupchoice.tpl"} +{if $msg}<p>{$msg|escape}</p>{/if} +<tr> +<td> </td> +<td><input type="submit" name="localinfosubmit" value="{tr}Submit{/tr}" /></td> +</tr> +</table> +</form> + +<h4>{tr}Do you already have a local account for this site? Login to link to it using the following form instead{/tr}</h4> +<form action="tiki-socialnetworks_firstlogin.php" method="post" name="RegForm"> +<table class="formcolor"> +<tr> +<td>{tr}Login{/tr}:</td> +<td><input type="text" name="userlogin" /> </td> +</tr> +<tr> +<td>{tr}Password{/tr}:</td> +<td><input type="password" name="userpass" /> </td> +</tr> +<tr> +<td> </td> +<td><input type="submit" name="linkaccount" value="{tr}Link to Existing Account{/tr}" /></td> +</tr> +</table> +</form> + +{/if} + +{literal} +<style type="text/css"> +#col1 { width: 580px; } +#col2, #col3, #header, #footer, #header-shadow, #footer-shadow {display: none;} +body { + background: none; + background-color: white; +} +</style> +{/literal} + +{jq notonready=true} +function check_name() { + xajax.config.requestURI = "tiki-socialnetworks_firstlogin.php"; + xajax_chkRegName(xajax.$('name').value); +} +function check_mail() { + xajax.config.requestURI = "tiki-socialnetworks_firstlogin.php"; + xajax_chkRegEmail(xajax.$('email').value); +} +{/jq} \ No newline at end of file Added: trunk/templates/tiki-socialnetworks_firstlogin_launcher.tpl =================================================================== --- trunk/templates/tiki-socialnetworks_firstlogin_launcher.tpl (rev 0) +++ trunk/templates/tiki-socialnetworks_firstlogin_launcher.tpl 2010-10-31 03:14:46 UTC (rev 30425) @@ -0,0 +1,18 @@ +{jq} +{{if $mid != 'tiki-socialnetworks_firstlogin.tpl'}} + $jq("body").colorbox({ + open: true, + href: "tiki-socialnetworks_firstlogin.php", + iframe: true, + scrolling: false, + width: 650, + height: 600 + }); +{{/if}} +{/jq} +{literal} +<style type="text/css"> +#cboxClose{display:none !important;} +#cboxIframe{overflow:hidden;} +</style> +{/literal} \ No newline at end of file Modified: trunk/templates/tiki.tpl =================================================================== --- trunk/templates/tiki.tpl 2010-10-31 02:44:38 UTC (rev 30424) +++ trunk/templates/tiki.tpl 2010-10-31 03:14:46 UTC (rev 30425) @@ -152,6 +152,10 @@ {include file='footer.tpl'} +{if $prefs.socialnetworks_user_firstlogin == 'y'} + {include file='tiki-socialnetworks_firstlogin_launcher.tpl'} +{/if} + {if $prefs.feature_endbody_code}{*this code must be added just before </body>: needed by google analytics *} {eval var=$prefs.feature_endbody_code} {/if} Modified: trunk/tiki-register.php =================================================================== --- trunk/tiki-register.php 2010-10-31 02:44:38 UTC (rev 30424) +++ trunk/tiki-register.php 2010-10-31 03:14:46 UTC (rev 30425) @@ -104,46 +104,13 @@ if ($prefs['ajax_xajax'] == 'y') { global $ajaxlib; include_once ('lib/ajax/ajaxlib.php'); -// include_once ('tiki-regsiter_ajax.php'); + include_once ('register_ajax.php'); $ajaxlib->registerFunction('chkRegName'); $ajaxlib->registerFunction('chkRegEmail'); $ajaxlib->registerTemplate('tiki-register.tpl'); $ajaxlib->processRequests(); } - -function chkRegName($name) { - global $smarty, $ajaxlib, $userlib; - $pre_no = " <img src='pics/icons/exclamation.png' style='vertical-align: middle;' alt='Error' /> "; - $pre_yes = " <img src='pics/icons/accept.png' style='vertical-align:middle' alt='Correct' /> "; - $ajaxlib->registerTemplate('tiki-register.tpl'); - $objResponse = new xajaxResponse(); - if ( empty($name) ) { - $objResponse->assign('ajax_msg_name', "innerHTML", $pre_no.tra("Missing User Name")); - } elseif ( $userlib->user_exists($name) ) { - $objResponse->assign('ajax_msg_name', "innerHTML", $pre_no.tra("User Already Exists")); - } else { - $objResponse->assign('ajax_msg_name', "innerHTML", $pre_yes.tra("Valid User Name")); - } - return $objResponse; -} - -function chkRegEmail($mail) { - global $smarty, $ajaxlib; - $pre_no = " <img src='pics/icons/exclamation.png' style='vertical-align: middle;' alt='Error' /> "; - $pre_yes = " <img src='pics/icons/accept.png' style='vertical-align:middle' alt='Correct' /> "; - $ajaxlib->registerTemplate('tiki-register.tpl'); - $objResponse = new xajaxResponse(); - if (empty($mail)) { - $objResponse->assign("ajax_msg_mail", "innerHTML", $pre_no.tra("Missing Email")); - } elseif (!preg_match('/^[_a-z0-9\.\-]+@[_a-z0-9\.\-]+\.[a-z]{2,4}$/i', $mail)) { - $objResponse->assign("ajax_msg_mail", "innerHTML", $pre_no.tra('This is not a valid mail adress')); - } else { - $objResponse->assign("ajax_msg_mail", "innerHTML", $pre_yes.tra("Valid Email")); - } - return $objResponse; -} - function register_error($msg) { global $smarty; $smarty->assign('msg', $msg); Modified: trunk/tiki-socialnetworks.php =================================================================== --- trunk/tiki-socialnetworks.php 2010-10-31 02:44:38 UTC (rev 30424) +++ trunk/tiki-socialnetworks.php 2010-10-31 03:14:46 UTC (rev 30425) @@ -16,10 +16,11 @@ $smarty->display("error.tpl"); die; } -$access->check_user($user); + $access->check_permission('tiki_p_socialnetworks',tra('Social networks')); if (isset($_REQUEST['request_twitter'])) { + $access->check_user($user); if (!isset($_REQUEST['oauth_verifier'])) { // user asked to give us access to twitter $socialnetworkslib->getTwitterRequestToken(); @@ -32,32 +33,45 @@ } } if (isset($_REQUEST['remove_twitter'])) { + $access->check_user($user); // remove user token from tiki $tikilib->set_user_preference($user, 'twitter_token',''); $smarty->assign('show_removal',true); } -$token=$tikilib->get_user_preference($user, 'twitter_token', ''); -$smarty->assign('twitter', ($token!='')); +if ($user) { + $token=$tikilib->get_user_preference($user, 'twitter_token', ''); + $smarty->assign('twitter', ($token!='')); +} if (isset($_REQUEST['request_facebook'])) { + if ($prefs["socialnetworks_facebook_login"] != 'y') { + $access->check_user($user); + } if (!isset($_REQUEST['code'])) { - // user asked to give us access to twitter + // user asked to give us access to Facebook $socialnetworkslib->getFacebookRequestToken(); } else { - if ($tikilib->get_user_preference($user, 'facebook_token', '')=='') { - // this is the callback from facebook - check_ticket('socialnetworks'); - $socialnetworkslib->getFacebookAccessToken($user); - } // otherwise it is just a reload of this page + // this is the callback from facebook + check_ticket('socialnetworks'); + if ($user) { + if ($tikilib->get_user_preference($user, 'facebook_token', '')=='') { + $socialnetworkslib->getFacebookAccessToken(); + } // if user already has a token, it is just a refresh of the page + } else { + // Simply login user with Facebook + $socialnetworkslib->getFacebookAccessToken(); + } } } if (isset($_REQUEST['remove_facebook'])) { + $access->check_user($user); // remove user token from tiki $tikilib->set_user_preference($user, 'facebook_token',''); $smarty->assign('show_removal',true); } if (isset($_REQUEST['accounts'])) { + $access->check_user($user); $tikilib->set_user_preference($user, 'bitly_login', $_REQUEST['bitly_login']); $smarty->assign('bitly_login',$_REQUEST['bitly_login']); $tikilib->set_user_preference($user, 'bitly_key', $_REQUEST['bitly_key']); @@ -66,8 +80,10 @@ $smarty->assign('bitly_login',$tikilib->get_user_preference($user, 'bitly_login','')); $smarty->assign('bitly_key',$tikilib->get_user_preference($user, 'bitly_key','')); } -$token=$tikilib->get_user_preference($user, 'facebook_token', ''); -$smarty->assign('facebook', ($token!='')); +if ($user) { + $token=$tikilib->get_user_preference($user, 'facebook_token', ''); + $smarty->assign('facebook', ($token!='')); +} $smarty->assign('twitterRegistered',$socialnetworkslib->twitterRegistered()); $smarty->assign('facebookRegistered',$socialnetworkslib->facebookRegistered()); Added: trunk/tiki-socialnetworks_firstlogin.php =================================================================== --- trunk/tiki-socialnetworks_firstlogin.php (rev 0) +++ trunk/tiki-socialnetworks_firstlogin.php 2010-10-31 03:14:46 UTC (rev 30425) @@ -0,0 +1,65 @@ +<?php + +require_once ('tiki-setup.php'); +$access->check_user($user); + +if ($prefs['ajax_xajax'] == 'y') { + global $ajaxlib; + include_once ('lib/ajax/ajaxlib.php'); + include_once ('register_ajax.php'); + $ajaxlib->registerFunction('chkRegName'); + $ajaxlib->registerFunction('chkRegEmail'); + $ajaxlib->registerTemplate('tiki-register.tpl'); + $ajaxlib->processRequests(); +} + +$smarty->assign('msg', ''); +$smarty->assign('alldone', false); + +//groups choice +if (count($registrationlib->merged_prefs['choosable_groups'])) { + $smarty->assign('listgroups', $registrationlib->merged_prefs['choosable_groups']); + if (count($registrationlib->merged_prefs['choosable_groups']) == 1) { + $smarty->assign_by_ref('theChoiceGroup', $registrationlib->merged_prefs['choosable_groups'][0]['groupName']); + } +} + +if (isset($_REQUEST["localinfosubmit"])) { + if (empty($_REQUEST["name"]) || empty($_REQUEST["email"])) { + $smarty->assign('msg', tra('Username and email are mandatory')); + } elseif ($userlib->user_exists($_REQUEST["name"])) { + $smarty->assign('msg', tra('User already exists')); + } elseif (!preg_match('/^[_a-z0-9\.\-]+@[_a-z0-9\.\-]+\.[a-z]{2,4}$/i', $_REQUEST["email"])) { + $smarty->assign('msg', tra('Email is invalid')); + } else { + $tikilib->set_user_preference($user, 'socialnetworks_user_firstlogin', 'n'); + $userlib->change_user_email($user, $_REQUEST["email"]); + $userlib->change_login($user, $_REQUEST["name"]); + $user = $_REQUEST["name"]; + $_SESSION[$user_cookie_site] = $user; + if (isset($_REQUEST['chosenGroup']) && $userlib->get_registrationChoice($_REQUEST['chosenGroup']) == 'y') { + $userlib->set_default_group($user, $_REQUEST['chosenGroup']); + } + $smarty->assign('alldone', true); + } +} + +if (isset($_REQUEST["linkaccount"])) { + list($isvalid, $user, $error) = $userlib->validate_user($_REQUEST["userlogin"], $_REQUEST["userpass"]); + if (!$isvalid) { + $smarty->assign('msg', tra('Invalid username or password')); + } else { + $facebook_id = $tikilib->get_user_preference($user, 'facebook_id'); + // TODO set other social networking IDs + $tikilib->set_user_preference($_REQUEST["userlogin"], 'socialnetworks_user_firstlogin', 'n'); + $tikilib->set_user_preference($_REQUEST["userlogin"], 'facebook_id', $facebook_id); + $tikilib->set_user_preference($user, 'facebook_id', ''); + $userlib->remove_user($user); + $user = $_REQUEST["userlogin"]; + $_SESSION[$user_cookie_site] = $user; + $smarty->assign('alldone', true); + } +} + +$smarty->assign('mid','tiki-socialnetworks_firstlogin.tpl'); +$smarty->display('tiki.tpl'); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |