original_string: public function get_next_scheduled_time() {
          global $CFG;
  
          $validminutes = $this->eval_cron_field($this->minute, self::MINUTEMIN, self::MINUTEMAX);
          $validhours = $this->eval_cron_field($this->hour, self::HOURMIN, self::HOURMAX);
  
          // We need to change to the server timezone before using php date() functions.
          \core_date::set_default_server_timezone();
  
          $daysinmonth = date("t");
          $validdays = $this->eval_cron_field($this->day, 1, $daysinmonth);
          $validdaysofweek = $this->eval_cron_field($this->dayofweek, 0, 7);
          $validmonths = $this->eval_cron_field($this->month, 1, 12);
          $nextvalidyear = date('Y');
  
          $currentminute = date("i") + 1;
          $currenthour = date("H");
          $currentday = date("j");
          $currentmonth = date("n");
          $currentdayofweek = date("w");
  
          $nextvalidminute = $this->next_in_list($currentminute, $validminutes);
          if ($nextvalidminute < $currentminute) {
              $currenthour += 1;
          }
          $nextvalidhour = $this->next_in_list($currenthour, $validhours);
          if ($nextvalidhour < $currenthour) {
              $currentdayofweek += 1;
              $currentday += 1;
          }
          $nextvaliddayofmonth = $this->next_in_list($currentday, $validdays);
          $nextvaliddayofweek = $this->next_in_list($currentdayofweek, $validdaysofweek);
          $daysincrementbymonth = $nextvaliddayofmonth - $currentday;
          if ($nextvaliddayofmonth < $currentday) {
              $daysincrementbymonth += $daysinmonth;
          }
  
          $daysincrementbyweek = $nextvaliddayofweek - $currentdayofweek;
          if ($nextvaliddayofweek < $currentdayofweek) {
              $daysincrementbyweek += 7;
          }
  
          // Special handling for dayofmonth vs dayofweek:
          // if either field is * - use the other field
          // otherwise - choose the soonest (see man 5 cron).
          if ($this->dayofweek == '*') {
              $daysincrement = $daysincrementbymonth;
          } else if ($this->day == '*') {
              $daysincrement = $daysincrementbyweek;
          } else {
              // Take the smaller increment of days by month or week.
              $daysincrement = $daysincrementbymonth;
              if ($daysincrementbyweek < $daysincrementbymonth) {
                  $daysincrement = $daysincrementbyweek;
              }
          }
  
          $nextvaliddayofmonth = $currentday + $daysincrement;
          if ($nextvaliddayofmonth > $daysinmonth) {
              $currentmonth += 1;
              $nextvaliddayofmonth -= $daysinmonth;
          }
  
          $nextvalidmonth = $this->next_in_list($currentmonth, $validmonths);
          if ($nextvalidmonth < $currentmonth) {
              $nextvalidyear += 1;
          }
  
          // Work out the next valid time.
          $nexttime = mktime($nextvalidhour,
                             $nextvalidminute,
                             0,
                             $nextvalidmonth,
                             $nextvaliddayofmonth,
                             $nextvalidyear);
  
          return $nexttime;
      }
code: public function get_next_scheduled_time() {
          global $CFG;
  
          $validminutes = $this->eval_cron_field($this->minute, self::MINUTEMIN, self::MINUTEMAX);
          $validhours = $this->eval_cron_field($this->hour, self::HOURMIN, self::HOURMAX);
  
          // We need to change to the server timezone before using php date() functions.
          \core_date::set_default_server_timezone();
  
          $daysinmonth = date("t");
          $validdays = $this->eval_cron_field($this->day, 1, $daysinmonth);
          $validdaysofweek = $this->eval_cron_field($this->dayofweek, 0, 7);
          $validmonths = $this->eval_cron_field($this->month, 1, 12);
          $nextvalidyear = date('Y');
  
          $currentminute = date("i") + 1;
          $currenthour = date("H");
          $currentday = date("j");
          $currentmonth = date("n");
          $currentdayofweek = date("w");
  
          $nextvalidminute = $this->next_in_list($currentminute, $validminutes);
          if ($nextvalidminute < $currentminute) {
              $currenthour += 1;
          }
          $nextvalidhour = $this->next_in_list($currenthour, $validhours);
          if ($nextvalidhour < $currenthour) {
              $currentdayofweek += 1;
              $currentday += 1;
          }
          $nextvaliddayofmonth = $this->next_in_list($currentday, $validdays);
          $nextvaliddayofweek = $this->next_in_list($currentdayofweek, $validdaysofweek);
          $daysincrementbymonth = $nextvaliddayofmonth - $currentday;
          if ($nextvaliddayofmonth < $currentday) {
              $daysincrementbymonth += $daysinmonth;
          }
  
          $daysincrementbyweek = $nextvaliddayofweek - $currentdayofweek;
          if ($nextvaliddayofweek < $currentdayofweek) {
              $daysincrementbyweek += 7;
          }
  
          // Special handling for dayofmonth vs dayofweek:
          // if either field is * - use the other field
          // otherwise - choose the soonest (see man 5 cron).
          if ($this->dayofweek == '*') {
              $daysincrement = $daysincrementbymonth;
          } else if ($this->day == '*') {
              $daysincrement = $daysincrementbyweek;
          } else {
              // Take the smaller increment of days by month or week.
              $daysincrement = $daysincrementbymonth;
              if ($daysincrementbyweek < $daysincrementbymonth) {
                  $daysincrement = $daysincrementbyweek;
              }
          }
  
          $nextvaliddayofmonth = $currentday + $daysincrement;
          if ($nextvaliddayofmonth > $daysinmonth) {
              $currentmonth += 1;
              $nextvaliddayofmonth -= $daysinmonth;
          }
  
          $nextvalidmonth = $this->next_in_list($currentmonth, $validmonths);
          if ($nextvalidmonth < $currentmonth) {
              $nextvalidyear += 1;
          }
  
          // Work out the next valid time.
          $nexttime = mktime($nextvalidhour,
                             $nextvalidminute,
                             0,
                             $nextvalidmonth,
                             $nextvaliddayofmonth,
                             $nextvalidyear);
  
          return $nexttime;
      }
