source: branches/2.2/workflow/inc/class.bo_adminjobs.inc.php @ 3167

Revision 3167, 5.1 KB checked in by viani, 14 years ago (diff)

Ticket #1135 - Merged r1990:3166 from /trunk/workflow into /branches/2.2/workflow

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