source: branches/1.2/workflow/inc/class.bo_adminjobs.inc.php @ 1349

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

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

Line 
1<?php
2/**************************************************************************\
3* eGroupWare                                                               *
4* http://www.egroupware.org                                                *
5* --------------------------------------------                             *
6*  This program is free software; you can redistribute it and/or modify it *
7*  under the terms of the GNU General Public License as published by the   *
8*  Free Software Foundation; either version 2 of the License, or (at your  *
9*  option) any later version.                                              *
10\**************************************************************************/
11
12require_once 'class.bo_ajaxinterface.inc.php';
13require_once 'class.so_adminjobs.inc.php';
14require_once 'nano/JSON.php';
15
16/**
17 * Camada Business para administrar Jobs
18 * @package Workflow
19 * @author Sidnei Augusto Drovetto Jr. - drovetto@gmail.com
20 * @license http://www.gnu.org/copyleft/gpl.html GPL
21 */
22class bo_adminjobs extends bo_ajaxinterface
23{
24        /**
25         * @var object $so Acesso à camada model.
26         * @access private
27         */
28        private $so;
29
30        /**
31         * Construtor da classe bo_adminjobs
32         * @return object
33         * @access public
34         */
35        function bo_adminjobs()
36        {
37                parent::bo_ajaxinterface();
38                $this->so = new so_adminjobs();
39        }
40
41        /**
42         * Carrega a lista de todos os jobs de um determinado processo.
43         * @param array $params Uma array contendo os parâmetros advindos da chamada Ajax
44         * @return array Lista dos jobs (ordenada por nome)
45         * @access public
46         */
47        function loadJobs($params)
48        {
49                $output = $this->so->loadJobs($params['processID']);
50                if (isset($output['error']))
51                        return $output;
52
53                usort($output, create_function('$a,$b', 'return strcasecmp($a[\'name\'],$b[\'name\']);'));
54                return $output;
55        }
56
57        /**
58         * Atualiza um job ou cria um novo job (dependendo dos parâmetros passados)
59         * @param array $params Uma array contendo os parâmetros advindos da chamada Ajax
60         * @return array Lista dos jobs (ordenada por nome)
61         * @access public
62         */
63        function saveJob($params)
64        {
65                $output = array();
66                if (!empty($params['jobID']))
67                        $output = $this->so->updateJob($params['jobID'], $params['processID'], $params['name'], $params['description'], $params['timeStart'], $params['intervalValue'], $params['intervalUnity'], $params['dateType'], $params['weekDays'], $params['monthOffset'], $params['active']);
68                else
69                        $output = $this->so->createJob($params['processID'], $params['name'], $params['description'], $params['timeStart'], $params['intervalValue'], $params['intervalUnity'], $params['dateType'], $params['weekDays'], $params['monthOffset'], $params['active']);
70
71                if (count($output['error']) === 0)
72                        return $this->loadJobs(array('processID' => $params['processID']));
73                else
74                        return $output;
75        }
76
77        /**
78         * Remove um job (e seus logs)
79         * @param array $params Uma array contendo os parâmetros advindos da chamada Ajax
80         * @return void
81         * @access public
82         */
83        function removeJob($params)
84        {
85                return $this->so->removeJob($params['jobID']);
86        }
87
88        /**
89         * Carrega a lista dos logs de um Job
90         * @param array $params Uma array contendo os parâmetros advindos da chamada Ajax
91         * @return array Lista dos logs
92         * @access public
93         */
94        function loadLogs($params)
95        {
96                $logs = $this->so->loadLogs($params['jobID']);
97                if (isset($logs['error']))
98                        return $logs;
99
100                /* paginate the result */
101                $logEntriesPerPage = 30;
102                $paging = &$GLOBALS['workflow']['factory']->newInstance('Paging', $logEntriesPerPage, $params);
103                $logs = $paging->restrictItems($logs);
104
105                /* use a more human readable time notation (today, yesterday) */
106                $date = new DateTime();
107                $writtenDates = array();
108                $writtenDates[$date->format('d/m/Y')] = 'Hoje';
109                $date->modify('-1 day');
110                $writtenDates[$date->format('d/m/Y')] = 'Ontem';
111                foreach ($logs as $key => $value)
112                {
113                        $logs[$key]['date_time'] = ereg_replace("([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2}) ([[:digit:]]{2}):([[:digit:]]{2}):00", '\3/\2/\1 \4h\5', $value['date_time']);
114                        $currentDate = $value['date_time'];
115                        if (isset($writtenDates[substr($logs[$key]['date_time'], 0, 10)]))
116                                $logs[$key]['human_date_time'] = $writtenDates[substr($logs[$key]['date_time'], 0, 10)] . substr($logs[$key]['date_time'], 10);
117                }
118
119                /* prepare the output */
120                $output = array();
121                $output['logs'] = $logs;
122                $output['pagingLinks'] = $paging->commonLinks();
123                return $output;
124        }
125
126        /**
127         * Alterna o status do Job entre ativado e desativado
128         * @param array $params Uma array contendo os parâmetros advindos da chamada Ajax
129         * @return array Lista dos jobs (ordenada por nome)
130         * @access public
131         */
132        function toggleActive($params)
133        {
134                $jobID = (int) $params['jobID'];
135                $output = $this->so->toggleActive($jobID);
136                if (count($output['error']) === 0)
137                        return $this->loadJobs(array('processID' => (int) $params['processID']));
138                else
139                        return $output;
140        }
141
142        /**
143         * Executa um determinado Job
144         * @param array $params Uma array contendo os parâmetros advindos da chamada Ajax
145         * @return array Uma array contendo a saída da execução do Job (saída padrão e saída de erro) e outras mensagens
146         * @access public
147         */
148        function runJob($params)
149        {
150                $jobID = (int) $params['jobID'];
151                return $this->so->runJob($jobID);
152        }
153}
154?>
Note: See TracBrowser for help on using the repository browser.