function User_xe17($id = '') { global $Config; parent::WikiUser($id); $cookie_id = $this->id != 'Anonymous' ? $this->id : ''; // set xe_root_dir config option $xe_root_dir = !empty($Config['xe_root_dir']) ? $Config['xe_root_dir'] : dirname(__FILE__) . '/../../../xe'; // default xe_root_dir is 'xe' subdirectory of the parent dir of the moniwiki $sessid = session_name(); // PHPSESSID // set the session_id() using saved cookie if (isset($_COOKIE[$sessid])) { session_id($_COOKIE[$sessid]); } // do not use cookies for varnish cache server ini_set("session.use_cookies", 0); session_cache_limiter(''); // Cache-Control manually for varnish cache session_start(); // is it a valid user ? $udb = new UserDB($Config); $user = $udb->getUser($cookie_id); $update = false; if (!empty($cookie_id)) { // not found if ($user->id == 'Anonymous') { $this->setID('Anonymous'); $update = true; $cookie_id = ''; } else { // check ticket $ticket = getTicket($user->id, $_SERVER['REMOTE_ADDR']); if ($this->ticket != $ticket) { // not a valid user $this->ticket = ''; $this->setID('Anonymous'); $update = true; //$cookie_id = ''; } else { // OK good user $this->setID($cookie_id); $id = $cookie_id; $this->nick = $user->info['nick']; $this->tz_offset = $user->info['tz_offset']; $this->info = $user->info; $this->ticket = $ticket; } } } else { // empty cookie $update = true; } if ($update && !empty($_SESSION['is_logged'])) { // init XE17, XE18 define('__XE__', true); require_once $xe_root_dir . "/config/config.inc.php"; $context =& Context::getInstance(); $this->xe_context_init($context); // simplified init context method // $context->init(); // slow slow $oMemberModel =& getModel('member'); $oMemberController =& getController('member'); $oMemberController->setSessionInfo(); $member = new memberModel(); $xeinfo = $member->getLoggedInfo(); $id = $xeinfo->user_id; $user = $udb->getUser($id); // get user info again // not a registered user ? if ($user->id == 'Anonymous' || $update || empty($user->info['nick'])) { // check groups $groups = array_keys($xeinfo->group_list); $wikigroups = array(); $group_ok = $xeinfo->is_admin == 'Y' ? true : false; if (!empty($Config['xe_allowed_groups'])) { $allowed_groups = $Config['xe_allowed_groups']; for ($i = 0; $i < sizeof($groups); $i++) { if (isset($allowed_groups[$groups[$i]])) { $group_ok = true; $groupname = $allowed_groups[$groups[$i]]; if (!empty($groupname)) { $wikigroups[] = $groupname; } } } } else { $group_ok = true; } if ($group_ok) { if (!empty($wikigroups)) { $this->groups = $wikigroups; $user->info['groups'] = implode(',', $wikigroups); $this->info['groups'] = $user->info['groups']; } else { if (!empty($this->info['groups'])) { $user->info['groups'] = '@User'; $this->info['groups'] = $user->info['groups']; } } $this->setID($id); // not found case $this->info = $user->info; // already registered case $ticket = getTicket($id, $_SERVER['REMOTE_ADDR']); // get ticket if ($this->nick != $xeinfo->nick_name) { $this->nick = $xeinfo->nick_name; $this->info['nick'] = $xeinfo->nick_name; } if ($this->info['email'] == '') { $this->info['email'] = $xeinfo->email_address; } $this->info['tz_offset'] = $this->tz_offset; $this->ticket = $ticket; } else { if (!empty($cookie_id)) { header($this->unsetCookie()); } $this->setID('Anonymous'); $id = 'Anonymous'; } } } else { // not logged in if (empty($_SESSION['is_logged'])) { if (!empty($cookie_id)) { header($this->unsetCookie()); } $this->setID('Anonymous'); $id = 'Anonymous'; } } if ($update || !empty($id) and $id != 'Anonymous') { if ($cookie_id != $id) { header($this->setCookie()); } } if ($update || !$udb->_exists($id)) { if (!$udb->_exists($id)) { if (!empty($Config['use_agreement']) && empty($this->info['join_agreement'])) { $this->info['join_agreement'] = 'disagree'; } } // automatically save/register user $dummy = $udb->saveUser($this); } }
function User_g4($id = '') { global $DBInfo; global $g4, $member, $g4_root_dir; parent::WikiUser($id); if ($this->id == 'Anonymous') { return; } $cookie_id = $this->id; // setup GnuBoard $g4_root_dir = !empty($DBInfo->g4_root_dir) ? $DBInfo->g4_root_dir : __DIR__ . '/../../../gb4'; $g4_root_url = !empty($DBInfo->g4_root_url) ? $DBInfo->g4_root_url : '/gb4'; $g5_path = array(); $g5_path['path'] = realpath($g4_root_dir); $g5_path['url'] = $g4_root_url; include_once "{$g4_root_dir}/config.php"; // g4 config file ini_set("url_rewriter.tags", ""); // session settings session_save_path("{$g4_root_dir}/data/session"); ini_set("session.use_trans_sid", 1); // default //ini_set("session.cache_expire", 180); //default //ini_set("session.gc_probability", 1); // default //ini_set("session.gc_divisor", 100); // default session_set_cookie_params(0, "/"); if (defined('G5_VERSION')) { ini_set("session.cookie_domain", G5_COOKIE_DOMAIN); } else { ini_set("session.cookie_domain", $g4['cookie_domain']); } // do not use cookies for varnish cache server ini_set("session.use_cookies", 0); // set the session_id() using saved cookie if (isset($_COOKIE['PHPSESSID'])) { session_id($_COOKIE['PHPSESSID']); } session_cache_limiter(''); // Cache-Control manually for varnish cachie session_start(); $udb = new UserDB($DBInfo); $user = $udb->getUser($cookie_id); $update = false; if (!empty($cookie_id)) { // not found if ($user->id == 'Anonymous') { $this->setID('Anonymous'); $update = true; $cookie_id = ''; } else { // check ticket $ticket = getTicket($user->id, $_SERVER['REMOTE_ADDR']); if ($this->ticket != $ticket) { // not a valid user $this->ticket = ''; $this->setID('Anonymous'); $update = true; $cookie_id = ''; } else { // OK good user $this->setID($cookie_id); $id = $cookie_id; $this->nick = $user->info['nick']; $this->tz_offset = $user->info['tz_offset']; $this->info = $user->info; } } } else { $update = true; } if ($update && !empty($_SESSION['ss_mb_id'])) { // init G4 $this->g4_init(); if (!empty($member['mb_id'])) { $id = $member['mb_id']; $user = $udb->getUser($id); // get user info again // not a registered user ? if ($user->id == 'Anonymous' || $update || empty($user->info['nick'])) { $this->setID($id); // not found case $this->info = $user->info; // already registered case if (isset($member['mb_nick']) and $this->nick != $member['mb_nick']) { // G4 $this->info['nick'] = $member['mb_nick']; $this->nick = $member['mb_nick']; } else { if (isset($member['nick']) and $this->nick != $member['nick']) { // G5 $this->info['nick'] = $member['nick']; $this->nick = $member['nick']; } } if ($this->info['email'] == '') { $this->info['email'] = $member['mb_email']; } $this->info['tz_offset'] = $this->tz_offset; } } } else { // not logged in if (empty($_SESSION['ss_mb_id'])) { if (!empty($cookie_id)) { header($this->unsetCookie()); } $this->setID('Anonymous'); $id = 'Anonymous'; } } // update timezone if ($this->tz_offset != $user->info['tz_offset']) { $this->info['tz_offset'] = $this->tz_offset; $update = true; } if ($update || !empty($id) and $id != 'Anonymous') { if ($cookie_id != $id) { header($this->setCookie()); } } if ($update || !$udb->_exists($id)) { if (!$udb->_exists($id)) { if (!empty($DBInfo->use_agreement) && empty($this->info['join_agreement'])) { $this->info['join_agreement'] = 'disagree'; } } // automatically save/register user $dummy = $udb->saveUser($this); } }