Version 2 (modified by cassiomaes, 17 years ago) (diff) |
---|
Plugin: wf_download_link
Descrição: Este plugin tem por finalidade criar links para downloads de arquivos. Estes links não apontam para o arquivo que será baixado e sim para uma página que irá enviar o arquivo (útil para arquivos que estão no banco de dados).
Parâmetros:
base_url : a URL que irá enviar o arquivo (tratar a requisição).
text : texto do link gerado
getParams : parâmetro(s) que identifica(m) o(s) download(s).
Parâmetro obrigatório: getParams
Valor padrão:
text : "download"
base_url : $_SERVER['REQUEST_URI']
Qualquer outro parâmetro passado será incorporado na tag do link gerado.
Exemplos de utilização:
Supondo que o código esteja localizado na URL: http://localhost/expresso/index.php?atividade=99
{wf_download_link getParams="id_arquivo=1"}
irá produzir:
<a href="/expresso/index.php?atividade=99&download_mode=true&id_arquivo=1">download</a>
{wf_download_link getParams="id_arquivo=1" text="clique aqui" class="download_css"}
irá produzir:
<a href="/expresso/index.php?atividade=99&download_mode=true&id_arquivo=1" class="download_css">clique aqui</a>
{wf_download_link getParams="id_arquivo=1&usuario=2"}
irá produzir:
<a href="/expresso/index.php?atividade=99&download_mode=true&id_arquivo=1&usuario=2">download</a>
{wf_download_link base_url="http://www.outrosite.com/index.php" getParams="id_arquivo=1"}
irá produzir:
<a href="http://www.outrosite.com/index.php?download_mode=true&id_arquivo=1>download</a>
Função: wf_handle_download
Descrição: Esta função gerencia o envio de arquivos solicitados em uma atividade. Esta função deve ser utilizada no arquivo (PHP) que receberá os requests do link gerado com o plugin acima.
Parâmetros:
request: variável (estilo array) que será monitorada para verificar a solicitação de um download. Normalmente utiliza-se as variáveis {{$_GET}} ou {{$_POST}}.
callback: o nome de uma função (em string) que será chamada para selecionar o arquivo requisitado.
Notas sobre a função callback:
1- Deve ser declarada para receber um único parâmetro. Este parâmetro será do tipo array e conterá todos os valores armazenados na variável request (a mesma passada em wf_handle_download)
2- Esta função deve retornar {{null}} caso não consiga enviar um arquivo ou então uma array associativa com dois elementos. Supondo que iremos retornar um arquivo na variável {{$saida}}, temos o seguinte exemplo:
$saida = array(); $saida['filename'] = "nome_arquivo.txt"; $saida['content'] = "Conteúdo do arquivo."; return $saida;
Exemplo completo de utilização (juntamente com o plugin):
No arquivo de template (.TPL):
{wf_download_link getParams="id_arquivo=1&tipo=2"}
No arquivo de código (.PHP):
function downloadArquivo($params) { if ($params['id_arquivo'] == 1) { $saida = array(); if ($params['tipo'] == 2) { $saida['filename'] = "arquivo.txt"; $saida['content'] = "Conteúdo do tipo 2"; return $saida; } if ($params['tipo'] == 5) { $saida['filename'] = "outro_arquivo.txt"; $saida['content'] = "Outro conteúdo"; return $saida; } return null; } else return null; } wf_handle_download($_GET, "downloadArquivo"); /* Utilizou-se a variável $_GET porque o link gerado pelo plugin passa os valores por essa variável */
Obs: o parâmetro request pode ser qualquer variável do tipo array associativa (e não somente $_GET e $_POST). Mas, para isso, é necessário que nesta variável esteja definido o elemento "download_mode" com valor "true" (este último sem aspas) quando for requisitado um download.