original_string: private function auto_update_max() {
          global $CFG, $DB;
          if ($this->aggregation != GRADE_AGGREGATE_SUM) {
              // not needed at all
              return;
          }
  
          // Find grade items of immediate children (category or grade items) and force site settings.
          $this->load_grade_item();
          $depends_on = $this->grade_item->depends_on();
  
          // Check to see if the gradebook is frozen. This allows grades to not be altered at all until a user verifies that they
          // wish to update the grades.
          $gradebookcalculationfreeze = 'gradebook_calculations_freeze_' . $this->courseid;
          $oldextracreditcalculation = isset($CFG->$gradebookcalculationfreeze) && ($CFG->$gradebookcalculationfreeze <= 20150627);
          // Only run if the gradebook isn't frozen.
          if (!$oldextracreditcalculation) {
              // Don't automatically update the max for calculated items.
              if ($this->grade_item->is_calculated()) {
                  return;
              }
          }
  
          $items = false;
          if (!empty($depends_on)) {
              list($usql, $params) = $DB->get_in_or_equal($depends_on);
              $sql = "SELECT *
                        FROM {grade_items}
                       WHERE id $usql";
              $items = $DB->get_records_sql($sql, $params);
          }
  
          if (!$items) {
  
              if ($this->grade_item->grademax != 0 or $this->grade_item->gradetype != GRADE_TYPE_VALUE) {
                  $this->grade_item->grademax  = 0;
                  $this->grade_item->grademin  = 0;
                  $this->grade_item->gradetype = GRADE_TYPE_VALUE;
                  $this->grade_item->update('aggregation');
              }
              return;
          }
  
          //find max grade possible
          $maxes = array();
  
          foreach ($items as $item) {
  
              if ($item->aggregationcoef > 0) {
                  // extra credit from this activity - does not affect total
                  continue;
              } else if ($item->aggregationcoef2 <= 0) {
                  // Items with a weight of 0 do not affect the total.
                  continue;
              }
  
              if ($item->gradetype == GRADE_TYPE_VALUE) {
                  $maxes[$item->id] = $item->grademax;
  
              } else if ($item->gradetype == GRADE_TYPE_SCALE) {
                  $maxes[$item->id] = $item->grademax; // 0 = nograde, 1 = first scale item, 2 = second scale item
              }
          }
  
          if ($this->can_apply_limit_rules()) {
              // Apply droplow and keephigh.
              $this->apply_limit_rules($maxes, $items);
          }
          $max = array_sum($maxes);
  
          // update db if anything changed
          if ($this->grade_item->grademax != $max or $this->grade_item->grademin != 0 or $this->grade_item->gradetype != GRADE_TYPE_VALUE) {
              $this->grade_item->grademax  = $max;
              $this->grade_item->grademin  = 0;
              $this->grade_item->gradetype = GRADE_TYPE_VALUE;
              $this->grade_item->update('aggregation');
          }
      }
code: private function auto_update_max() {
          global $CFG, $DB;
          if ($this->aggregation != GRADE_AGGREGATE_SUM) {
              // not needed at all
              return;
          }
  
          // Find grade items of immediate children (category or grade items) and force site settings.
          $this->load_grade_item();
          $depends_on = $this->grade_item->depends_on();
  
          // Check to see if the gradebook is frozen. This allows grades to not be altered at all until a user verifies that they
          // wish to update the grades.
          $gradebookcalculationfreeze = 'gradebook_calculations_freeze_' . $this->courseid;
          $oldextracreditcalculation = isset($CFG->$gradebookcalculationfreeze) && ($CFG->$gradebookcalculationfreeze <= 20150627);
          // Only run if the gradebook isn't frozen.
          if (!$oldextracreditcalculation) {
              // Don't automatically update the max for calculated items.
              if ($this->grade_item->is_calculated()) {
                  return;
              }
          }
  
          $items = false;
          if (!empty($depends_on)) {
              list($usql, $params) = $DB->get_in_or_equal($depends_on);
              $sql = "SELECT *
                        FROM {grade_items}
                       WHERE id $usql";
              $items = $DB->get_records_sql($sql, $params);
          }
  
          if (!$items) {
  
              if ($this->grade_item->grademax != 0 or $this->grade_item->gradetype != GRADE_TYPE_VALUE) {
                  $this->grade_item->grademax  = 0;
                  $this->grade_item->grademin  = 0;
                  $this->grade_item->gradetype = GRADE_TYPE_VALUE;
                  $this->grade_item->update('aggregation');
              }
              return;
          }
  
          //find max grade possible
          $maxes = array();
  
          foreach ($items as $item) {
  
              if ($item->aggregationcoef > 0) {
                  // extra credit from this activity - does not affect total
                  continue;
              } else if ($item->aggregationcoef2 <= 0) {
                  // Items with a weight of 0 do not affect the total.
                  continue;
              }
  
              if ($item->gradetype == GRADE_TYPE_VALUE) {
                  $maxes[$item->id] = $item->grademax;
  
              } else if ($item->gradetype == GRADE_TYPE_SCALE) {
                  $maxes[$item->id] = $item->grademax; // 0 = nograde, 1 = first scale item, 2 = second scale item
              }
          }
  
          if ($this->can_apply_limit_rules()) {
              // Apply droplow and keephigh.
              $this->apply_limit_rules($maxes, $items);
          }
          $max = array_sum($maxes);
  
          // update db if anything changed
          if ($this->grade_item->grademax != $max or $this->grade_item->grademin != 0 or $this->grade_item->gradetype != GRADE_TYPE_VALUE) {
              $this->grade_item->grademax  = $max;
              $this->grade_item->grademin  = 0;
              $this->grade_item->gradetype = GRADE_TYPE_VALUE;
              $this->grade_item->update('aggregation');
          }
      }
