id = (int)$_GET['id']; $repoDir = $GLOBALS['phorkie']['cfg']['repos'] . '/' . $this->id; if (!is_dir($repoDir)) { throw new Exception_NotFound('Paste not found'); } $this->repoDir = $repoDir; } public function loadById($id) { if (!is_numeric($id)) { throw new Exception_Input('Paste ID not numeric'); } $this->id = (int)$id; $repoDir = $GLOBALS['phorkie']['cfg']['repos'] . '/' . $this->id; if (!is_dir($repoDir)) { throw new Exception_NotFound('Paste not found'); } $this->repoDir = $repoDir; } public function getVc() { return new \VersionControl_Git($this->repoDir); } /** * Loads the list of files in this repository * * @return File[] Array of files */ public function getFiles() { $files = glob($this->repoDir . '/*'); $arFiles = array(); foreach ($files as $path) { $arFiles[] = new File($path, $this); } return $arFiles; } public function getFileByName($name, $bHasToExist = true) { $base = basename($name); if ($base != $name) { throw new Exception('No directories supported for now'); } if ($name == '') { throw new Exception_Input('Empty file name given'); } $path = $this->repoDir . '/' . $base; if ($bHasToExist && !is_readable($path)) { throw new Exception_Input('File does not exist'); } return new File($path, $this); } public function hasFile($name) { try { $this->getFileByName($name); } catch (Exception $e) { return false; } return true; } public function getDescription() { if (!is_readable($this->repoDir . '/.git/description')) { return null; } return file_get_contents($this->repoDir . '/.git/description'); } public function setDescription($description) { file_put_contents($this->repoDir . '/.git/description', $description); } /** * Get a link to the repository * * @param string $type Link type. Supported are: * - "edit" * - "display" * - "fork" * * @return string */ public function getLink($type) { if ($type == 'edit') { return '/' . $this->id . '/edit'; } else if ($type == 'display') { return '/' . $this->id; } else if ($type == 'fork') { return '/' . $this->id . '/fork'; } throw new Exception('Unknown type'); } } ?>