bizley/yii2-podium

View on GitHub
src/models/Post.php

Summary

Maintainability
F
5 days
Test Coverage

Function markSeen has a Cognitive Complexity of 77 (exceeds 5 allowed). Consider refactoring.
Open

    public function markSeen($updateCounters = true)
    {
        if (!Podium::getInstance()->user->isGuest) {
            $transaction = static::getDb()->beginTransaction();
            try {
Severity: Minor
Found in src/models/Post.php - About 1 day to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

File Post.php has 462 lines of code (exceeds 250 allowed). Consider refactoring.
Open

<?php

namespace bizley\podium\models;

use bizley\podium\db\Query;
Severity: Minor
Found in src/models/Post.php - About 7 hrs to fix

    Function podiumThumb has a Cognitive Complexity of 32 (exceeds 5 allowed). Consider refactoring.
    Open

        public function podiumThumb($up = true, $count = 0)
        {
            $transaction = static::getDb()->beginTransaction();
            try {
                $loggedId = User::loggedId();
    Severity: Minor
    Found in src/models/Post.php - About 4 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    The class Post has an overall complexity of 116 which is very high. The configured complexity threshold is 50.
    Open

    class Post extends PostActiveRecord
    {
        /**
         * Returns latest posts for registered users.
         * @param int $limit Number of latest posts.
    Severity: Minor
    Found in src/models/Post.php by phpmd

    Method markSeen has 71 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        public function markSeen($updateCounters = true)
        {
            if (!Podium::getInstance()->user->isGuest) {
                $transaction = static::getDb()->beginTransaction();
                try {
    Severity: Major
    Found in src/models/Post.php - About 2 hrs to fix

      Function podiumNew has a Cognitive Complexity of 18 (exceeds 5 allowed). Consider refactoring.
      Open

          public function podiumNew($previous = null)
          {
              $transaction = static::getDb()->beginTransaction();
              try {
                  $id = null;
      Severity: Minor
      Found in src/models/Post.php - About 2 hrs to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Method podiumNew has 58 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          public function podiumNew($previous = null)
          {
              $transaction = static::getDb()->beginTransaction();
              try {
                  $id = null;
      Severity: Major
      Found in src/models/Post.php - About 2 hrs to fix

        Method podiumThumb has 51 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            public function podiumThumb($up = true, $count = 0)
            {
                $transaction = static::getDb()->beginTransaction();
                try {
                    $loggedId = User::loggedId();
        Severity: Major
        Found in src/models/Post.php - About 2 hrs to fix

          Function podiumDelete has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
          Open

              public function podiumDelete()
              {
                  $transaction = static::getDb()->beginTransaction();
                  try {
                      if (!$this->delete()) {
          Severity: Minor
          Found in src/models/Post.php - About 1 hr to fix

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

          Consider simplifying this complex logical expression.
          Open

                  if (!is_numeric($categoryId) || $categoryId < 1
                          || !is_numeric($forumId) || $forumId < 1
                          || !is_numeric($threadId) || $threadId < 1
                          || !is_numeric($id) || $id < 1) {
                      return null;
          Severity: Critical
          Found in src/models/Post.php - About 1 hr to fix

            Function updateWords has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
            Open

                protected function updateWords()
                {
                    try {
                        $vocabulary = [];
                        $allWords = $this->prepareWords();
            Severity: Minor
            Found in src/models/Post.php - About 1 hr to fix

            Cognitive Complexity

            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

            A method's cognitive complexity is based on a few simple rules:

            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
            • Code is considered more complex for each "break in the linear flow of the code"
            • Code is considered more complex when "flow breaking structures are nested"

            Further reading

            Method podiumDelete has 31 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                public function podiumDelete()
                {
                    $transaction = static::getDb()->beginTransaction();
                    try {
                        if (!$this->delete()) {
            Severity: Minor
            Found in src/models/Post.php - About 1 hr to fix

              Method updateWords has 29 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  protected function updateWords()
                  {
                      try {
                          $vocabulary = [];
                          $allWords = $this->prepareWords();
              Severity: Minor
              Found in src/models/Post.php - About 1 hr to fix

                Function addNewWords has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                Open

                    protected function addNewWords($allWords)
                    {
                        try {
                            $newWords = $allWords;
                            $query = (new Query())->from(Vocabulary::tableName())->where(['word' => $allWords]);
                Severity: Minor
                Found in src/models/Post.php - About 45 mins to fix

                Cognitive Complexity

                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                A method's cognitive complexity is based on a few simple rules:

                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                • Code is considered more complex for each "break in the linear flow of the code"
                • Code is considered more complex when "flow breaking structures are nested"

                Further reading

                The method markSeen() has a Cyclomatic Complexity of 22. The configured cyclomatic complexity threshold is 10.
                Open

                    public function markSeen($updateCounters = true)
                    {
                        if (!Podium::getInstance()->user->isGuest) {
                            $transaction = static::getDb()->beginTransaction();
                            try {
                Severity: Minor
                Found in src/models/Post.php by phpmd

                CyclomaticComplexity

                Since: 0.1

                Complexity is determined by the number of decision points in a method plus one for the method entry. The decision points are 'if', 'while', 'for', and 'case labels'. Generally, 1-4 is low complexity, 5-7 indicates moderate complexity, 8-10 is high complexity, and 11+ is very high complexity.

                Example

                // Cyclomatic Complexity = 11
                class Foo {
                1   public function example() {
                2       if ($a == $b) {
                3           if ($a1 == $b1) {
                                fiddle();
                4           } elseif ($a2 == $b2) {
                                fiddle();
                            } else {
                                fiddle();
                            }
                5       } elseif ($c == $d) {
                6           while ($c == $d) {
                                fiddle();
                            }
                7        } elseif ($e == $f) {
                8           for ($n = 0; $n < $h; $n++) {
                                fiddle();
                            }
                        } else {
                            switch ($z) {
                9               case 1:
                                    fiddle();
                                    break;
                10              case 2:
                                    fiddle();
                                    break;
                11              case 3:
                                    fiddle();
                                    break;
                                default:
                                    fiddle();
                                    break;
                            }
                        }
                    }
                }

                Source https://phpmd.org/rules/codesize.html#cyclomaticcomplexity

                The method podiumNew() has a Cyclomatic Complexity of 14. The configured cyclomatic complexity threshold is 10.
                Open

                    public function podiumNew($previous = null)
                    {
                        $transaction = static::getDb()->beginTransaction();
                        try {
                            $id = null;
                Severity: Minor
                Found in src/models/Post.php by phpmd

                CyclomaticComplexity

                Since: 0.1

                Complexity is determined by the number of decision points in a method plus one for the method entry. The decision points are 'if', 'while', 'for', and 'case labels'. Generally, 1-4 is low complexity, 5-7 indicates moderate complexity, 8-10 is high complexity, and 11+ is very high complexity.

                Example

                // Cyclomatic Complexity = 11
                class Foo {
                1   public function example() {
                2       if ($a == $b) {
                3           if ($a1 == $b1) {
                                fiddle();
                4           } elseif ($a2 == $b2) {
                                fiddle();
                            } else {
                                fiddle();
                            }
                5       } elseif ($c == $d) {
                6           while ($c == $d) {
                                fiddle();
                            }
                7        } elseif ($e == $f) {
                8           for ($n = 0; $n < $h; $n++) {
                                fiddle();
                            }
                        } else {
                            switch ($z) {
                9               case 1:
                                    fiddle();
                                    break;
                10              case 2:
                                    fiddle();
                                    break;
                11              case 3:
                                    fiddle();
                                    break;
                                default:
                                    fiddle();
                                    break;
                            }
                        }
                    }
                }

                Source https://phpmd.org/rules/codesize.html#cyclomaticcomplexity

                The method podiumThumb() has a Cyclomatic Complexity of 17. The configured cyclomatic complexity threshold is 10.
                Open

                    public function podiumThumb($up = true, $count = 0)
                    {
                        $transaction = static::getDb()->beginTransaction();
                        try {
                            $loggedId = User::loggedId();
                Severity: Minor
                Found in src/models/Post.php by phpmd

                CyclomaticComplexity

                Since: 0.1

                Complexity is determined by the number of decision points in a method plus one for the method entry. The decision points are 'if', 'while', 'for', and 'case labels'. Generally, 1-4 is low complexity, 5-7 indicates moderate complexity, 8-10 is high complexity, and 11+ is very high complexity.

                Example

                // Cyclomatic Complexity = 11
                class Foo {
                1   public function example() {
                2       if ($a == $b) {
                3           if ($a1 == $b1) {
                                fiddle();
                4           } elseif ($a2 == $b2) {
                                fiddle();
                            } else {
                                fiddle();
                            }
                5       } elseif ($c == $d) {
                6           while ($c == $d) {
                                fiddle();
                            }
                7        } elseif ($e == $f) {
                8           for ($n = 0; $n < $h; $n++) {
                                fiddle();
                            }
                        } else {
                            switch ($z) {
                9               case 1:
                                    fiddle();
                                    break;
                10              case 2:
                                    fiddle();
                                    break;
                11              case 3:
                                    fiddle();
                                    break;
                                default:
                                    fiddle();
                                    break;
                            }
                        }
                    }
                }

                Source https://phpmd.org/rules/codesize.html#cyclomaticcomplexity

                The class Post has a coupling between objects value of 15. Consider to reduce the number of dependencies under 13.
                Open

                class Post extends PostActiveRecord
                {
                    /**
                     * Returns latest posts for registered users.
                     * @param int $limit Number of latest posts.
                Severity: Minor
                Found in src/models/Post.php by phpmd

                CouplingBetweenObjects

                Since: 1.1.0

                A class with too many dependencies has negative impacts on several quality aspects of a class. This includes quality criteria like stability, maintainability and understandability

                Example

                class Foo {
                    /**
                     * @var \foo\bar\X
                     */
                    private $x = null;
                
                    /**
                     * @var \foo\bar\Y
                     */
                    private $y = null;
                
                    /**
                     * @var \foo\bar\Z
                     */
                    private $z = null;
                
                    public function setFoo(\Foo $foo) {}
                    public function setBar(\Bar $bar) {}
                    public function setBaz(\Baz $baz) {}
                
                    /**
                     * @return \SplObjectStorage
                     * @throws \OutOfRangeException
                     * @throws \InvalidArgumentException
                     * @throws \ErrorException
                     */
                    public function process(\Iterator $it) {}
                
                    // ...
                }

                Source https://phpmd.org/rules/design.html#couplingbetweenobjects

                The method podiumEdit has a boolean flag argument $isFirstPost, which is a certain sign of a Single Responsibility Principle violation.
                Open

                    public function podiumEdit($isFirstPost = false)
                Severity: Minor
                Found in src/models/Post.php by phpmd

                BooleanArgumentFlag

                Since: 1.4.0

                A boolean flag argument is a reliable indicator for a violation of the Single Responsibility Principle (SRP). You can fix this problem by extracting the logic in the boolean flag into its own class or method.

                Example

                class Foo {
                    public function bar($flag = true) {
                    }
                }

                Source https://phpmd.org/rules/cleancode.html#booleanargumentflag

                The method markSeen has a boolean flag argument $updateCounters, which is a certain sign of a Single Responsibility Principle violation.
                Open

                    public function markSeen($updateCounters = true)
                Severity: Minor
                Found in src/models/Post.php by phpmd

                BooleanArgumentFlag

                Since: 1.4.0

                A boolean flag argument is a reliable indicator for a violation of the Single Responsibility Principle (SRP). You can fix this problem by extracting the logic in the boolean flag into its own class or method.

                Example

                class Foo {
                    public function bar($flag = true) {
                    }
                }

                Source https://phpmd.org/rules/cleancode.html#booleanargumentflag

                The method podiumThumb has a boolean flag argument $up, which is a certain sign of a Single Responsibility Principle violation.
                Open

                    public function podiumThumb($up = true, $count = 0)
                Severity: Minor
                Found in src/models/Post.php by phpmd

                BooleanArgumentFlag

                Since: 1.4.0

                A boolean flag argument is a reliable indicator for a violation of the Single Responsibility Principle (SRP). You can fix this problem by extracting the logic in the boolean flag into its own class or method.

                Example

                class Foo {
                    public function bar($flag = true) {
                    }
                }

                Source https://phpmd.org/rules/cleancode.html#booleanargumentflag

                Avoid assigning values to variables in if clauses and the like (line '98', column '22').
                Open

                    protected function addNewWords($allWords)
                    {
                        try {
                            $newWords = $allWords;
                            $query = (new Query())->from(Vocabulary::tableName())->where(['word' => $allWords]);
                Severity: Minor
                Found in src/models/Post.php by phpmd

                IfStatementAssignment

                Since: 2.7.0

                Assignments in if clauses and the like are considered a code smell. Assignments in PHP return the right operand as their result. In many cases, this is an expected behavior, but can lead to many difficult to spot bugs, especially when the right operand could result in zero, null or an empty string and the like.

                Example

                class Foo
                {
                    public function bar($flag)
                    {
                        if ($foo = 'bar') { // possible typo
                            // ...
                        }
                        if ($baz = 0) { // always false
                            // ...
                        }
                    }
                }

                Source http://phpmd.org/rules/cleancode.html#ifstatementassignment

                Avoid unused local variables such as '$wholeThread'.
                Open

                            $wholeThread = false;
                Severity: Minor
                Found in src/models/Post.php by phpmd

                UnusedLocalVariable

                Since: 0.2

                Detects when a local variable is declared and/or assigned, but not used.

                Example

                class Foo {
                    public function doSomething()
                    {
                        $i = 5; // Unused
                    }
                }

                Source https://phpmd.org/rules/unusedcode.html#unusedlocalvariable

                There are no issues that match your filters.

                Category
                Status