mirror of
https://github.com/salesagility/SuiteCRM.git
synced 2024-12-22 12:28:31 +00:00
328 lines
14 KiB
PHP
Executable File
328 lines
14 KiB
PHP
Executable File
<?php
|
|
if (!defined('sugarEntry') || !sugarEntry) {
|
|
die('Not A Valid Entry Point');
|
|
}
|
|
|
|
|
|
#[\AllowDynamicProperties]
|
|
class AssignGroups
|
|
{
|
|
public function popup_select(&$bean, $event, $arguments)
|
|
{
|
|
global $sugar_config;
|
|
|
|
//only process if action is Save (meaning a user has triggered this event and not the portal or automated process)
|
|
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'Save'
|
|
&& isset($sugar_config['securitysuite_popup_select']) && $sugar_config['securitysuite_popup_select'] == true
|
|
&& empty($bean->fetched_row['id']) && $bean->module_dir != "Users" && $bean->module_dir != "SugarFeed") {
|
|
//Upload an attachment to an Email Template and save. If user with multi groups - popup select option
|
|
//it will redirect to notes instead of EmailTemplate and relationship will fail...check below to avoid
|
|
if (!empty($_REQUEST['module']) && $_REQUEST['module'] != $bean->module_dir) {
|
|
return;
|
|
}
|
|
|
|
if (!empty($_REQUEST['securitygroup_list'])) {
|
|
require_once('modules/SecurityGroups/SecurityGroup.php');
|
|
$security_modules = SecurityGroup::getSecurityModules();
|
|
//sanity check
|
|
if (array_key_exists($bean->module_dir, $security_modules)) {
|
|
//add each group in securitygroup_list to new record
|
|
$rel_name = SecurityGroup::getLinkName($bean->module_dir, "SecurityGroups");
|
|
|
|
$bean->load_relationship($rel_name);
|
|
foreach ($_REQUEST['securitygroup_list'] as $group_id) {
|
|
$bean->$rel_name->add($group_id);
|
|
}
|
|
}
|
|
} elseif (!empty($_REQUEST['dup_checked'])) {
|
|
//well...ShowDuplicates doesn't pass through request vars unless they are defined in the module vardefs
|
|
//so we are screwed here...
|
|
global $current_language;
|
|
$ss_mod_strings = return_module_language($current_language, 'SecurityGroups');
|
|
unset($_SESSION['securitysuite_error']); //to be safe
|
|
$_SESSION['securitysuite_error'] = $ss_mod_strings['LBL_ERROR_DUPLICATE'];
|
|
}
|
|
} elseif (isset($sugar_config['securitysuite_user_popup']) && $sugar_config['securitysuite_user_popup'] == true
|
|
&& empty($bean->fetched_row['id']) && $bean->module_dir == "Users"
|
|
&& isset($_REQUEST['action']) && $_REQUEST['action'] != 'SaveSignature') { //Bug: 589
|
|
|
|
//$_REQUEST['return_module'] = $bean->module_dir;
|
|
//$_REQUEST['return_action'] = "DetailView";
|
|
//$_REQUEST['return_id'] = $bean->id;
|
|
|
|
//$_SESSION['securitygroups_popup_'.$bean->module_dir] = $bean->id;
|
|
|
|
if (!isset($_SESSION['securitygroups_popup'])) {
|
|
$_SESSION['securitygroups_popup'] = array();
|
|
}
|
|
$_SESSION['securitygroups_popup'][] = array(
|
|
'module' => $bean->module_dir,
|
|
'id' => $bean->id
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
public function popup_onload($event, $arguments)
|
|
{
|
|
if (!empty($_REQUEST['to_pdf']) || !empty($_REQUEST['sugar_body_only'])) {
|
|
return;
|
|
}
|
|
|
|
/** //test user popup
|
|
* //always have this loaded
|
|
* echo '<script type="text/javascript" src="modules/SecurityGroups/javascript/popup_relate.js"></script>';
|
|
*/
|
|
global $sugar_config;
|
|
|
|
$action = null;
|
|
if (isset($_REQUEST['action'])) {
|
|
$action = $_REQUEST['action'];
|
|
} else {
|
|
LoggerManager::getLogger()->warn('Not defined action in request');
|
|
}
|
|
|
|
$module = null;
|
|
if (isset($_REQUEST['module'])) {
|
|
$module = $_REQUEST['module'];
|
|
} else {
|
|
LoggerManager::getLogger()->warn('Not defined module in request');
|
|
}
|
|
|
|
|
|
if (isset($action) && ($action == "Save" || $action == "SetTimezone")) {
|
|
return;
|
|
}
|
|
|
|
if ((
|
|
//(isset($sugar_config['securitysuite_popup_select']) && $sugar_config['securitysuite_popup_select'] == true)
|
|
//||
|
|
($module == "Users" && isset($sugar_config['securitysuite_user_popup']) && $sugar_config['securitysuite_user_popup'] == true)
|
|
)
|
|
|
|
//&& isset($_SESSION['securitygroups_popup_'.$module]) && !empty($_SESSION['securitygroups_popup_'.$module])
|
|
&& !empty($_SESSION['securitygroups_popup'])
|
|
) {
|
|
foreach ($_SESSION['securitygroups_popup'] as $popup_index => $popup) {
|
|
$record_id = $popup['id'];
|
|
$module = $popup['module'];
|
|
unset($_SESSION['securitygroups_popup'][$popup_index]);
|
|
|
|
require_once('modules/SecurityGroups/SecurityGroup.php');
|
|
if ($module == 'Users') {
|
|
$rel_name = "SecurityGroups";
|
|
} else {
|
|
$rel_name = SecurityGroup::getLinkName($module, "SecurityGroups");
|
|
}
|
|
|
|
//this only works if on the detail view of the record actually saved...
|
|
//so ajaxui breaks this as it stays on the parent
|
|
$auto_popup = <<<EOQ
|
|
<script type="text/javascript" language="javascript">
|
|
open_popup("SecurityGroups",600,400,"",true,true,{"call_back_function":"securitysuite_set_return_and_save_background","form_name":"DetailView","field_to_name_array":{"id":"subpanel_id"},"passthru_data":{"module":"$module","record":"$record_id","child_field":"$rel_name","return_url":"","link_field_name":"$rel_name","module_name":"$rel_name","refresh_page":"1"}},"MultiSelect",true);
|
|
</script>
|
|
EOQ;
|
|
|
|
echo $auto_popup;
|
|
}
|
|
unset($_SESSION['securitygroups_popup']);
|
|
}
|
|
}
|
|
|
|
public function mass_assign($event, $arguments)
|
|
{
|
|
$action = null;
|
|
if (isset($_REQUEST['action'])) {
|
|
$action = $_REQUEST['action'];
|
|
} else {
|
|
LoggerManager::getLogger()->warn('Not defined action in request');
|
|
}
|
|
|
|
$module = null;
|
|
if (isset($_REQUEST['module'])) {
|
|
$module = $_REQUEST['module'];
|
|
} else {
|
|
LoggerManager::getLogger()->warn('Not defined module in request');
|
|
}
|
|
|
|
|
|
$no_mass_assign_list = array("Emails" => "Emails", "ACLRoles" => "ACLRoles"); //,"Users"=>"Users");
|
|
//check if security suite enabled
|
|
$action = strtolower($action);
|
|
if (isset($module) && ($action == "list" || $action == "index" || $action == "listview")
|
|
&& (!isset($_REQUEST['search_form_only']) || $_REQUEST['search_form_only'] != true)
|
|
&& !array_key_exists($module, $no_mass_assign_list)
|
|
) {
|
|
global $current_user;
|
|
if (is_admin($current_user) || ACLAction::getUserAccessLevel($current_user->id, "SecurityGroups", 'access') == ACL_ALLOW_ENABLED) {
|
|
require_once('modules/SecurityGroups/SecurityGroup.php');
|
|
$groupFocus = BeanFactory::newBean('SecurityGroups');
|
|
$security_modules = SecurityGroup::getSecurityModules();
|
|
//if(in_array($module,$security_modules)) {
|
|
if (array_key_exists($module, $security_modules)) {
|
|
global $app_strings;
|
|
|
|
global $current_language;
|
|
$current_module_strings = return_module_language($current_language, 'SecurityGroups');
|
|
|
|
$form_header = get_form_header($current_module_strings['LBL_MASS_ASSIGN'], '', false);
|
|
|
|
$groups = $groupFocus->get_list("name", "", 0, -99, -99);
|
|
$options = array("" => "");
|
|
foreach ($groups['list'] as $group) {
|
|
$options[$group->id] = $group->name;
|
|
}
|
|
$group_options = get_select_options_with_id($options, "");
|
|
|
|
$export_where = !empty($_SESSION['export_where']) ? $_SESSION['export_where'] : '';
|
|
$export_where_md5 = md5($export_where);
|
|
|
|
$mass_assign = <<<EOQ
|
|
|
|
<script type="text/javascript" language="javascript">
|
|
function confirm_massassign(del, start_string, end_string) {
|
|
if (del == 1) {
|
|
return confirm(start_string + sugarListView.get_num_selected_string() + end_string);
|
|
} else {
|
|
return confirm(start_string + sugarListView.get_num_selected_string() + end_string);
|
|
}
|
|
}
|
|
|
|
function send_massassign(mode, no_record_txt, start_string, end_string, del) {
|
|
|
|
if (!sugarListView.confirm_action(del, start_string, end_string))
|
|
return false;
|
|
|
|
if (document.MassAssign_SecurityGroups.massassign_group.selectedIndex == 0) {
|
|
alert("{$current_module_strings['LBL_SELECT_GROUP_ERROR']}");
|
|
return false;
|
|
}
|
|
|
|
if (document.MassUpdate.select_entire_list &&
|
|
document.MassUpdate.select_entire_list.value == 1)
|
|
mode = 'entire';
|
|
else if (document.MassUpdate.massall.checked == true)
|
|
mode = 'page';
|
|
else
|
|
mode = 'selected';
|
|
|
|
var ar = new Array();
|
|
if (del == 1) {
|
|
var deleteInput = document.createElement('input');
|
|
deleteInput.name = 'Delete';
|
|
deleteInput.type = 'hidden';
|
|
deleteInput.value = true;
|
|
document.MassAssign_SecurityGroups.appendChild(deleteInput);
|
|
}
|
|
|
|
switch (mode) {
|
|
case 'page':
|
|
document.MassAssign_SecurityGroups.uid.value = '';
|
|
for (wp = 0; wp < document.MassUpdate.elements.length; wp++) {
|
|
if (typeof document.MassUpdate.elements[wp].name != 'undefined'
|
|
&& document.MassUpdate.elements[wp].name == 'mass[]' && document.MassUpdate.elements[wp].checked) {
|
|
ar.push(document.MassUpdate.elements[wp].value);
|
|
}
|
|
}
|
|
document.MassAssign_SecurityGroups.uid.value = ar.join(',');
|
|
if (document.MassAssign_SecurityGroups.uid.value == '') {
|
|
alert(no_record_txt);
|
|
return false;
|
|
}
|
|
break;
|
|
case 'selected':
|
|
for (wp = 0; wp < document.MassUpdate.elements.length; wp++) {
|
|
if (typeof document.MassUpdate.elements[wp].name != 'undefined'
|
|
&& document.MassUpdate.elements[wp].name == 'mass[]'
|
|
&& document.MassUpdate.elements[wp].checked) {
|
|
ar.push(document.MassUpdate.elements[wp].value);
|
|
}
|
|
}
|
|
if (document.MassUpdate.uid.value != '') {
|
|
document.MassUpdate.uid.value += ',';
|
|
document.MassUpdate.uid.value += ar.join(',');
|
|
document.MassAssign_SecurityGroups.uid.value = document.MassUpdate.uid.value;
|
|
if (document.MassAssign_SecurityGroups.uid.value == '') {
|
|
alert(no_record_txt);
|
|
return false;
|
|
}
|
|
} else {
|
|
document.MassAssign_SecurityGroups.uid.value += ar.join(',');
|
|
|
|
if (document.MassAssign_SecurityGroups.uid.value == '') {
|
|
alert(no_record_txt);
|
|
return false;
|
|
}
|
|
}
|
|
break;
|
|
case 'entire':
|
|
var entireInput = document.createElement('input');
|
|
entireInput.name = 'entire';
|
|
entireInput.type = 'hidden';
|
|
entireInput.value = 'index';
|
|
document.MassAssign_SecurityGroups.appendChild(entireInput);
|
|
break;
|
|
}
|
|
|
|
document.MassAssign_SecurityGroups.submit();
|
|
return false;
|
|
}
|
|
|
|
</script>
|
|
|
|
<form action='index.php' method='post' name='MassAssign_SecurityGroups' id='MassAssign_SecurityGroups'>
|
|
<input type='hidden' name='action' value='MassAssign' />
|
|
<input type='hidden' name='module' value='SecurityGroups' />
|
|
<input type='hidden' name='return_action' value='{$action}' />
|
|
<input type='hidden' name='return_module' value='{$module}' />
|
|
<input type="hidden" name="export_where_md5" value="{$export_where_md5}">
|
|
<textarea style='display: none' name='uid'></textarea>
|
|
|
|
|
|
<div id='massassign_form'>$form_header
|
|
<table cellpadding='0' cellspacing='0' border='0' width='100%'>
|
|
<tr>
|
|
<td style='padding-bottom: 2px;' class='listViewButtons'>
|
|
<input type='submit' name='Assign' value='{$current_module_strings['LBL_ASSIGN']}' onclick="return send_massassign('selected', '{$app_strings['LBL_LISTVIEW_NO_SELECTED']}','{$current_module_strings['LBL_ASSIGN_CONFIRM']}','{$current_module_strings['LBL_CONFIRM_END']}',0);" class='button'>
|
|
<input type='submit' name='Remove' value='{$current_module_strings['LBL_REMOVE']}' onclick="return send_massassign('selected', '{$app_strings['LBL_LISTVIEW_NO_SELECTED']}','{$current_module_strings['LBL_REMOVE_CONFIRM']}','{$current_module_strings['LBL_CONFIRM_END']}',1);" class='button'>
|
|
|
|
|
|
</td></tr></table>
|
|
<table cellpadding='0' cellspacing='0' border='0' width='100%' class='tabForm' id='mass_update_table'>
|
|
<tr><td><table width='100%' border='0' cellspacing='0' cellpadding='0'>
|
|
<tr>
|
|
<td>{$current_module_strings['LBL_GROUP']}</td>
|
|
<td><select name='massassign_group' id="massassign_group" tabindex='1'>{$group_options}</select></td>
|
|
</tr>
|
|
</table></td></tr></table></div>
|
|
</form>
|
|
EOQ;
|
|
|
|
|
|
echo $mass_assign;
|
|
}
|
|
}
|
|
}
|
|
|
|
//if after a save...
|
|
if (!empty($_SESSION['securitysuite_error'])) {
|
|
$lbl_securitysuite_error = $_SESSION['securitysuite_error'];
|
|
unset($_SESSION['securitysuite_error']);
|
|
echo <<<EOQ
|
|
<script>
|
|
|
|
|
|
var oNewP = document.createElement("div");
|
|
oNewP.className = 'error';
|
|
|
|
var oText = document.createTextNode("{$lbl_securitysuite_error}");
|
|
oNewP.appendChild(oText);
|
|
|
|
var beforeMe = document.getElementsByTagName("div")[0];
|
|
document.body.insertBefore(oNewP, beforeMe);
|
|
</script>
|
|
EOQ;
|
|
}
|
|
}
|
|
}
|