Exemple #1
0
 private function getIsOldWinIkalogAsAtTheTime($t)
 {
     if (!preg_match('/^([0-9a-f]{7,})_/', $this->version, $match)) {
         // なんかおかしい
         return false;
     }
     $ikalog = IkalogVersion::findOneByRevision($match[1]);
     if (!$ikalog) {
         // 知らない WinIkaLog だった
         return false;
     }
     if (empty($ikalog->winikalogVersions)) {
         // なぜか WinIkaLog のリリースされてないリビジョンっぽい(たぶん新しすぎて認識できてない)
         return $this->getIsOldCliIkalogAsAtTheTimeImpl($ikalog, $t);
     }
     $thisWinIkaLog = $ikalog->winikalogVersions[0];
     if (static::$latestWinIkaLog === null) {
         static::$latestWinIkaLog = WinikalogVersion::find()->andWhere(['<=', '{{winikalog_version}}.[[build_at]]', date('Y-m-d H:i:sP', $t)])->orderBy('{{winikalog_version}}.[[build_at]] DESC')->limit(1)->one();
     }
     if (static::$latestWinIkaLog->id === $thisWinIkaLog->id) {
         // これより新しいバージョンは存在しない
         return false;
     }
     $diff = $t - strtotime($thisWinIkaLog->build_at);
     return $diff >= 21 * 86400;
 }