forked from science-ation/science-ation
93 lines
3.4 KiB
PHP
93 lines
3.4 KiB
PHP
<?
|
|
function db_update_118_post()
|
|
{
|
|
global $config, $pdo;
|
|
$available = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789';
|
|
$availlen = strlen($available) - 1;
|
|
|
|
$userfields = array('salutation', 'firstname', 'lastname', 'email', 'phonehome', 'phonework', 'phonecell', 'fax');
|
|
|
|
// grab all the contacts from awards_contacts
|
|
$q = $pdo->prepare('SELECT * FROM award_contacts');
|
|
$q->execute();
|
|
while ($r = $q->fetch(PDO::FETCH_OBJ)) {
|
|
// if its older than the current year, then set them to complete/active because if they were in the
|
|
// system then, then they must have beenc omplete and active
|
|
// set anyone for the current fair year to complete=no, active = yes, because its not too late to get them
|
|
// to login and make sure that all the info is complete
|
|
if ($r->year < $config['FAIRYEAR']) {
|
|
$complete = 'yes';
|
|
$active = 'yes';
|
|
} else {
|
|
$complete = 'no';
|
|
$active = 'yes';
|
|
}
|
|
// see if a user exists with this email
|
|
$uq = $pdo->prepare("SELECT * FROM users WHERE (username=? OR email=?) ORDER BY year DESC LIMIT 1"); // AND year='$r->year'");
|
|
$uq->execute([ $r->email,$r->email]);
|
|
if ($r->email && $ur = $uq->fetch(PDO::FETCH_OBJ)) {
|
|
$user_id = $ur->id;
|
|
echo "Using existing users.id=$user_id for award_contacts.id=$r->id because email address ($r->email) matches\n";
|
|
|
|
// update any info we have thats missing
|
|
$sqlset = '';
|
|
foreach ($userfields AS $f) {
|
|
// if its NOT in their USER record, but it IS in their AWARD_CONTACTS record, then bring it over, else, assume the users record has priority
|
|
if (!$ur->$f && $r->$f) {
|
|
$sqlset .= "`$f`='" . $r->$f . "', ";
|
|
}
|
|
}
|
|
$sql = "UPDATE users SET ? `types`=?,sponsor' WHERE id=?";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$sqlset,$ur->types,$user_id]);
|
|
show_pdo_errors_if_any($pdo);
|
|
echo " Updated user record\n";
|
|
} else {
|
|
// we need a username, if htere's no email, then we need to gerneate one to use.
|
|
if ($r->email) {
|
|
$username = $r->email;
|
|
} else {
|
|
$username = '';
|
|
for ($x = 0; $x < 16; $x++)
|
|
$username .= $available[rand(0, $availlen)];
|
|
}
|
|
|
|
// and create them a password
|
|
$password = '';
|
|
for ($x = 0; $x < 8; $x++)
|
|
$password .= $available[rand(0, $availlen)];
|
|
|
|
// set passwordset to 0000-00-00 to force it to expire on next login
|
|
$sql = 'INSERT INTO users (`types`,`username`,`created`,`password`,`passwordset`,`' . implode('`,`', $userfields) . '`,`year`) VALUES (';
|
|
$sql .= "'sponsor','" . $username . "',NOW(),'$password','0000-00-00'";
|
|
foreach ($userfields AS $f) {
|
|
$sql .= ",'" . $r->$f . "'";
|
|
}
|
|
$sql .= ",'" . $r->year . "')";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute();
|
|
show_pdo_errors_if_any($pdo);
|
|
|
|
$user_id = $pdo->lastInsertId();
|
|
// and link it to themselves as a starting record
|
|
$stmt = $pdo->prepare("UPDATE users SET uid=? WHERE id=?");
|
|
$stmt->execute([$user_id,$user_id]);
|
|
echo "Creating new users.id=$user_id for award_contacts.id=$r->id\n";
|
|
}
|
|
|
|
echo " Linking $user_id to users_sponsor record\n";
|
|
$stmt = $pdo->prepare("INSERT INTO users_sponsor (`users_id`,`sponsors_id`,`sponsor_complete`,`sponsor_active`,`primary`,`position`,`notes`) VALUES (
|
|
'" . $user_id . "',
|
|
'" . $r->award_sponsors_id . "',
|
|
'$complete',
|
|
'$active',
|
|
'" . $r->primary . "',
|
|
'" . $r->position . "',
|
|
'" . $r->notes . "')");
|
|
$stmt->execute();
|
|
show_pdo_errors_if_any($pdo);
|
|
}
|
|
}
|
|
|
|
?>
|