code_tokens: private function auto_update_max ( ) { global $ CFG , $ DB ; if ( $ this -> aggregation != GRADE_AGGREGATE_SUM ) { // not needed at all return ; } // Find grade items of immediate children (category or grade items) and force site settings. $ this -> load_grade_item ( ) ; $ depends_on = $ this -> grade_item -> depends_on ( ) ; // Check to see if the gradebook is frozen. This allows grades to not be altered at all until a user verifies that they // wish to update the grades. $ gradebookcalculationfreeze = 'gradebook_calculations_freeze_' . $ this -> courseid ; $ oldextracreditcalculation = isset ( $ CFG -> $ gradebookcalculationfreeze ) && ( $ CFG -> $ gradebookcalculationfreeze <= 20150627 ) ; // Only run if the gradebook isn't frozen. if ( ! $ oldextracreditcalculation ) { // Don't automatically update the max for calculated items. if ( $ this -> grade_item -> is_calculated ( ) ) { return ; } } $ items = false ; if ( ! empty ( $ depends_on ) ) { list ( $ usql , $ params ) = $ DB -> get_in_or_equal ( $ depends_on ) ; $ sql = "SELECT *
                        FROM {grade_items}
                       WHERE id $usql" ; $ items = $ DB -> get_records_sql ( $ sql , $ params ) ; } if ( ! $ items ) { if ( $ this -> grade_item -> grademax != 0 or $ this -> grade_item -> gradetype != GRADE_TYPE_VALUE ) { $ this -> grade_item -> grademax = 0 ; $ this -> grade_item -> grademin = 0 ; $ this -> grade_item -> gradetype = GRADE_TYPE_VALUE ; $ this -> grade_item -> update ( 'aggregation' ) ; } return ; } //find max grade possible $ maxes = array ( ) ; foreach ( $ items as $ item ) { if ( $ item -> aggregationcoef > 0 ) { // extra credit from this activity - does not affect total continue ; } else if ( $ item -> aggregationcoef2 <= 0 ) { // Items with a weight of 0 do not affect the total. continue ; } if ( $ item -> gradetype == GRADE_TYPE_VALUE ) { $ maxes [ $ item -> id ] = $ item -> grademax ; } else if ( $ item -> gradetype == GRADE_TYPE_SCALE ) { $ maxes [ $ item -> id ] = $ item -> grademax ; // 0 = nograde, 1 = first scale item, 2 = second scale item } } if ( $ this -> can_apply_limit_rules ( ) ) { // Apply droplow and keephigh. $ this -> apply_limit_rules ( $ maxes , $ items ) ; } $ max = array_sum ( $ maxes ) ; // update db if anything changed if ( $ this -> grade_item -> grademax != $ max or $ this -> grade_item -> grademin != 0 or $ this -> grade_item -> gradetype != GRADE_TYPE_VALUE ) { $ this -> grade_item -> grademax = $ max ; $ this -> grade_item -> grademin = 0 ; $ this -> grade_item -> gradetype = GRADE_TYPE_VALUE ; $ this -> grade_item -> update ( 'aggregation' ) ; } }
docstring: Some aggregation types may need to update their max grade.
  
  This must be executed after updating the weights as it relies on them.
  
  @return void
docstring_tokens: Some aggregation types may need to update their max grade .