1 <?php
2 require_once("ZoteroConfigException.php");
3 
4 abstract class ZoteroConfig
5 {
6 	const FILE_ZOTERO_IDS = "ZoteroIds.txt";
7 	const FILE_ZOTERO_ENTRIES = "ZoteroEntries.txt";
8 	const ENTRY_URL = "http://www.zotero.org/USERNAME/items/ENTRYID";
9 	const ENTRIES_URL = "https://api.zotero.org/users/USERID/items?content=json&itemType=-attachment&key=ZOTEROKEY";
10 
11 	protected $config = array();
12 
13 	public function __construct()
14 	{
15 		if (!$this->usernameIsValid())
16 		{
17 			throw new ZoteroConfigException("Invalid Zotero username in config file.");
18 		}
19 
20 		if ($this->autoupdateIsActivated() && !$this->keyIsValid())
21 		{
22 			throw new ZoteroConfigException("Invalid Zotero key in config file.");
23 		}
24 
25 		if (!isset($this->config['WikiOutput']['parentheses']) || $this->config['WikiOutput']['parentheses'] == "")
26 		{
27 			$this->config['WikiOutput']['parentheses'] = ",";
28 		}
29 
30 		if (!isset($this->config['SourceEntries']['authorFormat']) || $this->config['SourceEntries']['authorFormat'] == "")
31 		{
32 			$this->config['SourceEntries']['authorFormat'] = "LASTNAME, FIRSTNAME";
33 		}
34 		if (!isset($this->config['WikiOutput']['titleFormat']) || $this->config['WikiOutput']['titleFormat'] == "")
35 		{
36 			$this->config['WikiOutput']['titleFormat'] = "AUTHOR: TITLE (DATE)";
37 		}
38 	}
39 
40 	private function usernameIsValid()
41 	{
42 		return isset($this->config['ZoteroAccess']['username']) && $this->config['ZoteroAccess']['username'] != "" && $this->config['ZoteroAccess']['username'] != "YOURUSERNAME";
43 	}
44 
45 	private function keyIsValid()
46 	{
47 		return isset($this->config['ZoteroAccess']['key']) && $this->config['ZoteroAccess']['key'] != "" && $this->config['ZoteroAccess']['key'] != "YOURZOTEROKEY";
48 	}
49 
50 	private function autoupdateIsActivated()
51 	{
52 		return isset($this->config['ZoteroAccess']['autoupdate']) && $this->config['ZoteroAccess']['autoupdate'] == true;
53 	}
54 
55 	public function getConfig($category, $key)
56 	{
57 		$value = @$this->config[$category][$key];
58 		return $value;
59 	}
60 
61 	public function getCachePage()
62 	{
63 		$cachePage = $this->config['SourceEntries']['cachePage'];
64 		if ($cachePage != "")
65 		{
66 			$wikiPagesDir = dirname(__FILE__) . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "pages" . DIRECTORY_SEPARATOR;
67 			if (strstr($cachePage, ":"))
68 			{
69 				$parts = explode(":", $cachePage);
70 				$cachePage = $parts[0] . DIRECTORY_SEPARATOR . $parts[1];
71 			}
72 			$cachePage = realpath($wikiPagesDir) . DIRECTORY_SEPARATOR . $cachePage . ".txt";
73 		}
74 		else
75 		{
76 			$cachePage = self::FILE_ZOTERO_ENTRIES;
77 		}
78 		return $cachePage;
79 	}
80 
81 	public function getUrlForEntry(ZoteroEntry $entry)
82 	{
83 		$url = str_replace("USERNAME", $this->getConfig("ZoteroAccess", "username"), self::ENTRY_URL);
84 		$url = str_replace("ENTRYID", $entry->getZoteroId(), $url);
85 		return $url;
86 	}
87 
88 	public function getUrlForEntries()
89 	{
90 		$url = str_replace("USERID", $this->getConfig("ZoteroAccess", "userid"), self::ENTRIES_URL);
91 		$url = str_replace("ZOTEROKEY", $this->getConfig("ZoteroAccess", "key"), $url);
92 		return $url;
93 	}
94 }
95 ?>
96