<?php /** @file */

namespace Zotlabs\Lib;

	/**
	 *  cache api
	 */
	 
class Cache {
    
    /**
     * @brief Returns cached content
     * 
     * @param string $key
     * @param string $age in SQL format, default is '30 DAY'
     * @return string
     */
    
	public static function get($key, $age = '') {

		$hash = hash('whirlpool',$key);

		$r = q("SELECT v FROM cache WHERE k = '%s' AND updated > %s - INTERVAL %s LIMIT 1",
			dbesc($hash),
			db_utcnow(),
			db_quoteinterval(($age ? $age : get_config('system','object_cache_days', '30') . ' DAY'))
		);
			
		if ($r)
			return $r[0]['v'];
		return null;
	}
		
	public static function set($key,$value) {

		$hash = hash('whirlpool',$key);

		$r = q("SELECT * FROM cache WHERE k = '%s' limit 1",
			dbesc($hash)
		);
		if($r) {
			q("UPDATE cache SET v = '%s', updated = '%s' WHERE k = '%s'",
				dbesc($value),
				dbesc(datetime_convert()),
				dbesc($hash));
		}
		else {
			q("INSERT INTO cache ( k, v, updated) VALUES ('%s','%s','%s')",
				dbesc($hash),
				dbesc($value),
				dbesc(datetime_convert()));
		}
	}
}
