<?php

/**
 * Returns the bibfile entries of a given file. The contents
 * is updated automatically, when a change is detected.
 *
 * @param $filename the file to load
 * @return {mixed[]} the bibtex entries as an assocative array
 */
function bibpress_getEntries($filename) {
	$fileHash = md5_file($filename);

	$hashOptionKey = 'bibpress_cache_md5_' . basename($filename);

	if(get_option($hashOptionKey, '') != $fileHash) {
		update_option($hashOptionKey, $fileHash);
		return bibpress_loadFromFile($filename);
	}

	return unserialize(get_option('bibpress_bibentries_' . basename($filename), ''));
}

/**
 * Loads bibtex entries from a file
 *
 * @param filename {string} the file to load
 * @return {mixed[]} the bibtex entries as an assocative array
 */
function bibpress_loadFromFile($filename) {
	$parser = new BibtexParser();
	$parser->openBib($filename);
	$parser->extractEntries();
	$result = $parser->returnArrays();
	update_option('bibpress_bibentries_' . basename($filename),
		serialize($result));

	return $result;
}

/**
 * Enques css and js of a printer to wordpress
 *
 * @param printer {Printer} the printer to use
 */
function bibpress_addHeaderLinks() {
	$printer = BibtexPrinterFactory::getPrinter('default');

	$cssToImport = $printer->getStyleFile();
	$jsToImport =  $printer->getScriptFile();

	if($cssToImport) {
		$cssURL = WP_PLUGIN_URL . '/bibpress/printers/' . $cssToImport;
		wp_register_style('bibpressCSS', $cssURL);
		wp_enqueue_style('bibpressCSS');
	}

	if($jsToImport) {
		$jsURL = WP_PLUGIN_URL . '/bibpress/printers/' . $jsToImport;
		wp_register_script('bibpressJS', $jsURL);
		wp_enqueue_script('bibpressJS');
	}
}
?>
