From 1412c268b5f10672b80395fcd31d76218a38087d Mon Sep 17 00:00:00 2001 From: Kim Taylor Date: Tue, 17 Sep 2024 22:02:09 +1000 Subject: [PATCH] Move pledge data parsing to separate file. --- make-pledge-page.sh | 19 ++++++ pledge-update/homepage.php | 42 ++++++++++++ pledge-update/main.php | 102 ---------------------------- pledge-update/parse_pledge_data.php | 73 ++++++++++++++++++++ pledge-update/pledge-page.php | 44 ++++++++++++ update-pledges.sh | 2 +- 6 files changed, 179 insertions(+), 103 deletions(-) create mode 100755 make-pledge-page.sh create mode 100644 pledge-update/homepage.php delete mode 100644 pledge-update/main.php create mode 100644 pledge-update/parse_pledge_data.php create mode 100644 pledge-update/pledge-page.php diff --git a/make-pledge-page.sh b/make-pledge-page.sh new file mode 100755 index 0000000..b953b84 --- /dev/null +++ b/make-pledge-page.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# This script uses the jq, wp, and php commands, make sure they are installed before running this script. + +# The folder containing data for each council. +# Includes the list of candidates and any media. +DATA_PATH="../spl-data" + +# Iterate over folders in data path +candidates_files=() +for folder in "$DATA_PATH"/*; do + if test -f "$folder"/candidates.csv; then + candidates_files+=("$folder"/candidates.csv) + fi +done + +content=$(php pledge-update/pledge-page.php --candidates-files "${candidates_files[*]}") + +echo $content; diff --git a/pledge-update/homepage.php b/pledge-update/homepage.php new file mode 100644 index 0000000..4c941b2 --- /dev/null +++ b/pledge-update/homepage.php @@ -0,0 +1,42 @@ + $file) { - $config_file = dirname($file)."/config.json"; - $config_string = file_get_contents($config_file); - - if ($config_string !== FALSE) { - $config = json_decode($config_string, true); - } else { - error_log("Error opening config.json."); - exit(1); - } - - if (($handle = fopen($file, "r")) !== FALSE) { - $headers = fgetcsv($handle); - while (($data = fgetcsv($handle)) !== FALSE) { - $candidate = []; - $candidate['Pledge'] = 'n'; - foreach ($headers as $key => $value) { - $candidate[$value] = $data[$key]; - } - $candidate['Council'] = $config['councilName']; - $candidate['Path'] = dirname($file); - $candidate_data[$candidate['Candidate Name']] = $candidate; - } - fclose($handle); - } else { - error_log('Error opening candidates file'); - exit(1); - } - - $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[$candidate['Candidate Name']]['Pledge'] = - $candidate['Pledge']; - } - fclose($handle); - } else { - error_log('Error opening pledges file'); - exit(1); - } -} - -/* Select people who have taken the pledge */ -$pledgeCandidates = array_filter($candidate_data, function ($candidate) { - return $candidate['Pledge'] === 'y'; -}); - -/* Select 9 random candidates */ -$pledgeKeys = array_rand($pledgeCandidates, 9); -shuffle($pledgeKeys); - -$i = 0; -foreach ($pledgeKeys as $key) { - $media_desc = $pledgeCandidates[$key]['Path']."/". - $pledgeCandidates[$key]['Picture'].".json"; - $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); - } - - $image_url = $media['url']; - $image_id = $media['id']; - - echo "s|pledge_img_".$i."|".$image_url."|\n"; - echo "s|pledge_id_".$i."|".$image_id."|\n"; - - echo "s|pledge_string_".$i."|"; - echo $pledgeCandidates[$key]['Candidate Name']. - " (". - $pledgeCandidates[$key]['Council']. - ") has taken the pledge!|\n"; - - $i++; -} - -exit(0); diff --git a/pledge-update/parse_pledge_data.php b/pledge-update/parse_pledge_data.php new file mode 100644 index 0000000..3cdcf71 --- /dev/null +++ b/pledge-update/parse_pledge_data.php @@ -0,0 +1,73 @@ + $file) { + $config_file = dirname($file)."/config.json"; + $config_string = file_get_contents($config_file); + + if ($config_string !== FALSE) { + $config = json_decode($config_string, true); + } else { + error_log("Error opening config.json."); + exit(1); + } + + if (($handle = fopen($file, "r")) !== FALSE) { + $headers = fgetcsv($handle); + while (($data = fgetcsv($handle)) !== FALSE) { + $candidate = []; + $candidate['Pledge'] = 'n'; + $candidate['Picture'] = ""; + $candidate['image_url'] = ""; + $candidate['image_id'] = ""; + foreach ($headers as $key => $value) { + $candidate[$value] = $data[$key]; + } + $candidate['Council'] = $config['councilName']; + $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[$candidate['Candidate Name']] = $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[$candidate['Candidate Name']]['Pledge'] = + $candidate['Pledge']; + } + fclose($handle); + } else { + error_log('Error opening pledges file'); + exit(1); + } + } + + return $candidate_data; +} diff --git a/pledge-update/pledge-page.php b/pledge-update/pledge-page.php new file mode 100644 index 0000000..8128968 --- /dev/null +++ b/pledge-update/pledge-page.php @@ -0,0 +1,44 @@ +