All Data Structures Functions Variables Pages
ServiceHelper.php
1 <?php
2  /*********************************************************************************
3  * Zurmo is a customer relationship management program developed by
4  * Zurmo, Inc. Copyright (C) 2017 Zurmo Inc.
5  *
6  * Zurmo is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY ZURMO, ZURMO DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  *
13  * Zurmo is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  *
23  * You can contact Zurmo, Inc. with a mailing address at 27 North Wacker Drive
24  * Suite 370 Chicago, IL 60606. or at email address contact@zurmo.com.
25  *
26  * The interactive user interfaces in original and modified versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  *
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the Zurmo
32  * logo and Zurmo copyright notice. If the display of the logo is not reasonably
33  * feasible for technical reasons, the Appropriate Legal Notices must display the words
34  * "Copyright Zurmo Inc. 2017. All rights reserved".
35  ********************************************************************************/
36 
40  abstract class ServiceHelper
41  {
46  const REQUIRED_SERVICE = 1;
47 
52  const OPTIONAL_SERVICE = 2;
53 
59  protected $serviceHasBeenChecked = false;
60 
65  protected $message;
66 
71  protected $required = true;
72 
77  protected $minimumVersion;
78 
85  protected $checkResultedInWarning = false;
86 
87  abstract protected function checkService();
88 
89  public function didCheckProduceWarningStatus()
90  {
91  return $this->checkResultedInWarning;
92  }
93 
98  public function runCheckAndGetIfSuccessful()
99  {
100  $servicePassed = $this->checkService();
101  $this->serviceHasBeenChecked = true;
102  return $servicePassed;
103  }
104 
105  public function getMessage()
106  {
107  if (!$this->serviceHasBeenChecked)
108  {
109  throw new NotSupportedException();
110  }
111  return $this->message;
112  }
113 
114  public function isRequired()
115  {
116  return $this->required;
117  }
118 
119  public function getServiceType()
120  {
121  if ($this->isRequired())
122  {
123  return self::REQUIRED_SERVICE;
124  }
125  else
126  {
127  return self::OPTIONAL_SERVICE;
128  }
129  }
130 
136  protected function checkServiceAndSetMessagesByMethodNameAndDisplayLabel($methodName, $displayLabel)
137  {
138  assert('$this->minimumVersion != null &&
139  (is_array($this->minimumVersion) || is_string($this->minimumVersion))');
140  assert('is_string($methodName)');
141  assert('is_string($displayLabel)');
142  $actualVersion = null;
143  $minimumVersionLabel = $this->getMinimumVersionLabel();
144  $passed = $this->callCheckServiceMethod($methodName, $actualVersion);
145  if ($passed)
146  {
147  $this->message = $displayLabel . ' ' . Zurmo::t('InstallModule', 'version installed:') . ' ' . $actualVersion;
148  $this->message .= ' ' .Zurmo::t('InstallModule', 'Minimum version required:') . ' ' . $minimumVersionLabel;
149  return true;
150  }
151  else
152  {
153  if ($actualVersion == null)
154  {
155  $this->message = $displayLabel . ' ' . Zurmo::t('InstallModule', 'is not installed.');
156  }
157  else
158  {
159  $this->message = $displayLabel . ' ' . Zurmo::t('InstallModule', 'version installed:') . ' ' . $actualVersion;
160  }
161  $this->message .= "\n";
162  $this->message .= Zurmo::t('InstallModule', 'Minimum version required:') . ' ' . $minimumVersionLabel;
163  return false;
164  }
165  }
166 
172  protected function callCheckServiceMethod($methodName, & $actualVersion)
173  {
174  assert('is_string($methodName)');
175  assert('$actualVersion == null');
176  return InstallUtil::$methodName($this->minimumVersion, $actualVersion);
177  }
178 
179  protected function getMinimumVersionLabel()
180  {
181  assert('is_string($this->minimumVersion)');
182  return $this->minimumVersion;
183  }
184  }
185 ?>
checkServiceAndSetMessagesByMethodNameAndDisplayLabel($methodName, $displayLabel)
callCheckServiceMethod($methodName, &$actualVersion)
runCheckAndGetIfSuccessful()
Generated on Thu Apr 2 2020 07:10:43