From 5b35bc1798bf149a70240809553092cbff62beaf Mon Sep 17 00:00:00 2001
From: Jaidyn Lev
Date: Sun, 7 Oct 2018 03:25:06 -0500
Subject: [PATCH] Refactoring code, etc.
---
resources/config.php | 3 +
resources/library/insert-coin.php | 194 +++++++++++++++++++++---------
2 files changed, 140 insertions(+), 57 deletions(-)
diff --git a/resources/config.php b/resources/config.php
index 2a4b169..fcb4597 100644
--- a/resources/config.php
+++ b/resources/config.php
@@ -37,3 +37,6 @@ $file_beam_die_alt = "A coin on fire.";
$file_beam_item = "coin"; // what the file is affectionately called
$file_beam_dir = "p/"; // where the files go
+
+$image_sanitize_command = "mogrify";
+$image_sanitize_args = "strip";
diff --git a/resources/library/insert-coin.php b/resources/library/insert-coin.php
index ebfb71f..a457495 100644
--- a/resources/library/insert-coin.php
+++ b/resources/library/insert-coin.php
@@ -1,114 +1,195 @@
RELATIVE_PATH
+// SIDE-EFFECT: Written redirect PHP to filepath
+// Create a simple PHP redirection file at $filepath to $url;
+// return the relative path to it.
+function write_alias($filepath, $url)
{
- $file_p = fopen($filename, 'w');
+ $file_p = fopen($filepath, 'w');
- fwrite($file_p, "\n");
+ fwrite($file_p, "\n");
fclose($file_p);
- return 0;
+ return $filepath;
}
-function write_metadata($filename, $source)
-{
- $metafile = fopen($filename . ".txt", 'w');
- if (empty($source))
- {
+
+// FILEPATH SOURCE_STRING --> RELATIVE_PATH
+// SIDE-EFFECT: Written metadata TXT at $filepath.txt
+// Create a metadata file for set path;
+// return the relative path to it.
+function write_metadata($filepath, $source)
+{
+ if (empty($source)) {
$source = "[citation needed]";
}
+ $file_p = fopen($filepath . ".txt", 'w');
+ $source_string = "Source:\n"
+ . prefix_text(set_line_length($source, 60),
+ " ");
- fwrite($metafile, "Source:\n\t" . implode('', sanitize_long_input($source, "\t")) . "\n");
- fclose($metafile);
+ fwrite($file_p, $source_string);
+ fclose($file_p);
}
-function sanitize_long_input($sanitizee, $preface)
-{
- $sanitized = [];
- $sani_len = strlen($sanitizee) - 1;
- if ($sani_len + 1 == 0)
- {
- $sanitized = "N/A";
- return $sanitized;
+
+// TEXT STRING_PREFIX --> TEXT_STARTING_WITH_PREFIX
+// Places $prefix at the start of every line in $text.
+function prefix_text($text, $prefix)
+{
+ $separator = "\r\n";
+ $line = strtok($text, $separator);
+ $prefixed_text="";
+
+ while ($line !== false) {
+ $prefixed_text=$prefixed_text . $prefix . $line . "\n";
+ $line = strtok($separator);
}
+ return $prefixed_text;
+}
+
+
+
+// STRING COLUMN_SIZE_NUMBER --> TEXT_FORMATTED_TO_SIZED_LINES
+// Turns all lines in a string into, at the max, sized at $column_size
+// Perfect for consistent formatting <3
+function set_line_length($original, $line_width)
+{
+ $text_len = strlen($original) - 1;
+ $line_width = $line_width - 1;
+
+ $resized = [];
+ $new_line = true;
+
+ if ($text_len + 1 == 0) {
+ return 0;
+ }
+
+ // j is the index for $resized, the string deriving from $text
+ // they will both be different sizes, and so need different indexes
$j = 0;
- for($i = 0; $i <= $sani_len; $i++)
- {
- if ($i % 80 == 0 && $i != 0)
- {
- if (substr($sanitizee, $i, 1) == ' ')
- {
- $sanitized[$j] = "\n";
- $sanitized[$j + 1] = $preface;
+ for($i = 0; $i <= $text_len; $i++) {
+ $cur_character = substr($original, $i, 1);
+
+ if ($i % $line_width == 0 && $i != 0) {
+ // if not in middle of word, just start a newline
+ // otherwise, hypenate the word across a newline
+ if ($cur_character == ' ') {
+ $resized[$j] = "\n";
$j++;
}
- else
- {
- $sanitized[$j] = "-";
- $sanitized[$j + 1] = "\n";
- $sanitized[$j + 2] = $preface;
- $sanitized[$j + 3] = $sanitizee[$i];
- $j += 3;
+ else if (is_punctuation($cur_character)) {
+ $resized[$j] = "$cur_character";
+ $resized[$j + 1] = "\n";
+ $j++;
}
+ else {
+
+ $resized[$j] = "-";
+ $resized[$j + 1] = "\n";
+ $resized[$j + 2] = $original[$i];
+ $j += 2;
+ }
+
+ $new_line = true;
}
- else
- {
- $sanitized[$j] = $sanitizee[$i];
+ else {
+ if ($new_line == true && $cur_character == ' ') {
+ }
+ else {
+ $resized[$j] = $original[$i];
+ }
+
+ $new_line = false;
}
$j++;
}
- return $sanitized;
+ return implode($resized);
}
-function sanitize_filename($sanitizee)
+
+
+// CHARACTER --> BOOLEAN
+// Check whether or not a character is punctuation.
+function is_punctuation($character)
{
- $sanitized = str_replace(" ", "_", $sanitizee);
- $sanitized = str_replace("..", "_", $sanitized);
- $sanitized = str_replace("/", "_", $sanitized);
- $sanitized = str_replace("\\", "_", $sanitized);
+ $punctuations = array("!", "@", "#", "$", "%", "^", "&", "*", "(", ")",
+ "[", "{", "}", "]", "`", "~", ";", ":", "'",
+ "\"", ",", ".", "<", ">", "/", "?");
- return $sanitized;
+ return in_array($character, $punctuations);
}
+
+
+// FILENAME --> SAFE_FILENAME_STRING
+// Sanitize a filename by replacing common suspicious characters with "_".
+function sanitize_filename($filename)
+{
+ $death_characters = array(" ", ",", "/", "\\", "%", "$", "^");
+
+ $sanitized_filename = str_replace($death_characters, "_", $filename);
+
+ return $sanitized_filename;
+}
+
+
+
+// ARRAY --> LAST_ELEMENT_OF_ARRAY
+// Get the last element in an array.
+function last($array)
+{
+ $array[count($array) - 1];
+}
+
+
+
+// URL --> FILENAME_AT_END_OF_URL
+// Return the filename of a URL.
function url_to_filename($url)
{
- $working = explode('/', $url);
- $filename = $working[count($working) - 1];
-
- return $filename;
+ return last(explode('/', $url));
}
+
+
+// ??? --> ???
+// ???
function get_cwd($url)
{
$url_array = (explode("/", $url));
- if (end($url_array))
- {
+ if (end($url_array)) {
$parts = count($url_array);
$url = $_SERVER["HTTP_HOST"] . implode(array_splice($url_array, 1, $parts - 2));
return $url;
}
- else
- {
+ else {
return $url;
}
}
+
+
+// IMAGE_PATH --> IMAGE_PATH
+// Sanitize an image (EXIF, etc) with external program from config.php
function sanitize_image($path)
{
- exec("mogrify -strip " . $path, $result);
+ exec($image_sanitize_command . $image_sanitize_args . $path, $result);
+
+ return $path;
}
@@ -126,8 +207,7 @@ function celebrate($dest_file, $item_type, $image_url, $image_alt, $meta_data =
over here
It's meta-stuff (or lack thereof) is
here