Ejemplo n.º 1
0
 /** 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();
 }
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
 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);
     }
 }
Ejemplo n.º 4
0
 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;
 }
Ejemplo n.º 5
0
 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);
 }