view common-functions.inc @ 39:bd82b719a0de

Make CacheTimeCheck a singleton. Robustify if_modified_since check. Quiet warnings. Set debug levels. Fix basepath references.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Fri, 05 Oct 2012 00:21:27 +0200
parents ca76d31b7d48
children fbbb82ced6de
line wrap: on
line source

<?php
include_once 'CacheTimeCheck.inc';

$cache = CacheTimeCheck::instance(__FILE__);
$cache->includeOnce('http-response-status-codes.inc');

function basePath()
{
  $l = strrpos($_SERVER['SCRIPT_FILENAME'], $_SERVER['SCRIPT_NAME']);
  return substr($_SERVER['SCRIPT_FILENAME'], 0, $l);
}

function loadFile($sFilename, $sCharset = 'UTF-8')
{
  if (floatval(phpversion()) >= 4.3) {
    if (!file_exists($sFilename))
      return -3;
    $sData = file_get_contents($sFilename);
  }
  else {
    if (!file_exists($sFilename))
      return -3;
    $rHandle = fopen($sFilename, 'r');
    if (!$rHandle)
      return -2;

    $sData = '';
    while(!feof($rHandle))
      $sData .= fread($rHandle, filesize($sFilename));
    fclose($rHandle);
  }
  if ($sEncoding = mb_detect_encoding($sData, 'auto', true) != $sCharset) {
    if ($sEncoding != 1) {
      $sData = mb_convert_encoding($sData, $sCharset, $sEncoding);
    }
  }
  return $sData;
}

function errorPage($errorText, $errorCode = 403)
{
  header(StatusCodes::httpHeaderFor($errorCode));
  print "<div id=\"page\"><h1>${errorText}</h1></div>";
  exit;
}

function genUrl($urlParams, $keys = array()) {
  $out = "?";
  $first = 1;
  $new_params = $urlParams;
  foreach($keys as $param => $val) {
    $new_params[$param] = $val;
  }
  foreach($new_params as $param => $val) {
    if($first)
      $first = 0;
    else
      $out .= "&amp;";
    $out .= urlencode($param) . '=' . urlencode($val);
  }
  return $out;
}

function getElementByTagName($obj, $name) {
  $elems = $obj->getElementsByTagName($name);
  if ($elems->length != 1) {
    exit;
  }
  $elem = $elems->item(0);
  return $elem;
}

function getXmlContent($node)
{
  $text = $node->ownerDocument->saveXml($node);
  $pattern = "/^<" . $node->tagName."[^>]*>/is";
  $text = preg_replace($pattern, '' , $text);
  $pattern = '/<\/' . $node->tagName . '[^>]*>$/is';
  $text = preg_replace($pattern, '' , $text);

  return $text;
}

?>