| 
									
										
										
										
											2011-06-26 10:44:28 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Imports an LDIF file to the specified LDAP server. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package phpLDAPadmin | 
					
						
							|  |  |  |  * @subpackage Page | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require './common.php'; | 
					
						
							|  |  |  | require LIBDIR.'import_functions.php'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $request = array(); | 
					
						
							|  |  |  | $request['importer'] = new Importer($app['server']->getIndex(),'LDIF'); | 
					
						
							|  |  |  | $request['import'] = $request['importer']->getTemplate(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $request['continuous_mode'] = get_request('continuous_mode') ? true : false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $type = $request['import']->getType(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Set our timelimit in case we have a lot of importing to do
 | 
					
						
							|  |  |  | @set_time_limit(0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # String associated to the operation on the ldap server
 | 
					
						
							|  |  |  | $actionString = array( | 
					
						
							|  |  |  | 	'add' => _('Adding'), | 
					
						
							|  |  |  | 	'delete' => _('Deleting'), | 
					
						
							|  |  |  | 	'modrdn' => _('Renaming'), | 
					
						
							|  |  |  | 	'moddn' => _('Renaming'), | 
					
						
							|  |  |  | 	'modify' => _('Modifying') | 
					
						
							|  |  |  | 	); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # String associated with error
 | 
					
						
							|  |  |  | $actionErrorMsg = array( | 
					
						
							|  |  |  | 	'add' => _('Could not add object'), | 
					
						
							|  |  |  | 	'delete' => _('Could not delete object'), | 
					
						
							| 
									
										
										
										
											2011-07-12 19:23:27 +00:00
										 |  |  | 	'modrdn' => _('Could not rename the entry.'), | 
					
						
							|  |  |  | 	'moddn' => _('Could not rename the entry.'), | 
					
						
							| 
									
										
										
										
											2011-06-26 10:44:28 +00:00
										 |  |  | 	'modify' => _('Could not modify object') | 
					
						
							|  |  |  | 	); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $request['page'] = new PageRender($app['server']->getIndex(),get_request('template','REQUEST',false,'none')); | 
					
						
							|  |  |  | $request['page']->drawTitle(sprintf('<b>%s</b>',_('Import'))); | 
					
						
							|  |  |  | $request['page']->drawSubTitle(sprintf('%s: <b>%s</b> %s: <b>%s %s %s (%s)</b>', | 
					
						
							|  |  |  | 	_('Server'),$app['server']->getName(), | 
					
						
							|  |  |  | 	_('File'),$request['import']->getSource('name'),number_format($request['import']->getSource('size')),_('bytes'),$type['description'])); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo '<br />'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # @todo When renaming DNs, the hotlink should point to the new entry on success, or the old entry on failure.
 | 
					
						
							|  |  |  | while (! $request['import']->eof()) { | 
					
						
							|  |  |  | 	while ($request['template'] = $request['import']->readEntry()) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$edit_href = sprintf('cmd.php?cmd=template_engine&server_id=%s&dn=%s',$app['server']->getIndex(), | 
					
						
							|  |  |  | 			rawurlencode($request['template']->getDN())); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$changetype = $request['template']->getType(); | 
					
						
							|  |  |  | 		printf('<small>%s <a href="%s">%s</a>',$actionString[$changetype],$edit_href,$request['template']->getDN()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if ($request['import']->LDAPimport()) | 
					
						
							|  |  |  | 			printf(' <span style="color:green;">%s</span></small><br />',_('Success')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		else { | 
					
						
							|  |  |  | 			printf(' <span style="color:red;">%s</span></small><br /><br />',_('Failed')); | 
					
						
							|  |  |  | 			$errormsg = sprintf('%s <b>%s</b>',$actionErrorMsg[$changetype],$request['template']->getDN()); | 
					
						
							|  |  |  | 			$errormsg .= ldap_error_msg($app['server']->getErrorMessage(null),$app['server']->getErrorNum(null)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			system_message(array( | 
					
						
							| 
									
										
										
										
											2011-07-13 18:30:14 +00:00
										 |  |  | 				'title'=>_('LDIF import'), | 
					
						
							| 
									
										
										
										
											2011-06-26 10:44:28 +00:00
										 |  |  | 				'body'=>$errormsg, | 
					
						
							|  |  |  | 				'type'=>'warn')); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if ($request['import']->error) { | 
					
						
							|  |  |  | 		printf('<small><span style="color:red;">%s: %s</span></small><br />', | 
					
						
							|  |  |  | 			_('Error'),$request['import']->error['message']); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		echo '<br/>'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		display_pla_parse_error($request['import']); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (! $request['continuous_mode']) | 
					
						
							|  |  |  | 		break; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function display_pla_parse_error($request) { | 
					
						
							|  |  |  | 	$type = $request->getType(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	echo '<center>'; | 
					
						
							|  |  |  | 	echo '<table class="error">'; | 
					
						
							|  |  |  | 	echo '<tr>'; | 
					
						
							|  |  |  | 	printf('<td class="img"><img src="%s/%s" /></td>',IMGDIR,'error-big.png'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-14 18:29:11 +00:00
										 |  |  | 	printf('<td><h2>%s %s</h2></td>',$type['description'],_('Parse error')); | 
					
						
							| 
									
										
										
										
											2011-06-26 10:44:28 +00:00
										 |  |  | 	echo '</tr>'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	printf('<tr><td><b>%s</b>:</td><td>%s</td></tr>',_('Description'),$request->error['message']); | 
					
						
							|  |  |  | 	printf('<tr><td><b>%s</b>:</td><td>%s</td></tr>',_('Line'),$request->error['line']); | 
					
						
							|  |  |  | 	printf('<tr><td colspan=2><b>%s</b>:</td></tr>',_('Data')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	foreach ($request->error['data'] as $line) | 
					
						
							|  |  |  | 		printf('<tr><td> </td><td>%s</td></tr>',$line); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	echo '</table>'; | 
					
						
							|  |  |  | 	echo '</center>'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ?>
 |