static function fromNoticeInbox($user_id)
 {
     $ids = array();
     $ni = new Notice_inbox();
     $ni->user_id = $user_id;
     $ni->selectAdd();
     $ni->selectAdd('notice_id');
     $ni->orderBy('notice_id DESC');
     $ni->limit(0, self::MAX_NOTICES);
     if ($ni->find()) {
         while ($ni->fetch()) {
             $ids[] = $ni->notice_id;
         }
     }
     $ni->free();
     unset($ni);
     $inbox = new Inbox();
     $inbox->user_id = $user_id;
     $inbox->pack($ids);
     $inbox->fake = true;
     return $inbox;
 }
Esempio n. 2
0
    } else {
        $id = null;
    }
}
$user = new User();
if (!empty($id)) {
    $user->whereAdd('id > ' . $id);
}
$cnt = $user->find();
while ($user->fetch()) {
    $inbox_entry = new Notice_inbox();
    $inbox_entry->user_id = $user->id;
    $inbox_entry->orderBy('created DESC');
    $inbox_entry->limit(1000, 1);
    $id = null;
    if ($inbox_entry->find(true)) {
        $id = $inbox_entry->notice_id;
    }
    $inbox_entry->free();
    unset($inbox_entry);
    if (is_null($id)) {
        continue;
    }
    $start = microtime(true);
    $old_inbox = new Notice_inbox();
    $cnt = $old_inbox->query('DELETE from notice_inbox WHERE user_id = ' . $user->id . ' AND notice_id < ' . $id);
    $old_inbox->free();
    unset($old_inbox);
    print "Deleted {$cnt} notices for {$user->nickname} ({$user->id}).\n";
    $finish = microtime(true);
    $delay = 3.0 * ($finish - $start);