/** Creates a new session entry in database and return its ID. * * @param $uid the id of the logged user * @param $suid the id of the administrator who has just su'd to the user * @return session the session id */ private function writeSession($uid, $suid = null) { $ip = $_SERVER['REMOTE_ADDR']; $host = strtolower(gethostbyaddr($_SERVER['REMOTE_ADDR'])); $browser = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; @(list($forward_ip, ) = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])); $forward_host = $forward_ip; if ($forward_host) { $forward_host = strtolower(gethostbyaddr($forward_host)); } $proxy = ''; if ($forward_ip || @$_SERVER['HTTP_VIA']) { $proxy = 'proxy'; } $uid = $uid == 0 ? null : $uid; $suid = $suid == 0 ? null : $suid; XDB::execute("INSERT INTO log_sessions\n SET uid={?}, host={?}, ip={?}, forward_ip={?}, forward_host={?}, browser={?}, suid={?}, flags={?}", $uid, $host, ip_to_uint($ip), ip_to_uint($forward_ip), $forward_host, $browser, $suid, $proxy); if ($forward_ip) { $this->proxy_ip = $ip; $this->proxy_host = $host; $this->ip = $forward_ip; $this->host = $forward_host; } else { $this->ip = $ip; $this->host = $host; } return XDB::insertId(); }
function check_ip($level) { if (empty($_SERVER['REMOTE_ADDR'])) { return false; } if (empty($_SESSION['check_ip'])) { $ips = array(); if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); } $ips[] = $_SERVER['REMOTE_ADDR']; foreach ($ips as $key => $ip) { $v = ip_to_uint($ip); if (is_null($v)) { unset($ips[$key]); } else { $ips[$key] = '(ip & mask) = (' . $v . '& mask)'; } } $res = XDB::query('SELECT state, description FROM ip_watch WHERE ' . implode(' OR ', $ips) . ' ORDER BY state DESC'); if ($res->numRows()) { $state = $res->fetchOneAssoc(); $_SESSION['check_ip'] = $state['state']; $_SESSION['check_ip_desc'] = $state['description']; } else { $_SESSION['check_ip'] = 'safe'; } } $test = array(); switch ($level) { case 'unsafe': $test[] = 'unsafe'; case 'dangerous': $test[] = 'dangerous'; case 'ban': $test[] = 'ban'; break; default: return false; } return in_array($_SESSION['check_ip'], $test); }
function handler_ipwatch($page, $action = 'list', $ip = null) { $page->changeTpl('admin/ipwatcher.tpl'); $states = array('safe' => 'Ne pas surveiller', 'unsafe' => 'Surveiller les inscriptions', 'dangerous' => 'Surveiller tous les accès', 'ban' => 'Bannir cette adresse'); $page->assign('states', $states); switch (Post::v('action')) { case 'create': if (trim(Post::v('ipN')) != '') { S::assert_xsrf_token(); Xdb::execute('INSERT IGNORE INTO ip_watch (ip, mask, state, detection, last, uid, description) VALUES ({?}, {?}, {?}, CURDATE(), NOW(), {?}, {?})', ip_to_uint(trim(Post::v('ipN'))), ip_to_uint(trim(Post::v('maskN'))), Post::v('stateN'), S::i('uid'), Post::v('descriptionN')); } break; case 'edit': S::assert_xsrf_token(); Xdb::execute('UPDATE ip_watch SET state = {?}, last = NOW(), uid = {?}, description = {?}, mask = {?} WHERE ip = {?}', Post::v('stateN'), S::i('uid'), Post::v('descriptionN'), ip_to_uint(Post::v('maskN')), ip_to_uint(Post::v('ipN'))); break; default: if ($action == 'delete' && !is_null($ip)) { S::assert_xsrf_token(); Xdb::execute('DELETE FROM ip_watch WHERE ip = {?}', ip_to_uint($ip)); } } if ($action != 'create' && $action != 'edit') { $action = 'list'; } $page->assign('action', $action); if ($action == 'list') { $sql = "SELECT w.ip, IF(s.ip IS NULL,\n IF(w.ip = s2.ip, s2.host, s2.forward_host),\n IF(w.ip = s.ip, s.host, s.forward_host)),\n w.mask, w.detection, w.state, a.hruid\n FROM ip_watch AS w\n LEFT JOIN log_sessions AS s ON (s.ip = w.ip)\n LEFT JOIN log_sessions AS s2 ON (s2.forward_ip = w.ip)\n LEFT JOIN accounts AS a ON (a.uid = s.uid)\n GROUP BY w.ip, a.hruid\n ORDER BY w.state, w.ip, a.hruid"; $it = Xdb::iterRow($sql); $table = array(); $props = array(); while (list($ip, $host, $mask, $date, $state, $hruid) = $it->next()) { $ip = uint_to_ip($ip); $mask = uint_to_ip($mask); if (count($props) == 0 || $props['ip'] != $ip) { if (count($props) > 0) { $table[] = $props; } $props = array('ip' => $ip, 'mask' => $mask, 'host' => $host, 'detection' => $date, 'state' => $state, 'users' => array($hruid)); } else { $props['users'][] = $hruid; } } if (count($props) > 0) { $table[] = $props; } $page->assign('table', $table); } elseif ($action == 'edit') { $sql = "SELECT w.detection, w.state, w.last, w.description, w.mask,\n a1.hruid AS edit, a2.hruid AS hruid, s.host\n FROM ip_watch AS w\n LEFT JOIN accounts AS a1 ON (a1.uid = w.uid)\n LEFT JOIN log_sessions AS s ON (w.ip = s.ip)\n LEFT JOIN accounts AS a2 ON (a2.uid = s.uid)\n WHERE w.ip = {?}\n GROUP BY a2.hruid\n ORDER BY a2.hruid"; $it = Xdb::iterRow($sql, ip_to_uint($ip)); $props = array(); while (list($detection, $state, $last, $description, $mask, $edit, $hruid, $host) = $it->next()) { if (count($props) == 0) { $props = array('ip' => $ip, 'mask' => uint_to_ip($mask), 'host' => $host, 'detection' => $detection, 'state' => $state, 'last' => $last, 'description' => $description, 'edit' => $edit, 'users' => array($hruid)); } else { $props['users'][] = $hruid; } } $page->assign('ip', $props); } }
public static function simpleUserProvider() { self::checkPlatal(); $tests = array(); $tests['id'] = array(array(self::buildAccountQuery('INNER JOIN account_profiles AS ap2 ON (ap2.uid = a.uid) WHERE FIND_IN_SET(\'owner\', ap2.perms)'), new UFC_HasProfile(), -1), array(self::buildAccountQuery('WHERE a.hruid = {?}', 'florent.bruneau.2003'), new UFC_Hruid('florent.bruneau.2003'), 1), array(self::buildAccountQuery('WHERE a.hruid = {?}', 'florent.bruneau.2004'), new UFC_Hruid('florent.bruneau.2004'), 0), array(self::buildAccountQuery('WHERE a.hruid IN {?}', array('florent.bruneau.2003', 'stephane.jacob.2004')), new UFC_Hruid('florent.bruneau.2003', 'stephane.jacob.2004'), 2), array(self::buildAccountQuery('WHERE a.hruid IN {?}', array('florent.bruneau.2004', 'stephane.jacob.2004')), new UFC_Hruid('florent.bruneau.2004', 'stephane.jacob.2004'), 1), array(self::buildProfileQuery('WHERE p.hrpid = {?}', 'florent.bruneau.2003'), new UFC_Hrpid('florent.bruneau.2003'), 1), array(self::buildProfileQuery('WHERE p.hrpid = {?}', 'florent.bruneau.2004'), new UFC_Hrpid('florent.bruneau.2004'), 0), array(self::buildProfileQuery('WHERE p.hrpid IN {?}', array('florent.bruneau.2003', 'stephane.jacob.2004')), new UFC_Hrpid('florent.bruneau.2003', 'stephane.jacob.2004'), 2), array(self::buildProfileQuery('WHERE p.hrpid IN {?}', array('florent.bruneau.2004', 'stephane.jacob.2004')), new UFC_Hrpid('florent.bruneau.2004', 'stephane.jacob.2004'), 1), array(self::buildAccountQuery('INNER JOIN log_sessions AS s ON (s.uid = a.uid) WHERE s.ip = {?} OR s.forward_ip = {?}', ip_to_uint('129.104.247.2'), ip_to_uint('129.104.247.2')), new UFC_Ip('129.104.247.2'), -1)); /* TODO: UFC_Comment */ /* UFC_Promo */ $tests['promo'] = array(array(self::buildProfileQuery('INNER JOIN profile_display AS pd ON (pd.pid = p.pid) WHERE pd.promo = {?}', 'X2004'), new UFC_Promo('=', UserFilter::DISPLAY, 'X2004'), -1), array(self::buildProfileQuery('INNER JOIN profile_education AS pe ON (pe.pid = p.pid) LEFT JOIN profile_education_enum AS pee ON (pe.eduid = pee.id) LEFT JOIN profile_education_degree_enum AS pede ON (pe.degreeid = pede.id) WHERE pe.entry_year = {?} AND pee.abbreviation = \'X\' AND pede.abbreviation = {?}', '2004', 'Ing.'), new UFC_Promo('=', UserFilter::GRADE_ING, 2004), -1), array(self::buildProfileQuery('INNER JOIN profile_education AS pe ON (pe.pid = p.pid) LEFT JOIN profile_education_enum AS pee ON (pe.eduid = pee.id) LEFT JOIN profile_education_degree_enum AS pede ON (pe.degreeid = pede.id) WHERE pe.entry_year <= {?} AND pee.abbreviation = \'X\' AND pede.abbreviation = {?}', '1960', 'Ing.'), new UFC_Promo('<=', UserFilter::GRADE_ING, 1960), -1), array(self::buildProfileQuery('INNER JOIN profile_education AS pe ON (pe.pid = p.pid) LEFT JOIN profile_education_enum AS pee ON (pe.eduid = pee.id) LEFT JOIN profile_education_degree_enum AS pede ON (pe.degreeid = pede.id) WHERE pe.entry_year > {?} AND pee.abbreviation = \'X\' AND pede.abbreviation = {?}', '2004', 'Ing.'), new UFC_Promo('>', UserFilter::GRADE_ING, 2004), -1), array(self::buildProfileQuery('INNER JOIN profile_education AS pe ON (pe.pid = p.pid) LEFT JOIN profile_education_enum AS pee ON (pe.eduid = pee.id) LEFT JOIN profile_education_degree_enum AS pede ON (pe.degreeid = pede.id) WHERE pe.entry_year < {?} AND pee.abbreviation = \'X\' AND pede.abbreviation = {?}', '1900', 'Ing.'), new UFC_Promo('<', UserFilter::GRADE_ING, 1900), 0)); /* UFC_SchoolId */ $tests['schoolid'] = array(array(self::buildProfileQuery('WHERE p.xorg_id = {?}', 20060076), new UFC_SchoolId(UFC_SchoolId::Xorg, 20060076), 1), array(self::buildProfileQuery('WHERE p.ax_id = {?}', 20060062), new UFC_SchoolId(UFC_SchoolId::AX, 20060062), 1), array(self::buildProfileQuery('WHERE p.xorg_id = {?}', 07), new UFC_SchoolId(UFC_SchoolId::Xorg, 07), 0), array(self::buildProfileQuery('WHERE p.ax_id = {?}', 07), new UFC_SchoolId(UFC_SchoolId::AX, 07), 0)); /* UFC_EducationSchool */ $id_X = XDB::fetchOneCell('SELECT id FROM profile_education_enum WHERE abbreviation = {?}', 'X'); $id_HEC = XDB::fetchOneCell('SELECT id FROM profile_education_enum WHERE abbreviation = {?}', 'HEC'); $tests['school'] = array(array(self::buildProfileQuery('INNER JOIN profile_education AS pe ON (pe.pid = p.pid) LEFT JOIN profile_education_enum AS pee ON (pe.eduid = pee.id) WHERE pee.abbreviation = {?}', 'X'), new UFC_EducationSchool($id_X), -1), array(self::buildProfileQuery('INNER JOIN profile_education AS pe ON (pe.pid = p.pid) LEFT JOIN profile_education_enum AS pee ON (pe.eduid = pee.id) WHERE pee.abbreviation IN {?}', array('X', 'HEC')), new UFC_EducationSchool($id_X, $id_HEC), -1)); /* UFC_EducationDegree */ $id_DegreeIng = XDB::fetchOneCell('SELECT id FROM profile_education_degree_enum WHERE abbreviation = {?}', 'Ing.'); $id_DegreePhd = XDB::fetchOneCell('SELECT id FROM profile_education_degree_enum WHERE abbreviation = {?}', 'PhD'); $tests['degree'] = array(array(self::buildProfileQuery('INNER JOIN profile_education AS pe ON (pe.pid = p.pid) LEFT JOIN profile_education_degree_enum AS pede ON (pe.degreeid = pede.id) WHERE pede.abbreviation = {?}', 'Ing.'), new UFC_EducationDegree($id_DegreeIng), -1), array(self::buildProfileQuery('INNER JOIN profile_education AS pe ON (pe.pid = p.pid) LEFT JOIN profile_education_degree_enum AS pede ON (pe.degreeid = pede.id) WHERE pede.abbreviation IN {?}', array('Ing.', 'PhD')), new UFC_EducationDegree($id_DegreeIng, $id_DegreePhd), -1)); /* UFC_EducationField */ $id_FieldInfo = XDB::fetchOneCell('SELECT id FROM profile_education_field_enum WHERE field = {?}', 'Informatique'); $id_FieldDroit = XDB::fetchOneCell('SELECT id FROM profile_education_field_enum WHERE field = {?}', 'Droit'); // FIXME: Replace 0 by -1 in following queries when profile_education will be filled with fieldids $tests['edufield'] = array(array(self::buildProfileQuery('INNER JOIN profile_education AS pe ON (pe.pid = p.pid) LEFT JOIN profile_education_field_enum AS pefe ON (pe.fieldid = pefe.id) WHERE pefe.field = {?}', 'Informatique'), new UFC_EducationField($id_FieldInfo), 0), array(self::buildProfileQuery('INNER JOIN profile_education AS pe ON (pe.pid = p.pid) LEFT JOIN profile_education_field_enum AS pefe ON (pe.fieldid = pefe.id) WHERE pefe.field IN {?}', array('Informatique', 'Droit')), new UFC_EducationField($id_FieldInfo, $id_FieldDroit), 0)); /* UFC_Name */ $id_Lastname = DirEnum::getID(DirEnum::NAMETYPES, Profile::LASTNAME); $id_Firstname = DirEnum::getID(DirEnum::NAMETYPES, Profile::FIRSTNAME); $id_Nickname = DirEnum::getID(DirEnum::NAMETYPES, Profile::NICKNAME); $id_Lastname_Marital = DirEnum::getID(DirEnum::NAMETYPES, Profile::LASTNAME . '_' . Profile::VN_MARITAL); $id_Lastname_Ordinary = DirEnum::getID(DirEnum::NAMETYPES, Profile::LASTNAME . '_' . Profile::VN_ORDINARY); $tests['name'] = array(array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (pn.pid = p.pid) WHERE pn.name LIKE {?} AND pn.typeid = {?}', 'BARROIS', $id_Lastname), new UFC_Name(Profile::LASTNAME, 'BARROIS', UFC_Name::EXACT), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (pn.pid = p.pid) WHERE pn.name LIKE \'BARR%\' AND pn.typeid = {?}', $id_Lastname), new UFC_Name(Profile::LASTNAME, 'BARR', UFC_Name::PREFIX), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (pn.pid = p.pid) WHERE pn.name LIKE \'%OIS\' AND pn.typeid = {?}', $id_Lastname), new UFC_Name(Profile::LASTNAME, 'OIS', UFC_Name::SUFFIX), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE \'%ARRO%\' AND pn.typeid = {?}', $id_Lastname), new UFC_Name(Profile::LASTNAME, 'ARRO', UFC_Name::CONTAINS), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE \'%ZZZZZZ%\' AND pn.typeid = {?}', $id_Lastname), new UFC_Name(Profile::LASTNAME, 'ZZZZZZ', UFC_Name::CONTAINS), 0), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE {?} AND pn.typeid = {?}', 'Raphaël', $id_Firstname), new UFC_Name(Profile::FIRSTNAME, 'Raphaël', UFC_Name::EXACT), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE \'Raph%\' AND pn.typeid = {?}', $id_Firstname), new UFC_Name(Profile::FIRSTNAME, 'Raph', UFC_Name::PREFIX), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE \'%aël\' AND pn.typeid = {?}', $id_Firstname), new UFC_Name(Profile::FIRSTNAME, 'aël', UFC_Name::SUFFIX), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE \'%apha%\' AND pn.typeid = {?}', $id_Firstname), new UFC_Name(Profile::FIRSTNAME, 'apha', UFC_Name::CONTAINS), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE \'%zzzzzz%\' AND pn.typeid = {?}', $id_Firstname), new UFC_Name(Profile::FIRSTNAME, 'zzzzzz', UFC_Name::CONTAINS), 0), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE {?} AND pn.typeid = {?}', 'Xelnor', $id_Nickname), new UFC_Name(Profile::NICKNAME, 'Xelnor', UFC_Name::EXACT), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE \'Xel%\' AND pn.typeid = {?}', $id_Nickname), new UFC_Name(Profile::NICKNAME, 'Xel', UFC_Name::PREFIX), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE \'%nor\' AND pn.typeid = {?}', $id_Nickname), new UFC_Name(Profile::NICKNAME, 'nor', UFC_Name::SUFFIX), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE \'%lno%\' AND pn.typeid = {?}', $id_Nickname), new UFC_Name(Profile::NICKNAME, 'lno', UFC_Name::CONTAINS), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE \'%zzzzzz%\' AND pn.typeid = {?}', $id_Nickname), new UFC_Name(Profile::NICKNAME, 'zzzzzz', UFC_Name::CONTAINS), 0), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE CONCAT(pn.particle, \' \', pn.name) LIKE {?} AND pn.typeid = {?}', 'DE SINGLY', $id_Lastname), new UFC_Name(Profile::LASTNAME, 'DE SINGLY', UFC_Name::PARTICLE | UFC_Name::EXACT), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE CONCAT(pn.particle, \' \', pn.name) LIKE \'DE SI%\' AND pn.typeid = {?}', $id_Lastname), new UFC_Name(Profile::LASTNAME, 'DE SI', UFC_Name::PARTICLE | UFC_Name::PREFIX), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE CONCAT(pn.particle, \' \', pn.name) LIKE \'%GLY\' AND pn.typeid = {?}', $id_Lastname), new UFC_Name(Profile::LASTNAME, 'GLY', UFC_NAME::PARTICLE | UFC_Name::SUFFIX), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE CONCAT(pn.particle, \' \', pn.name) LIKE \'%E SIN%\' AND pn.typeid = {?}', $id_Lastname), new UFC_Name(Profile::LASTNAME, 'E SIN', UFC_Name::PARTICLE | UFC_Name::CONTAINS), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE CONCAT(pn.particle, \' \', pn.name) LIKE \'%ZZZZZZ%\' AND pn.typeid = {?}', $id_Lastname), new UFC_Name(Profile::LASTNAME, 'ZZZZZZ', UFC_Name::PARTICLE | UFC_Name::CONTAINS), 0), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE {?} AND pn.typeid IN {?}', 'ALBIZZATI', array($id_Lastname, $id_Lastname_Marital, $id_Lastname_Ordinary)), new UFC_Name(Profile::LASTNAME, 'ALBIZZATI', UFC_Name::VARIANTS | UFC_Name::EXACT), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE {?} AND pn.typeid IN {?}', 'ALBIZ%', array($id_Lastname, $id_Lastname_Marital, $id_Lastname_Ordinary)), new UFC_Name(Profile::LASTNAME, 'ALBIZ', UFC_Name::VARIANTS | UFC_Name::PREFIX), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE {?} AND pn.typeid IN {?}', '%ZATI', array($id_Lastname, $id_Lastname_Marital, $id_Lastname_Ordinary)), new UFC_Name(Profile::LASTNAME, 'ZATI', UFC_NAME::VARIANTS | UFC_Name::SUFFIX), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE {?} AND pn.typeid IN {?}', '%BIZZ%', array($id_Lastname, $id_Lastname_Marital, $id_Lastname_Ordinary)), new UFC_Name(Profile::LASTNAME, 'BIZZ', UFC_Name::VARIANTS | UFC_Name::CONTAINS), -1), array(self::buildProfileQuery('LEFT JOIN profile_name AS pn ON (p.pid = pn.pid) WHERE pn.name LIKE {?} AND pn.typeid IN {?}', '%ZZZZZZ%', array($id_Lastname, $id_Lastname_Marital, $id_Lastname_Ordinary)), new UFC_Name(Profile::LASTNAME, 'ZZZZZZ', UFC_Name::VARIANTS | UFC_Name::CONTAINS), 0)); /* UFC_NameTokens */ $tests['nametoken'] = array(array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.token LIKE \'xelnor%\''), new UFC_NameTokens('xelnor'), 1), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.token LIKE \'xe%\''), new UFC_NameTokens('xe'), -1), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.token LIKE \'xe%\' OR sn.token LIKE \'barr%\''), new UFC_NameTokens(array('xe', 'barr')), -1), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.token LIKE \'zzzzzzzz%\''), new UFC_NameTokens('zzzzzzzz'), 0), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.token LIKE \'barr%\' AND FIND_IN_SET(\'public\', sn.flags)'), new UFC_NameTokens('barr', UFC_NameTokens::FLAG_PUBLIC), -1), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.token = \'xelnor\''), new UFC_NameTokens('xelnor', array(), false, true), 1), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.token IN (\'xelnor\', \'barrois\')'), new UFC_NameTokens(array('xelnor', 'barrois'), array(), false, true), -1), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.token = \'zzzzzzzz\''), new UFC_NameTokens('zzzzzzzz', array(), false, true), 0), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.token IN (\'zzzzzzzz\', \'yyyyyyyy\')'), new UFC_NameTokens(array('zzzzzzzz', 'yyyyyyyy'), array(), false, true), 0), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.token = \'barrois\' AND FIND_IN_SET(\'public\', sn.flags)'), new UFC_NameTokens('barrois', UFC_NameTokens::FLAG_PUBLIC, false, true), -1), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.soundex = \'XLNO\''), new UFC_NameTokens('xelnor', array(), true), -1), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.soundex IN (\'XLNO\', \'BROS\')'), new UFC_NameTokens(array('xelnor', 'barrois'), array(), true), -1), array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid) WHERE sn.soundex = \'BROS\' AND FIND_IN_SET(\'public\', sn.flags)'), new UFC_NameTokens('barrois', UFC_NameTokens::FLAG_PUBLIC, true), -1)); /* UFC_Nationality */ $tests['nationality'] = array(array(self::buildProfileQuery('WHERE p.nationality1 IN {?} OR p.nationality2 IN {?} OR p.nationality3 IN {?}', array('BR'), array('BR'), array('BR')), new UFC_Nationality('BR'), -1), array(self::buildProfileQuery('WHERE p.nationality1 IN {?} OR p.nationality2 IN {?} OR p.nationality3 IN {?}', array('BR', 'US'), array('BR', 'US'), array('BR', 'US')), new UFC_Nationality('BR', 'US'), -1), array(self::buildProfileQuery('WHERE p.nationality1 IN {?} OR p.nationality2 IN {?} OR p.nationality3 IN {?}', array('__'), array('__'), array('__')), new UFC_Nationality('__'), 0)); /* UFC_Dead */ $tests['dead'] = array(array(self::buildProfileQuery('WHERE p.deathdate IS NOT NULL'), new UFC_Dead(), -1), array(self::buildProfileQuery('WHERE p.deathdate IS NOT NULL AND p.deathdate > {?}', '2008-01-01'), new UFC_Dead('>', '2008-01-01'), -1), array(self::buildProfileQuery('WHERE p.deathdate IS NOT NULL AND p.deathdate < {?}', '1600-01-01'), new UFC_Dead('<', '1600-01-01'), 0), array(self::buildProfileQuery('WHERE p.deathdate IS NOT NULL AND p.deathdate > {?}', date('Y-m-d')), new UFC_Dead('>', 'now'), 0)); /* UFC_Registered */ $tests['register'] = array(array(self::buildAccountQuery('WHERE a.uid IS NOT NULL AND a.state = \'active\''), new UFC_Registered(true), -1), array(self::buildAccountQuery('WHERE a.uid IS NOT NULL AND a.state != \'pending\''), new UFC_Registered(), -1), array(self::buildAccountQuery('WHERE a.uid IS NOT NULL AND a.state = \'active\' AND a.registration_date != \'0000-00-00 00:00:00\' AND a.registration_date > {?}', '2008-01-01'), new UFC_Registered(true, '>', '2008-01-01'), -1), array(self::buildAccountQuery('WHERE a.uid IS NOT NULL AND a.state != \'pending\' AND a.registration_date != \'0000-00-00 00:00:00\' AND a.registration_date > {?}', '2008-01-01'), new UFC_Registered(false, '>', '2008-01-01'), -1), array(self::buildAccountQuery('WHERE a.uid IS NOT NULL AND a.state = \'active\' AND a.registration_date != \'0000-00-00 00:00:00\' AND a.registration_date < {?}', '1700-01-01'), new UFC_Registered(true, '<', '1700-01-01'), 0), array(self::buildAccountQuery('WHERE a.uid IS NOT NULL AND a.state != \'pending\' AND a.registration_date != \'0000-00-00 00:00:00\' AND a.registration_date < {?}', '1700-01-01'), new UFC_Registered(false, '<', '1700-01-01'), 0), array(self::buildAccountQuery('WHERE a.uid IS NOT NULL AND a.state = \'active\' AND a.registration_date != \'0000-00-00 00:00:00\' AND a.registration_date > {?}', date('Y-m-d')), new UFC_Registered(true, '>', 'now'), 0), array(self::buildAccountQuery('WHERE a.uid IS NOT NULL AND a.state != \'pending\' AND a.registration_date != \'0000-00-00 00:00:00\' AND a.registration_date > {?}', date('Y-m-d')), new UFC_Registered(false, '>', 'now'), 0)); $testcases = array(); foreach ($tests as $name => $t) { foreach ($t as $id => $case) { $testcases[$name . '-' . $id] = $case; } } return $testcases; }
public function buildCondition(PlFilter $uf) { $sub = $uf->addLoggerFilter(); $ip = ip_to_uint($this->ip); return XDB::format($sub . '.ip = {?} OR ' . $sub . '.forward_ip = {?}', $ip, $ip); }