function getUsers($y, $m, $d, $i) { $u = User::cacheGet("sitemap:user:{$y}:{$m}:{$d}:{$i}"); if ($u === false) { $user = new User(); $begindt = sprintf('%04d-%02d-%02d 00:00:00', $y, $m, $d); // XXX: estimates 1d == 24h, which screws up days // with leap seconds (1d == 24h + 1s). Thankfully they're // few and far between. $theend = strtotime($begindt) + 24 * 60 * 60; $enddt = common_sql_date($theend); $user->selectAdd(); $user->selectAdd('nickname'); $user->whereAdd("created >= '{$begindt}'"); $user->whereAdd("created < '{$enddt}'"); $user->orderBy('created'); $offset = ($i - 1) * SitemapPlugin::USERS_PER_MAP; $limit = SitemapPlugin::USERS_PER_MAP; $user->limit($offset, $limit); $user->find(); while ($user->fetch()) { $u[] = $user->nickname; } $c = Cache::instance(); if (!empty($c)) { $c->set(Cache::key("sitemap:user:{$y}:{$m}:{$d}:{$i}"), $u, Cache::COMPRESSED, time() > $theend ? time() + 90 * 24 * 60 * 60 : time() + 5 * 60); } } return $u; }
static function getFirstDate() { $u = new User(); $u->selectAdd(); $u->selectAdd('date(min(created)) as first_date'); if ($u->find(true)) { return $u->first_date; } else { // Is this right? return self::dateIntToStr(time()); } }