view common-functions.inc @ 59:0e157721bbad

Change the way we parse input files, preparing for more reasonable caching strategy.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Thu, 11 Oct 2012 16:40:03 +0200
parents ba5afd9ff24e
children 13d899b748b7
line wrap: on
line source

<?php
/**
 * @file
 * Functionality which doesn't belong anywhere else
 */
include_once 'CacheTimeCheck.inc';

$baseDir = dirname(__FILE__);

$cache = CacheTimeCheck::instance(__FILE__);
$cache->includeOnce('StatusCodes.inc', $baseDir);

function repMapString($map)
{
  $opt = 'array(';
  $start = True;

  foreach($map as $param => $value) {
    if ($start) {
      $start = False;
      $opt .= "\"${param}\" => \"${value}\"";
    }
    else {
      $opt .= ", \"${param}\" => \"${value}\"";
    }
  }
  $opt .= ')';
  return $opt;
}

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(), $nonQueryParams = array()) {
  $out = '';
  $first = 1;
  $new_params = $urlParams;
  foreach($keys as $param => $val) {
    $new_params[$param] = $val;
  }

  foreach($nonQueryParams as $nqp) {
    if (array_key_exists($nqp, $new_params)) {
      $val = $new_params[$nqp];
      if ($val)
	$out .= "/${val}";
      unset($new_params[$nqp]);
    }
  }

  foreach($new_params as $param => $val) {
    if ($val) {
      if($first) {
	$first = 0;
	$out .= "?";
      }
      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;
}

function startswith($haystack, $needle)
{
    return strpos($haystack, $needle) === 0;
}

function endsWith($haystack, $needle)
{
  $l = strlen($haystack) - strlen($needle);
  return strrpos($haystack, $needle) === $l;
}

function getHeaders($url)
{
  $response = http_head($url, array("timeout"=>1), $info);
  $headers = array();
  $str = explode("\n", $response);
  foreach($str as $kv) {
    $p = strpos($kv, ":");
    if ($p) {
      $key = substr($kv, 0, $p);
      $value = trim(substr($kv, $p + 1));
      $headers[$key] = $value;
    }
  }
  return $headers;
}

function opttostring($opts)
{
  $str = '';
  foreach (array_keys($opts) as $key) {
    $value = $opts[$key];
    if ($str) {
      $str .= "&${key}=${value}";
    }
    else {
      $str = "?${key}=${value}";
    }
  }
  return $str;
}
?>