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