true, self::CONFIG_TIMESTAMPS => false, ) + parent::getConfiguration(); } public function generatePHID() { return PhabricatorPHID::generateNewPHID( PhabricatorPHIDConstants::PHID_TYPE_WIKI); } public static function getSlugURI($slug, $type = 'document') { static $types = array( 'document' => '/w/', 'history' => '/phriction/history/', ); if (empty($types[$type])) { throw new Exception("Unknown URI type '{$type}'!"); } $prefix = $types[$type]; if ($slug == '/') { return $prefix; } else { return $prefix.$slug; } } public static function normalizeSlug($slug) { // TODO: We need to deal with unicode at some point, this is just a very // basic proof-of-concept implementation. $slug = strtolower($slug); $slug = preg_replace('@/+@', '/', $slug); $slug = trim($slug, '/'); $slug = preg_replace('@[^a-z0-9/]+@', '_', $slug); $slug = trim($slug, '_'); return $slug.'/'; } public function setSlug($slug) { $this->slug = self::normalizeSlug($slug); $this->depth = substr_count($this->slug, '/'); return $this; } public function attachContent(PhrictionContent $content) { $this->contentObject = $content; return $this; } public function getContent() { if (!$this->contentObject) { throw new Exception("Attach content with attachContent() first."); } return $this->contentObject; } }