<?php
if (!defined('sugarEntry') || !sugarEntry) {
    die('Not A Valid Entry Point');
}


require_once('modules/SecurityGroups/SecurityGroup.php');

require_once('include/formbase.php');
global $current_user, $db;


$module = $_REQUEST['return_module'];
$sugarbean = null;

$securitygroup = $_REQUEST['massassign_group'];
if (!isset($module) || empty($securitygroup) || !isset($securitygroup)) {
    return;
}

if (!empty($GLOBALS['beanList'][$module])) {
    $class = $GLOBALS['beanList'][$module];
    if (!empty($GLOBALS['beanFiles'][$class])) {
        require_once($GLOBALS['beanFiles'][$class]);
        $sugarbean = new $class();
    }
}

$groupFocus = BeanFactory::newBean('SecurityGroups');
$groupFocus->retrieve($securitygroup);





if (!empty($_REQUEST['uid'])) {
    $_POST['mass'] = explode(',', $_REQUEST['uid']);
} // coming from listview
elseif (isset($_REQUEST['entire'])) {
    if (isset($_SESSION['export_where']) && !empty($_SESSION['export_where'])) { // bug 4679
        $where = $_SESSION['export_where'];
        $whereArr = explode(" ", trim($where));
        if ($whereArr[0] === trim('where')) {
            $whereClean = array_shift($whereArr);
        }
        $where = implode(" ", $whereArr);
    } else {
        $where = '';
    }
    $export_where = !empty($_SESSION['export_where']) ? $_SESSION['export_where'] : '';
    if (empty($_REQUEST['export_where_md5']) || $_REQUEST['export_where_md5'] !== md5($export_where)) {
        $err = translate('LBL_ERROR_EXPORT_WHERE_CHANGED', 'SecurityGroups');
        sugar_die($err);
    }
    if (empty($order_by)) {
        $order_by = '';
    }
    $query = $sugarbean->create_export_query($order_by, $where);
    $result = $db->query($query, true);

    $new_arr = array();
    while ($val = $db->fetchByAssoc($result, -1, false)) {
        array_push($new_arr, $val['id']);
    }
    $_POST['mass'] = $new_arr;
}

if (isset($_POST['mass']) && is_array($_POST['mass'])) {
    $rel_name = "";
    foreach ($_POST['mass'] as $id) {
        if (isset($_POST['Delete'])) {
            $sugarbean->retrieve($id);

            //if($sugarbean->ACLAccess('Delete')){

            $GLOBALS['log']->debug("MassAssign - deleting relationship: $groupFocus->name");
            if ($sugarbean->module_dir == 'Users') {
                $rel_name = "SecurityGroups";
            } else {
                if (empty($rel_name) || !isset($rel_name)) {
                    $rel_name = $groupFocus->getLinkName($sugarbean->module_dir, "SecurityGroups");
                }
            }
            $sugarbean->load_relationship($rel_name);
            $sugarbean->$rel_name->delete($sugarbean->id, $groupFocus->id);

        //As of 6.3.0 many-to-many requires a link field set in both modules...so lets bypass that
                //$groupFocus->removeGroupFromRecord($sugarbean->module_dir, $id, $groupFocus->id);
            //}
        } else {
            $sugarbean->retrieve($id);

            //if($sugarbean->ACLAccess('Save')){

            $GLOBALS['log']->debug("MassAssign - adding relationship: $groupFocus->name");
            if ($sugarbean->module_dir == 'Users') {
                $rel_name = "SecurityGroups";
            } else {
                if (empty($rel_name) || !isset($rel_name)) {
                    $rel_name = $groupFocus->getLinkName($sugarbean->module_dir, "SecurityGroups");
                }
            }
            $GLOBALS['log']->debug("MassAssign - adding relationship relationship name: ".$rel_name);
            $sugarbean->load_relationship($rel_name);
            $sugarbean->$rel_name->add($groupFocus->id);


            //As of 6.3.0 many-to-many requires a link field set in both modules...so lets bypass that
                /**
                //check existing
                $query = "SELECT * FROM securitygroups_records WHERE securitygroup_id='$groupFocus->id' AND record_id='$id' AND module='$sugarbean->module_dir' AND deleted=0";
                $db = DBManagerFactory::getInstance();
                $result = $db->query($query);
                $row = $db->fetchByAssoc($result);
                if (empty($row))
                {
                    $groupFocus->addGroupToRecord($sugarbean->module_dir, $id, $groupFocus->id);
                }
                */


            //}
        }
    }
}


header("Location: index.php?action={$_POST['return_action']}&module={$_POST['return_module']}");