<?php

function ensure($bool, $error_msg = "")
{
	if (!$bool)
		throw new AssertionError($error_msg);
}

function formatDate($date = NULL, $with_time = false)
{
	if ($date == NULL)
		$date = date("yyyy-mm-dd");

	return strftime("%d %B %G" . ($with_time ? " %H:%M" : ""), strtotime($date));
}

function dateWellFormed($date, $with_time = false)
{
	return date_parse_from_format($with_time ? "yyyy-mm-dd HH-MM:ss" : "yy-mm-dd", $date) !== false;
}

function genRandomPhrase($size, $uppercase = false)
{
	$alphabet = $uppercase ? "0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" : "0123456789abcdefghijklmnopqrstuvwxyz0123456789";

	$phrase = "";
	for ($i = 0; $i < $size; ++$i) {
		$phrase .= $alphabet[rand(0, strlen($alphabet) - 1)];
	}

	return $phrase;
}

function getExtFromMimeType($mime_type)
{
	switch ($mime_type) {
		case "application/pdf":
			return ".pdf";
		case "image/png":
			return ".png";
		case "image/jpg":
		case "image/jpeg":
			return ".jpg";
		case "application/zip":
			return ".zip";
	}
	return "";
}