Nicklas766 /
Comment
This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
| 1 | <?php |
||
| 2 | |||
| 3 | namespace Nicklas\Comment; |
||
| 4 | |||
| 5 | use \Nicklas\Comment\HTMLForm\Comment\CreateQuestionForm; |
||
| 6 | use \Nicklas\Comment\HTMLForm\Comment\CreateAnswerForm; |
||
| 7 | use \Nicklas\Comment\HTMLForm\Comment\EditCommentForm; |
||
| 8 | |||
| 9 | use \Nicklas\Comment\Modules\Question; |
||
| 10 | use \Nicklas\Comment\Modules\Comment; |
||
| 11 | use \Nicklas\Comment\Modules\User; |
||
| 12 | |||
| 13 | /** |
||
| 14 | * Extends the UserController, for comments |
||
| 15 | */ |
||
| 16 | class QuestionController extends AdminController |
||
| 17 | { |
||
| 18 | |||
| 19 | /** |
||
| 20 | * Show all items. |
||
| 21 | * |
||
| 22 | * @return void |
||
| 23 | */ |
||
| 24 | 1 | public function getIndex() |
|
| 25 | { |
||
| 26 | 1 | $question = new Question($this->di->get("db")); |
|
| 27 | |||
| 28 | $views = [ |
||
| 29 | 1 | ["comment/question/view-all", ["questions" => $question->getQuestions(), |
|
| 30 | 1 | "headerTitle" => "Senaste frågor"], "main"] |
|
| 31 | 1 | ]; |
|
| 32 | |||
| 33 | 1 | $this->di->get("pageRenderComment")->renderPage([ |
|
| 34 | 1 | "views" => $views, |
|
| 35 | "title" => "All questions" |
||
| 36 | 1 | ]); |
|
| 37 | 1 | } |
|
| 38 | |||
| 39 | /** |
||
| 40 | * View specific question and create answer form |
||
| 41 | * |
||
| 42 | * @return void |
||
| 43 | */ |
||
| 44 | public function getPostQuestionAnswer($id, $sort = null) |
||
| 45 | { |
||
| 46 | $question = new Question($this->di->get("db")); |
||
| 47 | $user = new User($this->di->get("db")); |
||
| 48 | |||
| 49 | if ($question->find("id", $id) == null) { |
||
| 50 | return false; |
||
| 51 | } |
||
| 52 | $question = $question->getQuestion($id); |
||
| 53 | |||
| 54 | |||
| 55 | // This is a bad practice and should be in the module, (fix this after kmom10 future) |
||
| 56 | // getting actual user Objects for posts for reputation show in view. |
||
| 57 | $question->question->userObj = $user->getUser($question->user); |
||
| 58 | $question->userObj = $user->getUser($question->user); |
||
| 59 | |||
| 60 | $question->answers = array_map(function ($answer) { |
||
| 61 | $user = new User($this->di->get("db")); |
||
| 62 | $answer->userObj = $user->getUser($answer->user); |
||
| 63 | $answer->vote->score = $answer->vote->score == null ? 0 : $answer->vote->score; |
||
| 64 | return $answer; |
||
| 65 | }, $question->answers); |
||
| 66 | |||
| 67 | // Get query for up or down |
||
| 68 | $order = isset($_GET["order"]) ? $_GET["order"] : "up"; |
||
| 69 | |||
| 70 | // Highest points |
||
| 71 | if ($sort == "points") { |
||
| 72 | usort($question->answers, function ($current, $next) { |
||
| 73 | return $current->vote->score > $next->vote->score; |
||
| 74 | }); |
||
| 75 | } |
||
| 76 | |||
| 77 | // Accepted top |
||
| 78 | if ($sort == "accepted") { |
||
| 79 | usort($question->answers, function ($current, $next) { |
||
|
0 ignored issues
–
show
|
|||
| 80 | return $current->accepted == "yes" ? 1 : -1; |
||
| 81 | }); |
||
| 82 | } |
||
| 83 | |||
| 84 | |||
| 85 | // Highest votes |
||
| 86 | if ($sort == "vote") { |
||
| 87 | usort($question->answers, function ($current, $next) { |
||
| 88 | return count($current->vote->likes) > count($next->vote->likes); |
||
| 89 | }); |
||
| 90 | } |
||
| 91 | |||
| 92 | // If up array_reverse, "down" is default from module |
||
| 93 | if ($order == "up") { |
||
| 94 | $question->answers = array_reverse($question->answers); |
||
| 95 | } |
||
| 96 | |||
| 97 | $form = new CreateAnswerForm($this->di, $id); |
||
| 98 | $form->check(); |
||
| 99 | |||
| 100 | $views = [ |
||
| 101 | ["comment/question/view/view-question", ["question" => $question], "question"], |
||
| 102 | ["comment/question/view/view-answers", |
||
| 103 | ["answers" => $question->answers, "questionId" => $question->question->questionId], "answer"], |
||
| 104 | ["comment/question/view/post-answer", ["form" => $form->getHTML()], "form"], |
||
| 105 | ["comment/question/view/wrappedField", ["question" => $question], "main"] |
||
| 106 | ]; |
||
| 107 | $this->di->get("pageRenderComment")->renderPage([ |
||
| 108 | "views" => $views, |
||
| 109 | "title" => "Fråga $question->id" |
||
| 110 | ]); |
||
| 111 | |||
| 112 | return false; |
||
| 113 | } |
||
| 114 | |||
| 115 | /** |
||
| 116 | * Show all items. |
||
| 117 | * |
||
| 118 | * @return void |
||
| 119 | */ |
||
| 120 | public function getTaggedQuestions($tag) |
||
| 121 | { |
||
| 122 | $question = new Question($this->di->get("db")); |
||
| 123 | |||
| 124 | $questions = $question->getQuestions(); |
||
| 125 | |||
| 126 | |||
| 127 | |||
| 128 | $filteredQuestions = array_filter($questions, function ($value) use ($tag) { |
||
| 129 | return in_array($tag, $value->tags); |
||
| 130 | }); |
||
| 131 | |||
| 132 | $views = [ |
||
| 133 | ["comment/question/view-all", ["questions" => $filteredQuestions, |
||
| 134 | "headerTitle" => "Frågor med taggen $tag"], "main"] |
||
| 135 | ]; |
||
| 136 | |||
| 137 | $this->di->get("pageRenderComment")->renderPage([ |
||
| 138 | "views" => $views, |
||
| 139 | "title" => "Questions | $tag" |
||
| 140 | ]); |
||
| 141 | } |
||
| 142 | |||
| 143 | /** |
||
| 144 | * View all comments and create question form |
||
| 145 | * |
||
| 146 | * @return void |
||
| 147 | */ |
||
| 148 | public function getPostCreateQuestion() |
||
| 149 | { |
||
| 150 | $question = new Question($this->di->get("db")); |
||
| 151 | |||
| 152 | $form = new CreateQuestionForm($this->di); |
||
| 153 | $form->check(); |
||
| 154 | |||
| 155 | $views = [ |
||
| 156 | ["comment/question/create-question", ["form" => $form->getHTML()], "main"], |
||
| 157 | ["comment/question/view-all", ["questions" => $question->getQuestions(), |
||
| 158 | "headerTitle" => "Senaste frågor"], "main"] |
||
| 159 | ]; |
||
| 160 | |||
| 161 | $this->di->get("pageRenderComment")->renderPage([ |
||
| 162 | "views" => $views, |
||
| 163 | "title" => "Create your question" |
||
| 164 | ]); |
||
| 165 | } |
||
| 166 | } |
||
| 167 |
This check looks from parameters that have been defined for a function or method, but which are not used in the method body.