- // Remove old ones
- foreach ($orig as $id=>&$val) {
- if (!isset($value[$id]) || $val['grade'] != $value[$id]['grade']) {
- if ($val['valid']) {
- XDB::execute("DELETE FROM profile_medals
- WHERE pid = {?} AND mid = {?}",
- $page->pid(), $id);
+ while ($i < $total_original || $j < $total_value) {
+ if (isset($value[$j]) && (!isset($original[$i]) || self::compareMedals($original[$i], $value[$j]))) {
+ $req = new MedalReq(S::user(), $page->profile, $value[$j]['id'], $value[$j]['grade'], $value[$j]['level'], $value[$j]['has_levels']);
+ $req->submit();
+ sleep(1);
+ ++$j;
+ } elseif (isset($original[$i]) && (!isset($value[$j]) || self::compareMedals($value[$j], $original[$i]))) {
+ if ($original[$i]['valid']) {
+ XDB::execute('DELETE FROM profile_medals
+ WHERE pid = {?} AND mid = {?} AND gid = {?}',
+ $page->pid(), $original[$i]['id'], $original[$i]['grade']);