111 lines
4.3 KiB
PHP
111 lines
4.3 KiB
PHP
<?php
|
|
|
|
function trim_sluggify($input) {
|
|
return strtolower(str_replace(' ', '-', trim($input)));
|
|
}
|
|
|
|
function parse_pledge_data($candidates_files, $default_image) {
|
|
$candidate_data = [];
|
|
foreach ($candidates_files as $key => $file) {
|
|
$config_file = dirname($file)."/config.json";
|
|
$config_string = file_get_contents($config_file);
|
|
$elected_file = dirname($file)."/candidates-elected.csv";
|
|
|
|
if ($config_string !== FALSE) {
|
|
$config = json_decode($config_string, true);
|
|
} else {
|
|
error_log("Error opening config.json.");
|
|
exit(1);
|
|
}
|
|
|
|
$elected_data = [];
|
|
if (file_exists($elected_file)) {
|
|
if (($elected_handle = fopen($elected_file, "r")) !== FALSE) {
|
|
$headers = fgetcsv($elected_handle);
|
|
while (($data = fgetcsv($elected_handle)) !== FALSE) {
|
|
$candidate = [];
|
|
foreach ($headers as $key => $value) {
|
|
$candidate[$value] = $data[$key];
|
|
}
|
|
$name_slug = trim_sluggify($candidate['Candidate Name']);
|
|
$elected_data[$name_slug] = $candidate;
|
|
}
|
|
} else {
|
|
error_log('Error opening candidates file');
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
if (($handle = fopen($file, "r")) !== FALSE) {
|
|
$headers = fgetcsv($handle);
|
|
while (($data = fgetcsv($handle)) !== FALSE) {
|
|
$candidate = [];
|
|
$candidate['Pledge'] = 'n';
|
|
$candidate['Picture'] = "";
|
|
if (is_array($default_image)) {
|
|
$candidate['image_url'] = $default_image['url'];
|
|
$candidate['image_id'] = $default_image['id'];
|
|
} else {
|
|
$candidate['image_url'] = "";
|
|
$candidate['image_id'] = "";
|
|
}
|
|
foreach ($headers as $key => $value) {
|
|
$candidate[$value] = $data[$key];
|
|
}
|
|
$name_slug = trim_sluggify($candidate['Candidate Name']);
|
|
if (array_key_exists($name_slug, $candidate_data)) {
|
|
if ($candidate_data[$name_slug]['Pledge'] === 'y') {
|
|
$candidate['Pledge'] = 'y';
|
|
}
|
|
}
|
|
if (!empty($elected_data) && array_key_exists($name_slug, $elected_data)) {
|
|
$candidate['Elected'] = $elected_data[$name_slug]['Elected'];
|
|
}
|
|
$candidate['Council'] = $config['divisionName'];
|
|
$candidate['Path'] = dirname($file);
|
|
$media_desc = $candidate['Path']."/".
|
|
$candidate['Picture'].".json";
|
|
if (file_exists($media_desc)) {
|
|
$media_string = file_get_contents($media_desc);
|
|
if ($media_string !== FALSE) {
|
|
$media = json_decode($media_string, true);
|
|
} else {
|
|
error_log("Error opening image descriptor.");
|
|
exit(1);
|
|
}
|
|
/* Get photo URL and ID */
|
|
$candidate['image_url'] = $media['url'];
|
|
$candidate['image_id'] = $media['id'];
|
|
}
|
|
$candidate_data[$name_slug] = $candidate;
|
|
}
|
|
fclose($handle);
|
|
} else {
|
|
error_log('Error opening candidates file');
|
|
exit(1);
|
|
}
|
|
|
|
/* Override pledge columns if pledges.csv is present */
|
|
$pledges_file = dirname($file)."/pledges.csv";
|
|
if (!file_exists($pledges_file)) continue;
|
|
|
|
if (($handle = fopen($pledges_file, "r")) !== FALSE) {
|
|
$headers = fgetcsv($handle);
|
|
while (($data = fgetcsv($handle)) !== FALSE) {
|
|
$candidate = [];
|
|
foreach ($headers as $key => $value) {
|
|
$candidate[$value] = $data[$key];
|
|
}
|
|
$candidate_data[trim_sluggify($candidate['Candidate Name'])]['Pledge'] =
|
|
$candidate['Pledge'];
|
|
}
|
|
fclose($handle);
|
|
} else {
|
|
error_log('Error opening pledges file');
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
return $candidate_data;
|
|
}
|