/** * Returns users whose last login is prior from $ceiling * * @param int|string $ceiling last login date * @param bool $active_only if true returns only active users. Otherwise returns all users. * @return ResultSet */ static function list_zombies($ceiling, $active_only = true) { $ceiling = is_numeric($ceiling) ? (int) $ceiling : strtotime($ceiling); $ceiling = date('Y-m-d H:i:s', $ceiling); $user_table = Database::get_main_table(TABLE_MAIN_USER); $login_table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN); $sql = 'SELECT user.user_id, user.firstname, user.lastname, user.username, user.auth_source, user.email, user.status, user.registration_date, user.active, access.login_date'; global $_configuration; if ($_configuration['multiple_access_urls']) { $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $current_url_id = api_get_current_access_url_id(); $sql .= " FROM {$user_table} as user, {$login_table} as access, {$access_url_rel_user_table} as url\n WHERE\n access.login_date = (SELECT MAX(a.login_date)\n FROM {$login_table} as a\n WHERE a.login_user_id = user.user_id\n ) AND\n access.login_date <= '{$ceiling}' AND\n user.user_id = access.login_user_id AND\n url.login_user_id = user.user_id AND url.access_url_id={$current_url_id}"; } else { $sql .= " FROM {$user_table} as user, {$login_table} as access\n WHERE\n access.login_date = (SELECT MAX(a.login_date)\n FROM {$login_table} as a\n WHERE a.login_user_id = user.user_id\n ) AND\n access.login_date <= '{$ceiling}' AND\n user.user_id = access.login_user_id"; } if ($active_only) { $sql .= ' AND user.active = 1'; } return ResultSet::create($sql); }
/** * Returns true if the gradebook is active and visible in a course, false * otherwise. * * @param int $c_id Course integer id, defaults to the current course * @return boolean */ public static function is_active($c_id = null) { $name = 'gradebook'; $table = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT); $sql = "SELECT * from {$table} WHERE variable='course_hide_tools' AND subkey='{$name}'"; $setting = ResultSet::create($sql)->first(); $setting = $setting ? $setting : array(); $inactive = isset($setting['selected_value']) && $setting['selected_value'] == 'true'; if ($inactive) { return false; } $c_id = $c_id ? intval($c_id) : api_get_course_int_id(); $table = Database::get_course_table(TABLE_TOOL_LIST); $sql = "SELECT * from {$table} WHERE c_id = {$c_id} and name='{$name}'"; $item = ResultSet::create($sql)->first(); if (empty($item)) { return true; } return $item['visibility'] == '1'; }
/** * * @return ResultSet */ static function list_inactive_courses($ceiling, $visibility_level = COURSE_VISIBILITY_REGISTERED) { $ceiling = is_numeric($ceiling) ? (int) $ceiling : strtotime($ceiling); $ceiling = date('Y-m-d H:i:s', $ceiling); $visibility_level = $visibility_level ? $visibility_level : '0'; $table_course = Database::get_main_table(TABLE_MAIN_COURSE); $table_category = Database::get_main_table(TABLE_MAIN_CATEGORY); $sql = "SELECT\n c.*,\n cat.name AS category\n FROM\n {$table_course} AS c\n LEFT JOIN\n {$table_category} AS cat\n ON\n c.category_code = cat.code\n WHERE\n c.visibility >= {$visibility_level} AND\n c.last_visit<='{$ceiling}'\n "; return ResultSet::create($sql); }