source: sandbox/workflow/branches/609/inc/class.bo_adminjobs.inc.php @ 2311

Revision 2311, 5.1 KB checked in by pedroerp, 14 years ago (diff)

Ticket #609 - Migrando instanciação das classes da engine para a factory.

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