$candidate) { $score = 0; if ($candidate['q0'] === "Yes") $score++; if ($candidate['q1'] === "Yes") $score++; if ($candidate['q2'] === "Yes") $score++; if ($candidate['q3'] === "Yes") $score++; if ($candidate['q4'] === "Yes") $score++; $candidate_data[$key]['Score'] = $score; $candidate_data[$key]['Pledge'] = $candidate['q4']; } $header = ["Candidate Name", "Rating", "Pledge", "Picture"]; /* Generate candidates-generic.csv */ foreach ($lga_list as $lga) { $lga_candidates = array_filter($candidate_data, function ($candidate) use ($lga) { return $candidate['match_division'] === $lga['slug']; }); if (count($lga_candidates) === 0) continue; remove_duplicates($lga_candidates); $dir = dirname($lga['config-file']); $dir_files = scandir($dir); $output_file = $dir."/candidates-generic.csv"; $override_file = $dir."/candidates-override.csv"; if (($handle = fopen($output_file, "w")) === FALSE) { error_log('Error opening output file'); exit(1); } if (fputcsv($handle, $header) === FALSE) { error_log('Error writing headers to output file'); exit(3); } $lines = []; foreach ($lga_candidates as $candidate) { /* Add extension to photo hash */ if (strlen($candidate['Photo'])) { foreach ($dir_files as $file) { if (preg_match("/\.json$/", $file)) continue; if (strstr($file, $candidate['Photo'])) { $candidate['Photo'] = $file; } } } $lines[] = [ $candidate['Name'], $candidate['Score'], $candidate['Pledge'], $candidate['Photo'], ]; } /* Apply overrides if they exist */ $overrides = []; if (file_exists($override_file)) { if (($ovr_handle = fopen($override_file, "r")) !== FALSE) { $headers = fgetcsv($ovr_handle); while (($data = fgetcsv($ovr_handle)) !== FALSE) { $override = []; foreach ($headers as $key => $value) { $override[$value] = $data[$key]; } $overrides[] = $override; } fclose($ovr_handle); } else { error_log('Error opening overrides file'); exit(3); } } foreach ($overrides as $override) { foreach ($lines as $line_key => $line) { $match_index = array_search($override['Match Field'], $header); $replace_index = array_search($override['Replace Field'], $header); if ($line[$match_index] === $override['Match Value']) { if ($replace_index !== false) $lines[$line_key][$replace_index] = $override['Replace Value']; else /* If 'Replace Field' is not matched - delete this entry */ $lines[$line_key]['Delete'] = 'y'; } } } foreach ($lines as $line) { if (isset($line['Delete'])) continue; if (fputcsv($handle, $line) === FALSE) { error_log('Error writing candidate to output file'); exit(3); } } fclose($handle); } exit(0);