GemsTracker/gemstracker-library

View on GitHub
classes/Gems/Snippets/Tracker/InsertSurveySnippet.php

Summary

Maintainability
F
3 days
Test Coverage
F
0%

File InsertSurveySnippet.php has 456 lines of code (exceeds 250 allowed). Consider refactoring.
Open

<?php

/**
 *
 * @package    Gems
Severity: Minor
Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 6 hrs to fix

    Function getRoundsListAndSetDefault has a Cognitive Complexity of 25 (exceeds 5 allowed). Consider refactoring.
    Open

        protected function getRoundsListAndSetDefault()
        {
            $model  = $this->getModel();
            $output = array();
            $select = $this->getRoundSelect();
    Severity: Minor
    Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 3 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 InsertSurveySnippet has an overall complexity of 84 which is very high. The configured complexity threshold is 50.
    Open

    class InsertSurveySnippet extends \Gems_Snippets_ModelFormSnippetAbstract
    {
        /**
         *
         * @var array The fields from formData to copy to the token when creating it

    Function loadSurvey has a Cognitive Complexity of 19 (exceeds 5 allowed). Consider refactoring.
    Open

        protected function loadSurvey()
        {
            if (! $this->surveyList) {
                $this->addMessageInvalid($this->_('Survey insertion impossible: no insertable survey exists!'));
            }
    Severity: Minor
    Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.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 getRoundsListAndSetDefault has 59 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        protected function getRoundsListAndSetDefault()
        {
            $model  = $this->getModel();
            $output = array();
            $select = $this->getRoundSelect();
    Severity: Major
    Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 2 hrs to fix

      Function saveData has a Cognitive Complexity of 16 (exceeds 5 allowed). Consider refactoring.
      Open

          protected function saveData()
          {
              $model = $this->getModel();
      
              $userId     = $this->currentUser->getUserId();
      Severity: Minor
      Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.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 getRoundSelect has 44 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          protected function getRoundSelect()
          {
              $select = $this->db->select();
      
              $select->from('gems__tokens', array('gto_round_description AS round_description'))
      Severity: Minor
      Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 1 hr to fix

        Function loadFormData has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring.
        Open

            protected function loadFormData()
            {
                if ($this->createData && (! $this->request->isPost())) {
                    $surveyId = $this->request->getParam(\Gems_Model::SURVEY_ID);
                    if ($surveyId) {
        Severity: Minor
        Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.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

        The class InsertSurveySnippet has 18 fields. Consider redesigning InsertSurveySnippet to keep the number of fields under 15.
        Open

        class InsertSurveySnippet extends \Gems_Snippets_ModelFormSnippetAbstract
        {
            /**
             *
             * @var array The fields from formData to copy to the token when creating it

        TooManyFields

        Since: 0.1

        Classes that have too many fields could be redesigned to have fewer fields, possibly through some nested object grouping of some of the information. For example, a class with city/state/zip fields could instead have one Address field.

        Example

        class Person {
           protected $one;
           private $two;
           private $three;
           [... many more fields ...]
        }

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

        Method saveData has 36 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            protected function saveData()
            {
                $model = $this->getModel();
        
                $userId     = $this->currentUser->getUserId();
        Severity: Minor
        Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 1 hr to fix

          Method loadFormData has 35 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              protected function loadFormData()
              {
                  if ($this->createData && (! $this->request->isPost())) {
                      $surveyId = $this->request->getParam(\Gems_Model::SURVEY_ID);
                      if ($surveyId) {
          Severity: Minor
          Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 1 hr to fix

            Method loadSurvey has 28 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                protected function loadSurvey()
                {
                    if (! $this->surveyList) {
                        $this->addMessageInvalid($this->_('Survey insertion impossible: no insertable survey exists!'));
                    }
            Severity: Minor
            Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 1 hr to fix

              Method loadTrackSettings has 28 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  protected function loadTrackSettings()
                  {
                      $respTracks = $this->respondentTracks;
                      
                      if (! isset($this->formData['gto_id_track'])) {
              Severity: Minor
              Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 1 hr to fix

                Method createModel has 28 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                    protected function createModel()
                    {
                        $model = $this->tracker->getTokenModel();
                
                        if ($model instanceof \Gems_Tracker_Model_StandardTokenModel) {
                Severity: Minor
                Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 1 hr to fix

                  Function loadTrackSettings has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                  Open

                      protected function loadTrackSettings()
                      {
                          $respTracks = $this->respondentTracks;
                          
                          if (! isset($this->formData['gto_id_track'])) {
                  Severity: Minor
                  Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 55 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

                  Function initTracks has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                  Open

                      protected function initTracks()
                      {
                          $this->respondentTracks = $this->tracker->getRespondentTracks(
                              $this->respondent->getId(), 
                              $this->respondent->getOrganizationId(), 
                  Severity: Minor
                  Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 35 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

                  Function getGroupIds has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                  Open

                      public function getGroupIds()
                      {
                          $groupIds = [];
                          if ($this->surveys) {
                              foreach ($this->surveys as $survey) {
                  Severity: Minor
                  Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 25 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

                  Function isAnySurveyTakenByRespondents has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                  Open

                      protected function isAnySurveyTakenByRespondents()
                      {
                          foreach ($this->surveys as $survey) {
                              if ($survey instanceof \Gems_Tracker_Survey) {
                                  if (! $survey->isTakenByStaff()) {
                  Severity: Minor
                  Found in classes/Gems/Snippets/Tracker/InsertSurveySnippet.php - About 25 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 getRoundsListAndSetDefault() has a Cyclomatic Complexity of 11. The configured cyclomatic complexity threshold is 10.
                  Open

                      protected function getRoundsListAndSetDefault()
                      {
                          $model  = $this->getModel();
                          $output = array();
                          $select = $this->getRoundSelect();

                  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 loadSurvey() has a Cyclomatic Complexity of 11. The configured cyclomatic complexity threshold is 10.
                  Open

                      protected function loadSurvey()
                      {
                          if (! $this->surveyList) {
                              $this->addMessageInvalid($this->_('Survey insertion impossible: no insertable survey exists!'));
                          }

                  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 InsertSurveySnippet has a coupling between objects value of 18. Consider to reduce the number of dependencies under 13.
                  Open

                  class InsertSurveySnippet extends \Gems_Snippets_ModelFormSnippetAbstract
                  {
                      /**
                       *
                       * @var array The fields from formData to copy to the token when creating it

                  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

                  Avoid unused parameters such as '$message_args'.
                  Open

                      public function addMessageInvalid($message_args)

                  UnusedFormalParameter

                  Since: 0.2

                  Avoid passing parameters to methods or constructors and then not using those parameters.

                  Example

                  class Foo
                  {
                      private function bar($howdy)
                      {
                          // $howdy is not used
                      }
                  }

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

                  Avoid excessively long variable names like $insertMultipleSurveys. Keep variable name length under 20.
                  Open

                      protected $insertMultipleSurveys = true;

                  LongVariable

                  Since: 0.2

                  Detects when a field, formal or local variable is declared with a long name.

                  Example

                  class Something {
                      protected $reallyLongIntName = -3; // VIOLATION - Field
                      public static function main( array $interestingArgumentsList[] ) { // VIOLATION - Formal
                          $otherReallyLongName = -5; // VIOLATION - Local
                          for ($interestingIntIndex = 0; // VIOLATION - For
                               $interestingIntIndex < 10;
                               $interestingIntIndex++ ) {
                          }
                      }
                  }

                  Source https://phpmd.org/rules/naming.html#longvariable

                  Avoid variables with short names like $db. Configured minimum length is 3.
                  Open

                      protected $db;

                  ShortVariable

                  Since: 0.2

                  Detects when a field, local, or parameter has a very short name.

                  Example

                  class Something {
                      private $q = 15; // VIOLATION - Field
                      public static function main( array $as ) { // VIOLATION - Formal
                          $r = 20 + $this->q; // VIOLATION - Local
                          for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                              $r += $this->q;
                          }
                      }
                  }

                  Source https://phpmd.org/rules/naming.html#shortvariable

                  The parameter $message_args is not named in camelCase.
                  Open

                      public function addMessageInvalid($message_args)
                      {
                          $this->saveButtonId = null;
                          $this->saveLabel    = null;
                  
                  

                  CamelCaseParameterName

                  Since: 0.2

                  It is considered best practice to use the camelCase notation to name parameters.

                  Example

                  class ClassName {
                      public function doSomething($user_name) {
                      }
                  }

                  Source

                  There are no issues that match your filters.

                  Category
                  Status