source: trunk/server/www/app/views/helpers/job_model.php @ 297

Last change on this file since 297 was 297, checked in by sander, 11 years ago

Generate and display jobs and results for test suites

File size: 3.4 KB
Line 
1<?php
2/**
3 * Officeshots.org - Test your office documents in different applications
4 * Copyright (C) 2009 Stichting Lone Wolves
5 * Written by Sander Marechal <s.marechal@jejik.com>
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU Affero General Public License for more details.
16 *
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 */
20
21/**
22 * A helper to assist in outputting Jobs
23 */
24class JobModelHelper extends AppHelper
25{
26        /** @var array Add the Time helper */
27        public $helpers = array('Html');
28
29        /**
30         * Return the description of a Job
31         */
32        public function getDescription($job, $request_state)
33        {
34                if (!isset($job['Job'])) {
35                        $job = array('Job' => $job);
36                }
37
38                if (!empty($job['Job']['Result']) && !empty($job['Job']['Result']['id'])) {
39                        return $this->output($job['Job']['Result']['Format']['name']);
40                }
41
42                return $this->getState($job, $request_state);
43        }
44
45        /**
46         * Return the state of a job
47         */
48        public function getState($job, $request_state)
49        {
50                if (!isset($job['Job'])) {
51                        $job = array('Job' => $job);
52                }
53
54                if (!empty($job['Job']['Result']) && !empty($job['Job']['Result']['id'])) {
55                        return $this->output(__('Finished', true));
56                }
57
58                if ($request_state & (Request::STATE_UPLOADING | Request::STATE_PREPROCESSOR_QUEUED | Request::STATE_QUEUED)) {
59                        if ($job['Job']['locked'] == '0000-00-00 00:00:00') {
60                                return $this->output(__('Queued'));
61                        }
62
63                        if (empty($job['Job']['Result'])) {
64                                return $this->output(__('Processing'));
65                        }
66                }
67
68                return $this->output(__('Failed', true));
69        }
70
71        /**
72         * Return the icon of a Job
73         */
74        public function getIcon($job, $request_state)
75        {
76                if (!isset($job['Job'])) {
77                        $job = array('Job' => $job);
78                }
79
80                if (!empty($job['Job']['Result'])) {
81                        if ($job['Job']['Result']['state'] == Result::STATE_SCAN_FOUND) {
82                                $icon = 'virus.png';
83                        } else {
84                                $icon = $job['Job']['Result']['Mimetype']['icon'];
85                        }
86
87                        return $this->output($this->Html->image('icons/' . $icon, array(
88                                'alt' => $job['Job']['Result']['Format']['name'],
89                                'url' => array('controller'=> 'results', 'action'=>'view', $job['Job']['Result']['id'])
90                        )));
91                }
92
93                if ($request_state & (Request::STATE_UPLOADING | Request::STATE_PREPROCESSOR_QUEUED | Request::STATE_QUEUED)) {
94                        if ($job['Job']['locked'] == '0000-00-00 00:00:00') {
95                                return $this->output($this->Html->image('icons/queued.png', array('alt' => __('Queued', true))));
96                        }
97
98                        if (empty($job['Job']['Result'])) {
99                                return $this->output($this->Html->image('icons/busy.png', array('alt' => __('Processing', true))));
100                        }
101                }
102
103                return $this->output($this->Html->image('icons/error.png', array('alt' => __('Failed', true))));
104        }
105
106        /**
107         * Return the small format icon of a job
108         */
109        public function getFormatIcon($job)
110        {
111                if (!isset($job['Job'])) {
112                        $job = array('Job' => $job);
113                }
114
115                if (empty($job['Job']['Format'])) {
116                        return;
117                }
118
119                return $this->output($this->Html->image('icons/' . $job['Job']['Format']['icon'], array(
120                        'alt' => $job['Job']['Format']['name'],
121                )) . ' ');
122        }
123}
124
125?>
Note: See TracBrowser for help on using the repository browser.