Subversion Repositories cheapmusic

Rev

Blame | Last modification | View Log | RSS feed

<?php

// mPDF 5.7
// Replace a section of an array with the elements in reverse
function array_splice_reverse(&$arr, $offset, $length) {
        $tmp = (array_reverse(array_slice($arr, $offset, $length)));
        array_splice($arr, $offset, $length, $tmp);
}


// mPDF 5.6.23
function array_insert(&$array, $value, $offset) {
        if (is_array($array)) {
                $array  = array_values($array);
                $offset = intval($offset);
                if ($offset < 0 || $offset >= count($array)) { array_push($array, $value); }
                else if ($offset == 0) { array_unshift($array, $value); }
                else { 
                        $temp  = array_slice($array, 0, $offset);
                        array_push($temp, $value);
                        $array = array_slice($array, $offset);
                        $array = array_merge($temp, $array);
                }
        }
        else { $array = array($value); }
        return count($array);
}

function urlencode_part($url) { // mPDF 5.6.02
        if (!preg_match('/^[a-z]+:\/\//i',$url)) { return $url; }
        $file=$url;
        $query='';
        if (preg_match('/[?]/',$url)) {
                $bits = preg_split('/[?]/',$url,2);
                $file=$bits[0];
                $query='?'.$bits[1];
        }
        $file = str_replace(array(" ","!","$","&","'","(",")","*","+",",",";","="),array("%20","%21","%24","%26","%27","%28","%29","%2A","%2B","%2C","%3B","%3D"),$file);
        return $file.$query;
}


function _strspn($str1, $str2, $start=null, $length=null) {
        $numargs = func_num_args();
        if ($numargs == 2) {
                return strspn($str1, $str2);
        }
        else if ($numargs == 3) {
                return strspn($str1, $str2, $start);
        }
        else {
                return strspn($str1, $str2, $start, $length);
        }
}


function _strcspn($str1, $str2, $start=null, $length=null) {
        $numargs = func_num_args();
        if ($numargs == 2) {
                return strcspn($str1, $str2);
        } 
        else if ($numargs == 3) {
                return strcspn($str1, $str2, $start);
        } 
        else {
                return strcspn($str1, $str2, $start, $length);
        }
}

function _fgets (&$h, $force=false) {
        $startpos = ftell($h);
        $s = fgets($h, 1024);
        if ($force && preg_match("/^([^\r\n]*[\r\n]{1,2})(.)/",trim($s), $ns)) {
                $s = $ns[1];
                fseek($h,$startpos+strlen($s));
        }
        return $s;
}


// For PHP4 compatability
if(!function_exists('str_ireplace')) {
  function str_ireplace($search,$replace,$subject) {
        $search = preg_quote($search, "/");
        return preg_replace("/".$search."/i", $replace, $subject); 
  }
}
if(!function_exists('htmlspecialchars_decode')) {
        function htmlspecialchars_decode ($str) {
                return strtr($str, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
        }
}

function PreparePreText($text,$ff='//FF//') {
        $text = htmlspecialchars($text);
        if ($ff) { $text = str_replace($ff,'</pre><formfeed /><pre>',$text); }
        return ('<pre>'.$text.'</pre>');
}

if(!function_exists('strcode2utf')){ 
  function strcode2utf($str,$lo=true) {
        //converts all the &#nnn; and &#xhhh; in a string to Unicode
        // mPDF 5.7
        if ($lo) {
                $str = preg_replace_callback('/\&\#([0-9]+)\;/m', 'code2utf_lo_callback', $str);
                $str = preg_replace_callback('/\&\#x([0-9a-fA-F]+)\;/m', 'codeHex2utf_lo_callback', $str);
        }
        else {
                $str = preg_replace_callback('/\&\#([0-9]+)\;/m', 'code2utf_callback', $str);
                $str = preg_replace_callback('/\&\#x([0-9a-fA-F]+)\;/m', 'codeHex2utf_callback', $str);
        }
        return $str;
  }
}
function code2utf_callback($matches) {
        return code2utf($matches[1], 0);
}
function code2utf_lo_callback($matches) {
        return code2utf($matches[1], 1);
}
function codeHex2utf_callback($matches) {
        return codeHex2utf($matches[1], 0);
}
function codeHex2utf_lo_callback($matches) {
        return codeHex2utf($matches[1], 1);
}

if(!function_exists('code2utf')){ 
  function code2utf($num,$lo=true){
        //Returns the utf string corresponding to the unicode value
        if ($num<128) {
                if ($lo) return chr($num);
                else return '&#'.$num.';';
        }
        if ($num<2048) return chr(($num>>6)+192).chr(($num&63)+128);
        if ($num<65536) return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
        if ($num<2097152) return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128);
        return '?';
  }
}


if(!function_exists('codeHex2utf')){ 
  function codeHex2utf($hex,$lo=true){
        $num = hexdec($hex);
        if (($num<128) && !$lo) return '&#x'.$hex.';';
        return code2utf($num,$lo);
  }
}


?>