@@ -230,7 +230,7 @@ |
||
230 | 230 | * @param string $user persistent identifier of the user who triggered the action |
231 | 231 | * @param string $category type of modification, from the fixed vocabulary: "NEW", "OWN", "MOD", "DEL" |
232 | 232 | * @param string $message message to log into the audit log |
233 | - * @return boolean TRUE if successful. Will terminate script execution on failure. |
|
233 | + * @return boolean|null TRUE if successful. Will terminate script execution on failure. |
|
234 | 234 | */ |
235 | 235 | public static function writeAudit($user, $category, $message) { |
236 | 236 | switch ($category) { |
@@ -191,9 +191,9 @@ |
||
191 | 191 | * gets the language setting in CAT |
192 | 192 | */ |
193 | 193 | static public function get_lang() { |
194 | - if(self::$LANG === '') |
|
195 | - list(self::$LANG, $xx) = self::set_lang(); |
|
196 | - return self::$LANG; |
|
194 | + if(self::$LANG === '') |
|
195 | + list(self::$LANG, $xx) = self::set_lang(); |
|
196 | + return self::$LANG; |
|
197 | 197 | } |
198 | 198 | |
199 | 199 | /** |
@@ -87,6 +87,7 @@ discard block |
||
87 | 87 | /** |
88 | 88 | * executes a query and triggers logging to the SQL audit log if it's not a SELECT |
89 | 89 | * @param string $querystring the query to be executed |
90 | + * @param string $db |
|
90 | 91 | * @return mixed the query result as mysqli_result object; or TRUE on non-return-value statements |
91 | 92 | */ |
92 | 93 | public static function exec($db, $querystring) { |
@@ -134,6 +135,8 @@ discard block |
||
134 | 135 | /** |
135 | 136 | * Checks if a raw data pointer is public data (return value FALSE) or if |
136 | 137 | * yes who the authorised admins to view it are (return array of user IDs) |
138 | + * @param string $table |
|
139 | + * @param string $row |
|
137 | 140 | */ |
138 | 141 | public static function isDataRestricted($table, $row) { |
139 | 142 | if ($table != "institution_option" && $table != "profile_option" && $table != "federation_option") |
@@ -175,6 +178,7 @@ discard block |
||
175 | 178 | |
176 | 179 | /** |
177 | 180 | * Retrieves the last auto-id of an INSERT. Needs to be called immediately after the corresponding exec() call |
181 | + * @param string $db |
|
178 | 182 | * @return int the last autoincrement-ID |
179 | 183 | */ |
180 | 184 | public static function lastID($db) { |
@@ -172,7 +172,7 @@ discard block |
||
172 | 172 | * named the same as device_id. The second option takes precedence. |
173 | 173 | * |
174 | 174 | * @param string $source_name The source file name |
175 | - * @param string $output_name The destination file name |
|
175 | + * @param integer $output_name The destination file name |
|
176 | 176 | * |
177 | 177 | * @return bool result of the copy operation |
178 | 178 | * @final not to be redefined |
@@ -216,8 +216,7 @@ discard block |
||
216 | 216 | * named the same as device_id. The second option takes precedence. |
217 | 217 | * |
218 | 218 | * @param string $source_name The source file name |
219 | - * @param string $output_name The destination file name |
|
220 | - * @param int $use_win_cp Set Windows charset if non-zero |
|
219 | + * @param integer $output_name The destination file name |
|
221 | 220 | * |
222 | 221 | * @final not to be redefined |
223 | 222 | */ |
@@ -262,8 +261,6 @@ discard block |
||
262 | 261 | * The second optional parameter, if nonzero, should be the character set understood by iconv |
263 | 262 | * This is required by the Windows installer and is expected to go away in the future. |
264 | 263 | * |
265 | - * @param string $source_name The source file name |
|
266 | - * @param int $use_win_cp Set Windows charset if non-zero |
|
267 | 264 | * |
268 | 265 | * @final not to be redefined |
269 | 266 | */ |
@@ -6,10 +6,10 @@ discard block |
||
6 | 6 | ?> |
7 | 7 | <?php |
8 | 8 | /** |
9 | - * This file defines the abstract Device class |
|
10 | - * |
|
11 | - * @package ModuleWriting |
|
12 | - */ |
|
9 | + * This file defines the abstract Device class |
|
10 | + * |
|
11 | + * @package ModuleWriting |
|
12 | + */ |
|
13 | 13 | |
14 | 14 | /** |
15 | 15 | * |
@@ -46,10 +46,10 @@ discard block |
||
46 | 46 | */ |
47 | 47 | |
48 | 48 | abstract class DeviceConfig { |
49 | - /** |
|
50 | - * stores the path to the temporary working directory for a module instance |
|
51 | - * @var string $FPATH |
|
52 | - */ |
|
49 | + /** |
|
50 | + * stores the path to the temporary working directory for a module instance |
|
51 | + * @var string $FPATH |
|
52 | + */ |
|
53 | 53 | public $FPATH; |
54 | 54 | |
55 | 55 | /** |
@@ -58,390 +58,390 @@ discard block |
||
58 | 58 | */ |
59 | 59 | public $specialities; |
60 | 60 | |
61 | - /** |
|
61 | + /** |
|
62 | 62 | * device module constructor should be defined by each module, but if it is not, then here is a default one |
63 | 63 | */ |
64 | 64 | |
65 | - public function __construct() { |
|
66 | - $this->supportedEapMethods = [EAP::$TLS, EAP::$PEAP_MSCHAP2, EAP::$TTLS_PAP]; |
|
67 | - debug(4,"This device supports the following EAP methods: "); |
|
68 | - debug(4,$this->supportedEapMethods); |
|
65 | + public function __construct() { |
|
66 | + $this->supportedEapMethods = [EAP::$TLS, EAP::$PEAP_MSCHAP2, EAP::$TTLS_PAP]; |
|
67 | + debug(4,"This device supports the following EAP methods: "); |
|
68 | + debug(4,$this->supportedEapMethods); |
|
69 | 69 | } |
70 | 70 | |
71 | 71 | |
72 | - /** |
|
73 | - * Set up working environment for a device module |
|
74 | - * |
|
75 | - * Sets up the device module environment taking into account the actual profile |
|
76 | - * selected by the user in the GUI. The selected profile is passed as the |
|
77 | - * Profile $profile argumant. |
|
78 | - * |
|
79 | - * This method needs to be called after the device instance has been created (the GUI class does that) |
|
80 | - * |
|
81 | - * setup performs the following tasks: |
|
82 | - * - collect profile attributes and pass them as the attributes property; |
|
83 | - * - create the temporary working directory |
|
84 | - * - process CA certificates and store them as 'internal:CAs' attribute |
|
85 | - * - process and save optional info files and store references to them in |
|
86 | - * 'internal:info_file' attribute |
|
87 | - * @param Profile $profile the profile object which will be passed by the caller |
|
88 | - * @final not to be redefined |
|
89 | - */ |
|
72 | + /** |
|
73 | + * Set up working environment for a device module |
|
74 | + * |
|
75 | + * Sets up the device module environment taking into account the actual profile |
|
76 | + * selected by the user in the GUI. The selected profile is passed as the |
|
77 | + * Profile $profile argumant. |
|
78 | + * |
|
79 | + * This method needs to be called after the device instance has been created (the GUI class does that) |
|
80 | + * |
|
81 | + * setup performs the following tasks: |
|
82 | + * - collect profile attributes and pass them as the attributes property; |
|
83 | + * - create the temporary working directory |
|
84 | + * - process CA certificates and store them as 'internal:CAs' attribute |
|
85 | + * - process and save optional info files and store references to them in |
|
86 | + * 'internal:info_file' attribute |
|
87 | + * @param Profile $profile the profile object which will be passed by the caller |
|
88 | + * @final not to be redefined |
|
89 | + */ |
|
90 | 90 | final public function setup(Profile $profile) { |
91 | - debug(4,"module setup start\n"); |
|
92 | - if(! $profile instanceof Profile) { |
|
93 | - debug(2,"No profile has been set\n"); |
|
94 | - error("No profile has been set"); |
|
95 | - exit; |
|
96 | - } |
|
97 | - $this->attributes = $this->getProfileAttributes($profile); |
|
98 | - if(! $this->selected_eap) { |
|
99 | - error("No EAP type specified."); |
|
100 | - exit; |
|
101 | - } |
|
102 | - // create temporary directory, its full path will be saved in $this->FPATH; |
|
103 | - $T = createTemporaryDirectory('installer'); |
|
104 | - $this->FPATH = $T['dir']; |
|
105 | - mkdir($T['dir'].'/tmp'); |
|
106 | - chdir($T['dir'].'/tmp'); |
|
107 | - $CAs = []; |
|
108 | - if(isset($this->attributes['eap:ca_file'])) { |
|
109 | - foreach ($this->attributes['eap:ca_file'] as $ca) { |
|
110 | - if($c = X509::processCertificate($ca)) |
|
111 | - $CAs[] = $c; |
|
112 | - } |
|
113 | - $this->attributes['internal:CAs'][0]=$CAs; |
|
114 | - } |
|
115 | - if(isset($this->attributes['support:info_file'])) { |
|
116 | - $this->attributes['internal:info_file'][0] = |
|
117 | - $this->saveInfoFile($this->attributes['support:info_file'][0]); |
|
118 | - } |
|
119 | - if(isset($this->attributes['general:logo_file'])) |
|
120 | - $this->attributes['internal:logo_file'] = |
|
121 | - $this->saveLogoFile($this->attributes['general:logo_file']); |
|
122 | - $this->attributes['internal:SSID'] = $this->getSSIDs()['add'];; |
|
123 | - $this->attributes['internal:remove_SSID'] = $this->getSSIDs()['del'];; |
|
124 | - $this->attributes['internal:consortia'] = $this->getConsortia(); |
|
125 | - $this->lang_index = CAT::get_lang(); |
|
126 | - // phpMD says the below is not needed. Wow. |
|
127 | - // $idp = new IdP($profile->institution); |
|
128 | - $olddomain = CAT::set_locale("core"); |
|
129 | - $this->support_email_substitute = sprintf(_("your local %s support"),Config::$CONSORTIUM['name']); |
|
130 | - $this->support_url_substitute = sprintf(_("your local %s support page"),Config::$CONSORTIUM['name']); |
|
131 | - CAT::set_locale($olddomain); |
|
132 | - |
|
133 | - if($this->signer && $this->options['sign']) |
|
134 | - $this->sign = CAT::$root . '/signer/'. $this->signer; |
|
135 | - $this->installerBasename = $this->getInstallerBasename(); |
|
91 | + debug(4,"module setup start\n"); |
|
92 | + if(! $profile instanceof Profile) { |
|
93 | + debug(2,"No profile has been set\n"); |
|
94 | + error("No profile has been set"); |
|
95 | + exit; |
|
96 | + } |
|
97 | + $this->attributes = $this->getProfileAttributes($profile); |
|
98 | + if(! $this->selected_eap) { |
|
99 | + error("No EAP type specified."); |
|
100 | + exit; |
|
101 | + } |
|
102 | + // create temporary directory, its full path will be saved in $this->FPATH; |
|
103 | + $T = createTemporaryDirectory('installer'); |
|
104 | + $this->FPATH = $T['dir']; |
|
105 | + mkdir($T['dir'].'/tmp'); |
|
106 | + chdir($T['dir'].'/tmp'); |
|
107 | + $CAs = []; |
|
108 | + if(isset($this->attributes['eap:ca_file'])) { |
|
109 | + foreach ($this->attributes['eap:ca_file'] as $ca) { |
|
110 | + if($c = X509::processCertificate($ca)) |
|
111 | + $CAs[] = $c; |
|
112 | + } |
|
113 | + $this->attributes['internal:CAs'][0]=$CAs; |
|
114 | + } |
|
115 | + if(isset($this->attributes['support:info_file'])) { |
|
116 | + $this->attributes['internal:info_file'][0] = |
|
117 | + $this->saveInfoFile($this->attributes['support:info_file'][0]); |
|
118 | + } |
|
119 | + if(isset($this->attributes['general:logo_file'])) |
|
120 | + $this->attributes['internal:logo_file'] = |
|
121 | + $this->saveLogoFile($this->attributes['general:logo_file']); |
|
122 | + $this->attributes['internal:SSID'] = $this->getSSIDs()['add'];; |
|
123 | + $this->attributes['internal:remove_SSID'] = $this->getSSIDs()['del'];; |
|
124 | + $this->attributes['internal:consortia'] = $this->getConsortia(); |
|
125 | + $this->lang_index = CAT::get_lang(); |
|
126 | + // phpMD says the below is not needed. Wow. |
|
127 | + // $idp = new IdP($profile->institution); |
|
128 | + $olddomain = CAT::set_locale("core"); |
|
129 | + $this->support_email_substitute = sprintf(_("your local %s support"),Config::$CONSORTIUM['name']); |
|
130 | + $this->support_url_substitute = sprintf(_("your local %s support page"),Config::$CONSORTIUM['name']); |
|
131 | + CAT::set_locale($olddomain); |
|
132 | + |
|
133 | + if($this->signer && $this->options['sign']) |
|
134 | + $this->sign = CAT::$root . '/signer/'. $this->signer; |
|
135 | + $this->installerBasename = $this->getInstallerBasename(); |
|
136 | 136 | } |
137 | 137 | |
138 | - /** |
|
139 | - * Selects the preferred eap method based on profile EAP configuration and device EAP capabilities |
|
140 | - * |
|
141 | - * @param array eap_array an array of eap methods supported by a given device |
|
142 | - * @return the best matching EAP type for the profile; or 0 if no match was found |
|
143 | - */ |
|
144 | - public function getPreferredEapType($eap_array) { |
|
145 | - foreach ($eap_array as $eap) { |
|
146 | - if(in_array($eap,$this->supportedEapMethods)) { |
|
138 | + /** |
|
139 | + * Selects the preferred eap method based on profile EAP configuration and device EAP capabilities |
|
140 | + * |
|
141 | + * @param array eap_array an array of eap methods supported by a given device |
|
142 | + * @return the best matching EAP type for the profile; or 0 if no match was found |
|
143 | + */ |
|
144 | + public function getPreferredEapType($eap_array) { |
|
145 | + foreach ($eap_array as $eap) { |
|
146 | + if(in_array($eap,$this->supportedEapMethods)) { |
|
147 | 147 | $this->selected_eap = $eap; |
148 | 148 | debug(4,"Selected EAP:"); |
149 | 149 | debug(4,$eap); |
150 | 150 | return($eap); |
151 | - } |
|
152 | - } |
|
153 | - return(0); |
|
154 | - } |
|
155 | - /** |
|
156 | - * prepare usage information for the installer |
|
157 | - * every device module should override this method |
|
158 | - * |
|
159 | - * @return String HTML text to be displayed |
|
160 | - */ |
|
161 | - public function writeDeviceInfo() { |
|
162 | - return _("Sorry, this should not happen - no additional information is available"); |
|
163 | - } |
|
164 | - |
|
165 | - /** |
|
166 | - * Copy a file from the module location to the temporary directory. |
|
167 | - * |
|
168 | - * If the second argument is provided then the file will be saved under the name |
|
169 | - * taken form this argument. If only one parameter is given, source and destination |
|
170 | - * filenames are the same |
|
171 | - * Source file can be located either in the Files subdirectory or in the sibdirectory of Files |
|
172 | - * named the same as device_id. The second option takes precedence. |
|
173 | - * |
|
174 | - * @param string $source_name The source file name |
|
175 | - * @param string $output_name The destination file name |
|
176 | - * |
|
177 | - * @return bool result of the copy operation |
|
178 | - * @final not to be redefined |
|
179 | - */ |
|
180 | - final protected function copyFile($source_name, $output_name = 0) { |
|
181 | - if ( $output_name === 0) |
|
151 | + } |
|
152 | + } |
|
153 | + return(0); |
|
154 | + } |
|
155 | + /** |
|
156 | + * prepare usage information for the installer |
|
157 | + * every device module should override this method |
|
158 | + * |
|
159 | + * @return String HTML text to be displayed |
|
160 | + */ |
|
161 | + public function writeDeviceInfo() { |
|
162 | + return _("Sorry, this should not happen - no additional information is available"); |
|
163 | + } |
|
164 | + |
|
165 | + /** |
|
166 | + * Copy a file from the module location to the temporary directory. |
|
167 | + * |
|
168 | + * If the second argument is provided then the file will be saved under the name |
|
169 | + * taken form this argument. If only one parameter is given, source and destination |
|
170 | + * filenames are the same |
|
171 | + * Source file can be located either in the Files subdirectory or in the sibdirectory of Files |
|
172 | + * named the same as device_id. The second option takes precedence. |
|
173 | + * |
|
174 | + * @param string $source_name The source file name |
|
175 | + * @param string $output_name The destination file name |
|
176 | + * |
|
177 | + * @return bool result of the copy operation |
|
178 | + * @final not to be redefined |
|
179 | + */ |
|
180 | + final protected function copyFile($source_name, $output_name = 0) { |
|
181 | + if ( $output_name === 0) |
|
182 | 182 | $output_name = $source_name; |
183 | 183 | |
184 | - debug(4,"fileCopy($source_name, $output_name)\n"); |
|
185 | - if(is_file($this->module_path.'/Files/'.$this->device_id.'/'.$source_name)) |
|
186 | - $source = $this->module_path.'/Files/'.$this->device_id.'/'.$source_name; |
|
187 | - elseif(is_file($this->module_path.'/Files/'.$source_name)) |
|
188 | - $source = $this->module_path.'/Files/'.$source_name; |
|
189 | - else { |
|
184 | + debug(4,"fileCopy($source_name, $output_name)\n"); |
|
185 | + if(is_file($this->module_path.'/Files/'.$this->device_id.'/'.$source_name)) |
|
186 | + $source = $this->module_path.'/Files/'.$this->device_id.'/'.$source_name; |
|
187 | + elseif(is_file($this->module_path.'/Files/'.$source_name)) |
|
188 | + $source = $this->module_path.'/Files/'.$source_name; |
|
189 | + else { |
|
190 | 190 | debug(2,"fileCopy:reqested file $source_name does not exist\n"); |
191 | 191 | return(FALSE); |
192 | - } |
|
193 | - debug(4,"Copying $source to $output_name\n"); |
|
194 | - $result = copy($source,"$output_name"); |
|
195 | - if(! $result ) |
|
192 | + } |
|
193 | + debug(4,"Copying $source to $output_name\n"); |
|
194 | + $result = copy($source,"$output_name"); |
|
195 | + if(! $result ) |
|
196 | 196 | debug(2,"fileCopy($source_name, $output_name) failed\n"); |
197 | - return($result); |
|
198 | - } |
|
199 | - |
|
200 | - |
|
201 | - /** |
|
202 | - * Copy a file from the module location to the temporary directory aplying transcoding. |
|
203 | - * |
|
204 | - * Transcoding is only required for Windows installers, and no Unicode support |
|
205 | - * in NSIS (NSIS version below 3) |
|
206 | - * Trancoding is only applied if the third optional parameter is set and nonzero |
|
207 | - * If Config::$NSIS_VERSION is set to 3 or more, no transcoding will be applied |
|
208 | - * regardless of the third parameter value. |
|
209 | - * If the second argument is provided and is not equal to 0, then the file will be |
|
210 | - * saved under the name taken from this argument. |
|
211 | - * If only one parameter is given or the second is equal to 0, source and destination |
|
212 | - * filenames are the same. |
|
213 | - * The third optional parameter, if nonzero, should be the character set understood by iconv |
|
214 | - * This is required by the Windows installer and is expected to go away in the future. |
|
215 | - * Source file can be located either in the Files subdirectory or in the sibdirectory of Files |
|
216 | - * named the same as device_id. The second option takes precedence. |
|
217 | - * |
|
218 | - * @param string $source_name The source file name |
|
219 | - * @param string $output_name The destination file name |
|
220 | - * @param int $use_win_cp Set Windows charset if non-zero |
|
221 | - * |
|
222 | - * @final not to be redefined |
|
223 | - */ |
|
224 | - |
|
225 | - final protected function translateFile($source_name, $output_name = 0, $encoding = 0) { |
|
226 | - if(Config::$NSIS_VERSION >= 3) |
|
197 | + return($result); |
|
198 | + } |
|
199 | + |
|
200 | + |
|
201 | + /** |
|
202 | + * Copy a file from the module location to the temporary directory aplying transcoding. |
|
203 | + * |
|
204 | + * Transcoding is only required for Windows installers, and no Unicode support |
|
205 | + * in NSIS (NSIS version below 3) |
|
206 | + * Trancoding is only applied if the third optional parameter is set and nonzero |
|
207 | + * If Config::$NSIS_VERSION is set to 3 or more, no transcoding will be applied |
|
208 | + * regardless of the third parameter value. |
|
209 | + * If the second argument is provided and is not equal to 0, then the file will be |
|
210 | + * saved under the name taken from this argument. |
|
211 | + * If only one parameter is given or the second is equal to 0, source and destination |
|
212 | + * filenames are the same. |
|
213 | + * The third optional parameter, if nonzero, should be the character set understood by iconv |
|
214 | + * This is required by the Windows installer and is expected to go away in the future. |
|
215 | + * Source file can be located either in the Files subdirectory or in the sibdirectory of Files |
|
216 | + * named the same as device_id. The second option takes precedence. |
|
217 | + * |
|
218 | + * @param string $source_name The source file name |
|
219 | + * @param string $output_name The destination file name |
|
220 | + * @param int $use_win_cp Set Windows charset if non-zero |
|
221 | + * |
|
222 | + * @final not to be redefined |
|
223 | + */ |
|
224 | + |
|
225 | + final protected function translateFile($source_name, $output_name = 0, $encoding = 0) { |
|
226 | + if(Config::$NSIS_VERSION >= 3) |
|
227 | 227 | $encoding = 0; |
228 | - if ( $output_name === 0) |
|
228 | + if ( $output_name === 0) |
|
229 | 229 | $output_name = $source_name; |
230 | 230 | |
231 | - debug(4,"translateFile($source_name, $output_name, $encoding)\n"); |
|
232 | - ob_start(); |
|
233 | - debug(4,$this->module_path.'/Files/'.$this->device_id.'/'.$source_name."\n"); |
|
234 | - if(is_file($this->module_path.'/Files/'.$this->device_id.'/'.$source_name)) |
|
235 | - $source = $this->module_path.'/Files/'.$this->device_id.'/'.$source_name; |
|
236 | - elseif(is_file($this->module_path.'/Files/'.$source_name)) |
|
237 | - $source = $this->module_path.'/Files/'.$source_name; |
|
238 | - include($source); |
|
239 | - $output = ob_get_clean(); |
|
240 | - if($encoding) { |
|
231 | + debug(4,"translateFile($source_name, $output_name, $encoding)\n"); |
|
232 | + ob_start(); |
|
233 | + debug(4,$this->module_path.'/Files/'.$this->device_id.'/'.$source_name."\n"); |
|
234 | + if(is_file($this->module_path.'/Files/'.$this->device_id.'/'.$source_name)) |
|
235 | + $source = $this->module_path.'/Files/'.$this->device_id.'/'.$source_name; |
|
236 | + elseif(is_file($this->module_path.'/Files/'.$source_name)) |
|
237 | + $source = $this->module_path.'/Files/'.$source_name; |
|
238 | + include($source); |
|
239 | + $output = ob_get_clean(); |
|
240 | + if($encoding) { |
|
241 | 241 | $output_c = iconv('UTF-8',$encoding.'//TRANSLIT',$output); |
242 | 242 | if($output_c) |
243 | - $output = $output_c; |
|
244 | - } |
|
245 | - $f = fopen("$output_name","w"); |
|
246 | - if(! $f) |
|
247 | - debug(2,"translateFile($source, $output_name, $encoding) failed\n"); |
|
248 | - fwrite($f,$output); |
|
249 | - fclose($f); |
|
250 | - debug(4,"translateFile($source, $output_name, $encoding) end\n"); |
|
251 | - } |
|
252 | - |
|
253 | - |
|
254 | - /** |
|
255 | - * Transcode a string adding double quotes escaping |
|
256 | - * |
|
257 | - * Transcoding is only required for Windows installers, and no Unicode support |
|
258 | - * in NSIS (NSIS version below 3) |
|
259 | - * Trancoding is only applied if the third optional parameter is set and nonzero |
|
260 | - * If Config::$NSIS_VERSION is set to 3 or more, no transcoding will be applied |
|
261 | - * regardless of the second parameter value. |
|
262 | - * The second optional parameter, if nonzero, should be the character set understood by iconv |
|
263 | - * This is required by the Windows installer and is expected to go away in the future. |
|
264 | - * |
|
265 | - * @param string $source_name The source file name |
|
266 | - * @param int $use_win_cp Set Windows charset if non-zero |
|
267 | - * |
|
268 | - * @final not to be redefined |
|
269 | - */ |
|
270 | - |
|
271 | - final protected function translateString($source_string,$encoding = 0) { |
|
272 | - if(Config::$NSIS_VERSION >= 3) |
|
243 | + $output = $output_c; |
|
244 | + } |
|
245 | + $f = fopen("$output_name","w"); |
|
246 | + if(! $f) |
|
247 | + debug(2,"translateFile($source, $output_name, $encoding) failed\n"); |
|
248 | + fwrite($f,$output); |
|
249 | + fclose($f); |
|
250 | + debug(4,"translateFile($source, $output_name, $encoding) end\n"); |
|
251 | + } |
|
252 | + |
|
253 | + |
|
254 | + /** |
|
255 | + * Transcode a string adding double quotes escaping |
|
256 | + * |
|
257 | + * Transcoding is only required for Windows installers, and no Unicode support |
|
258 | + * in NSIS (NSIS version below 3) |
|
259 | + * Trancoding is only applied if the third optional parameter is set and nonzero |
|
260 | + * If Config::$NSIS_VERSION is set to 3 or more, no transcoding will be applied |
|
261 | + * regardless of the second parameter value. |
|
262 | + * The second optional parameter, if nonzero, should be the character set understood by iconv |
|
263 | + * This is required by the Windows installer and is expected to go away in the future. |
|
264 | + * |
|
265 | + * @param string $source_name The source file name |
|
266 | + * @param int $use_win_cp Set Windows charset if non-zero |
|
267 | + * |
|
268 | + * @final not to be redefined |
|
269 | + */ |
|
270 | + |
|
271 | + final protected function translateString($source_string,$encoding = 0) { |
|
272 | + if(Config::$NSIS_VERSION >= 3) |
|
273 | 273 | $encoding = 0; |
274 | - if($encoding) |
|
274 | + if($encoding) |
|
275 | 275 | $output_c = iconv('UTF-8',$encoding.'//TRANSLIT',$source_string); |
276 | - else |
|
276 | + else |
|
277 | 277 | $output_c = $source_string; |
278 | - if($output_c) |
|
279 | - $source_string = str_replace('"','$\\"',$output_c); |
|
280 | - else |
|
281 | - debug(2,"Failed to convert string $source_string\n"); |
|
282 | - return $source_string; |
|
283 | - } |
|
284 | - |
|
285 | - |
|
286 | - /** |
|
287 | - * Save certificate files in either DER or PEM format |
|
288 | - * |
|
289 | - * Certificate files will be saved in the module working directory. |
|
290 | - * @param string $format only "der" and "pem" are currently allowed |
|
291 | - * @return array an array of arrays or FALSE on error |
|
292 | - * saved certificate file names are avalable under the 'file' index |
|
293 | - * additional array entries are indexed as 'sha1', 'md5', and 'root'. |
|
294 | - * sha1 and md5 are correcponding certificate hashes |
|
295 | - * root is set to 1 for the CA roor certicicate and 0 otherwise |
|
296 | - */ |
|
297 | - final protected function saveCertificateFiles($format) { |
|
298 | - if($format == 'der' || $format == 'pam') { |
|
299 | - $i = 0; |
|
300 | - $CA_files = []; |
|
301 | - $ca_array = $this->attributes['internal:CAs'][0]; |
|
302 | - if(! $ca_array) |
|
303 | - return(FALSE); |
|
304 | - foreach ($ca_array as $CA) { |
|
305 | - $f = fopen("cert-$i.crt","w"); |
|
306 | - if(! $f) die("problem opening the file\n"); |
|
307 | - if($format == "pem") |
|
278 | + if($output_c) |
|
279 | + $source_string = str_replace('"','$\\"',$output_c); |
|
280 | + else |
|
281 | + debug(2,"Failed to convert string $source_string\n"); |
|
282 | + return $source_string; |
|
283 | + } |
|
284 | + |
|
285 | + |
|
286 | + /** |
|
287 | + * Save certificate files in either DER or PEM format |
|
288 | + * |
|
289 | + * Certificate files will be saved in the module working directory. |
|
290 | + * @param string $format only "der" and "pem" are currently allowed |
|
291 | + * @return array an array of arrays or FALSE on error |
|
292 | + * saved certificate file names are avalable under the 'file' index |
|
293 | + * additional array entries are indexed as 'sha1', 'md5', and 'root'. |
|
294 | + * sha1 and md5 are correcponding certificate hashes |
|
295 | + * root is set to 1 for the CA roor certicicate and 0 otherwise |
|
296 | + */ |
|
297 | + final protected function saveCertificateFiles($format) { |
|
298 | + if($format == 'der' || $format == 'pam') { |
|
299 | + $i = 0; |
|
300 | + $CA_files = []; |
|
301 | + $ca_array = $this->attributes['internal:CAs'][0]; |
|
302 | + if(! $ca_array) |
|
303 | + return(FALSE); |
|
304 | + foreach ($ca_array as $CA) { |
|
305 | + $f = fopen("cert-$i.crt","w"); |
|
306 | + if(! $f) die("problem opening the file\n"); |
|
307 | + if($format == "pem") |
|
308 | 308 | fwrite($f,$CA['pem']); |
309 | - else |
|
309 | + else |
|
310 | 310 | fwrite($f,$CA['der']); |
311 | - fclose($f); |
|
312 | - $C = []; |
|
313 | - $C['file'] = "cert-$i.crt"; |
|
314 | - $C['sha1'] = $CA['sha1']; |
|
315 | - $C['md5'] = $CA['md5']; |
|
316 | - $C['root'] = $CA['root']; |
|
317 | - $CA_files[] = $C; |
|
318 | - $i++; |
|
319 | - } |
|
320 | - return($CA_files); |
|
321 | - } else { |
|
322 | - debug(2, 'incorrect format value specified'); |
|
323 | - return(FALSE); |
|
324 | - } |
|
311 | + fclose($f); |
|
312 | + $C = []; |
|
313 | + $C['file'] = "cert-$i.crt"; |
|
314 | + $C['sha1'] = $CA['sha1']; |
|
315 | + $C['md5'] = $CA['md5']; |
|
316 | + $C['root'] = $CA['root']; |
|
317 | + $CA_files[] = $C; |
|
318 | + $i++; |
|
319 | + } |
|
320 | + return($CA_files); |
|
321 | + } else { |
|
322 | + debug(2, 'incorrect format value specified'); |
|
323 | + return(FALSE); |
|
324 | + } |
|
325 | 325 | |
326 | - } |
|
327 | - |
|
328 | - /** |
|
329 | - * Generate installer filename base. |
|
330 | - * Device module should use this name adding an extension. |
|
331 | - * Normally the device identifier follows the Consortium name. |
|
332 | - * The sting taken for the device identifier equals (by default) to the index in the listDevices array, |
|
333 | - * but can be overriden with the 'device_id' device option. |
|
334 | - */ |
|
335 | - private function getInstallerBasename() { |
|
336 | - $replace_pattern = '/[ ()\/\'"]+/'; |
|
337 | - debug(4,"getInstallerBasename1:".$this->attributes['general:instname'][0]."\n"); |
|
338 | - $inst = iconv("UTF-8", "US-ASCII//TRANSLIT", preg_replace($replace_pattern, '_', $this->attributes['general:instname'][0])); |
|
339 | - debug(4,"getInstallerBasename2:$inst\n"); |
|
340 | - $Inst_a = explode('_',$inst); |
|
341 | - if(count($Inst_a) > 2) { |
|
342 | - $inst = ''; |
|
343 | - foreach($Inst_a as $i) |
|
344 | - $inst .= $i[0]; |
|
345 | - } |
|
346 | - $c_name = iconv("UTF-8", "US-ASCII//TRANSLIT", preg_replace($replace_pattern, '_', Config::$CONSORTIUM['name'])); |
|
347 | - if($this->attributes['internal:profile_count'][0] > 1) { |
|
348 | - if(!empty($this->attributes['profile:name']) && ! empty($this->attributes['profile:name'][0])) { |
|
349 | - $prof = iconv("UTF-8", "US-ASCII//TRANSLIT", preg_replace($replace_pattern, '_', $this->attributes['profile:name'][0])); |
|
350 | - $prof = preg_replace('/_+$/','',$prof); |
|
351 | - return $c_name. '-'. $this->getDeviceId() . $inst .'-'. $prof; |
|
352 | - } |
|
353 | - } |
|
354 | - return $c_name. '-'. $this->getDeviceId() . $inst; |
|
355 | - } |
|
356 | - |
|
357 | - private function getDeviceId() { |
|
326 | + } |
|
327 | + |
|
328 | + /** |
|
329 | + * Generate installer filename base. |
|
330 | + * Device module should use this name adding an extension. |
|
331 | + * Normally the device identifier follows the Consortium name. |
|
332 | + * The sting taken for the device identifier equals (by default) to the index in the listDevices array, |
|
333 | + * but can be overriden with the 'device_id' device option. |
|
334 | + */ |
|
335 | + private function getInstallerBasename() { |
|
336 | + $replace_pattern = '/[ ()\/\'"]+/'; |
|
337 | + debug(4,"getInstallerBasename1:".$this->attributes['general:instname'][0]."\n"); |
|
338 | + $inst = iconv("UTF-8", "US-ASCII//TRANSLIT", preg_replace($replace_pattern, '_', $this->attributes['general:instname'][0])); |
|
339 | + debug(4,"getInstallerBasename2:$inst\n"); |
|
340 | + $Inst_a = explode('_',$inst); |
|
341 | + if(count($Inst_a) > 2) { |
|
342 | + $inst = ''; |
|
343 | + foreach($Inst_a as $i) |
|
344 | + $inst .= $i[0]; |
|
345 | + } |
|
346 | + $c_name = iconv("UTF-8", "US-ASCII//TRANSLIT", preg_replace($replace_pattern, '_', Config::$CONSORTIUM['name'])); |
|
347 | + if($this->attributes['internal:profile_count'][0] > 1) { |
|
348 | + if(!empty($this->attributes['profile:name']) && ! empty($this->attributes['profile:name'][0])) { |
|
349 | + $prof = iconv("UTF-8", "US-ASCII//TRANSLIT", preg_replace($replace_pattern, '_', $this->attributes['profile:name'][0])); |
|
350 | + $prof = preg_replace('/_+$/','',$prof); |
|
351 | + return $c_name. '-'. $this->getDeviceId() . $inst .'-'. $prof; |
|
352 | + } |
|
353 | + } |
|
354 | + return $c_name. '-'. $this->getDeviceId() . $inst; |
|
355 | + } |
|
356 | + |
|
357 | + private function getDeviceId() { |
|
358 | 358 | $d_id = $this->device_id; |
359 | 359 | if(isset($this->options['device_id'])) |
360 | - $d_id = $this->options['device_id']; |
|
360 | + $d_id = $this->options['device_id']; |
|
361 | 361 | if($d_id !== '') |
362 | - $d_id .= '-'; |
|
362 | + $d_id .= '-'; |
|
363 | 363 | return $d_id; |
364 | - } |
|
364 | + } |
|
365 | 365 | |
366 | 366 | |
367 | - private function getSSIDs() { |
|
367 | + private function getSSIDs() { |
|
368 | 368 | $S['add']=[]; |
369 | 369 | $S['del']=[]; |
370 | 370 | if (isset(Config::$CONSORTIUM['ssid'])) { |
371 | - foreach (Config::$CONSORTIUM['ssid'] as $ssid) { |
|
371 | + foreach (Config::$CONSORTIUM['ssid'] as $ssid) { |
|
372 | 372 | if(isset(Config::$CONSORTIUM['tkipsupport']) && Config::$CONSORTIUM['tkipsupport'] == TRUE) |
373 | - $S['add'][$ssid] = 'TKIP'; |
|
373 | + $S['add'][$ssid] = 'TKIP'; |
|
374 | 374 | else { |
375 | - $S['add'][$ssid] = 'AES'; |
|
376 | - $S['del'][$ssid] = 'TKIP'; |
|
375 | + $S['add'][$ssid] = 'AES'; |
|
376 | + $S['del'][$ssid] = 'TKIP'; |
|
377 | + } |
|
377 | 378 | } |
378 | - } |
|
379 | 379 | } |
380 | 380 | if(isset($this->attributes['media:SSID'])) { |
381 | - $SSID = $this->attributes['media:SSID']; |
|
381 | + $SSID = $this->attributes['media:SSID']; |
|
382 | 382 | |
383 | - foreach($SSID as $ssid) |
|
384 | - $S['add'][$ssid] = 'AES'; |
|
385 | - } |
|
383 | + foreach($SSID as $ssid) |
|
384 | + $S['add'][$ssid] = 'AES'; |
|
385 | + } |
|
386 | 386 | if(isset($this->attributes['media:SSID_with_legacy'])) { |
387 | - $SSID = $this->attributes['media:SSID_with_legacy']; |
|
388 | - foreach($SSID as $ssid) |
|
389 | - $S['add'][$ssid] = 'TKIP'; |
|
387 | + $SSID = $this->attributes['media:SSID_with_legacy']; |
|
388 | + foreach($SSID as $ssid) |
|
389 | + $S['add'][$ssid] = 'TKIP'; |
|
390 | 390 | } |
391 | 391 | if(isset($this->attributes['media:remove_SSID'])) { |
392 | - $SSID = $this->attributes['media:remove_SSID']; |
|
393 | - foreach($SSID as $ssid) |
|
394 | - $S['del'][$ssid] = 'DEL'; |
|
392 | + $SSID = $this->attributes['media:remove_SSID']; |
|
393 | + foreach($SSID as $ssid) |
|
394 | + $S['del'][$ssid] = 'DEL'; |
|
395 | 395 | } |
396 | 396 | return $S; |
397 | - } |
|
397 | + } |
|
398 | 398 | |
399 | - private function getConsortia() { |
|
400 | - $OIs = []; |
|
401 | - $OIs = array_merge($OIs, Config::$CONSORTIUM['interworking-consortium-oi']); |
|
402 | - if (isset($this->attributes['media:consortium_OI'])) |
|
403 | - foreach ($this->attributes['media:consortium_OI'] as $new_oi) |
|
399 | + private function getConsortia() { |
|
400 | + $OIs = []; |
|
401 | + $OIs = array_merge($OIs, Config::$CONSORTIUM['interworking-consortium-oi']); |
|
402 | + if (isset($this->attributes['media:consortium_OI'])) |
|
403 | + foreach ($this->attributes['media:consortium_OI'] as $new_oi) |
|
404 | 404 | $OIs[] = $new_oi; |
405 | - return $OIs; |
|
406 | - } |
|
405 | + return $OIs; |
|
406 | + } |
|
407 | 407 | |
408 | - /** |
|
409 | - * An array with shorthand definitions for MIME types |
|
410 | - * @var array |
|
411 | - */ |
|
412 | - private $mime_extensions = [ |
|
413 | - 'text/plain' => 'txt', |
|
414 | - 'text/rtf' => 'rtf', |
|
415 | - 'application/pdf' =>'pdf', |
|
416 | - ]; |
|
417 | - |
|
418 | - private function saveLogoFile($Logos) { |
|
408 | + /** |
|
409 | + * An array with shorthand definitions for MIME types |
|
410 | + * @var array |
|
411 | + */ |
|
412 | + private $mime_extensions = [ |
|
413 | + 'text/plain' => 'txt', |
|
414 | + 'text/rtf' => 'rtf', |
|
415 | + 'application/pdf' =>'pdf', |
|
416 | + ]; |
|
417 | + |
|
418 | + private function saveLogoFile($Logos) { |
|
419 | 419 | $i=0; |
420 | 420 | $returnarray= []; |
421 | 421 | foreach ($Logos as $blob) { |
422 | - $finfo = new finfo(FILEINFO_MIME_TYPE); |
|
423 | - $mime = $finfo->buffer($blob); |
|
424 | - if(preg_match('/^image\/(.*)/',$mime,$m)) |
|
422 | + $finfo = new finfo(FILEINFO_MIME_TYPE); |
|
423 | + $mime = $finfo->buffer($blob); |
|
424 | + if(preg_match('/^image\/(.*)/',$mime,$m)) |
|
425 | 425 | $ext = $m[1]; |
426 | - else |
|
426 | + else |
|
427 | 427 | $ext = 'unsupported'; |
428 | - debug(4,"saveLogoFile: $mime : $ext\n"); |
|
429 | - $f_name = 'logo-'.$i.'.'.$ext; |
|
430 | - $f = fopen($f_name,"w"); |
|
431 | - if(! $f) { |
|
432 | - debug(2,"saveLogoFile failed for: $f_name\n"); |
|
433 | - die("problem opening the file\n"); |
|
434 | - } |
|
435 | - fwrite($f,$blob); |
|
436 | - fclose($f); |
|
437 | - $returnarray[]= ['name'=>$f_name,'mime'=>$ext]; |
|
438 | - $i++; |
|
428 | + debug(4,"saveLogoFile: $mime : $ext\n"); |
|
429 | + $f_name = 'logo-'.$i.'.'.$ext; |
|
430 | + $f = fopen($f_name,"w"); |
|
431 | + if(! $f) { |
|
432 | + debug(2,"saveLogoFile failed for: $f_name\n"); |
|
433 | + die("problem opening the file\n"); |
|
434 | + } |
|
435 | + fwrite($f,$blob); |
|
436 | + fclose($f); |
|
437 | + $returnarray[]= ['name'=>$f_name,'mime'=>$ext]; |
|
438 | + $i++; |
|
439 | 439 | } |
440 | 440 | return($returnarray); |
441 | - } |
|
441 | + } |
|
442 | 442 | |
443 | 443 | |
444 | - private function saveInfoFile($blob) { |
|
444 | + private function saveInfoFile($blob) { |
|
445 | 445 | $finfo = new finfo(FILEINFO_MIME_TYPE); |
446 | 446 | $mime = $finfo->buffer($blob); |
447 | 447 | $ext = isset($this->mime_extensions[$mime]) ? $this->mime_extensions[$mime] : 'usupported'; |
@@ -451,43 +451,43 @@ discard block |
||
451 | 451 | fwrite($f,$blob); |
452 | 452 | fclose($f); |
453 | 453 | return(['name'=>'local-info.'.$ext,'mime'=>$ext]); |
454 | - } |
|
455 | - |
|
456 | - private function getProfileAttributes(Profile $profile) { |
|
457 | - $eaps = $profile->getEapMethodsinOrderOfPreference(1); |
|
458 | - if($eap = $this->getPreferredEapType($eaps)) { |
|
459 | - $a = $profile->getCollapsedAttributes($eap); |
|
460 | - $a['eap'] = $eap; |
|
461 | - $a['all_eaps'] = $eaps; |
|
462 | - return($a); |
|
463 | - } else { |
|
464 | - error("No supported eap types found for this profile."); |
|
465 | - return(FALSE); |
|
466 | - } |
|
467 | - } |
|
454 | + } |
|
455 | + |
|
456 | + private function getProfileAttributes(Profile $profile) { |
|
457 | + $eaps = $profile->getEapMethodsinOrderOfPreference(1); |
|
458 | + if($eap = $this->getPreferredEapType($eaps)) { |
|
459 | + $a = $profile->getCollapsedAttributes($eap); |
|
460 | + $a['eap'] = $eap; |
|
461 | + $a['all_eaps'] = $eaps; |
|
462 | + return($a); |
|
463 | + } else { |
|
464 | + error("No supported eap types found for this profile."); |
|
465 | + return(FALSE); |
|
466 | + } |
|
467 | + } |
|
468 | 468 | /** |
469 | - * dumps attributes for debugging purposes |
|
470 | - * |
|
471 | - * dumpAttibutes method is supplied for debuging purposes, it simply dumps the attribute array |
|
472 | - * to a file with name passed in the attribute. |
|
473 | - * @param string $file the output file name |
|
474 | - */ |
|
475 | - protected function dumpAttibutes($file) { |
|
469 | + * dumps attributes for debugging purposes |
|
470 | + * |
|
471 | + * dumpAttibutes method is supplied for debuging purposes, it simply dumps the attribute array |
|
472 | + * to a file with name passed in the attribute. |
|
473 | + * @param string $file the output file name |
|
474 | + */ |
|
475 | + protected function dumpAttibutes($file) { |
|
476 | 476 | ob_start(); |
477 | 477 | print_r($this->attributes); |
478 | 478 | $output = ob_get_clean(); |
479 | 479 | $f = fopen($file,"w"); |
480 | 480 | fwrite($f,$output); |
481 | 481 | fclose($f); |
482 | - } |
|
482 | + } |
|
483 | 483 | /** |
484 | - * placeholder for the main device method |
|
485 | - * |
|
486 | - */ |
|
484 | + * placeholder for the main device method |
|
485 | + * |
|
486 | + */ |
|
487 | 487 | |
488 | - protected function writeInstaller() { |
|
489 | - return("download path"); |
|
490 | - } |
|
488 | + protected function writeInstaller() { |
|
489 | + return("download path"); |
|
490 | + } |
|
491 | 491 | |
492 | 492 | /** |
493 | 493 | * Array passing all options to the device module. |
@@ -521,76 +521,76 @@ discard block |
||
521 | 521 | * @see X509::processCertificate() |
522 | 522 | * @var array $attributes |
523 | 523 | */ |
524 | - public $attributes; |
|
524 | + public $attributes; |
|
525 | 525 | /** |
526 | - * stores the path to the module source location and is used |
|
527 | - * by copyFile and translateFile |
|
528 | - * the only reason for it to be a public variable ies that it is set by the DeviceFactory class |
|
529 | - * module_path should not be used by module drivers. |
|
530 | - * @var string |
|
531 | - */ |
|
532 | - public $module_path; |
|
526 | + * stores the path to the module source location and is used |
|
527 | + * by copyFile and translateFile |
|
528 | + * the only reason for it to be a public variable ies that it is set by the DeviceFactory class |
|
529 | + * module_path should not be used by module drivers. |
|
530 | + * @var string |
|
531 | + */ |
|
532 | + public $module_path; |
|
533 | 533 | |
534 | 534 | /** |
535 | 535 | * The optimal EAP type |
536 | 536 | * |
537 | 537 | */ |
538 | 538 | /** |
539 | - * optimal EAP method selected given profile and device |
|
540 | - * @var EAP::constant |
|
541 | - */ |
|
542 | - public $selected_eap; |
|
539 | + * optimal EAP method selected given profile and device |
|
540 | + * @var EAP::constant |
|
541 | + */ |
|
542 | + public $selected_eap; |
|
543 | 543 | /** |
544 | - * the path to the profile signing program |
|
545 | - * device modules which require signing should use this property to exec the signer |
|
546 | - * the signer program must accept two arguments - input and output file names |
|
547 | - * the signer program mus operate in the local directory and filenames are relative to this |
|
548 | - * directory |
|
549 | - * |
|
550 | - *@var string |
|
551 | - */ |
|
552 | - public $sign; |
|
553 | - public $signer; |
|
544 | + * the path to the profile signing program |
|
545 | + * device modules which require signing should use this property to exec the signer |
|
546 | + * the signer program must accept two arguments - input and output file names |
|
547 | + * the signer program mus operate in the local directory and filenames are relative to this |
|
548 | + * directory |
|
549 | + * |
|
550 | + *@var string |
|
551 | + */ |
|
552 | + public $sign; |
|
553 | + public $signer; |
|
554 | 554 | /** |
555 | - * the string referencing the language (index ot the Config::$LANGUAGES array). |
|
556 | - * It is set to the current language and may be used by the device module to |
|
557 | - * set its language |
|
558 | - * |
|
559 | - *@var string |
|
560 | - */ |
|
561 | - public $lang_index; |
|
562 | - /** |
|
563 | - * The string identifier of the device (don't show this to users) |
|
564 | - * @var string |
|
565 | - */ |
|
566 | - public $device_id; |
|
567 | - |
|
568 | - /** |
|
569 | - * See devices-template.php for a list of available options |
|
570 | - * @var array |
|
571 | - */ |
|
572 | - public $options; |
|
573 | - |
|
574 | - /** |
|
575 | - * This string will be shown if no support email was configured by the admin |
|
576 | - * |
|
577 | - * @var string |
|
578 | - */ |
|
579 | - public static $support_email_substitute; |
|
580 | - |
|
581 | - /** |
|
582 | - * This string will be shown if no support URL was configured by the admin |
|
583 | - * |
|
584 | - * @var string |
|
585 | - */ |
|
586 | - public static $support_url_substitute; |
|
587 | - |
|
588 | - /** |
|
589 | - * This string should be used by all installer modules to set the |
|
590 | - * installer file basename. |
|
591 | - * |
|
592 | - * @var string |
|
593 | - */ |
|
594 | - public static $installerBasename; |
|
555 | + * the string referencing the language (index ot the Config::$LANGUAGES array). |
|
556 | + * It is set to the current language and may be used by the device module to |
|
557 | + * set its language |
|
558 | + * |
|
559 | + *@var string |
|
560 | + */ |
|
561 | + public $lang_index; |
|
562 | + /** |
|
563 | + * The string identifier of the device (don't show this to users) |
|
564 | + * @var string |
|
565 | + */ |
|
566 | + public $device_id; |
|
567 | + |
|
568 | + /** |
|
569 | + * See devices-template.php for a list of available options |
|
570 | + * @var array |
|
571 | + */ |
|
572 | + public $options; |
|
573 | + |
|
574 | + /** |
|
575 | + * This string will be shown if no support email was configured by the admin |
|
576 | + * |
|
577 | + * @var string |
|
578 | + */ |
|
579 | + public static $support_email_substitute; |
|
580 | + |
|
581 | + /** |
|
582 | + * This string will be shown if no support URL was configured by the admin |
|
583 | + * |
|
584 | + * @var string |
|
585 | + */ |
|
586 | + public static $support_url_substitute; |
|
587 | + |
|
588 | + /** |
|
589 | + * This string should be used by all installer modules to set the |
|
590 | + * installer file basename. |
|
591 | + * |
|
592 | + * @var string |
|
593 | + */ |
|
594 | + public static $installerBasename; |
|
595 | 595 | } |
596 | 596 | ?> |
@@ -661,7 +661,7 @@ |
||
661 | 661 | * This function retrieves the federation attributes. If called with the optional parameter, only attribute values for the attribute |
662 | 662 | * name in $option_name are retrieved; otherwise, all attributes are retrieved. |
663 | 663 | * |
664 | - * @param string $option_name optionally, the name of the attribute that is to be retrieved |
|
664 | + * @param integer $option_name optionally, the name of the attribute that is to be retrieved |
|
665 | 665 | * @return array of arrays of attributes which were set for this IdP |
666 | 666 | */ |
667 | 667 | public function getAttributes($option_name = 0) { |
@@ -678,10 +678,10 @@ |
||
678 | 678 | } |
679 | 679 | |
680 | 680 | /** |
681 | - * deletes all attributes in this federation except the _file ones, these are reported as array |
|
682 | - * |
|
683 | - * @return array list of row id's of file-based attributes which weren't deleted |
|
684 | - */ |
|
681 | + * deletes all attributes in this federation except the _file ones, these are reported as array |
|
682 | + * |
|
683 | + * @return array list of row id's of file-based attributes which weren't deleted |
|
684 | + */ |
|
685 | 685 | public function beginFlushAttributes() { |
686 | 686 | DBConnection::exec(Federation::$DB_TYPE, "DELETE FROM federation_option WHERE federation_id = '$this->identifier' AND option_name NOT LIKE '%_file'"); |
687 | 687 | $exec_q = DBConnection::exec(Federation::$DB_TYPE, "SELECT row FROM federation_option WHERE federation_id = '$this->identifier'"); |
@@ -32,6 +32,7 @@ discard block |
||
32 | 32 | /** |
33 | 33 | * write debug messages to the log |
34 | 34 | * |
35 | + * @param integer $level |
|
35 | 36 | */ |
36 | 37 | function debug($level, $t) { |
37 | 38 | if (Config::$DEBUG_LEVEL >= $level) { |
@@ -130,7 +131,7 @@ discard block |
||
130 | 131 | * generates a UUID |
131 | 132 | * |
132 | 133 | * @param string $prefix an extra prefix to set before the UUID |
133 | - * @return UUID (possibly prefixed) |
|
134 | + * @return string (possibly prefixed) |
|
134 | 135 | */ |
135 | 136 | function uuid($prefix = '', $deterministic_source = NULL) { |
136 | 137 | if ($deterministic_source === NULL) |
@@ -180,32 +180,32 @@ discard block |
||
180 | 180 | function createTemporaryDirectory($purpose = 'installer',$fail = 1) { |
181 | 181 | $name = md5(time().rand()); |
182 | 182 | switch($purpose) { |
183 | - case 'installer': |
|
183 | + case 'installer': |
|
184 | 184 | $path = CAT::$root.'/var/installer_cache'; |
185 | - break; |
|
186 | - case 'logo': |
|
185 | + break; |
|
186 | + case 'logo': |
|
187 | 187 | $path = CAT::$root.'/web/downloads/logos'; |
188 | - break; |
|
189 | - case 'test': |
|
188 | + break; |
|
189 | + case 'test': |
|
190 | 190 | $path = CAT::$root.'/var/tmp'; |
191 | - break; |
|
192 | - default: |
|
191 | + break; |
|
192 | + default: |
|
193 | 193 | error("unable to create temporary directory for unknown purpose: $purpose\n"); |
194 | - exit; |
|
194 | + exit; |
|
195 | 195 | } |
196 | 196 | $tmp_dir = $path .'/'. $name; |
197 | 197 | debug(4,"temp dir: $purpose : $tmp_dir\n"); |
198 | 198 | if(! mkdir($tmp_dir,0700, true)) { |
199 | - if($fail) { |
|
200 | - error("unable to create temporary directory: $tmp_dir\n"); |
|
201 | - exit; |
|
202 | - } else { |
|
199 | + if($fail) { |
|
200 | + error("unable to create temporary directory: $tmp_dir\n"); |
|
201 | + exit; |
|
202 | + } else { |
|
203 | 203 | debug(4, "Directory creation failed for $tmp_dir\n"); |
204 | 204 | return ['base'=>$path,'dir'=>'',$name=>'']; |
205 | - } |
|
205 | + } |
|
206 | 206 | } else |
207 | - debug(4, "Directory created: $tmp_dir\n"); |
|
208 | - return ['base'=>$path,'dir'=>$tmp_dir,'name'=>$name]; |
|
207 | + debug(4, "Directory created: $tmp_dir\n"); |
|
208 | + return ['base'=>$path,'dir'=>$tmp_dir,'name'=>$name]; |
|
209 | 209 | } |
210 | 210 | |
211 | 211 | function png_inject_consortium_logo ($inputpngstring, $symbolsize = 12, $marginsymbols = 4) { |
@@ -236,7 +236,7 @@ discard block |
||
236 | 236 | $targetplacementy = $symbolsize * round(($sizeinput[1] / 2 - ($targetheight - $symbolsize) / 2)/$symbolsize); |
237 | 237 | imagecopyresized($inputgd, $whiteimage, $targetplacementx-$symbolsize, $targetplacementy-$symbolsize, 0, 0, $targetwidth+2*$symbolsize, $targetheight+2*$symbolsize, $targetwidth+2*$symbolsize, $targetheight+2*$symbolsize); |
238 | 238 | imagecopyresized($inputgd, $logogd, $targetplacementx, $targetplacementy, 0, 0, $targetwidth , $targetheight , $sizelogo[0] , $sizelogo[1]); |
239 | - // imagecopyresized($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); |
|
239 | + // imagecopyresized($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); |
|
240 | 240 | ob_start(); |
241 | 241 | imagepng($inputgd); |
242 | 242 | return ob_get_clean(); |
@@ -68,6 +68,7 @@ discard block |
||
68 | 68 | * Cannot be used to define a new IdP in the database! This happens via Federation::newIdP() |
69 | 69 | * |
70 | 70 | * @param integer $i_id the database row identifier |
71 | + * @return string |
|
71 | 72 | */ |
72 | 73 | public function __construct($i_id) { |
73 | 74 | debug(3, "--- BEGIN Constructing new IdP object ... ---\n"); |
@@ -247,7 +248,7 @@ discard block |
||
247 | 248 | * This function retrieves the IdP-wide attributes. If called with the optional parameter, only attribute values for the attribute |
248 | 249 | * name in $option_name are retrieved; otherwise, all attributes are retrieved. |
249 | 250 | * |
250 | - * @param string $option_name optionally, the name of the attribute that is to be retrieved |
|
251 | + * @param integer $option_name optionally, the name of the attribute that is to be retrieved |
|
251 | 252 | * @return array of arrays of attributes which were set for this IdP |
252 | 253 | */ |
253 | 254 | public function getAttributes($option_name = 0) { |
@@ -318,7 +319,7 @@ discard block |
||
318 | 319 | * Adds a new profile to this IdP. |
319 | 320 | * Only creates the DB entry for the Profile. If you want to add attributes later, see Profile::addAttribute(). |
320 | 321 | * |
321 | - * @return object new Profile object if successful, or FALSE if an error occured |
|
322 | + * @return Profile|null new Profile object if successful, or FALSE if an error occured |
|
322 | 323 | */ |
323 | 324 | public function newProfile() { |
324 | 325 | DBConnection::exec(IdP::$DB_TYPE, "INSERT INTO profile (inst_id) VALUES($this->identifier)"); |
@@ -118,10 +118,10 @@ |
||
118 | 118 | } |
119 | 119 | } |
120 | 120 | $this->priv_attributes[] = ["name" => "internal:country", |
121 | - "value" => $this->federation, |
|
122 | - "level" => "IdP", |
|
123 | - "row" => 0, |
|
124 | - "flag" => NULL]; |
|
121 | + "value" => $this->federation, |
|
122 | + "level" => "IdP", |
|
123 | + "row" => 0, |
|
124 | + "flag" => NULL]; |
|
125 | 125 | |
126 | 126 | $this->name = getLocalisedValue($this->getAttributes('general:instname', 0, 0), CAT::get_lang()); |
127 | 127 | debug(3, "--- END Constructing new IdP object ... ---\n"); |
@@ -94,7 +94,7 @@ |
||
94 | 94 | * |
95 | 95 | * @assert ("user") == Array("user:email","user:fedadmin","user:realname") |
96 | 96 | * |
97 | - * @param string $class_name optionally specifies the class of options to be listed (class is the part of the option name before the : sign) |
|
97 | + * @param integer $class_name optionally specifies the class of options to be listed (class is the part of the option name before the : sign) |
|
98 | 98 | * @return array of options |
99 | 99 | */ |
100 | 100 | public function availableOptions($class_name = 0) { |
@@ -29,7 +29,7 @@ |
||
29 | 29 | */ |
30 | 30 | class Options { |
31 | 31 | |
32 | - /** |
|
32 | + /** |
|
33 | 33 | * database which this class queries by default |
34 | 34 | * |
35 | 35 | * @var string |
@@ -96,6 +96,10 @@ discard block |
||
96 | 96 | define('QR_FORMAT_PNG', 1); |
97 | 97 | |
98 | 98 | class qrstr { |
99 | + |
|
100 | + /** |
|
101 | + * @param string $repl |
|
102 | + */ |
|
99 | 103 | public static function set(&$srctab, $x, $y, $repl, $replLen = false) { |
100 | 104 | $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl)); |
101 | 105 | } |
@@ -231,6 +235,11 @@ discard block |
||
231 | 235 | } |
232 | 236 | |
233 | 237 | //---------------------------------------------------------------------- |
238 | + |
|
239 | + /** |
|
240 | + * @param boolean $outfile |
|
241 | + * @param string $err |
|
242 | + */ |
|
234 | 243 | public static function log($outfile, $err) |
235 | 244 | { |
236 | 245 | if (QR_LOG_DIR !== false) { |
@@ -256,6 +265,10 @@ discard block |
||
256 | 265 | } |
257 | 266 | |
258 | 267 | //---------------------------------------------------------------------- |
268 | + |
|
269 | + /** |
|
270 | + * @param string $markerId |
|
271 | + */ |
|
259 | 272 | public static function markTime($markerId) |
260 | 273 | { |
261 | 274 | list($usec, $sec) = explode(" ", microtime()); |
@@ -410,18 +423,30 @@ discard block |
||
410 | 423 | } |
411 | 424 | |
412 | 425 | //---------------------------------------------------------------------- |
426 | + |
|
427 | + /** |
|
428 | + * @param integer $version |
|
429 | + */ |
|
413 | 430 | public static function getWidth($version) |
414 | 431 | { |
415 | 432 | return self::$capacity[$version][QRCAP_WIDTH]; |
416 | 433 | } |
417 | 434 | |
418 | 435 | //---------------------------------------------------------------------- |
436 | + |
|
437 | + /** |
|
438 | + * @param integer $version |
|
439 | + */ |
|
419 | 440 | public static function getRemainder($version) |
420 | 441 | { |
421 | 442 | return self::$capacity[$version][QRCAP_REMINDER]; |
422 | 443 | } |
423 | 444 | |
424 | 445 | //---------------------------------------------------------------------- |
446 | + |
|
447 | + /** |
|
448 | + * @param integer $size |
|
449 | + */ |
|
425 | 450 | public static function getMinimumVersion($size, $level) |
426 | 451 | { |
427 | 452 | |
@@ -535,6 +560,9 @@ discard block |
||
535 | 560 | //---------------------------------------------------------------------- |
536 | 561 | // CACHEABLE!!! |
537 | 562 | |
563 | + /** |
|
564 | + * @param integer $version |
|
565 | + */ |
|
538 | 566 | public static function getEccSpec($version, $level, array &$spec) |
539 | 567 | { |
540 | 568 | if (count($spec) < 5) { |
@@ -857,12 +885,20 @@ discard block |
||
857 | 885 | } |
858 | 886 | |
859 | 887 | //---------------------------------------------------------------------- |
888 | + |
|
889 | + /** |
|
890 | + * @param string $code |
|
891 | + */ |
|
860 | 892 | public static function unserial($code) |
861 | 893 | { |
862 | 894 | return explode("\n", gzuncompress($code)); |
863 | 895 | } |
864 | 896 | |
865 | 897 | //---------------------------------------------------------------------- |
898 | + |
|
899 | + /** |
|
900 | + * @param integer $version |
|
901 | + */ |
|
866 | 902 | public static function newFrame($version) |
867 | 903 | { |
868 | 904 | if($version < 1 || $version > QRSPEC_VERSION_MAX) |
@@ -1236,6 +1272,10 @@ discard block |
||
1236 | 1272 | } |
1237 | 1273 | |
1238 | 1274 | //---------------------------------------------------------------------- |
1275 | + |
|
1276 | + /** |
|
1277 | + * @param integer $version |
|
1278 | + */ |
|
1239 | 1279 | public function encodeBitStream($version) |
1240 | 1280 | { |
1241 | 1281 | try { |
@@ -1313,6 +1353,10 @@ discard block |
||
1313 | 1353 | } |
1314 | 1354 | |
1315 | 1355 | //---------------------------------------------------------------------- |
1356 | + |
|
1357 | + /** |
|
1358 | + * @param integer $version |
|
1359 | + */ |
|
1316 | 1360 | public function setVersion($version) |
1317 | 1361 | { |
1318 | 1362 | if($version < 0 || $version > QRSPEC_VERSION_MAX) { |
@@ -1351,6 +1395,12 @@ discard block |
||
1351 | 1395 | } |
1352 | 1396 | |
1353 | 1397 | //---------------------------------------------------------------------- |
1398 | + |
|
1399 | + /** |
|
1400 | + * @param QRinput $mode |
|
1401 | + * @param integer $size |
|
1402 | + * @param integer $data |
|
1403 | + */ |
|
1354 | 1404 | public function append($mode, $size, $data) |
1355 | 1405 | { |
1356 | 1406 | try { |
@@ -1446,6 +1496,10 @@ discard block |
||
1446 | 1496 | ]; |
1447 | 1497 | |
1448 | 1498 | //---------------------------------------------------------------------- |
1499 | + |
|
1500 | + /** |
|
1501 | + * @param integer $c |
|
1502 | + */ |
|
1449 | 1503 | public static function lookAnTable($c) |
1450 | 1504 | { |
1451 | 1505 | return (($c > 127)?-1:self::$anTable[$c]); |
@@ -1531,6 +1585,10 @@ discard block |
||
1531 | 1585 | |
1532 | 1586 | |
1533 | 1587 | //---------------------------------------------------------------------- |
1588 | + |
|
1589 | + /** |
|
1590 | + * @param integer $version |
|
1591 | + */ |
|
1534 | 1592 | public function estimateBitStreamSize($version) |
1535 | 1593 | { |
1536 | 1594 | $bits = 0; |
@@ -1648,6 +1706,10 @@ discard block |
||
1648 | 1706 | } |
1649 | 1707 | |
1650 | 1708 | //---------------------------------------------------------------------- |
1709 | + |
|
1710 | + /** |
|
1711 | + * @param QRbitstream $bstream |
|
1712 | + */ |
|
1651 | 1713 | public function appendPaddingBit(&$bstream) |
1652 | 1714 | { |
1653 | 1715 | $bits = $bstream->size(); |
@@ -1977,6 +2039,10 @@ discard block |
||
1977 | 2039 | public $modeHint; |
1978 | 2040 | |
1979 | 2041 | //---------------------------------------------------------------------- |
2042 | + |
|
2043 | + /** |
|
2044 | + * @param QRinput $input |
|
2045 | + */ |
|
1980 | 2046 | public function __construct($dataStr, $input, $modeHint) |
1981 | 2047 | { |
1982 | 2048 | $this->dataStr = $dataStr; |
@@ -1985,6 +2051,10 @@ discard block |
||
1985 | 2051 | } |
1986 | 2052 | |
1987 | 2053 | //---------------------------------------------------------------------- |
2054 | + |
|
2055 | + /** |
|
2056 | + * @param string $str |
|
2057 | + */ |
|
1988 | 2058 | public static function isdigitat($str, $pos) |
1989 | 2059 | { |
1990 | 2060 | if ($pos >= strlen($str)) |
@@ -1994,6 +2064,10 @@ discard block |
||
1994 | 2064 | } |
1995 | 2065 | |
1996 | 2066 | //---------------------------------------------------------------------- |
2067 | + |
|
2068 | + /** |
|
2069 | + * @param string $str |
|
2070 | + */ |
|
1997 | 2071 | public static function isalnumat($str, $pos) |
1998 | 2072 | { |
1999 | 2073 | if ($pos >= strlen($str)) |
@@ -2114,6 +2188,10 @@ discard block |
||
2114 | 2188 | } |
2115 | 2189 | |
2116 | 2190 | //---------------------------------------------------------------------- |
2191 | + |
|
2192 | + /** |
|
2193 | + * @return integer |
|
2194 | + */ |
|
2117 | 2195 | public function eatKanji() |
2118 | 2196 | { |
2119 | 2197 | $p = 0; |
@@ -2447,6 +2525,13 @@ discard block |
||
2447 | 2525 | public static $items = []; |
2448 | 2526 | |
2449 | 2527 | //---------------------------------------------------------------------- |
2528 | + |
|
2529 | + /** |
|
2530 | + * @param integer $symsize |
|
2531 | + * @param integer $gfpoly |
|
2532 | + * @param integer $fcr |
|
2533 | + * @param integer $prim |
|
2534 | + */ |
|
2450 | 2535 | public static function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) |
2451 | 2536 | { |
2452 | 2537 | foreach(self::$items as $rs) { |
@@ -2601,6 +2686,10 @@ discard block |
||
2601 | 2686 | } |
2602 | 2687 | |
2603 | 2688 | //---------------------------------------------------------------------- |
2689 | + |
|
2690 | + /** |
|
2691 | + * @param string $code |
|
2692 | + */ |
|
2604 | 2693 | public static function unserial($code) |
2605 | 2694 | { |
2606 | 2695 | $codeArr = []; |
@@ -2661,6 +2750,10 @@ discard block |
||
2661 | 2750 | } |
2662 | 2751 | |
2663 | 2752 | //---------------------------------------------------------------------- |
2753 | + |
|
2754 | + /** |
|
2755 | + * @param integer $length |
|
2756 | + */ |
|
2664 | 2757 | public function calcN1N3($length) |
2665 | 2758 | { |
2666 | 2759 | $demerit = 0; |
@@ -2971,6 +3064,10 @@ discard block |
||
2971 | 3064 | public $data; |
2972 | 3065 | |
2973 | 3066 | //---------------------------------------------------------------------- |
3067 | + |
|
3068 | + /** |
|
3069 | + * @param integer $mask |
|
3070 | + */ |
|
2974 | 3071 | public function encodeMask(QRinput $input, $mask) |
2975 | 3072 | { |
2976 | 3073 | if($input->getVersion() < 0 || $input->getVersion() > QRSPEC_VERSION_MAX) { |
@@ -3052,6 +3149,11 @@ discard block |
||
3052 | 3149 | } |
3053 | 3150 | |
3054 | 3151 | //---------------------------------------------------------------------- |
3152 | + |
|
3153 | + /** |
|
3154 | + * @param integer $version |
|
3155 | + * @param integer $level |
|
3156 | + */ |
|
3055 | 3157 | public function encodeString8bit($string, $version, $level) |
3056 | 3158 | { |
3057 | 3159 | if(string == NULL) { |
@@ -3071,6 +3173,12 @@ discard block |
||
3071 | 3173 | } |
3072 | 3174 | |
3073 | 3175 | //---------------------------------------------------------------------- |
3176 | + |
|
3177 | + /** |
|
3178 | + * @param integer $version |
|
3179 | + * @param integer $level |
|
3180 | + * @param boolean $casesensitive |
|
3181 | + */ |
|
3074 | 3182 | public function encodeString($string, $version, $level, $hint, $casesensitive) |
3075 | 3183 | { |
3076 | 3184 |
@@ -74,32 +74,32 @@ discard block |
||
74 | 74 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
75 | 75 | */ |
76 | 76 | |
77 | - // Encoding modes |
|
77 | + // Encoding modes |
|
78 | 78 | |
79 | - define('QR_MODE_NUL', -1); |
|
80 | - define('QR_MODE_NUM', 0); |
|
81 | - define('QR_MODE_AN', 1); |
|
82 | - define('QR_MODE_8', 2); |
|
83 | - define('QR_MODE_KANJI', 3); |
|
84 | - define('QR_MODE_STRUCTURE', 4); |
|
85 | - |
|
86 | - // Levels of error correction. |
|
87 | - |
|
88 | - define('QR_ECLEVEL_L', 0); |
|
89 | - define('QR_ECLEVEL_M', 1); |
|
90 | - define('QR_ECLEVEL_Q', 2); |
|
91 | - define('QR_ECLEVEL_H', 3); |
|
79 | + define('QR_MODE_NUL', -1); |
|
80 | + define('QR_MODE_NUM', 0); |
|
81 | + define('QR_MODE_AN', 1); |
|
82 | + define('QR_MODE_8', 2); |
|
83 | + define('QR_MODE_KANJI', 3); |
|
84 | + define('QR_MODE_STRUCTURE', 4); |
|
85 | + |
|
86 | + // Levels of error correction. |
|
87 | + |
|
88 | + define('QR_ECLEVEL_L', 0); |
|
89 | + define('QR_ECLEVEL_M', 1); |
|
90 | + define('QR_ECLEVEL_Q', 2); |
|
91 | + define('QR_ECLEVEL_H', 3); |
|
92 | 92 | |
93 | - // Supported output formats |
|
93 | + // Supported output formats |
|
94 | 94 | |
95 | - define('QR_FORMAT_TEXT', 0); |
|
96 | - define('QR_FORMAT_PNG', 1); |
|
95 | + define('QR_FORMAT_TEXT', 0); |
|
96 | + define('QR_FORMAT_PNG', 1); |
|
97 | 97 | |
98 | - class qrstr { |
|
99 | - public static function set(&$srctab, $x, $y, $repl, $replLen = false) { |
|
100 | - $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl)); |
|
101 | - } |
|
102 | - } |
|
98 | + class qrstr { |
|
99 | + public static function set(&$srctab, $x, $y, $repl, $replLen = false) { |
|
100 | + $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl)); |
|
101 | + } |
|
102 | + } |
|
103 | 103 | |
104 | 104 | |
105 | 105 | |
@@ -211,9 +211,9 @@ discard block |
||
211 | 211 | //---------------------------------------------------------------------- |
212 | 212 | public static function buildCache() |
213 | 213 | { |
214 | - QRtools::markTime('before_build_cache'); |
|
214 | + QRtools::markTime('before_build_cache'); |
|
215 | 215 | |
216 | - $mask = new QRmask(); |
|
216 | + $mask = new QRmask(); |
|
217 | 217 | for ($a=1; $a <= QRSPEC_VERSION_MAX; $a++) { |
218 | 218 | $frame = QRspec::newFrame($a); |
219 | 219 | if (QR_IMAGE) { |
@@ -221,13 +221,13 @@ discard block |
||
221 | 221 | QRimage::png(self::binarize($frame), $fileName, 1, 0); |
222 | 222 | } |
223 | 223 | |
224 | - $width = count($frame); |
|
225 | - $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); |
|
226 | - for ($maskNo=0; $maskNo<8; $maskNo++) |
|
227 | - $mask->makeMaskNo($maskNo, $width, $frame, $bitMask, true); |
|
224 | + $width = count($frame); |
|
225 | + $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); |
|
226 | + for ($maskNo=0; $maskNo<8; $maskNo++) |
|
227 | + $mask->makeMaskNo($maskNo, $width, $frame, $bitMask, true); |
|
228 | 228 | } |
229 | 229 | |
230 | - QRtools::markTime('after_build_cache'); |
|
230 | + QRtools::markTime('after_build_cache'); |
|
231 | 231 | } |
232 | 232 | |
233 | 233 | //---------------------------------------------------------------------- |
@@ -647,10 +647,10 @@ discard block |
||
647 | 647 | |
648 | 648 | // Version information pattern ----------------------------------------- |
649 | 649 | |
650 | - // Version information pattern (BCH coded). |
|
650 | + // Version information pattern (BCH coded). |
|
651 | 651 | // See Table 1 in Appendix D (pp.68) of JIS X0510:2004. |
652 | 652 | |
653 | - // size: [QRSPEC_VERSION_MAX - 6] |
|
653 | + // size: [QRSPEC_VERSION_MAX - 6] |
|
654 | 654 | |
655 | 655 | public static $versionPattern = [ |
656 | 656 | 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, |
@@ -1438,7 +1438,7 @@ discard block |
||
1438 | 1438 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
1439 | 1439 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
1440 | 1440 | 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, |
1441 | - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, |
|
1441 | + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, |
|
1442 | 1442 | -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, |
1443 | 1443 | 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, |
1444 | 1444 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
@@ -2500,17 +2500,17 @@ discard block |
||
2500 | 2500 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
2501 | 2501 | */ |
2502 | 2502 | |
2503 | - define('N1', 3); |
|
2504 | - define('N2', 3); |
|
2505 | - define('N3', 40); |
|
2506 | - define('N4', 10); |
|
2503 | + define('N1', 3); |
|
2504 | + define('N2', 3); |
|
2505 | + define('N3', 40); |
|
2506 | + define('N4', 10); |
|
2507 | 2507 | |
2508 | - class QRmask { |
|
2508 | + class QRmask { |
|
2509 | 2509 | |
2510 | - public $runLength = []; |
|
2510 | + public $runLength = []; |
|
2511 | 2511 | |
2512 | - //---------------------------------------------------------------------- |
|
2513 | - public function __construct() |
|
2512 | + //---------------------------------------------------------------------- |
|
2513 | + public function __construct() |
|
2514 | 2514 | { |
2515 | 2515 | $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0); |
2516 | 2516 | } |
@@ -73,7 +73,7 @@ discard block |
||
73 | 73 | * supported EAP types from the DB and stores them in the priv_ arrays. |
74 | 74 | * |
75 | 75 | * @param int $p_id identifier of the profile in the DB |
76 | - * @param IdP $idp_object optionally, the institution to which this Profile belongs. Saves the construction of the IdP instance. If omitted, an extra query and instantiation is executed to find out. |
|
76 | + * @param integer $idp_object optionally, the institution to which this Profile belongs. Saves the construction of the IdP instance. If omitted, an extra query and instantiation is executed to find out. |
|
77 | 77 | */ |
78 | 78 | public function __construct($p_id, $idp_object = 0) { |
79 | 79 | debug(3, "--- BEGIN Constructing new Profile object ... ---\n"); |
@@ -372,6 +372,8 @@ discard block |
||
372 | 372 | * |
373 | 373 | * @param string device the device identifier string |
374 | 374 | * @param string path the path where the new installer can be found |
375 | + * @param string $device |
|
376 | + * @param string $path |
|
375 | 377 | */ |
376 | 378 | public function updateCache($device, $path,$mime) { |
377 | 379 | $device = DBConnection::escape_value(Profile::$DB_TYPE, $device); |
@@ -384,9 +386,9 @@ discard block |
||
384 | 386 | /** |
385 | 387 | * Log a new download for our stats |
386 | 388 | * |
387 | - * @param device the device id string |
|
388 | - * @param area either admin or user |
|
389 | - * @return TRUE if incrementing worked, FALSE if not |
|
389 | + * @param device string device id string |
|
390 | + * @param area string admin or user |
|
391 | + * @return boolean if incrementing worked, FALSE if not |
|
390 | 392 | */ |
391 | 393 | public function incrementDownloadStats($device, $area) { |
392 | 394 | $device = DBConnection::escape_value(Profile::$DB_TYPE, $device); |
@@ -399,7 +401,7 @@ discard block |
||
399 | 401 | |
400 | 402 | /** |
401 | 403 | * Retrieve current download stats from database, either for one specific device or for all devices |
402 | - * @param string $device the device id string |
|
404 | + * @param integer $device the device id string |
|
403 | 405 | * @return mixed user downloads of this profile; if device is given, returns the counter as int, otherwise an array with devicename => counter |
404 | 406 | */ |
405 | 407 | public function getUserDownloadStats($device = 0) { |
@@ -464,7 +466,7 @@ discard block |
||
464 | 466 | * @param string $attr_name name of the attribute to set |
465 | 467 | * @param string $attr_value value of the attribute to set |
466 | 468 | * @param int $eap_type identifier of the EAP type in the database. 0 if the attribute is valid for all EAP types. |
467 | - * @param string $device identifier of the device in the databse. Omit the argument if attribute is valid for all devices. |
|
469 | + * @param integer $device identifier of the device in the databse. Omit the argument if attribute is valid for all devices. |
|
468 | 470 | */ |
469 | 471 | public function addAttribute($attr_name, $attr_value, $eap_type, $device = 0) { |
470 | 472 | $attr_name = DBConnection::escape_value(Profile::$DB_TYPE, $attr_name); |
@@ -574,7 +576,7 @@ discard block |
||
574 | 576 | /** Returns an array of the profile's attributes. |
575 | 577 | * |
576 | 578 | * @param string option_name the name of a specific option. If set, only returns option values for this option name |
577 | - * @param eapmethod the EAP type, in array ("OUTER/INNER") notation. If set, returns only attributes which are specific to that EAP type |
|
579 | + * @param eapmethod integer EAP type, in array ("OUTER/INNER") notation. If set, returns only attributes which are specific to that EAP type |
|
578 | 580 | * @param string device the device ID string. If set, returns only attributes which are specific to that device |
579 | 581 | * @return array attributes of the profile |
580 | 582 | */ |
@@ -658,7 +660,7 @@ discard block |
||
658 | 660 | /** |
659 | 661 | * list all devices marking their availabiblity and possible redirects |
660 | 662 | * |
661 | - * @param string $locale for text-based attributes, either returns values for the default value, or if specified here, in the locale specified |
|
663 | + * @param integer $locale for text-based attributes, either returns values for the default value, or if specified here, in the locale specified |
|
662 | 664 | * @return array of device ids display names and their status |
663 | 665 | */ |
664 | 666 | public function listDevices($locale = 0) { |
@@ -713,7 +715,7 @@ discard block |
||
713 | 715 | * as wel as the chosen language. |
714 | 716 | * can be called with an optional $eap argument |
715 | 717 | * |
716 | - * @param array $eap if specified, retrieves attributes specific to the given EAP type |
|
718 | + * @param integer $eap if specified, retrieves attributes specific to the given EAP type |
|
717 | 719 | * @return array list of attributes in collapsed style (index is the attrib name, value is an array of different values) |
718 | 720 | */ |
719 | 721 | public function getCollapsedAttributes($eap = 0) { |
@@ -680,27 +680,27 @@ |
||
680 | 680 | $redirect_url = getLocalisedValue($this->getAttributes("device-specific:redirect", 0, $d), $locale); |
681 | 681 | $dev_status = AVAILABLE; |
682 | 682 | if(isset($D['options']) && isset($D['options']['message']) && $D['options']['message']) |
683 | - $message = $D['options']['message']; |
|
683 | + $message = $D['options']['message']; |
|
684 | 684 | else |
685 | - $message = 0; |
|
685 | + $message = 0; |
|
686 | 686 | |
687 | 687 | if ($redirect_url === 0) { |
688 | 688 | if(isset($D['options']) && isset($D['options']['redirect']) && $D['options']['redirect']) { |
689 | - $dev_status = HIDDEN; |
|
689 | + $dev_status = HIDDEN; |
|
690 | 690 | } else { |
691 | - $eap = $dev->getPreferredEapType($preferred_eap); |
|
692 | - if ($eap) { |
|
693 | - if (isset($EAP_options["eap-specific:customtext"][serialize($eap)])) |
|
694 | - $eap_customtext = $EAP_options["eap-specific:customtext"][serialize($eap)]; |
|
695 | - else { |
|
696 | - $eap_customtext = getLocalisedValue($this->getAttributes("eap-specific:customtext", $eap, 0), $locale); |
|
697 | - $EAP_options["eap-specific:customtext"][serialize($eap)] = $eap_customtext; |
|
698 | - } |
|
699 | - $device_customtext = getLocalisedValue($this->getAttributes("device-specific:customtext", 0, $d), $locale); |
|
700 | - } else { |
|
691 | + $eap = $dev->getPreferredEapType($preferred_eap); |
|
692 | + if ($eap) { |
|
693 | + if (isset($EAP_options["eap-specific:customtext"][serialize($eap)])) |
|
694 | + $eap_customtext = $EAP_options["eap-specific:customtext"][serialize($eap)]; |
|
695 | + else { |
|
696 | + $eap_customtext = getLocalisedValue($this->getAttributes("eap-specific:customtext", $eap, 0), $locale); |
|
697 | + $EAP_options["eap-specific:customtext"][serialize($eap)] = $eap_customtext; |
|
698 | + } |
|
699 | + $device_customtext = getLocalisedValue($this->getAttributes("device-specific:customtext", 0, $d), $locale); |
|
700 | + } else { |
|
701 | 701 | $dev_status = UNAVAILABLE; |
702 | - } |
|
703 | - } |
|
702 | + } |
|
703 | + } |
|
704 | 704 | } |
705 | 705 | $returnarray[] = ['id' => $d, 'display' => $D['display'], 'status' => $dev_status, 'redirect' => $redirect_url, 'eap_customtext' => $eap_customtext, 'device_customtext' => $device_customtext, 'message' => $message, 'options'=>$D['options']]; |
706 | 706 | } |