<?php

/**
 * Класс для сокращения ссылок - переводит INT идентификатор в 62-ричную систему исчисления.
 */
class x62
{

	private static $ABC = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

	public static function encode($in)
	{
		$len = strlen(self::$ABC);

		$in = intval($in);
		$out = '';

		while ($in >= 0) {
			if ($in >= $len) {
				$tmp = floor($in / $len);
				$out .= self::$ABC[(int) ($in - $tmp * $len)];
				$in = $tmp;
			} else {
				$out .= self::$ABC[(int) $in];
				$in = -1;
			}
		}

		return strrev($out);
	}

	public static function decode($in)
	{
		$out = 0;
		$exp = 0;
		for ($i = strlen($in) - 1; $i >= 0; $i--) {
			$n = strpos(self::$ABC, $in[$i]);
			if ($n === false) {
				return false; //Хрень какую-то прислали
			}
			$out += $n * pow(62, $exp);
			$exp++;
		}
		return $out;
	}

}
