diff --git a/app/Repositories/AttendanceRepository.php b/app/Repositories/AttendanceRepository.php index a61e7bf6..9aa10ec1 100644 --- a/app/Repositories/AttendanceRepository.php +++ b/app/Repositories/AttendanceRepository.php @@ -326,7 +326,13 @@ class AttendanceRepository extends BaseRepository 'date' => $date, 'is_retroactive' => 1, ]; - return AttendanceLog::query()->create($insert); + $attendanceLog = AttendanceLog::query()->create($insert); + //Increment total days and update days. + $attendance->update([ + 'total_days' => NexusDB::raw('total_days + 1'), + 'days' => $this->getContinuousDays($attendance, Carbon::today()), + ]); + return $attendanceLog; }); } } diff --git a/database/migrations/2022_04_18_030257_handle_peers_peer_id_unique.php b/database/migrations/2022_04_18_030257_handle_peers_peer_id_unique.php index 39cbf08c..b022de84 100644 --- a/database/migrations/2022_04_18_030257_handle_peers_peer_id_unique.php +++ b/database/migrations/2022_04_18_030257_handle_peers_peer_id_unique.php @@ -29,6 +29,7 @@ return new class extends Migration Schema::table($tableName, function (Blueprint $table) { $table->unique(['torrent', 'peer_id', 'ip']); + $table->index('peer_id'); }); } diff --git a/database/migrations/2022_04_19_010929_fix_attendance_retroactive_total_days.php b/database/migrations/2022_04_19_010929_fix_attendance_retroactive_total_days.php new file mode 100644 index 00000000..6cf690a9 --- /dev/null +++ b/database/migrations/2022_04_19_010929_fix_attendance_retroactive_total_days.php @@ -0,0 +1,29 @@ +get_value('user_'.$CURUSER["id"].'_active_seed_count'); if ($activeseed == ""){ - $activeseed = get_row_count("peers","WHERE userid=" . sqlesc($CURUSER["id"]) . " AND seeder='yes'"); + $activeseed = count_peer(sprintf("userid = %s and seeder = 'yes'", $CURUSER['id'])); $Cache->cache_value('user_'.$CURUSER["id"].'_active_seed_count', $activeseed, 60); } $activeleech = $Cache->get_value('user_'.$CURUSER["id"].'_active_leech_count'); if ($activeleech == ""){ - $activeleech = get_row_count("peers","WHERE userid=" . sqlesc($CURUSER["id"]) . " AND seeder='no'"); + $activeleech = count_peer(sprintf("userid = %s and seeder = 'no'", $CURUSER['id'])); $Cache->cache_value('user_'.$CURUSER["id"].'_active_leech_count', $activeleech, 60); } $unread = $Cache->get_value('user_'.$CURUSER["id"].'_unread_message_count'); diff --git a/include/globalfunctions.php b/include/globalfunctions.php index 7fc94ac7..befde0a0 100644 --- a/include/globalfunctions.php +++ b/include/globalfunctions.php @@ -704,3 +704,22 @@ function isIPV6 ($ip) { return filter_var($ip,FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); } + +function count_peer($whereStr) +{ + if (empty($whereStr)) { + throw new \InvalidArgumentException("require whereStr"); + } + if (IN_NEXUS) { + $sql = "select count(distinct(peer_id)) as counts from peers where $whereStr"; + $res = sql_query($sql); + $count = mysql_fetch_assoc($res); + return $count['counts']; + } else { + $res = \Illuminate\Support\Facades\DB::table('peers') + ->whereRaw($whereStr) + ->selectRaw("count(distinct(peer_id)) as counts") + ->first(); + return $res->counts; + } +} diff --git a/public/getusertorrentlistajax.php b/public/getusertorrentlistajax.php index ba9a7813..6f4423fb 100644 --- a/public/getusertorrentlistajax.php +++ b/public/getusertorrentlistajax.php @@ -195,7 +195,7 @@ switch ($type) // Current Seeding case 'seeding': { - $res = sql_query("SELECT torrent,added,snatched.uploaded,snatched.downloaded,torrents.name as torrentname, torrents.small_descr, torrents.sp_state, categories.name as catname,size,torrents.hr,image,category,seeders,leechers FROM peers LEFT JOIN torrents ON peers.torrent = torrents.id LEFT JOIN categories ON torrents.category = categories.id LEFT JOIN snatched ON torrents.id = snatched.torrentid WHERE peers.userid=$id AND snatched.userid = $id AND peers.seeder='yes' ORDER BY torrents.added DESC") or sqlerr(); + $res = sql_query("SELECT torrent,added,snatched.uploaded,snatched.downloaded,torrents.name as torrentname, torrents.small_descr, torrents.sp_state, categories.name as catname,size,torrents.hr,image,category,seeders,leechers FROM peers LEFT JOIN torrents ON peers.torrent = torrents.id LEFT JOIN categories ON torrents.category = categories.id LEFT JOIN snatched ON torrents.id = snatched.torrentid WHERE peers.userid=$id AND snatched.userid = $id AND peers.seeder='yes' group by peers.peer_id ORDER BY torrents.added DESC") or sqlerr(); $count = mysql_num_rows($res); if ($count > 0){ list($torrentlist, $total_size) = maketable ( $res, 'seeding' ); @@ -206,7 +206,7 @@ switch ($type) // Current Leeching case 'leeching': { - $res = sql_query("SELECT torrent,snatched.uploaded,snatched.downloaded,torrents.name as torrentname, torrents.small_descr, torrents.sp_state, categories.name as catname,size,torrents.hr,image,category,seeders,leechers FROM peers LEFT JOIN torrents ON peers.torrent = torrents.id LEFT JOIN categories ON torrents.category = categories.id LEFT JOIN snatched ON torrents.id = snatched.torrentid WHERE peers.userid=$id AND snatched.userid = $id AND peers.seeder='no' ORDER BY torrents.added DESC") or sqlerr(); + $res = sql_query("SELECT torrent,snatched.uploaded,snatched.downloaded,torrents.name as torrentname, torrents.small_descr, torrents.sp_state, categories.name as catname,size,torrents.hr,image,category,seeders,leechers FROM peers LEFT JOIN torrents ON peers.torrent = torrents.id LEFT JOIN categories ON torrents.category = categories.id LEFT JOIN snatched ON torrents.id = snatched.torrentid WHERE peers.userid=$id AND snatched.userid = $id AND peers.seeder='no' group by peers.peer_id ORDER BY torrents.added DESC") or sqlerr(); $count = mysql_num_rows($res); if ($count > 0){ list($torrentlist, $total_size) = maketable ( $res, 'leeching' );