X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fdoc.php;h=20cf9e2810b66c9790f87d95f183bfc0aa98277b;hb=1fdc72f5956f00c736f7761aead4abd8da192eda;hp=25d363472a2cca2feadf3d1292c1d226c64f8bd5;hpb=0794ecf372ffff2e0cc93509ae3462ca0cbbc99c;p=quix0rs-gnu-social.git diff --git a/actions/doc.php b/actions/doc.php index 25d363472a..20cf9e2810 100644 --- a/actions/doc.php +++ b/actions/doc.php @@ -1,5 +1,4 @@ title = $this->trimmed('title'); + if (!preg_match('/^[a-zA-Z0-9_-]*$/', $this->title)) { + $this->title = 'help'; + } $this->output = null; $this->loadDoc(); @@ -80,7 +82,6 @@ class DocAction extends Action * * @return void */ - function showPageTitle() { $this->element('h1', array('class' => 'entry-title'), $this->title()); @@ -93,7 +94,6 @@ class DocAction extends Action * * @return void. */ - function showContentBlock() { $this->elementStart('div', array('id' => 'content', 'class' => 'hentry')); @@ -114,7 +114,6 @@ class DocAction extends Action * * @return void */ - function showContent() { $this->raw($this->output); @@ -139,7 +138,6 @@ class DocAction extends Action * * @return boolean read-only flag (false) */ - function isReadOnly($args) { return true; @@ -152,7 +150,9 @@ class DocAction extends Action $this->filename = $this->getFilename(); if (empty($this->filename)) { - throw new ClientException(sprintf(_('No such document "%s"'), $this->title), 404); + // TRANS: Client exception thrown when requesting a document from the documentation that does not exist. + // TRANS: %s is the non-existing document. + throw new ClientException(sprintf(_('No such document "%s".'), $this->title), 404); } $c = file_get_contents($this->filename); @@ -165,11 +165,29 @@ class DocAction extends Action function getFilename() { - if (file_exists(INSTALLDIR.'/local/doc-src/'.$this->title)) { - $localDef = INSTALLDIR.'/local/doc-src/'.$this->title; - } + $localDef = null; + $local = null; + + $site = StatusNet::currentSite(); - $local = glob(INSTALLDIR.'/local/doc-src/'.$this->title.'.*'); + if (!empty($site) && file_exists(INSTALLDIR.'/local/doc-src/'.$site.'/'.$this->title)) { + $localDef = INSTALLDIR.'/local/doc-src/'.$site.'/'.$this->title; + + $local = glob(INSTALLDIR.'/local/doc-src/'.$site.'/'.$this->title.'.*'); + if ($local === false) { + // Some systems return false, others array(), if dir didn't exist. + $local = array(); + } + } else { + if (file_exists(INSTALLDIR.'/local/doc-src/'.$this->title)) { + $localDef = INSTALLDIR.'/local/doc-src/'.$this->title; + } + + $local = glob(INSTALLDIR.'/local/doc-src/'.$this->title.'.*'); + if ($local === false) { + $local = array(); + } + } if (count($local) || isset($localDef)) { return $this->negotiateLanguage($local, $localDef); @@ -180,6 +198,9 @@ class DocAction extends Action } $dist = glob(INSTALLDIR.'/doc-src/'.$this->title.'.*'); + if ($dist === false) { + $dist = array(); + } if (count($dist) || isset($distDef)) { return $this->negotiateLanguage($dist, $distDef);