foreach ($data as $item) { foreach ($item as $k => $v) { $keys = explode(':', $k); $raceID = intval($keys[1], 10); $race = isset($elec->getRaces()[$raceID]) ? $elec->getRaces()[$raceID] : null; $canID = -1; if ($v == 'candidate:writein' && $race->allowWriteIn == true) { continue; } if (sizeof($keys) == 2) { $vals = explode(':', $v); $canID = intval($vals[1], 10); } $vote = new Vote((object) array('user' => $user->id, 'election' => $elec->id, 'race' => $raceID, 'candidate' => $canID)); if (sizeof($keys) == 3 && $keys[2] == 'writein' && $race->allowWriteIn == true) { $vote->setData('writein', $v); } if ($race == null || $keys[0] != 'race' || $raceID > sizeof($races) - 1 || $vote->candidate > sizeof($races[$raceID]->candidates) || (!isset($race->allowWriteIn) || $race->allowWriteIn != true) && sizeof($keys) == 3) { echo json_encode(array('success' => false, 'error' => 'There was an error submitting your vote. Please refresh and/or try again later.')); return; } $usrTags = $user->getData('tags') == null ? array() : $user->getData('tags'); $restrictions = isset($race->restrictions) ? $race->restrictions : array(); if (!empty($restrictions)) { $banKey = array_intersect($usrTags, $restrictions); if ($banKey != false) { echo json_encode(array('success' => false, 'error' => 'You do not have permission to cast a vote in this election.')); return; } } $vote->save($db);