True,
'report_shareAccounts_group' => True,
'report_shareAccounts_group_setor_print' => True,
'get_shareAccount_info' => True,
'css' => True
);
var $nextmatchs;
var $user;
var $functions;
var $current_config;
var $ldap_functions;
var $db_functions;
var $imap_functions;
function uireports_shareAccounts()
{
$this->user = CreateObject('reports.user');
$this->nextmatchs = CreateObject('phpgwapi.nextmatchs');
$this->functions = CreateObject('reports.functions');
$this->ldap_functions = CreateObject('reports.ldap_functions');
$this->db_functions = CreateObject('reports.db_functions');
$this->fpdf = CreateObject('reports.uireports_fpdf'); // Class para PDF
$this->imap_functions = CreateObject('reports.imap_functions');
$c = CreateObject('phpgwapi.config','reports'); // cria o objeto relatorio no $c
$c->read_repository(); // na classe config do phpgwapi le os dados da tabela phpgw_config where relatorio, como passagem acima
$this->current_config = $c->config_data; // carrega os dados em do array no current_config
if(!@is_object($GLOBALS['phpgw']->js))
{
$GLOBALS['phpgw']->js = CreateObject('phpgwapi.javascript');
}
$GLOBALS['phpgw']->js->validate_file('jscode','cc','reports');
}
function report_shareAccounts_print_pdf()
{
$account_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
$acl = $this->functions->read_acl($account_lid);
$raw_context = $acl['raw_context'];
$contexts = $acl['contexts'];
foreach ($acl['contexts_display'] as $index=>$tmp_context)
{
$context_display .= $tmp_context;
}
if (!$this->functions->check_acl($account_lid,'list_users'))
{
$GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/reports/inc/access_denied.php'));
}
$grouplist = trim($_POST[setor]);
$grouplist = trim(ereg_replace("-","",$grouplist));
$setordn = trim($_POST[setordn]);
$subtitulo1 = trim($_POST[subtitulo]);
define('FPDF_FONTPATH','font/');
$data_atual = date("d/m/Y");
$titulo_system = $GLOBALS['phpgw_info']['apps']['reports']['title'];
$pdf=new uireports_fpdf("L");
$pdf->Open();
$pdf->AddPage();
//Set font and colors
$pdf->SetFont('Arial','B',14);
$pdf->SetFillColor(0,0,0);
$pdf->SetTextColor(0,0,200);
$pdf->SetDrawColor(0,0,0);
$pdf->SetLineWidth(.2);
//Table header
$SubTitulo = lang('Report of shared accounts of the Organization');
$SubTituloR = lang('Report Generated by Expresso Reports');
$SubTitulo1 = $subtitulo1;
$GLOBALS['phpgw_info']['apps']['reports']['subtitle'] = $SubTituloR;
$pdf->Cell(0,8,$SubTitulo,0,1,'C',0);
//Set font and colors
$pdf->SetFont('Arial','B',8);
$pdf->SetFillColor(0,0,0);
$pdf->SetTextColor(0,0,200);
$pdf->SetDrawColor(0,0,0);
$pdf->SetLineWidth(.3);
$pdf->MultiCell(0,3,$SubTitulo1,0,'C',0);
$pdf->Cell(0,2,' ',0,1,'C',0);
$pdf->Cell(0,5,lang('Date').'..: '.$data_atual,0,0,'L',0);
$pdf->Cell(0,5,$titulo_system,0,1,'R',0);
$account_info = $this->functions->get_list_shareAccounts_sector($setordn,$contexts,0);
if (count($account_info))
{
//Restore font and colors
$pdf->SetFont('Arial','',8);
$pdf->SetFillColor(224,235,255);
$pdf->SetTextColor(0);
$pdf->Cell(55,5,lang('loginid'),1,0,'L',1);
$pdf->Cell(80,5,lang('name'),1,0,'L',1);
$pdf->Cell(70,5,lang('report email'),1,0,'L',1);
$pdf->Cell(20,5,lang('status'),1,0,'L',1);
$pdf->Cell(55,5,lang('Participants'),1,1,'L',1);
while (list($null,$account) = each($account_info))
{
$row_loginid = $account['account_lid'];
$row_cn = $account['account_cn'];
$row_mail = (!$account['account_mail'] ? ''.lang('Without E-mail').'' : $account['account_mail']);
$row_status = $account['account_accountstatus'] == 'active' ? lang('Activated') : lang('Disabled');
$pdf->Cell(55,5,$row_loginid,0,0,'L',0);
$pdf->Cell(80,5,$row_cn,0,0,'L',0);
$pdf->Cell(70,5,$row_mail,0,0,'L',0);
if ($row_status == lang('Activated'))
{
//Restaura cor fonte
$pdf->SetTextColor(0);
$pdf->Cell(20,5,$row_status,0,0,'L',0);
}
else
{
//Muda cor fonte
$pdf->SetTextColor(256,0,0);
$pdf->Cell(20,5,$row_status,0,0,'L',0);
//Restaura cor fonte
$pdf->SetTextColor(0);
}
//Pega participantes da conta compartilhada
$owner_user_share = $this->imap_functions->getMembersShareAccount($account['account_lid']);
//Imprimir os participantes da conta compartilhada no PDF
$max = count($owner_user_share);
for ($i=0; $i <= $max; $i++)
{
if ($max == $i)
{
$pdf->Cell(55,5,$owner_user_share[$i],0,1,'L',0);
}
else
{
$pdf->Cell(55,5,$owner_user_share[$i],0,2,'L',0);
}
}
}
}
$pdf->Output();
return;
}
function report_shareAccounts_group()
{
$account_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
$manager_acl = $this->functions->read_acl($account_lid);
$raw_context = $acl['raw_context'];
$contexts = $manager_acl['contexts'];
$conta_context = count($manager_acl['contexts_display']);
foreach ($manager_acl['contexts_display'] as $index=>$tmp_context)
{
$index = $index +1;
if ($conta_context == $index)
{
$context_display .= $tmp_context;
}
else
{
$context_display .= $tmp_context.' | ';
}
}
// Verifica se tem acesso a este modulo
if (!$this->functions->check_acl($account_lid,'list_sectors'))
{
$GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/reports/inc/access_denied.php'));
}
unset($GLOBALS['phpgw_info']['flags']['noheader']);
unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
$GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['reports']['title'].' - '.lang('Report shared accounts by Organization');
$GLOBALS['phpgw']->common->phpgw_header();
$p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
$p->set_file(array('groups' => 'report_shareAccounts_group.tpl'));
$p->set_block('groups','list','list');
$p->set_block('groups','row','row');
$p->set_block('groups','row_empty','row_empty');
// Seta as variaveis padroes.
$var = Array(
'th_bg' => $GLOBALS['phpgw_info']['theme']['th_bg'],
'back_url' => $GLOBALS['phpgw']->link('/reports/index.php'),
'context_display' => $context_display
);
$p->set_var($var);
$p->set_var($this->functions->make_dinamic_lang($p, 'list'));
$GLOBALS['organizacaodn'] = $_POST['organizacaodn'];
$contextsdn = $GLOBALS['organizacaodn'];
// Save query
$varorganizacao = explode(",",$contextsdn);
$varorganizacao_nome = trim(strtoupper(ereg_replace("ou=","",$varorganizacao[0])));
$varorganizacao_nome = trim(strtoupper(ereg_replace("DC=","",$varorganizacao_nome)));
$user_logon = $GLOBALS['phpgw_info']['user'][account_lid];
$sectors_info = $this->functions->get_list_context_logon($user_logon,$contexts,0);
$sectors_info_dn = $this->functions->get_list_groups_dn($user_logon,$contexts,0);
if (!count($sectors_info))
{
$p->set_var('notselect',lang('No matches found'));
}
else
{
foreach($sectors_info as $context=>$sector)
{
$sectordn = $sectors_info_dn[$context];
$tr_color = $this->nextmatchs->alternate_row_color($tr_color);
if ($context == 0 && $contextsdn <> "")
{
if (trim(strtoupper($varorganizacao_nome)) == trim(strtoupper($sector)))
{
$sector_options .= "";
}
else
{
$sector_options .= "";
$sector_options .= "";
}
}
else
{
if ( trim(strtoupper($varorganizacao_nome)) != trim(strtoupper($sector)))
{
$sectorok = trim(strtoupper(ereg_replace("dc=","",$sector)));
$sectorok = trim(strtoupper(ereg_replace("dc=","",$sectorok)));
$sector_options .= "";
}
}
$varselect = Array(
'tr_color' => $tr_color,
'organizacaodn' => $contextsdn,
'group_name' => $sector_options
);
}
$p->set_var($varselect);
}
// ************** inicio carregar a sub-lista das organizações ****************
//Admin make a search
if ($GLOBALS['organizacaodn'] != '')
{
// Conta a quantidade de Usuario do grupo raiz
$account_user = $this->functions->get_count_shareAccount_sector($contextsdn,$contexts,0);
$totaluser = "(".$account_user.")";
$p->set_var('organizacao', $varorganizacao_nome);
$p->set_var('all_user', lang('all'));
$p->set_var('total_user', $totaluser);
$setorg = $contextsdn;
$groups_info = $this->functions->get_sectors_list($contexts,$setorg);
if (!count($groups_info))
{
$p->set_var('message',lang('No sector found'));
$p->parse('rows','row_empty',True);
}
else
{
$ii = 0;
foreach($groups_info as $context=>$groups)
{
$explode_groups = explode("#",$groups);
$ii = $ii + 1;
$tr_color = $this->nextmatchs->alternate_row_color($tr_color);
$varsuborg = Array(
'tr_color' => $tr_color,
'formname' => "form".$ii,
'formsubmit' => "document.form".$ii.".submit()",
'sector_name' => $explode_groups[0],
'sector_namedn' => $explode_groups[1],
'sector_namedn_completo' => $explode_groups[2],
);
$p->set_var($varsuborg);
$p->parse('rows','row',True);
}
}
}
$p->pfp('out','list');
}
function report_shareAccounts_group_setor_print()
{
$grouplist = trim($_POST[setor]);
$grouplist = trim(ereg_replace("-","",$grouplist));
$organizacao = trim($_POST[organizacao]);
$setordn = trim($_POST[setordn]);
$organizacaodn = trim($_POST[organizacaodn]);
$sectornamedncompleto = trim($_POST[sectornamedncompleto]);
$Psectornamedncompleto = trim($_POST[Psectornamedncompleto]);
if ($sectornamedncompleto=="" && $Psectornamedncompleto=="")
{
$sectornamedncompleto = $organizacao;
}
else if ($sectornamedncompleto=="" && $Psectornamedncompleto <> "")
{
$sectornamedncompleto = $Psectornamedncompleto;
}
else
{
$sectornamedncompleto = $organizacao." | ".$sectornamedncompleto;
}
$data_atual = date("d/m/Y");
$titulo_system = $GLOBALS['phpgw_info']['apps']['reports']['title'];
$account_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
$acl = $this->functions->read_acl($account_lid);
$raw_context = $acl['raw_context'];
$contexts = $acl['contexts'];
foreach ($acl['contexts_display'] as $index=>$tmp_context)
{
$context_display .= $tmp_context;
}
// Verifica se o administrador tem acesso.
if (!$this->functions->check_acl($account_lid,'list_users'))
{
$GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/reports/inc/access_denied.php'));
}
unset($GLOBALS['phpgw_info']['flags']['noheader']);
unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
$GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['reports']['title'].' - '.lang('Report shared accounts by Organization');
$GLOBALS['phpgw']->common->phpgw_header();
$p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
$p->set_file(Array('accounts' => 'report_shareAccounts_group_print.tpl'));
$p->set_block('accounts','body');
$p->set_block('accounts','rowpag');
$p->set_block('accounts','row');
$p->set_block('accounts','row_empty');
$var = Array(
'bg_color' => $GLOBALS['phpgw_info']['theme']['bg_color'],
'th_bg' => $GLOBALS['phpgw_info']['theme']['th_bg'],
'subtitulo' => lang('Report of shared accounts of the Organization'),
'subtitulo1' => $sectornamedncompleto,
'context' => $raw_context,
'titulo' => $titulo_system,
'data_atual' => $data_atual,
'context_display' => $context_display,
'organizacaodn' => $organizacaodn,
'organizacao' => $organizacao,
'sector_name' => $grouplist,
'sector_namedn' => $setordn,
'imapDelimiter' => $_SESSION['phpgw_info']['expresso']['email_server']['imapDelimiter']
);
$p->set_var($var);
$p->set_var($this->functions->make_dinamic_lang($p, 'body'));
// ************ PAGINAÇÃO *******************************
// verifica se exixte usuarios no LDAP
$account_info = $this->functions->get_list_shareAccounts_sector($setordn,$contexts,0);
if (!count($account_info))
{
$p->set_var('message',lang('No user found'));
$p->parse('rows','row_empty',True);
}
else if (count($account_info))
{
//url do paginador
$url = $GLOBALS['phpgw_info']['server']['webserver_url'].'/index.php?menuaction=reports.uireports_shareAccounts.report_shareAccounts_group_setor_print';
// **** Grupo de paginas ****
$gpag = $_POST[gpage];
$grupopage = 20;
if (!$gpag){
$gpag = 1;
}
// recebe o numero da pagina
$npag = $_POST[page];
// verifica se o get com o numero da pagina é nulo
if (!$npag)
{
$npag = 1;
}
// conta total dos registros
$numreg = count($account_info);
// numero de registro por paginação
$numpage = 53;
$tp = ceil($numreg/$numpage);
$inicio = $page - 1;
$inicio = $inicio * $numpage;
// valor maximo de paginação
$totalnpag = (int)($tp/$grupopage);
$restonpag = $tp % $grupopage;
if ($restonpag > 0)
{
$maxtotalnpag = $totalnpag + 1;
}
else
{
$maxtotalnpag = $totalnpag;
}
// inicio fim para imprimir a paginação
if( $tp > $grupopage)
{
// inicio do for da paginação
if ($gpag <= ($totalnpag))
{
$fimgpg = $gpag * $grupopage;
$iniciogpg = (($fimgpg - $grupopage)+1);
}
else
{
$iniciogpg = (($gpag - 1) * $grupopage);
$fimgpg = $iniciogpg + $restonpag;
}
}
else
{
// inicio do for da paginação
$iniciogpg = 1;
$fimgpg = $tp;
}
// Imprime valores de contagen de registro e pagina
$p->set_var('cont_user',$numreg);
$p->set_var('cont_page',$tp);
$p->set_var('page_now',$npag);
// ********** busca no LDAP as informação paginada e imprime ****************
$paginas = $this->functions->Paginate_shareAccount('accounts',$setordn,$contexts,'cn','asc',$npag,$numpage);
$tmpp = array();
while (list($null,$accountp) = each($paginas))
{
$tmpp[$accountp['uid'][0]]['account_id'] = $accountp['uidNumber'][0];
$tmpp[$accountp['uid'][0]]['account_lid'] = $accountp['uid'][0];
$tmpp[$accountp['uid'][0]]['account_cn'] = $accountp['cn'][0];
$tmpp[$accountp['uid'][0]]['account_phone'] = $accountp['telephoneNumber'][0];
$tmpp[$accountp['uid'][0]]['account_status'] = $accountp['accountStatus'][0];
$tmpp[$accountp['uid'][0]]['account_mail'] = $accountp['mail'][0];
//Pega participantes da conta compartilhada
$owner_user_share = $this->imap_functions->getMembersShareAccount($accountp['uid'][0]);
//Prepara para exibição na WEB
$max = count($owner_user_share);
$row_participants = array();
for ($i=0; $i <= $max; $i++)
{
if (0 == $i)
{
$row_participants = $owner_user_share[$i];
}
elseif ($max == $i)
{
$row_participants = $row_participants . $owner_user_share[$i];
}
else
{
$row_participants = $row_participants . '
' . $owner_user_share[$i];
}
}
$tmpp[$accountp['uid'][0]]['participants_mail'] = $row_participants;
$sortp[] = $accountp['uid'][0];
if (count($sortp))
{
natcasesort($sortp);
foreach ($sortp as $user_uidp)
$returnp[$user_uidp] = $tmpp[$user_uidp];
}
}
while (list($null,$accountr) = each($returnp))
{
$this->nextmatchs->template_alternate_row_color($p);
$varr = array(
'row_participants' => $accountr['participants_mail'],
'row_loginid' => $accountr['account_lid'],
'row_cn' => $accountr['account_cn'],
'row_status' => $accountr['account_status'] == 'active' ? ''.lang('Activated').' ' : ''.lang('Disabled').'',
'row_mail' => (!$accountr['account_mail'] ? ''.lang('Without E-mail').'' : $accountr['account_mail'])
);
$p->set_var($varr);
$p->parse('rows','row',True);
}
// ********************** Fim ****************************
// grupo de pagina anteriores
if ($gpag > 1)
{
$gpaga = $gpag - 1;
$varp = Array(
'paginat' => "