allow to create homedirs in upload
This commit is contained in:
		
							parent
							
								
									cd09a86d64
								
							
						
					
					
						commit
						7b96445cfd
					
				|  | @ -5,6 +5,7 @@ | |||
|   - group list can show primary members (RFE 1517679 and patch 1722460) | ||||
|   - more translated example texts (RFE 1702140) | ||||
|   - inetOrgPerson: now manages homePhone, roomNumber, businessCategory | ||||
|   - posixAccount: allow to create home directories in file upload (RFE 1665034) | ||||
|   - account lists: display buttons on top and bottom (RFE 1702136) | ||||
|   - fixed bugs: | ||||
|    -> OU editor: help images (1702132) | ||||
|  |  | |||
|  | @ -182,7 +182,7 @@ class posixAccount extends baseModule { | |||
| 		// upload
 | ||||
| 		$return['upload_preDepends'] = array('inetOrgPerson'); | ||||
| 		// user specific upload options
 | ||||
| 		if ($this->scope == 'user') { | ||||
| 		if (($this->scope == 'user') && $_SESSION['loggedIn']) { | ||||
| 			$return['upload_columns'] = array( | ||||
| 			array( | ||||
| 				'name' => 'posixAccount_userName', | ||||
|  | @ -224,6 +224,13 @@ class posixAccount extends baseModule { | |||
| 				'example' => _('/home/smiller'), | ||||
| 				'default' => '/home/<i><posixAccount_userName></i>' | ||||
| 			), | ||||
| 			array( | ||||
| 				'name' => 'posixAccount_createHomeDir', | ||||
| 				'description' => _('Create home directory'), | ||||
| 				'help' => 'createhomedir', | ||||
| 				'example' => 'localhost', | ||||
| 				'values' => $_SESSION['config']->get_scriptServers() | ||||
| 			), | ||||
| 			array( | ||||
| 				'name' => 'posixAccount_shell', | ||||
| 				'description' => _('Login shell'), | ||||
|  | @ -344,6 +351,10 @@ class posixAccount extends baseModule { | |||
| 				"Headline" => _("Home directory"), | ||||
| 				"Text" => _("Activating this checkbox will remove the user's home directory.") | ||||
| 			), | ||||
| 			'createhomedir' => array( | ||||
| 				"Headline" => _("Home directory"), | ||||
| 				"Text" => _("This will create the user's home directory on the specified server.") | ||||
| 			), | ||||
| 			'user' => array( | ||||
| 				'uid' => array( | ||||
| 					"Headline" => _("User name"), | ||||
|  | @ -587,10 +598,7 @@ class posixAccount extends baseModule { | |||
| 					foreach ($result as $singleresult) { | ||||
| 						$singleresult = explode(",", $singleresult); | ||||
| 						if (is_array($singleresult)) { | ||||
| 							if (($singleresult[0] == 'ERROR') || ($singleresult[0] == 'WARN')) { | ||||
| 								call_user_func_array('StatusMessage', $singleresult); | ||||
| 							} | ||||
| 							elseif ($singleresult[0] == 'INFO'){ | ||||
| 							if (($singleresult[0] == 'ERROR') || ($singleresult[0] == 'WARN') || ($singleresult[0] == 'INFO')) { | ||||
| 								call_user_func_array('StatusMessage', $singleresult); | ||||
| 							} | ||||
| 						} | ||||
|  | @ -1467,8 +1475,10 @@ class posixAccount extends baseModule { | |||
| 		// on first call generate list of ldap operations
 | ||||
| 		if (!isset($temp['counter'])) { | ||||
| 			$temp['groups'] = array(); | ||||
| 			$temp['createHomes'] = array(); | ||||
| 			$temp['counter'] = 0; | ||||
| 			$col = $ids['posixAccount_additionalGroups']; | ||||
| 			$col_home = $ids['posixAccount_createHomeDir']; | ||||
| 			for ($i = 0; $i < sizeof($data); $i++) { | ||||
| 				if (in_array($i, $failed)) continue; // ignore failed accounts
 | ||||
| 				if ($data[$i][$col] != "") { | ||||
|  | @ -1478,6 +1488,9 @@ class posixAccount extends baseModule { | |||
| 						$temp['members'][$groups[$g]][] = $data[$i][$ids['posixAccount_userName']]; | ||||
| 					} | ||||
| 				} | ||||
| 				if ($data[$i][$col_home] != "") { | ||||
| 					$temp['createHomes'][] = $i; | ||||
| 				} | ||||
| 			} | ||||
| 			return array( | ||||
| 				'status' => 'inProgress', | ||||
|  | @ -1515,7 +1528,7 @@ class posixAccount extends baseModule { | |||
| 				$temp['counter']++; | ||||
| 				return array ( | ||||
| 					'status' => 'inProgress', | ||||
| 					'progress' => ($temp['counter'] * 100) / sizeof($temp['groups']), | ||||
| 					'progress' => ($temp['counter'] * 100) / (sizeof($temp['groups']) + sizeof($temp['createHomes'])), | ||||
| 					'errors' => $errors | ||||
| 				); | ||||
| 			} | ||||
|  | @ -1523,11 +1536,30 @@ class posixAccount extends baseModule { | |||
| 				$temp['counter']++; | ||||
| 				return array ( | ||||
| 					'status' => 'inProgress', | ||||
| 					'progress' => ($temp['counter'] * 100) / sizeof($temp['groups']), | ||||
| 					'progress' => ($temp['counter'] * 100) / (sizeof($temp['groups'] + sizeof($temp['createHomes']))), | ||||
| 					'errors' => array(array('ERROR', _('Unable to find group in LDAP.'), $temp['groups'][$temp['counter']])) | ||||
| 				); | ||||
| 			} | ||||
| 		} | ||||
| 		// create home directories
 | ||||
| 		elseif ($temp['counter'] < (sizeof($temp['groups']) + sizeof($temp['createHomes']))) { | ||||
| 			$pos = $temp['createHomes'][$temp['counter'] - sizeof($temp['groups'])]; | ||||
| 			$result = lamdaemon(array($data[$pos][$ids['posixAccount_userName']] . " home add 0".$_SESSION['config']->scriptRights), | ||||
| 				$data[$pos][$ids['posixAccount_createHomeDir']]); | ||||
| 			$errors = array(); | ||||
| 			if (($result != false) && (sizeof($result) == 1)) { | ||||
| 				$parts = explode(",", $result[0]); | ||||
| 				if (in_array($parts[0], array('ERROR', 'WARN'))) {  | ||||
| 					$errors[] = $parts; | ||||
| 				} | ||||
| 			} | ||||
| 			$temp['counter']++; | ||||
| 			return array ( | ||||
| 				'status' => 'inProgress', | ||||
| 				'progress' => ($temp['counter'] * 100) / (sizeof($temp['groups']) + sizeof($temp['createHomes'])), | ||||
| 				'errors' => $errors | ||||
| 			); | ||||
| 		} | ||||
| 		// all groups are modified
 | ||||
| 		else { | ||||
| 			return array ( | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue