<?php
/**
 *  Copyright (C) 2022, 2024  Double Bastion LLC
 *
 *  This file is part of Roundpin, which is licensed under the
 *  GNU Affero General Public License Version 3.0. The license terms
 *  are detailed in the "LICENSE.txt" file located in the root directory.
 */

session_start();

if (isset($_POST['s_ajax_call']) && ($_POST['s_ajax_call'] == $_SESSION['validate_s_access'])) {

    define('ACCESSCONST', TRUE);

    require('db-connect.php');

    $username = $_POST['username'];
    $grouptoremove = $_POST['grouptoremove'];
    $groupwithdelimiter = $grouptoremove . "|";
    $groupinsqlguery = "%" . $groupwithdelimiter . "%";

    // Get the id and role of the user who performs the update, from the 'app_users' table
    $queryprm = $mysqli->prepare("SELECT id, userrole, username FROM app_users WHERE username = ?");
    $queryprm->bind_param("s", $username);
    $queryprm->execute();
    $queryprmres = $queryprm->get_result()->fetch_assoc();
    $cruserid = $queryprmres["id"];
    $cruserrole = $queryprmres["userrole"];

    if ($cruserrole == 'admin' || $cruserrole == 'superadmin') {

        // Get the userid of the group from the 'groups' table
        $queryuid = $mysqli->prepare("SELECT id, userid, group_name FROM groups WHERE group_name = ?");
        $queryuid->bind_param("s", $grouptoremove);
        $queryuid->execute();
        $queryuidres = $queryuid->get_result()->fetch_assoc();
        $userid = $queryuidres["userid"];

        if ($cruserrole == 'superadmin' || $userid == $cruserid) {

            // Remove the given group from the 'groups' table
	    $removequery = $mysqli->prepare("DELETE FROM groups WHERE group_name = ?");
	    $removequery->bind_param("s", $grouptoremove);

	    if ($removequery->execute()) { $messagetosendgroups = 'success'; } else { $messagetosendgroups = 'failure'; }
	    $removequery->close();

            $dateModified = date("Y-m-d H:i:s");

            // Remove the given group from the 'user_groups' column of the 'app_users' table, in all the rows where it is present
            $updatequery = $mysqli->prepare("UPDATE app_users SET user_groups = REPLACE(user_groups, ?, ''), date_modified = ? WHERE user_groups like ?");
	    $updatequery->bind_param("sss", $groupwithdelimiter, $dateModified, $groupinsqlguery);
	    if ($updatequery->execute()) { $message1 = 'success'; } else { $message1 = 'failure'; }

            $updatequerysec = $mysqli->prepare("UPDATE app_users SET user_groups = REPLACE(user_groups, '|', NULL) WHERE user_groups like '|'");
	    if ($updatequerysec->execute()) { $message2 = 'success'; } else { $message2 = 'failure'; }

            // Remove the given group from the 'groups' column of the 'contacts' table, in all the rows where it is present
            $updatequery2 = $mysqli->prepare("UPDATE contacts SET groups = REPLACE(groups, ?, ''), date_modified = ? WHERE groups like ?");
	    $updatequery2->bind_param("sss", $groupwithdelimiter, $dateModified, $groupinsqlguery);
	    if ($updatequery2->execute()) { $message3 = 'success'; } else { $message3 = 'failure'; }

            $updatequery2sec = $mysqli->prepare("UPDATE contacts SET groups = REPLACE(groups, '|', NULL) WHERE groups like '|'");
	    if ($updatequery2sec->execute()) { $message4 = 'success'; } else { $message4 = 'failure'; }

            // Remove the given group from the 'limit_to_groups' column of the 'conferences_text' table, in all the rows where it is present
            $updatequery3 = $mysqli->prepare("UPDATE conferences_text SET limit_to_groups = REPLACE(limit_to_groups, ?, '') WHERE limit_to_groups like ?");
	    $updatequery3->bind_param("ss", $groupwithdelimiter, $groupinsqlguery);
	    if ($updatequery3->execute()) { $message5 = 'success'; } else { $message5 = 'failure'; }

            $updatequery3sec = $mysqli->prepare("UPDATE conferences_text SET limit_to_groups = REPLACE(limit_to_groups, '|', NULL) WHERE limit_to_groups like '|'");
	    if ($updatequery3sec->execute()) { $message6 = 'success'; } else { $message6 = 'failure'; }

            // Remove the given group from the 'limit_to_groups' column of the 'conferences_audio' table, in all the rows where it is present
            $updatequery4 = $mysqli->prepare("UPDATE conferences_audio SET limit_to_groups = REPLACE(limit_to_groups, ?, '') WHERE limit_to_groups like ?");
	    $updatequery4->bind_param("ss", $groupwithdelimiter, $groupinsqlguery);
	    if ($updatequery4->execute()) { $message7 = 'success'; } else { $message7 = 'failure'; }

            $updatequery4sec = $mysqli->prepare("UPDATE conferences_audio SET limit_to_groups = REPLACE(limit_to_groups, '|', NULL) WHERE limit_to_groups like '|'");
	    if ($updatequery4sec->execute()) { $message8 = 'success'; } else { $message8 = 'failure'; }

            // Remove the given group from the 'limit_to_groups' column of the 'conferences_video' table, in all the rows where it is present
            $updatequery5 = $mysqli->prepare("UPDATE conferences_video SET limit_to_groups = REPLACE(limit_to_groups, ?, '') WHERE limit_to_groups like ?");
	    $updatequery5->bind_param("ss", $groupwithdelimiter, $groupinsqlguery);
	    if ($updatequery5->execute()) { $message9 = 'success'; } else { $message9 = 'failure'; }

            $updatequery5sec = $mysqli->prepare("UPDATE conferences_video SET limit_to_groups = REPLACE(limit_to_groups, '|', NULL) WHERE limit_to_groups like '|'");
	    if ($updatequery5sec->execute()) { $message10 = 'success'; } else { $message10 = 'failure'; }

            if (in_array('failure', [$message1, $message2, $message3, $message4, $message5, $message6, $message7, $message8, $message9, $message10], true)) {
                $messagetosend = 'Error while attempting to remove the group from some of the records.';
            } else { $messagetosend = "success"; }

        } else { $messagetosend = 'Admins can remove only the groups created by them.'; }

    } else { $messagetosend = 'Only Admins and Superadmins can remove groups.'; }

    $response = array('result' => $messagetosend);
    echo json_encode($response);

} else {
    header("Location: ../login.php");
}

?>
