}
}
+ private static function buildAccountQuery()
+ {
+ $args = func_get_args();
+ $joinsAndWhere = XDB::_prepare($args);
+ return array('SELECT DISTINCT a.uid
+ FROM accounts AS a
+ ' . $joinsAndWhere,
+ 'SELECT DISTINCT p.pid
+ FROM profiles AS p
+ INNER JOIN account_profiles AS ap ON (ap.pid = p.pid AND FIND_IN_SET(\'owner\', perms))
+ INNER JOIN accounts AS a ON (a.uid = ap.uid)
+ ' . $joinsAndWhere);
+ }
+
+ private static function buildProfileQuery()
+ {
+ $args = func_get_args();
+ $joinsAndWhere = XDB::_prepare($args);
+ return array('SELECT DISTINCT a.uid
+ FROM accounts AS a
+ INNER JOIN account_profiles AS ap ON (ap.uid = a.uid AND FIND_IN_SET(\'owner\', perms))
+ INNER JOIN profiles AS p ON (p.pid = ap.pid)
+ ' . $joinsAndWhere,
+ 'SELECT DISTINCT p.pid
+ FROM profiles AS p
+ ' . $joinsAndWhere);
+ }
+
public static function simpleUserProvider()
{
self::checkPlatal();
$tests[] = array(
/* UFC_Hrpid
*/
- array('SELECT DISTINCT uid
- FROM account_profiles
- WHERE FIND_IN_SET(\'owner\', perms)',
+ 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),
/* UFC_Hruid
*/
- array(XDB::format('SELECT DISTINCT uid
- FROM accounts
- WHERE hruid = {?}', 'florent.bruneau.2003'),
+ array(self::buildAccountQuery('WHERE a.hruid = {?}', 'florent.bruneau.2003'),
new UFC_Hruid('florent.bruneau.2003'), 1),
- array(XDB::format('SELECT DISTINCT uid
- FROM accounts
- WHERE hruid = {?}', 'florent.bruneau.2004'),
+ array(self::buildAccountQuery('WHERE a.hruid = {?}', 'florent.bruneau.2004'),
new UFC_Hruid('florent.bruneau.2004'), 0),
- array(XDB::format('SELECT DISTINCT uid
- FROM accounts
- WHERE hruid IN {?}', array('florent.bruneau.2003',
- 'stephane.jacob.2004')),
+ 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(XDB::format('SELECT DISTINCT uid
- FROM accounts
- WHERE hruid IN {?}', array('florent.bruneau.2004',
- 'stephane.jacob.2004')),
+ array(self::buildAccountQuery('WHERE a.hruid IN {?}', array('florent.bruneau.2004',
+ 'stephane.jacob.2004')),
new UFC_Hruid('florent.bruneau.2004', 'stephane.jacob.2004'), 1),
/* UFC_Hrpid
*/
- array(XDB::format('SELECT DISTINCT uid
- FROM account_profiles AS ap
- INNER JOIN profiles AS p ON (ap.pid = p.pid AND FIND_IN_SET(\'owner\', perms))
- WHERE hrpid = {?}', 'florent.bruneau.2003'),
+ array(self::buildProfileQuery('WHERE p.hrpid = {?}', 'florent.bruneau.2003'),
new UFC_Hrpid('florent.bruneau.2003'), 1),
- array(XDB::format('SELECT DISTINCT uid
- FROM account_profiles AS ap
- INNER JOIN profiles AS p ON (ap.pid = p.pid AND FIND_IN_SET(\'owner\', perms))
- WHERE hrpid = {?}', 'florent.bruneau.2004'),
+ array(self::buildProfileQuery('WHERE p.hrpid = {?}', 'florent.bruneau.2004'),
new UFC_Hrpid('florent.bruneau.2004'), 0),
- array(XDB::format('SELECT DISTINCT uid
- FROM account_profiles AS ap
- INNER JOIN profiles AS p ON (ap.pid = p.pid AND FIND_IN_SET(\'owner\', perms))
- WHERE hrpid IN {?}', array('florent.bruneau.2003',
- 'stephane.jacob.2004')),
+ 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(XDB::format('SELECT DISTINCT uid
- FROM account_profiles AS ap
- INNER JOIN profiles AS p ON (ap.pid = p.pid AND FIND_IN_SET(\'owner\', perms))
- WHERE hrpid IN {?}', array('florent.bruneau.2004',
- 'stephane.jacob.2004')),
+ array(self::buildProfileQuery('WHERE p.hrpid IN {?}', array('florent.bruneau.2004',
+ 'stephane.jacob.2004')),
new UFC_Hrpid('florent.bruneau.2004', 'stephane.jacob.2004'), 1),
/* UFC_IP
*/
- array(XDB::format('SELECT DISTINCT a.uid
- FROM log_sessions
- INNER JOIN accounts AS a USING(uid)
- WHERE ip = {?} OR forward_ip = {?}',
- ip_to_uint('129.104.247.2'), ip_to_uint('129.104.247.2')),
+ 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[] = array(
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_display AS pd ON (pd.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pd.promo = {?}', 'X2004'),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_display AS pd ON (pd.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pd.promo < {?}', 'X2004'),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_display AS pd ON (pd.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pd.promo > {?}', 'X2004'),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_display AS pd ON (pd.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pd.promo < {?}', 'X1900'),
+ array(self::buildProfileQuery('INNER JOIN profile_display AS pd ON (pd.pid = p.pid)
+ WHERE pd.promo < {?}', 'X1900'),
new UFC_Promo('<', UserFilter::DISPLAY, 'X1900'), 0),
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_education AS pe ON (pe.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- 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.'),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_education AS pe ON (pe.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- 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.'),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_education AS pe ON (pe.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- 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.'),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_education AS pe ON (pe.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- 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.'),
+ 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),
/* XXX : tests disabled until there are Masters and doctors in the DB
FROM profile_education_enum
WHERE abbreviation = {?}', 'HEC');
$tests[] = array(
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_education AS pe ON (pe.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- LEFT JOIN profile_education_enum AS pee ON (pe.eduid = pee.id)
- WHERE pee.abbreviation = {?}', 'X'),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_education AS pe ON (pe.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- LEFT JOIN profile_education_enum AS pee ON (pe.eduid = pee.id)
- WHERE pee.abbreviation IN {?}', array('X', 'HEC')),
+ 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),
);
FROM profile_education_degree_enum
WHERE abbreviation = {?}', 'PhD');
$tests[] = array(
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_education AS pe ON (pe.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- LEFT JOIN profile_education_degree_enum AS pede ON (pe.degreeid = pede.id)
- WHERE pede.abbreviation = {?}', 'Ing.'),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_education AS pe ON (pe.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- LEFT JOIN profile_education_degree_enum AS pede ON (pe.degreeid = pede.id)
- WHERE pede.abbreviation IN {?}', array('Ing.', 'PhD')),
+ 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
WHERE field = {?}', 'Droit');
// FIXME: Replace 0 by -1 in following queries when profile_education will be filled with fieldids
$tests[] = array(
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_education AS pe ON (pe.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- LEFT JOIN profile_education_field_enum AS pefe ON (pe.fieldid = pefe.id)
- WHERE pefe.field = {?}', 'Informatique'),
+ 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), // FIXME: should be -1
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- INNER JOIN profile_education AS pe ON (pe.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- LEFT JOIN profile_education_field_enum AS pefe ON (pe.fieldid = pefe.id)
- WHERE pefe.field IN {?}', array('Informatique', 'Droit')),
+ 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), // FIXME: should be -1
);
$tests[] = array(
// Lastname
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE {?} AND pn.typeid = {?}', 'BARROIS', $id_Lastname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'BARR%\' AND pn.typeid = {?}', $id_Lastname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'%OIS\' AND pn.typeid = {?}', $id_Lastname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'%ARRO%\' AND pn.typeid = {?}', $id_Lastname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'%ZZZZZZ%\' AND pn.typeid = {?}', $id_Lastname),
+ 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),
// Firstname
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE {?} AND pn.typeid = {?}', 'Raphaël', $id_Firstname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'Raph%\' AND pn.typeid = {?}', $id_Firstname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'%aël\' AND pn.typeid = {?}', $id_Firstname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'%apha%\' AND pn.typeid = {?}', $id_Firstname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'%zzzzzz%\' AND pn.typeid = {?}', $id_Firstname),
+ 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),
// Nickname
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE {?} AND pn.typeid = {?}', 'Xelnor', $id_Nickname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'Xel%\' AND pn.typeid = {?}', $id_Nickname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'%nor\' AND pn.typeid = {?}', $id_Nickname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'%lno%\' AND pn.typeid = {?}', $id_Nickname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE \'%zzzzzz%\' AND pn.typeid = {?}', $id_Nickname),
+ 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),
// Lastname + particle
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE CONCAT(pn.particle, \' \', pn.name) LIKE {?} AND pn.typeid = {?}', 'DE SINGLY', $id_Lastname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE CONCAT(pn.particle, \' \', pn.name) LIKE \'DE SI%\' AND pn.typeid = {?}', $id_Lastname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE CONCAT(pn.particle, \' \', pn.name) LIKE \'%GLY\' AND pn.typeid = {?}', $id_Lastname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE CONCAT(pn.particle, \' \', pn.name) LIKE \'%E SIN%\' AND pn.typeid = {?}', $id_Lastname),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE CONCAT(pn.particle, \' \', pn.name) LIKE \'%ZZZZZZ%\' AND pn.typeid = {?}', $id_Lastname),
+ 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),
// Lastname_ordinary
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE {?} AND pn.typeid IN {?}',
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE {?} AND pn.typeid IN {?}',
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE {?} AND pn.typeid IN {?}',
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE {?} AND pn.typeid IN {?}',
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN profile_name AS pn ON (ap.pid = pn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE pn.name LIKE {?} AND pn.typeid IN {?}',
+ 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),
);
*/
$tests[] = array(
// !soundex, !exact
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.token LIKE \'xelnor%\''),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.token LIKE \'xe%\''),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.token LIKE \'xe%\' OR sn.token LIKE \'barr%\''),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.token LIKE \'zzzzzzzz%\''),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.token LIKE \'barr%\' AND FIND_IN_SET(\'public\', sn.flags)'),
+ 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),
// !soundex, exact
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.token = \'xelnor\''),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.token IN (\'xelnor\', \'barrois\')'),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.token = \'zzzzzzzz\''),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.token IN (\'zzzzzzzz\', \'yyyyyyyy\')'),
+ 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(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.token = \'barrois\' AND FIND_IN_SET(\'public\', sn.flags)'),
+ 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),
// soundex, !exact
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.soundex = \'XLNO\''),
+ array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid)
+ WHERE sn.soundex = \'XLNO\''),
new UFC_NameTokens('XLNO', array(), true), -1),
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.soundex IN (\'XLNO\', \'BROS\')'),
+ array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid)
+ WHERE sn.soundex IN (\'XLNO\', \'BROS\')'),
new UFC_NameTokens(array('XLNO', 'BROS'), array(), true), -1),
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.soundex = \'ZZZZZZ\''),
+ array(self::buildProfileQuery('LEFT JOIN search_name AS sn ON (p.pid = sn.pid)
+ WHERE sn.soundex = \'ZZZZZZ\''),
new UFC_NameTokens('ZZZZZZ', array(), true), 0),
- array(XDB::format('SELECT DISTINCT ap.uid
- FROM account_profiles AS ap
- LEFT JOIN search_name AS sn ON (ap.pid = sn.pid AND FIND_IN_SET(\'owner\', ap.perms))
- WHERE sn.soundex = \'BROS\' AND FIND_IN_SET(\'public\', sn.flags)'),
+ 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('BROS', UFC_NameTokens::FLAG_PUBLIC, true), -1),
);
public function testSimpleUser($query, $cond, $expcount = null)
{
/*
- * @param $query A MySQL query
+ * @param $query A pair MySQL query (one for user selector, one for profile selector)
* @param $cond The UFC to test
* @param $expcount The expected number of results (-1 if that number is unknown)
*/
+ $query = $query[0];
+
self::checkPlatal();
$query = XDB::query($query);
$this->assertEquals($count, count($got));
sort($got);
$this->assertEquals($ids, $got);
- $this->assertEquals($count, $uf->getTotalCount());
+ $this->assertEquals($count, $uf->getTotalUserCount());
+ }
+
+ /**
+ * @dataProvider simpleUserProvider
+ */
+ public function testSimpleProfile($query, $cond, $expcount = null)
+ {
+ /*
+ * @param $query A pair MySQL query (one for user selector, one for profile selector)
+ * @param $cond The UFC to test
+ * @param $expcount The expected number of results (-1 if that number is unknown)
+ */
+
+ $query = $query[1];
+
+ self::checkPlatal();
+
+ $query = XDB::query($query);
+ $count = $query->numRows();
+ if (!is_null($expcount)) {
+ if ($expcount < 0) {
+ $this->assertNotEquals(0, $count);
+ } else {
+ $this->assertEquals($expcount, $count);
+ }
+ }
+ $ids = $query->fetchColumn();
+ $this->assertEquals($count, count($ids));
+ sort($ids);
+
+ $uf = new UserFilter($cond);
+ $this->assertEquals($count, $uf->getTotalProfileCount());
+ $got = $uf->getPIDs();
+ $this->assertEquals($count, count($got));
+ sort($got);
+ $this->assertEquals($ids, $got);
+
+ $uf = new UserFilter($cond);
+ $got = $uf->getPIDs();
+ $this->assertEquals($count, count($got));
+ sort($got);
+ $this->assertEquals($ids, $got);
+ $this->assertEquals($count, $uf->getTotalProfileCount());
}
+
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: