function activity_cron in Activity 6.2
Same name and namespace in other branches
- 5.4 activity.module \activity_cron()
- 6 activity.module \activity_cron()
Implementation of hook_cron().
File
- ./
activity.module, line 838 - Primarily Drupal hooks and global API functions to manipulate activity.
Code
function activity_cron() {
// default is 2 weeks 0
$expire = variable_get('activity_expire', 0);
$min = variable_get('activity_min_count', 0);
if (!empty($expire) && empty($min)) {
db_query("DELETE m, at, aa, a FROM {activity} a\n LEFT JOIN {activity_access} aa ON aa.aid = a.aid\n INNER JOIN {activity_targets} at ON at.aid = a.aid\n INNER JOIN {activity_messages} m ON m.amid = at.amid\n WHERE a.created < %d", $_SERVER['REQUEST_TIME'] - $expire);
}
elseif (!empty($expire)) {
// SELECT members with the min number of activies and they have an min(created) older then the expire
$uid_sql = "SELECT uid, min(created) as min, count(aid) as count FROM {activity} GROUP BY uid HAVING min < %d AND count > %d";
$uid_result = db_query($uid_sql, $_SERVER['REQUEST_TIME'] - $expire, $min);
$uids = array();
while ($uid_obj = db_fetch_object($uid_result)) {
$uids[] = $uid_obj->uid;
}
if (!empty($uids)) {
// DELETE where uid IN () ^^ AND a.created < expire
$args = array_merge($uids, array(
$_SERVER['REQUEST_TIME'] - $expire,
));
db_query("DELETE m, at, aa, a FROM {activity} a\n LEFT JOIN {activity_access} aa ON aa.aid = a.aid\n INNER JOIN {activity_targets} at ON at.aid = a.aid\n INNER JOIN {activity_messages} m ON m.amid = at.amid\n WHERE a.uid IN(" . db_placeholders($uids) . ")\n AND a.created < %d", $args);
}
}
}