original_string: private function get_sort_order(?int $sortmethod, bool $includefavourites = true) : string {
  
          $alias = $this->get_table_alias();
          // TODO consider user favourites...
          $keyfield = $this->get_keyfield($sortmethod);
          $direction = $this->get_sort_direction($sortmethod);
  
          $favouritesort = '';
          if ($includefavourites) {
              $favalias = $this->get_favourite_alias();
              // Since we're joining on the favourite table any discussion that isn't favourited will have
              // null in the favourite columns. Nulls behave differently in the sorting for different databases.
              // We can ensure consistency between databases by explicitly deprioritising any null favourite field
              // using a case statement.
              $favouritesort = ", CASE WHEN {$favalias}.id IS NULL THEN 0 ELSE 1 END DESC";
              // After the null favourite fields are deprioritised and appear below the favourited discussions we
              // need to order the favourited discussions by id so that the most recently favourited discussions
              // appear at the top of the list.
              $favouritesort .= ", {$favalias}.itemtype DESC";
          }
  
          return "{$alias}.pinned DESC $favouritesort , {$keyfield} {$direction}";
      }
code: private function get_sort_order(?int $sortmethod, bool $includefavourites = true) : string {
  
          $alias = $this->get_table_alias();
          // TODO consider user favourites...
          $keyfield = $this->get_keyfield($sortmethod);
          $direction = $this->get_sort_direction($sortmethod);
  
          $favouritesort = '';
          if ($includefavourites) {
              $favalias = $this->get_favourite_alias();
              // Since we're joining on the favourite table any discussion that isn't favourited will have
              // null in the favourite columns. Nulls behave differently in the sorting for different databases.
              // We can ensure consistency between databases by explicitly deprioritising any null favourite field
              // using a case statement.
              $favouritesort = ", CASE WHEN {$favalias}.id IS NULL THEN 0 ELSE 1 END DESC";
              // After the null favourite fields are deprioritised and appear below the favourited discussions we
              // need to order the favourited discussions by id so that the most recently favourited discussions
              // appear at the top of the list.
              $favouritesort .= ", {$favalias}.itemtype DESC";
          }
  
          return "{$alias}.pinned DESC $favouritesort , {$keyfield} {$direction}";
      }
code_tokens: private function get_sort_order ( ? int $ sortmethod , bool $ includefavourites = true ) : string { $ alias = $ this -> get_table_alias ( ) ; // TODO consider user favourites... $ keyfield = $ this -> get_keyfield ( $ sortmethod ) ; $ direction = $ this -> get_sort_direction ( $ sortmethod ) ; $ favouritesort = '' ; if ( $ includefavourites ) { $ favalias = $ this -> get_favourite_alias ( ) ; // Since we're joining on the favourite table any discussion that isn't favourited will have // null in the favourite columns. Nulls behave differently in the sorting for different databases. // We can ensure consistency between databases by explicitly deprioritising any null favourite field // using a case statement. $ favouritesort = ", CASE WHEN {$favalias}.id IS NULL THEN 0 ELSE 1 END DESC" ; // After the null favourite fields are deprioritised and appear below the favourited discussions we // need to order the favourited discussions by id so that the most recently favourited discussions // appear at the top of the list. $ favouritesort .= ", {$favalias}.itemtype DESC" ; } return "{$alias}.pinned DESC $favouritesort , {$keyfield} {$direction}" ; }
docstring: Get the sort order SQL for a sort method.
  
  @param int|null  $sortmethod
  @param bool|null $includefavourites
  @return string
docstring_tokens: Get the sort order SQL for a sort method .