8 * Repository ID (number in repositories directory)
15 * Full path to the git repository
22 * Load Repository data from GET-Request
26 * @throws Exception When something is wrong
28 public function loadFromRequest()
30 if (!isset($_GET['id'])) {
31 throw new Exception_Input('Paste ID missing');
33 if (!is_numeric($_GET['id'])) {
34 throw new Exception_Input('Paste ID not numeric');
36 $this->id = (int)$_GET['id'];
38 $repoDir = $GLOBALS['phorkie']['cfg']['repos'] . '/' . $this->id;
39 if (!is_dir($repoDir)) {
40 throw new Exception_NotFound('Paste not found');
42 $this->repoDir = $repoDir;
45 public function loadById($id)
47 if (!is_numeric($id)) {
48 throw new Exception_Input('Paste ID not numeric');
52 $repoDir = $GLOBALS['phorkie']['cfg']['repos'] . '/' . $this->id;
53 if (!is_dir($repoDir)) {
54 throw new Exception_NotFound('Paste not found');
56 $this->repoDir = $repoDir;
59 public function getVc()
61 return new \VersionControl_Git($this->repoDir);
65 * Loads the list of files in this repository
67 * @return File[] Array of files
69 public function getFiles()
71 $files = glob($this->repoDir . '/*');
73 foreach ($files as $path) {
74 $arFiles[] = new File($path, $this);
79 public function getFileByName($name, $bHasToExist = true)
81 $base = basename($name);
83 throw new Exception('No directories supported for now');
86 throw new Exception_Input('Empty file name given');
88 $path = $this->repoDir . '/' . $base;
89 if ($bHasToExist && !is_readable($path)) {
90 throw new Exception_Input('File does not exist');
92 return new File($path, $this);
95 public function hasFile($name)
98 $this->getFileByName($name);
99 } catch (Exception $e) {
106 * Permanently deletes the paste repository without any way to get
109 * @return boolean True if all went well, false if not
111 public function delete()
113 return Tools::recursiveDelete($this->repoDir);
116 public function getDescription()
118 if (!is_readable($this->repoDir . '/.git/description')) {
121 return file_get_contents($this->repoDir . '/.git/description');
124 public function setDescription($description)
126 file_put_contents($this->repoDir . '/.git/description', $description);
130 * Get a link to the repository
132 * @param string $type Link type. Supported are:
139 public function getLink($type)
141 if ($type == 'edit') {
142 return '/' . $this->id . '/edit';
143 } else if ($type == 'display') {
144 return '/' . $this->id;
145 } else if ($type == 'fork') {
146 return '/' . $this->id . '/fork';
147 } else if ($type == 'delete') {
148 return '/' . $this->id . '/delete';
149 } else if ($type == 'delete-confirm') {
150 return '/' . $this->id . '/delete/confirm';
152 throw new Exception('Unknown link type');