True, 'add_managers' => True, 'delete_managers' => True, 'edit_managers' => True, 'validate' => True ); var $functions; var $config; function uimanagers() { $this->functions = CreateObject('expressoAdmin1_2.functions'); $c = CreateObject('phpgwapi.config','expressoAdmin1_2'); $c->read_repository(); $this->config = $c->config_data; } function row_action($lang,$link,$manager_lid,$context) { return ''.lang($lang).' '; } function list_managers() { // Caso nao seja admin, sai. if ($GLOBALS['phpgw']->acl->check('group_access',1,'admin')) { $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/admin/index.php')); } // Imprime o NavBar unset($GLOBALS['phpgw_info']['flags']['nonavbar']); $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('List Managers'); $GLOBALS['phpgw']->common->phpgw_header(); // Seta o template $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); $p->set_file(array('managers' => 'managers.tpl')); $p->set_block('managers','body','body'); $p->set_block('managers','row','row'); $p->set_block('managers','row_empty','row_empty'); $var = Array( 'action' => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uimanagers.add_managers'), 'tr_color' => '#DDDDDD', 'th_bg' => $GLOBALS['phpgw_info']['theme']['th_bg'], 'lang_add_manager' => lang('Add Manager'), 'lang_manager_lid' => lang('Manager LID'), 'lang_manager_cn' => lang('Manager name'), 'lang_context' => lang('Context'), 'lang_edit' => lang('Edit'), 'lang_delete' => lang('Delete') ); // le do banco de dados para pegar os administradors. $query = 'SELECT manager_lid,context FROM phpgw_expressoadmin ORDER by manager_lid'; $GLOBALS['phpgw']->db->query($query); while($GLOBALS['phpgw']->db->next_record()) { $managers[] = $GLOBALS['phpgw']->db->row(); } $ldap_conn = $GLOBALS['phpgw']->common->ldapConnect(); $justthese = array("cn"); // Loop para listar os administradores if (count($managers)) { foreach($managers as $array_managers) { $filter="(&(phpgwAccountType=u)(uid=".$array_managers['manager_lid']."))"; $ldap_search = ldap_search($ldap_conn, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); $ldap_result = ldap_get_entries($ldap_conn, $ldap_search); $p->set_var('manager_lid', $array_managers[manager_lid]); $p->set_var('manager_cn', $ldap_result[0]['cn'][0] == '' ? 'NAO ENCONTRADO NO LDAP' : $ldap_result[0]['cn'][0]); $p->set_var('context', $array_managers[context]); $p->set_var('link_edit',$this->row_action('edit','edit_managers',$array_managers[manager_lid],$array_managers[context])); $p->set_var('link_delete',$this->row_action('delete','delete_managers',$array_managers[manager_lid],$array_managers[context])); $p->fp('rows','row',True); } } $p->set_var($var); $p->pfp('out','body'); ldap_close($ldap_conn); } function add_managers() { // Caso nao seja admin, sai. if ($GLOBALS['phpgw']->acl->check('group_access',1,'admin')) { $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/admin/index.php')); } // Seta o template $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); $p->set_file(array('managers' => 'managers_form.tpl')); $p->set_block('managers','form','form'); // Imprime o NavBar unset($GLOBALS['phpgw_info']['flags']['nonavbar']); $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Add Managers'); $GLOBALS['phpgw']->common->phpgw_header(); // Seta variaveis javas necessárias $webserver_url = $GLOBALS['phpgw_info']['server']['webserver_url']; $scripts_java = ''; $scripts_java .= ''; // App, create list of available apps $this->nextmatchs = createobject('phpgwapi.nextmatchs'); $apps = CreateObject('phpgwapi.applications',$_account_id); $db_perms = $apps->read_account_specific(); $availableApps = $GLOBALS['phpgw_info']['apps']; uasort($availableApps,create_function('$a,$b','return strcasecmp($a["title"],$b["title"]);')); // Loop para criar dinamicamente uma tabela com 3 colunas, cada coluna com um aplicativo e um check box. $applications_list = ''; $app_col1 = ''; $app_col2 = ''; $app_col3 = ''; $total_apps = count($availableApps); $i = 0; foreach($availableApps as $app => $data) { // 1 coluna if (($i +1) % 3 == 1) { if ($_POST['applications_list'][$app] == 1) $checked = 'checked'; else $checked = ''; $app_col1 = sprintf("%s\n", $data['title'],$app,$checked, $disabled); if ($i == ($total_apps-1)) $applications_list .= sprintf('%s',$this->nextmatchs->alternate_row_color(), $app_col1); } // 2 coluna if (($i +1) % 3 == 2) { if ($_POST['applications_list'][$app] == 1) $checked = 'checked'; else $checked = ''; $app_col2 = sprintf("%s\n", $data['title'],$app,$checked, $disabled); if ($i == ($total_apps-1)) $applications_list .= sprintf('%s%s',$this->nextmatchs->alternate_row_color(), $app_col1,$app_col2); } // 3 coluna if (($i +1) % 3 == 0) { if ($_POST['applications_list'][$app] == 1) $checked = 'checked'; else $checked = ''; $app_col3 = sprintf("%s\n", $data['title'],$app,$checked, $disabled); // Cria nova linha $applications_list .= sprintf('%s%s%s',$this->nextmatchs->alternate_row_color(), $app_col1, $app_col2, $app_col3); } $i++; } // Seta variaveis que estao no TPL $var = Array( 'scripts_java' => $scripts_java, 'action' => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uimanagers.validate'), 'display_samba_suport' => $this->config['expressoAdmin_samba_support'] == 'true' ? '' : 'display:none', 'type' => "add", 'color_bg1' => "#E8F0F0", 'color_bg2' => "#D3DCE3", 'color_font1' => "#DDDDDD", 'color_font2' => "#EEEEEE", 'lang_back' => lang('Back'), 'lang_add_save_manager' => lang('Add Manager'), 'lang_manager_lid' => lang('Manager LID'), 'lang_context' => lang('Context'), 'lang_type_access' => lang('Tipo de acessos'), 'lang_add_users' => lang('Add users'), 'lang_edit_users' => lang('Edit users'), 'lang_delete_users' => lang('Delete users'), 'lang_view_users' => lang('View user'), 'lang_rename_user' => lang('Rename users'), 'lang_add_groups' => lang('Add groups'), 'lang_edit_groups' => lang('Edit groups'), 'lang_delete_groups' => lang('Delete groups'), 'lang_change_user_password' => lang('Change users password'), 'lang_change_users_quote' => lang('Change users quote'), 'lang_set_user_default_password'=> lang('Set default users password'), 'lang_edit_sambausers_attributes'=> lang('Edit SAMBA users attributes'), 'lang_add_email_lists' => lang('Add email lists'), 'lang_edit_email_lists' => lang('Edit email lists'), 'lang_delete_email_lists' => lang('Delete email lists'), 'lang_view_email_lists' => lang('View email lists'), 'lang_create_orgs' => lang('Create Organizations'), 'lang_edit_orgs' => lang('Edit Organizations'), 'lang_delete_orgs' => lang('Delete Organizations'), 'lang_view_global_sessions' => lang('View sessions (global)'), 'lang_view_logs' => lang('View logs'), 'lang_create_computers' => lang('Create computers'), 'lang_edit_computers' => lang('Edit computers'), 'lang_delete_computers' => lang('Delete computers'), 'error_messages' => $_POST['error_messages'] == '' ? '' : '', 'manager_lid' => $_POST['manager_lid'], 'context' => $_POST['context'], 'add_users' => $_POST['add_users'] != '' ? 'checked' : '', 'edit_users' => $_POST['edit_users'] != '' ? 'checked' : '', 'delete_users' => $_POST['delete_users'] != '' ? 'checked' : '', 'add_groups' => $_POST['add_groups'] != '' ? 'checked' : '', 'edit_groups' => $_POST['edit_groups'] != '' ? 'checked' : '', 'delete_groups' => $_POST['delete_groups'] != '' ? 'checked' : '', 'change_users_password' => $_POST['change_users_password'] != '' ? 'checked' : '', 'change_users_quote' => $_POST['change_users_quote'] != '' ? 'checked' : '', 'set_user_default_password' => $_POST['set_user_default_password'] != '' ? 'checked' : '', 'add_maillists' => $_POST['add_maillists'] != '' ? 'checked' : '', 'edit_maillists' => $_POST['edit_maillists'] != '' ? 'checked' : '', 'delete_maillists' => $_POST['delete_maillists'] != '' ? 'checked' : '', 'create_sectors' => $_POST['create_sectors'] != '' ? 'checked' : '', 'edit_sectors' => $_POST['edit_sectors'] != '' ? 'checked' : '', 'delete_sectors' => $_POST['delete_sectors'] != '' ? 'checked' : '', 'manage_wf_sectors' => $_POST['manage_wf_sectors'] != '' ? 'checked' : '', 'view_global_sessions' => $_POST['view_global_sessions'] != '' ? 'checked' : '', 'view_logs' => $_POST['view_logs'] != '' ? 'checked' : '', 'app_list' => $applications_list ); $p->set_var($var); echo $p->fp('out','form'); } function delete_managers() { // Criar uma verificação e jogar a query para o BO. $context = $_GET['context']; $manager_lid = $_GET['manager_lid']; $query = "DELETE FROM phpgw_expressoadmin WHERE manager_lid = '".$manager_lid."' AND context = '" . $context ."'"; $GLOBALS['phpgw']->db->query($query); // Remove Gerente da tabela dos apps $query = "DELETE FROM phpgw_expressoadmin_apps WHERE " . "manager_lid = '".$manager_lid."' AND " . "context = '".$context."'"; $GLOBALS['phpgw']->db->query($query); // Remove Gerente na ACL do expressoadmin $accounts = CreateObject('phpgwapi.accounts'); $manager_id = $accounts->name2id($_GET['manager_lid']); $sql = "DELETE FROM phpgw_acl WHERE acl_appname = 'expressoadmin' AND acl_account = '" . $manager_id . "'"; $GLOBALS['phpgw']->db->query($sql); ExecMethod('expressoAdmin1_2.uimanagers.list_managers'); } function edit_managers() { // Caso nao seja admin, sai. if ($GLOBALS['phpgw']->acl->check('group_access',1,'admin')) { $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/admin/index.php')); } // Verifica se eh a primeira entrada, ai eu tenho o get, senao pego o post. if ($_GET['manager_lid'] != '') { $_POST['manager_lid'] = $_GET['manager_lid']; $_POST['context'] = $_GET['context']; $old_manager_lid = $_GET['manager_lid']; $old_context = $_GET['context']; $first_time = true; } elseif ($_POST['manager_lid'] != '') { $old_manager_lid = $_POST['old_manager_lid']; $old_context = $_POST['old_context']; $first_time = false; } if ($first_time) { //Pesquisa no Banco e pega os valores da ACL $query = "SELECT * FROM phpgw_expressoadmin WHERE manager_lid = '" . $_GET['manager_lid'] . "' AND context = '" . $_GET['context'] . "'"; $GLOBALS['phpgw']->db->query($query); while($GLOBALS['phpgw']->db->next_record()) { $manager[] = $GLOBALS['phpgw']->db->row(); } //Pesquisa no Banco e pega os valores dos apps. $query = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $_GET['manager_lid'] . "' AND context = '" . $_GET['context'] . "'"; $GLOBALS['phpgw']->db->query($query); $i=0; $manager[0]['apps'] = array(); while($GLOBALS['phpgw']->db->next_record()) { $tmp[$i] = $GLOBALS['phpgw']->db->row(); $_POST['applications_list'][$tmp[$i]['app']] = 1; $manager[0]['apps'][$tmp[$i]['app']] = 1; $i++; } //Cria vetor da ACL $acl = $this->functions->make_array_acl($manager[0]['acl']); $_POST['add_users'] = $acl['add_users']; $_POST['edit_users'] = $acl['edit_users']; $_POST['delete_users'] = $acl['delete_users']; $_POST['rename_users'] = $acl['rename_users']; $_POST['add_groups'] = $acl['add_groups']; $_POST['edit_groups'] = $acl['edit_groups']; $_POST['delete_groups'] = $acl['delete_groups']; $_POST['change_users_password'] = $acl['change_users_password']; $_POST['change_users_quote'] = $acl['change_users_quote']; $_POST['set_user_default_password'] = $acl['set_user_default_password']; $_POST['edit_sambausers_attributes'] = $acl['edit_sambausers_attributes']; $_POST['add_maillists'] = $acl['add_maillists']; $_POST['edit_maillists'] = $acl['edit_maillists']; $_POST['delete_maillists'] = $acl['delete_maillists']; $_POST['create_sectors'] = $acl['create_sectors']; $_POST['edit_sectors'] = $acl['edit_sectors']; $_POST['delete_sectors'] = $acl['delete_sectors']; $_POST['create_computers'] = $acl['create_computers']; $_POST['edit_computers'] = $acl['edit_computers']; $_POST['delete_computers'] = $acl['delete_computers']; $_POST['view_global_sessions'] = $acl['view_global_sessions']; $_POST['view_logs'] = $acl['view_logs']; $_POST['manage_wf_sectors'] = $acl['manage_wf_sectors']; } // Seta o template $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); //$accounts = CreateObject('phpgwapi.accounts'); $p->set_file(array('managers' => 'managers_form.tpl')); $p->set_block('managers','form','form'); // Imprime o NavBar unset($GLOBALS['phpgw_info']['flags']['nonavbar']); $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Edit Managers'); $GLOBALS['phpgw']->common->phpgw_header(); // Seta variaveis javas necessárias $webserver_url = $GLOBALS['phpgw_info']['server']['webserver_url']; $scripts_java = ''; $scripts_java .= ''; // App, create list of available apps $this->nextmatchs = createobject('phpgwapi.nextmatchs'); $apps = CreateObject('phpgwapi.applications',$_account_id); $db_perms = $apps->read_account_specific(); $availableApps = $GLOBALS['phpgw_info']['apps']; uasort($availableApps,create_function('$a,$b','return strcasecmp($a["title"],$b["title"]);')); // Loop para criar dinamicamente uma tabela com 3 colunas, cada coluna com um aplicativo e um check box. $applications_list = ''; $app_col1 = ''; $app_col2 = ''; $app_col3 = ''; $total_apps = count($availableApps); $i = 0; foreach($availableApps as $app => $data) { // 1 coluna if (($i +1) % 3 == 1) { if ($_POST['applications_list'][$app] == 1) $checked = 'checked'; else $checked = ''; $app_col1 = sprintf("%s\n", $data['title'],$app,$checked, $disabled); if ($i == ($total_apps-1)) $applications_list .= sprintf('%s',$this->nextmatchs->alternate_row_color(), $app_col1); } // 2 coluna if (($i +1) % 3 == 2) { if ($_POST['applications_list'][$app] == 1) $checked = 'checked'; else $checked = ''; $app_col2 = sprintf("%s\n", $data['title'],$app,$checked, $disabled); if ($i == ($total_apps-1)) $applications_list .= sprintf('%s%s',$this->nextmatchs->alternate_row_color(), $app_col1,$app_col2); } // 3 coluna if (($i +1) % 3 == 0) { if ($_POST['applications_list'][$app] == 1) $checked = 'checked'; else $checked = ''; $app_col3 = sprintf("%s\n", $data['title'],$app,$checked, $disabled); // Cria nova linha $applications_list .= sprintf('%s%s%s',$this->nextmatchs->alternate_row_color(), $app_col1, $app_col2, $app_col3); } $i++; } $var = Array( 'scripts_java' => $scripts_java, 'action' => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uimanagers.validate'), 'display_samba_suport' => $this->config['expressoAdmin_samba_support'] == 'true' ? '' : 'display:none', 'color_bg1' => "#E8F0F0", 'color_bg2' => "#D3DCE3", 'color_font1' => "#DDDDDD", 'color_font2' => "#EEEEEE", 'type' => "edit", 'lang_back' => lang('Back'), 'lang_add_save_manager' => lang('Save'), 'lang_manager_lid' => lang('Manager LID'), 'lang_context' => lang('Contexto'), 'lang_type_access' => lang('Tipo de acessos'), 'lang_add_users' => lang('Add users'), 'lang_edit_users' => lang('Edit users'), 'lang_delete_users' => lang('Delete users'), 'lang_view_users' => lang('View users'), 'lang_rename_user' => lang('Rename users'), 'lang_add_groups' => lang('Add groups'), 'lang_edit_groups' => lang('Edit groups'), 'lang_delete_groups' => lang('Delete groups'), 'lang_change_user_password' => lang('Change users password'), 'lang_change_users_quote' => lang('Change users quote'), 'lang_set_user_default_password'=> lang('Set default user password'), 'lang_edit_sambausers_attributes'=> lang('Edit SAMBA users attributes'), 'lang_add_email_lists' => lang('Add email lists'), 'lang_edit_email_lists' => lang('Edit email lists'), 'lang_delete_email_lists' => lang('Delete email lists'), 'lang_view_email_lists' => lang('View email lists'), 'lang_create_orgs' => lang('Create Organizations'), 'lang_edit_orgs' => lang('Edit Organizations'), 'lang_delete_orgs' => lang('Delete Organizations'), 'lang_view_sessions' => lang('View sessions (local)'), 'lang_view_global_sessions' => lang('View sessions (global)'), 'lang_view_logs' => lang('View Logs'), 'lang_create_computers' => lang('Create computers'), 'lang_edit_computers' => lang('Edit computers'), 'lang_delete_computers' => lang('Delete computers'), 'error_messages' => $_POST['error_messages'] == '' ? '' : '', 'manager_lid' => $_POST['manager_lid'], 'context' => $_POST['context'], 'add_users' => $_POST['add_users'] != '' ? 'checked' : '', 'edit_users' => $_POST['edit_users'] != '' ? 'checked' : '', 'delete_users' => $_POST['delete_users'] != '' ? 'checked' : '', 'rename_users' => $_POST['rename_users'] != '' ? 'checked' : '', 'add_groups' => $_POST['add_groups'] != '' ? 'checked' : '', 'edit_groups' => $_POST['edit_groups'] != '' ? 'checked' : '', 'delete_groups' => $_POST['delete_groups'] != '' ? 'checked' : '', 'change_users_password' => $_POST['change_users_password'] != '' ? 'checked' : '', 'change_users_quote' => $_POST['change_users_quote'] != '' ? 'checked' : '', 'set_user_default_password' => $_POST['set_user_default_password'] != '' ? 'checked' : '', 'edit_sambausers_attributes' => $_POST['edit_sambausers_attributes'] != '' ? 'checked' : '', 'add_maillists' => $_POST['add_maillists'] != '' ? 'checked' : '', 'edit_maillists' => $_POST['edit_maillists'] != '' ? 'checked' : '', 'delete_maillists' => $_POST['delete_maillists'] != '' ? 'checked' : '', 'create_sectors' => $_POST['create_sectors'] != '' ? 'checked' : '', 'edit_sectors' => $_POST['edit_sectors'] != '' ? 'checked' : '', 'delete_sectors' => $_POST['delete_sectors'] != '' ? 'checked' : '', 'create_computers' => $_POST['create_computers'] != '' ? 'checked' : '', 'edit_computers' => $_POST['edit_computers'] != '' ? 'checked' : '', 'delete_computers' => $_POST['delete_computers'] != '' ? 'checked' : '', 'view_sessions' => $_POST['view_sessions'] != '' ? 'checked' : '', 'view_global_sessions' => $_POST['view_global_sessions'] != '' ? 'checked' : '', 'view_logs' => $_POST['view_logs'] != '' ? 'checked' : '', 'manage_wf_sectors' => $_POST['manage_wf_sectors'] != '' ? 'checked' : '', // Para o update no banco, preciso saber oq foi alterado e para que. // Talvez so o manager e o contexto. 'old_manager_lid' => $old_manager_lid, 'old_context' => $old_context, 'app_list' => $applications_list ); $p->set_var($var); echo $p->fp('out','form'); } function validate() { $accounts = CreateObject('phpgwapi.accounts'); $errors = array(); // verifica se o manager existe. caso retorne 1 existe e eh uma conta de usuario. $manager_lid_exists = $accounts->exists($_POST['manager_lid']); if ($manager_lid_exists != 1) { $_POST['error_messages'] = lang("Manager LID don't exist."); if ($_POST['type'] == 'add') $this->add_managers(); elseif ($_POST['type'] == 'edit') $this->edit_managers(); return; } // Verifica se o contexto existe. $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); ldap_bind($ldap_conn,$dn,$passwd); $sr=@ldap_list($ldap_conn, $_POST['context'], "cn=*"); if (!$sr) { $_POST['error_messages'] = lang("Context don't exist."); ldap_close($ldap_conn); if ($_POST['type'] == 'add') $this->add_managers(); elseif ($_POST['type'] == 'edit') $this->edit_managers(); return; } if ($_POST['type'] == 'add') { //Verifica se ja existe o manager com aquele contexto cadastrado $query = "SELECT manager_lid FROM phpgw_expressoadmin WHERE manager_lid = '" . $_POST['manager_lid'] . "' AND context = '" . $_POST['context'] . "'"; $GLOBALS['phpgw']->db->query($query); $num_registros = 0; while($GLOBALS['phpgw']->db->next_record()) { $tmp[] = $GLOBALS['phpgw']->db->row(); $num_registros++; } if ($num_registros != 0) { $_POST['error_messages'] = lang('Este Gerente neste contexto já exite !!'); $this->add_managers(); return; } } if ($_POST['type'] == 'add') ExecMethod('expressoAdmin1_2.bomanagers.add_managers'); elseif ($_POST['type'] == 'edit') ExecMethod('expressoAdmin1_2.bomanagers.edit_managers'); return true; } } ?>