/** * if sponsorship contains a non-zero id, then update the corresponding record. * if sponsorship contains a zero id, search for bug_id/user_id, if found, then update the entry * otherwise add a new entry * @param int $p_sponsorship * @return int */ function sponsorship_set($p_sponsorship) { $t_min_sponsorship = config_get('minimum_sponsorship_amount'); if ($p_sponsorship->amount < $t_min_sponsorship) { error_parameters($p_sponsorship->amount, $t_min_sponsorship); trigger_error(ERROR_SPONSORSHIP_AMOUNT_TOO_LOW, ERROR); } # if id == 0, check if the specified user is already sponsoring the bug, if so, overwrite if ($p_sponsorship->id == 0) { $t_sponsorship_id = sponsorship_get_id($p_sponsorship->bug_id, $p_sponsorship->user_id); if ($t_sponsorship_id !== false) { $p_sponsorship->id = $t_sponsorship_id; } } $t_sponsorship_table = db_get_table('sponsorship'); $c_id = db_prepare_int($p_sponsorship->id); $c_bug_id = db_prepare_int($p_sponsorship->bug_id); $c_user_id = db_prepare_int($p_sponsorship->user_id); $c_amount = db_prepare_int($p_sponsorship->amount); $c_logo = $p_sponsorship->logo; $c_url = $p_sponsorship->url; $c_now = db_now(); # if new sponsorship if ($c_id == 0) { # Insert $query = "INSERT INTO {$t_sponsorship_table}\n\t\t\t\t ( bug_id, user_id, amount, logo, url, date_submitted, last_updated )\n\t\t\t\t VALUES\n\t\t\t\t (" . db_param() . ',' . db_param() . ',' . db_param() . ',' . db_param() . ',' . db_param() . ',' . db_param() . ',' . db_param() . ')'; db_query_bound($query, array($c_bug_id, $c_user_id, $c_amount, $c_logo, $c_url, $c_now, $c_now)); $t_sponsorship_id = db_insert_id($t_sponsorship_table); history_log_event_special($c_bug_id, BUG_ADD_SPONSORSHIP, $c_user_id, $c_amount); } else { $t_old_amount = sponsorship_get_amount($c_id); $t_sponsorship_id = $c_id; if ($t_old_amount == $c_amount) { return $t_sponsorship_id; } # Update $query = "UPDATE {$t_sponsorship_table}\n\t\t\t\t\tSET\tbug_id = " . db_param() . ",\n\t\t\t\t\t\tuser_id = " . db_param() . ",\n\t\t\t\t\t\tamount = " . db_param() . ",\n\t\t\t\t\t\tlogo = " . db_param() . ",\n\t\t\t\t\t\turl = " . db_param() . ",\n\t\t\t\t\t\tlast_updated = " . db_param() . "\n\t\t\t\t\tWHERE\tid = " . db_param(); sponsorship_clear_cache($c_id); db_query_bound($query, array($c_bug_id, $c_user_id, $c_amount, $c_logo, $c_url, $c_now, $c_id)); history_log_event_special($c_bug_id, BUG_UPDATE_SPONSORSHIP, $c_user_id, $c_amount); } sponsorship_update_bug($c_bug_id); bug_monitor($c_bug_id, $c_user_id); if ($c_id == 0) { email_sponsorship_added($c_bug_id); } else { email_sponsorship_updated($c_bug_id); } return $t_sponsorship_id; }
/** * if sponsorship contains a non-zero id, then update the corresponding record. * if sponsorship contains a zero id, search for bug_id/user_id, if found, then update the entry * otherwise add a new entry * @param SponsorshipData $p_sponsorship The sponsorship data object to set. * @return integer */ function sponsorship_set(SponsorshipData $p_sponsorship) { $t_min_sponsorship = config_get('minimum_sponsorship_amount'); if ($p_sponsorship->amount < $t_min_sponsorship) { error_parameters($p_sponsorship->amount, $t_min_sponsorship); trigger_error(ERROR_SPONSORSHIP_AMOUNT_TOO_LOW, ERROR); } # if id == 0, check if the specified user is already sponsoring the bug, if so, overwrite if ($p_sponsorship->id == 0) { $t_sponsorship_id = sponsorship_get_id($p_sponsorship->bug_id, $p_sponsorship->user_id); if ($t_sponsorship_id !== false) { $p_sponsorship->id = $t_sponsorship_id; } } $c_id = (int) $p_sponsorship->id; $c_bug_id = (int) $p_sponsorship->bug_id; $c_user_id = (int) $p_sponsorship->user_id; $c_amount = (int) $p_sponsorship->amount; $c_logo = $p_sponsorship->logo; $c_url = $p_sponsorship->url; $c_now = db_now(); # if new sponsorship if ($c_id == 0) { # Insert $t_query = 'INSERT INTO {sponsorship} ( bug_id, user_id, amount, logo, url, date_submitted, last_updated ) VALUES (' . db_param() . ',' . db_param() . ',' . db_param() . ',' . db_param() . ',' . db_param() . ',' . db_param() . ',' . db_param() . ')'; db_query($t_query, array($c_bug_id, $c_user_id, $c_amount, $c_logo, $c_url, $c_now, $c_now)); $t_sponsorship_id = db_insert_id(db_get_table('sponsorship')); history_log_event_special($c_bug_id, BUG_ADD_SPONSORSHIP, $c_user_id, $c_amount); } else { $t_old_amount = sponsorship_get_amount($c_id); $t_sponsorship_id = $c_id; if ($t_old_amount == $c_amount) { return $t_sponsorship_id; } # Update $t_query = 'UPDATE {sponsorship} SET bug_id = ' . db_param() . ', user_id = ' . db_param() . ', amount = ' . db_param() . ', logo = ' . db_param() . ', url = ' . db_param() . ', last_updated = ' . db_param() . ' WHERE id = ' . db_param(); sponsorship_clear_cache($c_id); db_query($t_query, array($c_bug_id, $c_user_id, $c_amount, $c_logo, $c_url, $c_now, $c_id)); history_log_event_special($c_bug_id, BUG_UPDATE_SPONSORSHIP, $c_user_id, $c_amount); } sponsorship_update_bug($c_bug_id); bug_monitor($c_bug_id, $c_user_id); if ($c_id == 0) { email_sponsorship_added($c_bug_id); } else { email_sponsorship_updated($c_bug_id); } return $t_sponsorship_id; }