aboutsummaryrefslogtreecommitdiff
path: root/includes/functions-compat.php
diff options
context:
space:
mode:
authors1n <[email protected]>2020-03-28 10:36:41 -0700
committers1n <[email protected]>2020-03-28 10:36:41 -0700
commit25b7d2aab61ae6421398d3abae5da6ffe590333d (patch)
tree611985ec78bb2d94099c9fd5dd687f5c9cee6f3e /includes/functions-compat.php
parentInitial commit (diff)
downloadcrack.cf-backup-master.tar.xz
crack.cf-backup-master.zip
3/28/2020, 10:36HEADmaster
Diffstat (limited to 'includes/functions-compat.php')
-rw-r--r--includes/functions-compat.php110
1 files changed, 110 insertions, 0 deletions
diff --git a/includes/functions-compat.php b/includes/functions-compat.php
new file mode 100644
index 0000000..4bc1330
--- /dev/null
+++ b/includes/functions-compat.php
@@ -0,0 +1,110 @@
+<?php
+/*
+ * YOURLS
+ * Compatibility functions when either missing from older PHP versions or not included by default
+ */
+
+// @codeCoverageIgnoreStart
+
+/**
+ * json_encode for PHP, should someone run a distro without php-json -- see http://askubuntu.com/questions/361424/
+ *
+ */
+if( !function_exists( 'json_encode' ) ) {
+ function json_encode( $array ) {
+ return yourls_array_to_json( $array );
+ }
+}
+
+/**
+ * Converts an associative array of arbitrary depth and dimension into JSON representation. Used for compatibility with older PHP builds.
+ *
+ * @param array $array the array to convert.
+ * @return mixed The resulting JSON string, or false if the argument was not an array.
+ * @author Andy Rusterholz
+ * @link http://php.net/json_encode (see comments)
+ */
+function yourls_array_to_json( $array ){
+
+ if( !is_array( $array ) ){
+ return false;
+ }
+
+ $associative = count( array_diff( array_keys($array), array_keys( array_keys( $array )) ));
+ if( $associative ){
+
+ $construct = array();
+ foreach( $array as $key => $value ){
+
+ // We first copy each key/value pair into a staging array,
+ // formatting each key and value properly as we go.
+
+ // Format the key:
+ if( is_numeric( $key ) ){
+ $key = "key_$key";
+ }
+ $key = '"'.addslashes( $key ).'"';
+
+ // Format the value:
+ if( is_array( $value )){
+ $value = yourls_array_to_json( $value );
+ } else if( !is_numeric( $value ) || is_string( $value ) ){
+ $value = '"'.addslashes( $value ).'"';
+ }
+
+ // Add to staging array:
+ $construct[] = "$key: $value";
+ }
+
+ // Then we collapse the staging array into the JSON form:
+ $result = "{ " . implode( ", ", $construct ) . " }";
+
+ } else { // If the array is a vector (not associative):
+
+ $construct = array();
+ foreach( $array as $value ){
+
+ // Format the value:
+ if( is_array( $value )){
+ $value = yourls_array_to_json( $value );
+ } else if( !is_numeric( $value ) || is_string( $value ) ){
+ $value = '"'.addslashes($value).'"';
+ }
+
+ // Add to staging array:
+ $construct[] = $value;
+ }
+
+ // Then we collapse the staging array into the JSON form:
+ $result = "[ " . implode( ", ", $construct ) . " ]";
+ }
+
+ return $result;
+}
+
+
+/**
+ * BC Math functions (assuming if one doesn't exist, none does)
+ *
+ */
+if ( !function_exists( 'bcdiv' ) ) {
+ function bcdiv( $dividend, $divisor ) {
+ $quotient = floor( $dividend/$divisor );
+ return $quotient;
+ }
+ function bcmod( $dividend, $modulo ) {
+ $remainder = $dividend%$modulo;
+ return $remainder;
+ }
+ function bcmul( $left, $right ) {
+ return $left * $right;
+ }
+ function bcadd( $left, $right ) {
+ return $left + $right;
+ }
+ function bcpow( $base, $power ) {
+ return pow( $base, $power );
+ }
+}
+
+// @codeCoverageIgnoreEnd