| 1 | #!/usr/bin/php5 -q |
| 2 | <?php |
| 3 | |
| 4 | ini_set('include_path', '.:../include:/usr/share/php'); |
| 5 | require_once 'connect.db.inc.php'; |
| 6 | require_once 'marketing.inc.php'; |
| 7 | |
| 8 | $opts = getopt('f:l:m:'); |
| 9 | if (($opts['f'] && $opts['f'] == '-') || empty($opts['f'])) { |
| 10 | $file = 'php://stdin'; |
| 11 | } else { |
| 12 | $file = $opts['f']; |
| 13 | } |
| 14 | if (empty($opts['l']) || empty($opts['m'])) { |
| 15 | exit; |
| 16 | } |
| 17 | $matcol = intval($opts['m']); |
| 18 | $logcol = intval($opts['l']); |
| 19 | $handle = fopen($file, 'r'); |
| 20 | |
| 21 | while ($data = fgetcsv($handle)) { |
| 22 | $login = $data[$logcol]; |
| 23 | $xorgid = preg_replace('/1(\d{2})(\d{3})/', '20${1}0\2', $data[$matcol]); |
| 24 | if (!is_numeric($xorgid)) { |
| 25 | echo "ERROR The matricule ($xorgid) is not a numerical value.\n"; |
| 26 | break; |
| 27 | } |
| 28 | $query = XDB::query("SELECT a.uid |
| 29 | FROM profiles AS p |
| 30 | INNER JOIN account_profiles AS ap ON (p.pid = ap.pid AND FIND_IN_SET('owner', perms) |
| 31 | INNER JOIN accounts AS a ON (a.uid = ap.uid) |
| 32 | WHERE p.xorg_id = {?}", |
| 33 | $xorgid); |
| 34 | $uid = $query->fetchOneCell(); |
| 35 | if (!$uid) { |
| 36 | echo "WARNING Can't find uid for matricule $xorgid (login $login)\n"; |
| 37 | continue; |
| 38 | } |
| 39 | $market = Marketing::get($uid, "$login@poly.polytechnique.fr"); |
| 40 | if (!is_null($market)) { |
| 41 | echo "WARNING A marketing has already been to $xorgid on $login\n"; |
| 42 | continue; |
| 43 | } |
| 44 | $market = new Marketing($uid, "$login@poly.polytechnique.fr", 'default', null, 'staff'); |
| 45 | $market->add(false); |
| 46 | $market->send(); |
| 47 | } |
| 48 | |
| 49 | // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: |
| 50 | ?> |
| 51 | |