source: branches/1.2/workflow/inc/smarty/wf_plugins/function.wf_download_link.php @ 1349

Revision 1349, 1.9 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

  • Property svn:executable set to *
Line 
1<?php
2/**
3 * Este plugin tem por finalidade criar links para downloads de arquivos.
4 * Estes links não apontam para o arquivo que será baixado e sim para uma página que irá enviar o arquivo
5 * (útil para arquivos que estão no banco de dados).
6 * @package Smarty
7 * @subpackage wf_plugins
8 * @param array $params Array de parametros
9 * - base_url : a URL que irá enviar o arquivo (tratar a requisição).
10 * - text : texto do link gerado
11 * - getParams : parâmetro(s) que identifica(m) o(s) download(s).
12 * @param object &$smarty clever simulation of a method 
13 * @return string $output link para uma página que irá enviar o arquivo
14 * @access public
15 */
16function smarty_function_wf_download_link($params, &$smarty)
17{
18        $requiredParams = array(
19                'getParams');
20        $defaultValues = array(
21                'base_url' => $_SERVER['REQUEST_URI'],
22                'text' => 'download',
23                'getParams' => '');
24        $extractParams = array(
25                'base_url',
26                'text',
27                'getParams');
28       
29        /* verifica se todos os parâmetros obrigatórios foram passados */
30        foreach ($requiredParams as $required)
31                if (!array_key_exists($required, $params) || (empty($params[$required])))
32                        $smarty->trigger_error("[wf_download_link] missing required parameter(s): $required", E_USER_ERROR);
33       
34        /* atribui valores default para os parâmetros não passados */
35        foreach ($defaultValues as $key => $value)
36                if (!isset($params[$key]))
37                        $params[$key] = $value;
38       
39        /* extrai alguns parâmetros da matriz de parâmetros */
40        foreach ($extractParams as $extract)
41                $$extract = $params[$extract];
42       
43        /* parâmetros extras são "acumulados" em uma única matriz */
44        $extraParams = array();
45        foreach ($params as $key => $value)
46                if (!in_array($key, $extractParams))
47                        $extraParams[] = $key . ' = "' . $value . '"';
48       
49        $base_url .= (strpos($base_url, '?') === false) ? '?' : '&';
50        $getParams = '&' . $getParams;
51
52        $output = '<a href="' . $base_url . 'download_mode=true' . $getParams . '" ' . implode(' ', $extraParams)  . '>' . $text . '</a>';
53        return $output;
54}
55?>
Note: See TracBrowser for help on using the repository browser.