source: branches/1.2/workflow/inc/local/classes/class.wf_workitem.php @ 1349

Revision 1349, 2.1 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* Provê métodos que acessam informações relacionadas aos workitems.
4* @author Anderson Tadayuki Saikawa - asaikawa@celepar.pr.gov.br
5* @version 1.0
6* @license http://www.gnu.org/copyleft/gpl.html GPL
7* @package Workflow
8* @subpackage local
9*/
10class wf_workitem
11{
12        /**
13        * @var object $db objeto do banco de dados
14        * @access private
15        */
16        private $db;
17
18        /**
19        * @var int $processID o ID do processo onde a classe está sendo utilizada
20        * @access private
21        */
22        private $processID;
23
24        /**
25        * Construtor do wf_workitem.
26        * @return object
27        * @access public
28        */
29        public function wf_workitem()
30        {
31                $this->db = &$GLOBALS['workflow']['workflowObjects']->getDBGalaxia()->Link_ID;
32                $this->processID = (int) $GLOBALS['workflow']['wf_runtime']->activity->getProcessId();
33        }
34
35        /**
36        * Busca workitems de uma instância pelo seu nome (identificador).
37        * @param int $instanceName O nome da instância.
38        * @param mixed $activities Uma lista de IDs de atividades das quais se quer os workitems (também pode ser um valor inteiro).
39        * @return array Array onde cada elemento corresponde aos workitens de cada instâncias que satisfaz o critério de seleção.
40        * @access public
41        */
42        public function getWorkitemsByInstanceName($instanceName, $activities = null)
43        {
44                $output = array();
45
46                if (is_numeric($activities))
47                        $activities = array((int) $activities);
48
49                /* build the SQL query */
50                $query  = 'SELECT w.wf_instance_id, w.wf_item_id, w.wf_order_id, w.wf_activity_id, w.wf_started, w.wf_ended, w.wf_user ';
51                $query .= 'FROM egw_wf_workitems w ';
52                $query .= 'INNER JOIN egw_wf_instances i ON w.wf_instance_id = i.wf_instance_id ';
53                $query .= 'WHERE (i.wf_p_id = ?) AND (UPPER(i.wf_name) = UPPER(?)) ';
54
55                $values = array($this->processID, $instanceName);
56
57                /* if there are activities, add a condition */
58                if(is_array($activities) && (count($activities) > 0))
59                {
60                        $query .= 'AND (w.wf_activity_id = ANY (?))';
61                        $values[] = '{' . implode(', ', $activities) . '}';
62                }
63
64                $result = $this->db->query($query, $values);
65                if ($result !== false)
66                {
67                        while (($row = $result->fetchRow()))
68                                $output[$row['wf_instance_id']][] = $row;
69                        $output = array_values($output);
70                }
71
72                return $output;
73        }
74}
75?>
Note: See TracBrowser for help on using the repository browser.