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

Revision 1349, 3.3 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 insere duas combo boxes que permitem ao usuário selecionar uma cidade do Brasil.
4 * A primeira combo é utilizada para fazer a seleção de um Estado. Uma vez feita esta seleção, é feita uma chamada Ajax que carrega as cidades daquele Estado na segunda combo.
5 * E, é nesta segunda combo que o usuário efetivamente seleciona a cidade.
6 * @package Smarty
7 * @subpackage wf_plugins
8 * @param array $params Array de parametros
9 * - name: o nome que a combo de seleção de cidade irá receber.
10 * - value: o ID da cidade que aparecerá inicialmente selecionada.
11 * - state_name: o nome da combo de seleção de Estado.
12 * - state_value: o ID do Estado inicialmente selecionado.
13 * @param object &$smarty Instância do objeto smarty em uso
14 * @return string $output codigo que insere os comboboxes.
15 * @access public
16 */
17function smarty_function_wf_select_city($params, &$smarty)
18{
19    require_once $smarty->_get_plugin_filepath('function','wf_select_state');
20
21        $requiredParams = array(
22                'name');
23        $defaultValues = array(
24                'value' => 1,
25                'handleExpiredSessions' => true,
26                'state_value' => 1,
27                'state_name' => "_estado_" . rand() . '_' . rand());
28        $extractParams = array(
29                'name',
30                'handleExpiredSessions',
31                'value',
32                'state_value',
33                'state_name');
34
35        /* verifica se todos os parâmetros obrigatórios foram passados */
36        foreach ($requiredParams as $required)
37                if (!array_key_exists($required, $params) || (empty($params[$required])))
38                        $smarty->trigger_error("[wf_select_city] missing required parameter(s): $required", E_USER_ERROR);
39       
40        /* atribui valores default para os parâmetros não passados */
41        foreach ($defaultValues as $key => $value)
42                if (!isset($params[$key]))
43                        $params[$key] = $value;
44       
45        /* extrai alguns parâmetros da matriz de parâmetros */
46        foreach ($extractParams as $extract)
47                $$extract = $params[$extract];
48       
49        /* parâmetros extras são "acumulados" em uma única variável */
50        $extraParams = array();
51        foreach ($params as $key => $value_params)
52                if (!in_array($key, $extractParams))
53                        $extraParams[$key] = $value_params;
54
55        $db = &$GLOBALS['workflow']['workflowObjects']->getDBExpresso()->Link_ID;
56        if (isset($params['value']))
57        {
58                $sql = "SELECT id_state FROM phpgw_cc_city WHERE id_city = ?";
59                $result = $db->query($sql, array($value));
60                if ($result)
61                {
62                        $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
63                        $state_value = $row['id_state'];
64                }
65                else
66                {
67                        $state_value = 1;
68                        $value = 1;
69                }
70        }
71
72        $handleExpiredSessions = ($handleExpiredSessions === true) ? 'true' : 'false';
73
74        $output = smarty_function_wf_select_state(array(
75                                                                                        'name' => $state_name,
76                                                                                        'value' => $state_value,
77                                                                                        'onchange' => "draw_cities('$name', this.value, null, $handleExpiredSessions);"),
78                                                                                $smarty);
79        $output .= '<br/>';
80
81        $sql = "SELECT id_city, city_name FROM phpgw_cc_city WHERE id_state = ? ORDER BY city_name";
82        $result = $db->query($sql, array($state_value));
83        $cities = array();
84        while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC))
85                $cidades[$row['id_city']] = $row['city_name'];
86
87        $output .= smarty_function_html_options(array_merge(array(
88                                                                                        'name' => $name,
89                                                                                        'id' => $name,
90                                                                                        'options' => $cidades,
91                                                                                        'selected' => $value,
92                                                                                        'print_result' => false), $extraParams),
93                                                                                $smarty);
94        return $output;
95}
96?>
Note: See TracBrowser for help on using the repository browser.