source: companies/serpro/scripts-listas/cmd.syncMailmanRHDS.php @ 903

Revision 903, 3.9 KB checked in by niltonneto, 15 years ago (diff)

Importacao inicial do Expresso do Serpro

Line 
1<?php
2  /*
3    ARQUIVO INVOCADO PELA CLASSE "class.maillist.inc.php" do ExpressoAdmin: para sincronizar as listas
4    criadas/deletadas via browser, no RHDS e Mailman.
5  */
6 
7  //Rotina utilizada neste script, para criar o arquivo de uma nova lista
8  function GeraArquivoLista($nlista, $conteudo, $operacao){
9    if(is_dir(diretoriolistas)){
10     
11      //Navega ate o diretorio do repositorio de arquivos
12      $manipulador_dir = chdir(diretoriolistas);
13      if ($manipulador_dir){
14       
15        //Verifica a operacao enviada para o script: 1 adiciona, 0 remove
16        if($operacao == 1)
17          $nomelista = 'ins_' . $nlista;
18        elseif($operacao == 0)
19          $nomelista = 'rem_' . $nlista;
20        else{
21          $lista = array("status"=>false,"msg"=>"Codigo de operacao para inserir/remover lista invalido.");
22          return $lista;
23        }
24
25        //Verifica se ja nao existe um arquivo no pool, para a mesma lista
26        if(file_exists($nomelista))
27          $lista = array("status"=>false,"msg"=>"O arquivo indentificador da listagem \"" . $nomelista . "\" ja existe em \"".diretoriolistas."\".");
28        else{
29          //Cria o arquivo da lista
30          $manipulador_arq = @fopen($nomelista,"w");
31          if (@fwrite($manipulador_arq, $nlista, strlen($nlista))){
32            @fclose($manipulador_arq);
33            $lista = array("status"=>true,"msg"=>"Arquivo da lista \"". $nomelista . "\" criado no repositorio \"".diretoriolistas ."\".");
34          }
35          else
36            $lista = array("status"=>false,"msg"=>"Falha ao gravar o arquivo de definicao de lista \"". $nomelista ."\".");
37        }
38      }
39      else
40        $lista = array("status"=>false,"msg"=>"Nao foi possivel acessar o repositorio das listas.");
41    }
42    else
43      $lista = array("status"=>false,"msg"=>"A estrutura do repositorio nao se apresenta como um diretorio.");
44     
45    return($lista);
46  }
47
48  //Se o acesso ao script nao for via HTTP Post, encerra o interpretador
49  if ($_SERVER['REQUEST_METHOD'] != 'POST'){
50    $retorno = array("status"=>false,"msg"=>"Acesso indevido ao script de sincronizacao de listas RHDS/Mailman.");
51    echo serialize($retorno);
52    exit;
53  }
54
55  //Se nao foi repassado o nome da lista a partir do Expresso
56  if (strlen($_POST['uid']) <= 0){
57    $retorno = serialize(array("status"=>false,"msg"=>"Lista nao informada para o processamento(lista = \"".$_POST['uid']."\")."));
58    echo $retorno;
59    exit;
60  }
61
62  //Se o codigo da operacao for diferente de 1(cria lista) e 0(deleta lista), aborta o script
63  if(($_POST['op'] < 0) || ($_POST['op'] > 1)){
64    $retorno = serialize(array("status"=>false,"msg"=>"Codigo de operacao para processamento do sincronizador nulo/invalido(codigo = \"".$_POST['op']."\")"));
65    echo $retorno;
66    exit;
67  }
68
69  //Armazena os dados do nome da lista, e operacao a proceder
70  $uid = strtolower(trim($_POST['uid']));
71  $operacao = $_POST['op'];
72
73  //PARA DEPURACAO DIRETA DO SCRIPT, PODE-SE HABILITAR O USO DE GET PARA ACESSAR DIRETAMENTE VIA URL
74  //$uid = strtolower(trim($_GET['uid']));
75  //$operacao = strtolower(trim($_GET['op']));
76
77  //Diretorio padrao de armazenamento dos arquivos a serem gravados para a montagem de listas
78  #define("diretoriolistas",getcwd()."/pool");
79  define("diretoriolistas", '/var/www/mailman/pool');
80
81  //Trata da criacao do arquivo temporario, contendo apenas o nome da lista
82  //Primeiramente, confere se o diretorio com o pool de arquivos existe e esta disponivel
83  if (file_exists(diretoriolistas)){
84    //Cria o arquivo da lista
85    $retorno = GeraArquivoLista($uid, $uid, $operacao);
86  }
87  //O pool nao existe: tenta cria-lo
88  else{
89    if(@mkdir(diretoriolistas))
90      $retorno = GeraArquivoLista($uid, $uid);
91    else
92      $retorno = array("status"=>false,"msg"=>"Nao conseguiu criar o repositorio de definicoes das listagens no servidor.");
93  }
94 
95  //Retorna um vetor serializado para o objeto Ajax do Expresso que solicitou o processamento.
96  //No indice "status" contem o booleano do processamento (true = OK, false = NOK), e em "msg" a string de tratamento
97  echo('@@'.serialize($retorno).'@@');
98?>
Note: See TracBrowser for help on using the repository browser.