diff --git a/module/bug/model.php b/module/bug/model.php index 4a1bfeae97..6cac48e0fc 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -187,7 +187,10 @@ class bugModel extends model foreach($extendFields as $extendField) { - $bug->{$extendField->field} = htmlspecialchars($this->post->{$extendField->field}[$i]); + $bug->{$extendField->field} = $this->post->{$extendField->field}[$i]; + if(is_array($bug->{$extendField->field})) $bug->{$extendField->field} = join(',', $bug->{$extendField->field}); + + $bug->{$extendField->field} = htmlspecialchars($bug->{$extendField->field}); $message = $this->checkFlowRule($extendField, $bug->{$extendField->field}); if($message) die(js::alert($message)); } @@ -724,7 +727,10 @@ class bugModel extends model foreach($extendFields as $extendField) { - $bug->{$extendField->field} = htmlspecialchars($this->post->{$extendField->field}[$bugID]); + $bug->{$extendField->field} = $this->post->{$extendField->field}[$bugID]; + if(is_array($bug->{$extendField->field})) $bug->{$extendField->field} = join(',', $bug->{$extendField->field}); + + $bug->{$extendField->field} = htmlspecialchars($bug->{$extendField->field}); $message = $this->checkFlowRule($extendField, $bug->{$extendField->field}); if($message) die(js::alert($message)); } diff --git a/module/doc/control.php b/module/doc/control.php index 6a757633ae..001181f13e 100644 --- a/module/doc/control.php +++ b/module/doc/control.php @@ -487,9 +487,8 @@ class doc extends control if($doc->contentType == 'markdown') { - $hyperdown = $this->app->loadClass('hyperdown'); - $doc->content = $hyperdown->makeHtml($doc->content); - $doc->digest = $hyperdown->makeHtml($doc->digest); + $doc->content = $this->doc->processMarkdown($doc->content); + $doc->digest = $this->doc->processMarkdown($$doc->digest); } /* Check priv when lib is product or project. */ @@ -917,9 +916,8 @@ class doc extends control if($doc->contentType == 'markdown') { - $hyperdown = $this->app->loadClass('hyperdown'); - $doc->content = $hyperdown->makeHtml($doc->content); - $doc->digest = $hyperdown->makeHtml($doc->digest); + $doc->content = $this->doc->processMarkdown($doc->content); + $doc->digest = $this->doc->processMarkdown($doc->digest); } } diff --git a/module/doc/model.php b/module/doc/model.php index cdf01db255..3f0f4c5689 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -430,6 +430,7 @@ class docModel extends model ->get(); /* Fix bug #2929. strip_tags($this->post->contentMarkdown, $this->config->allowedTags)*/ + $doc = $this->loadModel('file')->processImgURL($doc, $this->config->doc->editor->create['id'], $this->post->uid); $doc->contentMarkdown = $this->post->contentMarkdown; if($doc->acl == 'private') $doc->users = $this->app->user->account; @@ -441,7 +442,6 @@ class docModel extends model } $lib = $this->getLibByID($doc->lib); - $doc = $this->loadModel('file')->processImgURL($doc, $this->config->doc->editor->create['id'], $this->post->uid); $doc->product = $lib->product; $doc->project = $lib->project; $doc->execution = $lib->execution; @@ -456,13 +456,20 @@ class docModel extends model $docContent->content = $doc->contentType == 'html' ? $doc->content : $doc->contentMarkdown; $docContent->type = $doc->contentType; $docContent->version = 1; - if($doc->contentType == 'markdown') $docContent->content = str_replace('>', '>', $docContent->content); unset($doc->contentMarkdown); unset($doc->contentType); unset($doc->url); + $requiredFields = $this->config->doc->create->requiredFields; + $checkContent = strpos(",$requiredFields,", ',content,') !== false; + if($checkContent) + { + $requiredFields = trim(str_replace(',content,', ',', ",$requiredFields,"), ','); + if(empty($docContent->content)) return dao::$errors['content'] = sprintf($this->lang->error->notempty, $this->lang->doc->content); + } + $this->dao->insert(TABLE_DOC)->data($doc, 'content')->autoCheck() - ->batchCheck($this->config->doc->create->requiredFields, 'notempty') + ->batchCheck($requiredFields, 'notempty') ->exec(); if(!dao::isError()) { @@ -508,6 +515,7 @@ class docModel extends model ->join('mailto', ',') ->remove('comment,files,labels,uid,contactListMenu') ->get(); + $doc = $this->loadModel('file')->processImgURL($doc, $this->config->doc->editor->edit['id'], $this->post->uid); if($doc->contentType == 'markdown') $doc->content = $this->post->content; if($doc->acl == 'private') $doc->users = $oldDoc->addedBy; @@ -518,12 +526,9 @@ class docModel extends model $oldDoc->digest = $oldDocContent->digest; $oldDoc->content = $oldDocContent->content; $oldDoc->contentType = $oldDocContent->type; - - if($oldDocContent->type == 'markdown') $doc->content = str_replace('>', '>', $doc->content); } $lib = $this->getLibByID($doc->lib); - $doc = $this->loadModel('file')->processImgURL($doc, $this->config->doc->editor->edit['id'], $this->post->uid); $doc->product = $lib->product; $doc->execution = $lib->execution; if(isset($doc->type) and $doc->type == 'url') $doc->content = $doc->url; @@ -538,6 +543,14 @@ class docModel extends model if($change['field'] == 'content' or $change['field'] == 'title') $changed = true; } + $requiredFields = $this->config->doc->edit->requiredFields; + $checkContent = strpos(",$requiredFields,", ',content,') !== false; + if($checkContent) + { + $requiredFields = trim(str_replace(',content,', ',', ",$requiredFields,"), ','); + if(isset($doc->content) and empty($doc->content)) return dao::$errors['content'] = sprintf($this->lang->error->notempty, $this->lang->doc->content); + } + if($changed) { $doc->version = $oldDoc->version + 1; @@ -557,7 +570,7 @@ class docModel extends model $this->dao->update(TABLE_DOC)->data($doc, 'content') ->autoCheck() - ->batchCheck($this->config->doc->edit->requiredFields, 'notempty') + ->batchCheck($requiredFields, 'notempty') ->where('id')->eq((int)$docID) ->exec(); if(!dao::isError()) @@ -1904,4 +1917,25 @@ class docModel extends model if(!isset($treeMenu[$module->parent])) $treeMenu[$module->parent] = ''; $treeMenu[$module->parent] .= '