code_tokens: public function get_next_scheduled_time ( ) { global $ CFG ; $ validminutes = $ this -> eval_cron_field ( $ this -> minute , self :: MINUTEMIN , self :: MINUTEMAX ) ; $ validhours = $ this -> eval_cron_field ( $ this -> hour , self :: HOURMIN , self :: HOURMAX ) ; // We need to change to the server timezone before using php date() functions. \ core_date :: set_default_server_timezone ( ) ; $ daysinmonth = date ( "t" ) ; $ validdays = $ this -> eval_cron_field ( $ this -> day , 1 , $ daysinmonth ) ; $ validdaysofweek = $ this -> eval_cron_field ( $ this -> dayofweek , 0 , 7 ) ; $ validmonths = $ this -> eval_cron_field ( $ this -> month , 1 , 12 ) ; $ nextvalidyear = date ( 'Y' ) ; $ currentminute = date ( "i" ) + 1 ; $ currenthour = date ( "H" ) ; $ currentday = date ( "j" ) ; $ currentmonth = date ( "n" ) ; $ currentdayofweek = date ( "w" ) ; $ nextvalidminute = $ this -> next_in_list ( $ currentminute , $ validminutes ) ; if ( $ nextvalidminute < $ currentminute ) { $ currenthour += 1 ; } $ nextvalidhour = $ this -> next_in_list ( $ currenthour , $ validhours ) ; if ( $ nextvalidhour < $ currenthour ) { $ currentdayofweek += 1 ; $ currentday += 1 ; } $ nextvaliddayofmonth = $ this -> next_in_list ( $ currentday , $ validdays ) ; $ nextvaliddayofweek = $ this -> next_in_list ( $ currentdayofweek , $ validdaysofweek ) ; $ daysincrementbymonth = $ nextvaliddayofmonth - $ currentday ; if ( $ nextvaliddayofmonth < $ currentday ) { $ daysincrementbymonth += $ daysinmonth ; } $ daysincrementbyweek = $ nextvaliddayofweek - $ currentdayofweek ; if ( $ nextvaliddayofweek < $ currentdayofweek ) { $ daysincrementbyweek += 7 ; } // Special handling for dayofmonth vs dayofweek: // if either field is * - use the other field // otherwise - choose the soonest (see man 5 cron). if ( $ this -> dayofweek == '*' ) { $ daysincrement = $ daysincrementbymonth ; } else if ( $ this -> day == '*' ) { $ daysincrement = $ daysincrementbyweek ; } else { // Take the smaller increment of days by month or week. $ daysincrement = $ daysincrementbymonth ; if ( $ daysincrementbyweek < $ daysincrementbymonth ) { $ daysincrement = $ daysincrementbyweek ; } } $ nextvaliddayofmonth = $ currentday + $ daysincrement ; if ( $ nextvaliddayofmonth > $ daysinmonth ) { $ currentmonth += 1 ; $ nextvaliddayofmonth -= $ daysinmonth ; } $ nextvalidmonth = $ this -> next_in_list ( $ currentmonth , $ validmonths ) ; if ( $ nextvalidmonth < $ currentmonth ) { $ nextvalidyear += 1 ; } // Work out the next valid time. $ nexttime = mktime ( $ nextvalidhour , $ nextvalidminute , 0 , $ nextvalidmonth , $ nextvaliddayofmonth , $ nextvalidyear ) ; return $ nexttime ; }
docstring: Calculate when this task should next be run based on the schedule.
  @return int $nextruntime.
docstring_tokens: Calculate when this task should next be run based on the schedule .