[903] | 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 | ?> |
---|