RELEASE 1.1.0.6

This commit is contained in:
Deon George 2009-06-30 21:52:55 +10:00
parent d5f4f91f1b
commit 647f86562f
118 changed files with 32686 additions and 19807 deletions

View File

@ -1,5 +1,5 @@
For install instructions in non-English languages, see the wiki: For install instructions in non-English languages, see the wiki:
http://phpldapadmin.wiki.sourceforge.net http://phpldapadmin.sourceforge.net
* Requirements * Requirements
@ -17,7 +17,7 @@ For install instructions in non-English languages, see the wiki:
* For additional help * For additional help
See the wiki: See the wiki:
http://phpldapadmin.wiki.sourceforge.net http://phpldapadmin.sourceforge.net
Join our mailing list: Join our mailing list:
https://lists.sourceforge.net/lists/listinfo/phpldapadmin-devel https://lists.sourceforge.net/lists/listinfo/phpldapadmin-devel

View File

@ -1 +1 @@
$Name: RELEASE-1_1_0_5 $ $Name: RELEASE-1_1_0_6 $

View File

@ -134,11 +134,17 @@ $config->custom->commands['all'] = array(
An AttributeFactory defines which class to use to represent a given attribute */ An AttributeFactory defines which class to use to represent a given attribute */
// $config->custom->appearance['attribute_factory'] = "AttributeFactory"; // $config->custom->appearance['attribute_factory'] = "AttributeFactory";
/* Just show your custom templates. */
// $config->custom->appearance['custom_templates_only'] = false;
/* Disable the default template. */
// $config->custom->appearance['disable_default_template'] = false;
/* Configure what objects are shown in left hand tree */ /* Configure what objects are shown in left hand tree */
// $config->custom->appearance['tree_filter'] = '(objectclass=*)'; // $config->custom->appearance['tree_filter'] = '(objectclass=*)';
/* The height and width of the tree. If these values are not set, then /* The height and width of the tree. If these values are not set, then
no tree scroll bars are provided. no tree scroll bars are provided. */
// $config->custom->appearance['tree_height'] = null; // $config->custom->appearance['tree_height'] = null;
# $config->custom->appearance['tree_height'] = 600; # $config->custom->appearance['tree_height'] = 600;
// $config->custom->appearance['tree_width'] = null; // $config->custom->appearance['tree_width'] = null;
@ -270,7 +276,8 @@ $ldapservers->SetValue($i,'server','name','My LDAP Server');
authentication with dn. authentication with dn.
This is useful, when users should be able to log in with their uid, but This is useful, when users should be able to log in with their uid, but
the ldap administrator wants to log in with his root-dn, that does not the ldap administrator wants to log in with his root-dn, that does not
necessarily have the uid attribute. */ necessarily have the uid attribute.
When using this feature, login_class is ignored. */
// $ldapservers->SetValue($i,'login','fallback_dn',false); // $ldapservers->SetValue($i,'login','fallback_dn',false);
/* If you specified 'cookie' or 'session' as the auth_type above, and you /* If you specified 'cookie' or 'session' as the auth_type above, and you
@ -314,7 +321,7 @@ $ldapservers->SetValue($i,'server','name','My LDAP Server');
// $ldapservers->SetValue($i,'auto_number','min','1000'); // $ldapservers->SetValue($i,'auto_number','min','1000');
/* The DN of the uidPool entry when 'uidpool' mechanism is used above. */ /* The DN of the uidPool entry when 'uidpool' mechanism is used above. */
# $servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com'; // $ldapservers->SetValue($i,'auto_number','uidpool_dn','cn=uidPool,dc=example,dc=com');
/* If you set this, then phpldapadmin will bind to LDAP with this user ID when /* If you set this, then phpldapadmin will bind to LDAP with this user ID when
searching for the uidnumber. The idea is, this user id would have full searching for the uidnumber. The idea is, this user id would have full
@ -364,6 +371,25 @@ $ldapservers->SetValue($i,'server','name','My LDAP Server');
has children. Certain servers are known to allow it, certain are not */ has children. Certain servers are known to allow it, certain are not */
// $ldapservers->SetValue($i,'server','branch_rename',false); // $ldapservers->SetValue($i,'server','branch_rename',false);
/* If you set this, then phpldapadmin will show these attributes as
internal attributes, even if they are not defined in your schema. */
// $ldapservers->SetValue($i,'server','custom_sys_attrs',array(''));
# $ldapservers->SetValue($i,'server','custom_sys_attrs',array('passwordExpirationTime','passwordAllowChangeTime'));
/* If you set this, then phpldapadmin will show these attributes on
objects, even if they are not defined in your schema. */
// $ldapservers->SetValue($i,'server','custom_attrs',array(''));
# $ldapservers->SetValue($i,'server','custom_attrs',array('nsRoleDN','nsRole','nsAccountLock'));
/* These attributes will be forced to MAY attributes and become option in the
templates. If they are not defined in the templates, then they wont appear
as per normal template processing. You may want to do this becuase your LDAP
server may automatically calculate a default value.
In Fedora Directory Server using the DNA Plugin one could ignore uidNumber,
gidNumber and sambaSID. */
// $ldapservers->SetValue($i,'force_may','attrs',array(''));
# $ldapservers->SetValue($i,'force_may','attrs',array('uidNumber','gidNumber','sambaSID'));
/************************************************************************** /**************************************************************************
* If you want to configure additional LDAP servers, do so below. * * If you want to configure additional LDAP servers, do so below. *
* Remove the commented lines and use this section as a template for all * * Remove the commented lines and use this section as a template for all *
@ -494,7 +520,7 @@ $friendly_attrs['uid'] = 'User Name';
/*********************************************/ /*********************************************/
/* Add "modify group members" link to the attribute. */ /* Add "modify group members" link to the attribute. */
// $config->custom->modify_member['groupattr'] = array('member','uniqueMember','memberUid') // $config->custom->modify_member['groupattr'] = array('member','uniqueMember','memberUid');
/* Configure filter for member search. This only applies to "modify group members" feature */ /* Configure filter for member search. This only applies to "modify group members" feature */
// $config->custom->modify_member['filter'] = '(objectclass=Person)'; // $config->custom->modify_member['filter'] = '(objectclass=Person)';

11
doc/uidpool.schema Executable file
View File

@ -0,0 +1,11 @@
##
## Used for storing the next gid and next uid in the the directory
##
objectclass ( 1.3.6.1.4.1.7165.1.2.2.3 NAME 'uidPool' SUP top AUXILIARY
DESC 'Pool for allocating UNIX uids'
MUST ( uidNumber $ cn ) )
objectclass ( 1.3.6.1.4.1.7165.1.2.2.4 NAME 'gidPool' SUP top AUXILIARY
DESC 'Pool for allocating UNIX gids'
MUST ( gidNumber $ cn ) )

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_attr.php,v 1.20.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_attr.php,v 1.20.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* Adds an attribute/value pair to an object * Adds an attribute/value pair to an object
@ -19,11 +19,12 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('add attribute'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('add attribute')),'error','index.php');
$entry = array();
$entry['val'] = get_request('val','POST'); $entry['val'] = get_request('val','POST');
$entry['binary'] = get_request('binary','POST'); $entry['binary'] = get_request('binary','POST');
@ -34,7 +35,7 @@ $entry['attr']['string'] = get_request('attr','POST');
$entry['attr']['encode'] = rawurlencode($entry['attr']['string']); $entry['attr']['encode'] = rawurlencode($entry['attr']['string']);
if ((strlen($entry['binary']) <= 0) && (strlen($entry['val']) <= 0)) if ((strlen($entry['binary']) <= 0) && (strlen($entry['val']) <= 0))
pla_error(_('You left the attribute value blank. Please go back and try again.')); error(_('You left the attribute value blank. Please go back and try again.'),'error','index.php');
/* /*
* Special case for binary attributes (like jpegPhoto and userCertificate): * Special case for binary attributes (like jpegPhoto and userCertificate):
@ -48,44 +49,44 @@ if ($badattr = $ldapserver->checkUniqueAttr($entry['dn']['string'],$entry['attr'
$href = htmlspecialchars(sprintf('cmd.php?cmd=search&search=true&form=advanced&server_id=%s&filter=%s=%s', $href = htmlspecialchars(sprintf('cmd.php?cmd=search&search=true&form=advanced&server_id=%s&filter=%s=%s',
$ldapserver->server_id,$entry['attr']['string'],$badattr)); $ldapserver->server_id,$entry['attr']['string'],$badattr));
pla_error(sprintf(_('Your attempt to add <b>%s</b> (<i>%s</i>) to <br><b>%s</b><br> is NOT allowed. That attribute/value belongs to another entry.<p>You might like to <a href=\'%s\'>search</a> for that entry.'),$entry['attr']['string'],$badattr,$entry['dn']['string'],$href)); error(sprintf(_('Your attempt to add <b>%s</b> (<i>%s</i>) to <br><b>%s</b><br> is NOT allowed. That attribute/value belongs to another entry.<p>You might like to <a href=\'%s\'>search</a> for that entry.'),$entry['attr']['string'],$badattr,$entry['dn']['string'],$href),'error','index.php');
} }
if (strlen($entry['binary']) > 0) { if (strlen($entry['binary']) > 0) {
if ($_FILES['val']['size'] == 0) if ($_FILES['val']['size'] == 0)
pla_error(_('The file you chose is either empty or does not exist. Please go back and try again.')); error(_('The file you chose is either empty or does not exist. Please go back and try again.'),'error','index.php');
if (! is_uploaded_file($_FILES['val']['tmp_name'])) { if (! is_uploaded_file($_FILES['val']['tmp_name'])) {
if (isset($_FILES['val']['error'])) if (isset($_FILES['val']['error']))
switch($_FILES['val']['error']) { switch($_FILES['val']['error']) {
case 0: # No error; possible file attack! case 0: # No error; possible file attack!
pla_error(_('Security error: The file being uploaded may be malicious.')); error(_('Security error: The file being uploaded may be malicious.'),'error','index.php');
break; break;
case 1: # Uploaded file exceeds the upload_max_filesize directive in php.ini case 1: # Uploaded file exceeds the upload_max_filesize directive in php.ini
pla_error(_('The file you uploaded is too large. Please check php.ini, upload_max_size setting')); error(_('The file you uploaded is too large. Please check php.ini, upload_max_size setting'),'error','index.php');
break; break;
case 2: # Uploaded file exceeds the MAX_FILE_SIZE directive specified in the html form case 2: # Uploaded file exceeds the MAX_FILE_SIZE directive specified in the html form
pla_error(_('The file you uploaded is too large. Please check php.ini, upload_max_size setting')); error(_('The file you uploaded is too large. Please check php.ini, upload_max_size setting'),'error','index.php');
break; break;
case 3: # Uploaded file was only partially uploaded case 3: # Uploaded file was only partially uploaded
pla_error(_('The file you selected was only partially uploaded, likley due to a network error.')); error(_('The file you selected was only partially uploaded, likley due to a network error.'),'error','index.php');
break; break;
case 4: # No file was uploaded case 4: # No file was uploaded
pla_error(_('You left the attribute value blank. Please go back and try again.')); error(_('You left the attribute value blank. Please go back and try again.'),'error','index.php');
break; break;
default: # A default error, just in case! :) default: # A default error, just in case! :)
pla_error(_('Security error: The file being uploaded may be malicious.')); error(_('Security error: The file being uploaded may be malicious.'),'error','index.php');
break; break;
} }
else else
pla_error(_('Security error: The file being uploaded may be malicious.')); error(_('Security error: The file being uploaded may be malicious.'),'error','index.php');
} }
$binaryfile['name'] = $_FILES['val']['tmp_name']; $binaryfile['name'] = $_FILES['val']['tmp_name'];
@ -125,7 +126,10 @@ if ($result) {
die(); die();
} else { } else {
pla_error(_('Failed to add the attribute.'),$ldapserver->error(),$ldapserver->errno()); system_message(array(
'title'=>_('Failed to add the attribute.'),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
} }
/** /**

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_attr_form.php,v 1.16.2.2 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_attr_form.php,v 1.16.2.4 2008/12/12 12:20:22 wurley Exp $
/** /**
* Displays a form for adding an attribute/value to an LDAP entry. * Displays a form for adding an attribute/value to an LDAP entry.
@ -15,8 +15,9 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
$entry = array();
$entry['dn']['string'] = get_request('dn','GET'); $entry['dn']['string'] = get_request('dn','GET');
$entry['rdn'] = get_rdn($entry['dn']['string']); $entry['rdn'] = get_rdn($entry['dn']['string']);
@ -24,6 +25,7 @@ printf('<h3 class="title">%s <b>%s</b></h3>',_('Add new attribute'),htmlspecialc
printf('<h3 class="subtitle">%s: <b>%s</b> &nbsp;&nbsp;&nbsp; %s: <b>%s</b></h3>', printf('<h3 class="subtitle">%s: <b>%s</b> &nbsp;&nbsp;&nbsp; %s: <b>%s</b></h3>',
_('Server'),$ldapserver->name,_('Distinguished Name'),htmlspecialchars($entry['dn']['string'])); _('Server'),$ldapserver->name,_('Distinguished Name'),htmlspecialchars($entry['dn']['string']));
$dn = array();
$dn['attrs'] = $ldapserver->getDNAttrs($entry['dn']['string']); $dn['attrs'] = $ldapserver->getDNAttrs($entry['dn']['string']);
$dn['oclasses'] = $ldapserver->getDNAttr($entry['dn']['string'],'objectClass'); $dn['oclasses'] = $ldapserver->getDNAttr($entry['dn']['string'],'objectClass');

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_oclass.php,v 1.19 2007/12/15 07:50:30 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_oclass.php,v 1.19.2.1 2008/12/12 12:20:22 wurley Exp $
/** /**
* Adds an objectClass to the specified dn. * Adds an objectClass to the specified dn.
@ -20,11 +20,12 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if ($ldapserver->isAttrReadOnly('objectClass')) if ($ldapserver->isAttrReadOnly('objectClass'))
pla_error(_('ObjectClasses are flagged as read only in the phpLDAPadmin configuration.')); error(_('ObjectClasses are flagged as read only in the phpLDAPadmin configuration.'),'error','index.php');
$entry = array();
$entry['dn']['encode'] = get_request('dn'); $entry['dn']['encode'] = get_request('dn');
$entry['dn']['string'] = urldecode($entry['dn']['encode']); $entry['dn']['string'] = urldecode($entry['dn']['encode']);
@ -42,7 +43,7 @@ if (is_array($entry['new']['attrs']) && count($entry['new']['attrs']) > 0)
$href['search'] = htmlspecialchars(sprintf('cmd.php?cmd=search&search=true&form=advanced&server_id=%s&filter=%s=%s', $href['search'] = htmlspecialchars(sprintf('cmd.php?cmd=search&search=true&form=advanced&server_id=%s&filter=%s=%s',
$ldapserver->server_id,$attr,$badattr)); $ldapserver->server_id,$attr,$badattr));
pla_error(sprintf(_('Your attempt to add <b>%s</b> (<i>%s</i>) to <br><b>%s</b><br> is NOT allowed. That attribute/value belongs to another entry.<p>You might like to <a href=\'%s\'>search</a> for that entry.'),$attr,$badattr,$entry['dn']['string'],$href['search'])); error(sprintf(_('Your attempt to add <b>%s</b> (<i>%s</i>) to <br><b>%s</b><br> is NOT allowed. That attribute/value belongs to another entry.<p>You might like to <a href=\'%s\'>search</a> for that entry.'),$attr,$badattr,$entry['dn']['string'],$href['search']),'error','index.php');
} }
$new_entry[$attr] = $val; $new_entry[$attr] = $val;
@ -51,7 +52,10 @@ if (is_array($entry['new']['attrs']) && count($entry['new']['attrs']) > 0)
$result = $ldapserver->attrModify($entry['dn']['string'],$new_entry); $result = $ldapserver->attrModify($entry['dn']['string'],$new_entry);
if (! $result) if (! $result)
pla_error(_('Could not perform ldap_mod_add operation.'),$ldapserver->error(),$ldapserver->errno()); system_message(array(
'title'=>_('Could not perform ldap_mod_add operation.'),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
else { else {
$modified_attrs = array_keys($entry['new']['attrs']); $modified_attrs = array_keys($entry['new']['attrs']);

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_oclass_form.php,v 1.25.2.1 2008/01/13 05:37:00 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_oclass_form.php,v 1.25.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* This page may simply add the objectClass and take you back to the edit page, * This page may simply add the objectClass and take you back to the edit page,
@ -20,14 +20,15 @@
*/ */
require './common.php'; require './common.php';
$entry = array();
$entry['oclass']['new'] = get_request('new_oclass','REQUEST'); $entry['oclass']['new'] = get_request('new_oclass','REQUEST');
$entry['dn']['string'] = get_request('dn','REQUEST'); $entry['dn']['string'] = get_request('dn','REQUEST');
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $entry['oclass']['new']) if (! $entry['oclass']['new'])
pla_error(_('You did not select any ObjectClasses for this object. Please go back and do so.')); error(_('You did not select any ObjectClasses for this object. Please go back and do so.'),'error','index.php');
/* Ensure that the object has defined all MUST attrs for this objectClass. /* Ensure that the object has defined all MUST attrs for this objectClass.
* If it hasn't, present a form to have the user enter values for all the * If it hasn't, present a form to have the user enter values for all the
@ -108,7 +109,10 @@ if (count($ldap['attrs']['need']) > 0) {
$result = $ldapserver->attrModify($entry['dn']['string'],array('objectClass'=>$entry['oclass']['new'])); $result = $ldapserver->attrModify($entry['dn']['string'],array('objectClass'=>$entry['oclass']['new']));
if (! $result) if (! $result)
pla_error('Could not perform ldap_mod_add operation.',$ldapserver->error(),$ldapserver->errno()); system_message(array(
'title'=>_('Could not perform ldap_mod_add operation.'),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
else { else {
$href = sprintf('cmd.php?cmd=template_engine&server_id=%s&dn=%s&modified_attrs[]=objectClass', $href = sprintf('cmd.php?cmd=template_engine&server_id=%s&dn=%s&modified_attrs[]=objectClass',

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_value.php,v 1.21.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_value.php,v 1.21.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* Adds a value to an attribute for a given dn. * Adds a value to an attribute for a given dn.
@ -18,12 +18,13 @@
*/ */
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add_value')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add_value'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('add attribute value'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('add attribute value')),'error','index.php');
# The DN and ATTR we are working with. # The DN and ATTR we are working with.
$entry = array();
$entry['dn']['encode'] = get_request('dn','POST',true); $entry['dn']['encode'] = get_request('dn','POST',true);
$entry['dn']['string'] = rawurldecode($entry['dn']['encode']); $entry['dn']['string'] = rawurldecode($entry['dn']['encode']);
$entry['attr']['encode'] = get_request('attr','POST',true); $entry['attr']['encode'] = get_request('attr','POST',true);
@ -34,7 +35,7 @@ $entry['value']['string'] = get_request('new_value','POST',true);
$entry['value']['bin'] = get_request('binary','POST') ? true : false; $entry['value']['bin'] = get_request('binary','POST') ? true : false;
if ($ldapserver->isAttrReadOnly($entry['attr']['string'])) if ($ldapserver->isAttrReadOnly($entry['attr']['string']))
pla_error(sprintf(_('The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'),$entry['attr']['html'])); error(sprintf(_('The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'),$entry['attr']['html']),'error','index.php');
/* /*
* Special case for binary attributes: * Special case for binary attributes:
@ -56,7 +57,7 @@ if ($badattr = $ldapserver->checkUniqueAttr($entry['dn']['string'],$entry['attr'
$href = htmlspecialchars(sprintf('cmd.php?cmd=search&search=true&form=advanced&server_id=%s&filter=%s=%s', $href = htmlspecialchars(sprintf('cmd.php?cmd=search&search=true&form=advanced&server_id=%s&filter=%s=%s',
$ldapserver->server_id,$entry['attr']['string'],$badattr)); $ldapserver->server_id,$entry['attr']['string'],$badattr));
pla_error(sprintf(_('Your attempt to add <b>%s</b> (<i>%s</i>) to <br><b>%s</b><br> is NOT allowed. That attribute/value belongs to another entry.<p>You might like to <a href=\'%s\'>search</a> for that entry.'),$entry['attr']['string'],$badattr,$entry['dn']['string'],$href)); error(sprintf(_('Your attempt to add <b>%s</b> (<i>%s</i>) to <br><b>%s</b><br> is NOT allowed. That attribute/value belongs to another entry.<p>You might like to <a href=\'%s\'>search</a> for that entry.'),$entry['attr']['string'],$badattr,$entry['dn']['string'],$href),'error','index.php');
} }
# Call the custom callback for each attribute modification and verify that it should be modified. # Call the custom callback for each attribute modification and verify that it should be modified.
@ -69,8 +70,11 @@ if (run_hook('pre_attr_add',
$add_result = $ldapserver->attrModify($entry['dn']['string'],$new_entry); $add_result = $ldapserver->attrModify($entry['dn']['string'],$new_entry);
if (! $add_result) { if (! $add_result) {
pla_error(_('Could not perform ldap_mod_add operation.'), system_message(array(
$ldapserver->error(),$ldapserver->errno()); 'title'=>_('Could not perform ldap_mod_add operation.'),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
} else { } else {
run_hook('post_attr_modify', run_hook('post_attr_modify',
array('server_id'=>$ldapserver->server_id,'dn'=>$entry['dn']['string'],'attr_name'=>$entry['attr']['string'],'new_value'=>$new_entry)); array('server_id'=>$ldapserver->server_id,'dn'=>$entry['dn']['string'],'attr_name'=>$entry['attr']['string'],'new_value'=>$new_entry));

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_value_form.php,v 1.39.2.3 2008/01/13 05:43:13 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_value_form.php,v 1.39.2.6 2008/12/12 12:20:22 wurley Exp $
/** /**
* Displays a form to allow the user to enter a new value to add * Displays a form to allow the user to enter a new value to add
@ -13,9 +13,10 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
# The DN and ATTR we are working with. # The DN and ATTR we are working with.
$entry = array();
$entry['dn']['encode'] = get_request('dn','GET',true); $entry['dn']['encode'] = get_request('dn','GET',true);
$entry['dn']['string'] = urldecode($entry['dn']['encode']); $entry['dn']['string'] = urldecode($entry['dn']['encode']);
$entry['dn']['html'] = htmlspecialchars($entry['dn']['string']); $entry['dn']['html'] = htmlspecialchars($entry['dn']['string']);
@ -34,7 +35,7 @@ $entry['rdn']['html'] = htmlspecialchars($entry['rdn']['string']);
/***************/ /***************/
if (! $entry['dn']['string'] || ! $ldapserver->dnExists($entry['dn']['string'])) if (! $entry['dn']['string'] || ! $ldapserver->dnExists($entry['dn']['string']))
pla_error(sprintf(_('The entry (%s) does not exist.'),$entry['dn']['html']),null,-1,true); error(sprintf(_('The entry (%s) does not exist.'),$entry['dn']['html']),'error','index.php');
$tree = get_cached_item($ldapserver->server_id,'tree'); $tree = get_cached_item($ldapserver->server_id,'tree');
$entry['ldap'] = null; $entry['ldap'] = null;
@ -52,7 +53,7 @@ eval('$reader = new '.$_SESSION[APPCONFIG]->GetValue('appearance','entry_reader'
$reader->visit('Start', $entry['ldap']); $reader->visit('Start', $entry['ldap']);
if (! $entry['ldap'] || $entry['ldap']->isReadOnly()) if (! $entry['ldap'] || $entry['ldap']->isReadOnly())
pla_error(sprintf(_('The entry (%s) is in readonly mode.'),$entry['dn']['html']),null,-1,true); error(sprintf(_('The entry (%s) is in readonly mode.'),$entry['dn']['html']),'error','index.php');
/*********************/ /*********************/
/* attribute values */ /* attribute values */
@ -71,11 +72,13 @@ if (!$ldap['attr']) {
$ldap['count'] = $ldap['attr']->getValueCount(); $ldap['count'] = $ldap['attr']->getValueCount();
if ($ldap['attr']->isReadOnly()) if ($ldap['attr']->isReadOnly())
pla_error(sprintf(_('The attribute (%s) is in readonly mode.'),$entry['attr']['html']),null,-1,true); error(sprintf(_('The attribute (%s) is in readonly mode.'),$entry['attr']['html']),'error','index.php');
if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add_value')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add_value'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('add attribute value'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('add attribute value')),'error','index.php');
if (($ldap['attr']->getValueCount() == 0) && ! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add')) if (($ldap['attr']->getValueCount() == 0) && ! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('add attribute'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('add attribute')),'error','index.php');
$entry['attr']['oclass'] = (strcasecmp($entry['attr']['string'],'objectClass') == 0) ? true : false; $entry['attr']['oclass'] = (strcasecmp($entry['attr']['string'],'objectClass') == 0) ? true : false;
@ -156,8 +159,8 @@ if ($entry['attr']['oclass']) {
echo '</tr>'; echo '</tr>';
if ($_SESSION[APPCONFIG]->GetValue('appearance','show_hints')) if ($_SESSION[APPCONFIG]->GetValue('appearance','show_hints'))
printf('<tr><td colspan=2><small><br /><img src="images/light.png" alt="Hint" /><span class="hint">%s</span></small></td></tr>', printf('<tr><td colspan=2><small><br /><img src="%s/light.png" alt="Hint" /><span class="hint">%s</span></small></td></tr>',
_('Note: You may be required to enter new attributes that these objectClass(es) require')); IMGDIR,_('Note: You may be required to enter new attributes that these objectClass(es) require'));
echo '</table>'; echo '</table>';
echo '</center>'; echo '</center>';
echo '</form>'; echo '</form>';
@ -165,7 +168,7 @@ if ($entry['attr']['oclass']) {
} else { } else {
# Draw a blank field # Draw a blank field
echo '<table border=0><tr><td>'; echo '<table border=0><tr><td>';
$writer->draw('BlankValue', $ldap['attr'], $ldap['count']); $writer->draw('BlankValue',$ldap['attr'],$ldap['count'],$reader);
echo '</td></tr><tr><td>'; echo '</td></tr><tr><td>';
if ($ldap['schema']->getDescription()) if ($ldap['schema']->getDescription())

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/compare.php,v 1.16.2.3 2008/01/13 06:33:50 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/compare.php,v 1.16.2.7 2008/12/12 12:20:22 wurley Exp $
/** /**
* Compare two DNs - the destination DN is editable. * Compare two DNs - the destination DN is editable.
@ -8,27 +8,28 @@
require_once './common.php'; require_once './common.php';
$dn_src = isset($_POST['dn_src']) ? $_POST['dn_src'] : null; $dn_src = get_request('dn_src');
$dn_dst = isset($_POST['dn_dst']) ? $_POST['dn_dst'] : null; $dn_dst = get_request('dn_dst');
$encoded_dn_src = rawurlencode($dn_src); $encoded_dn_src = rawurlencode($dn_src);
$encoded_dn_dst = rawurlencode($dn_dst); $encoded_dn_dst = rawurlencode($dn_dst);
$server_id_src = (isset($_POST['server_id_src']) ? $_POST['server_id_src'] : ''); $server_id_src = get_request('server_id_src');
$server_id_dst = (isset($_POST['server_id_dst']) ? $_POST['server_id_dst'] : ''); $server_id_dst = get_request('server_id_dst');
$ldapserver_src = $_SESSION[APPCONFIG]->ldapservers->Instance($server_id_src); $ldapserver_src = $_SESSION[APPCONFIG]->ldapservers->Instance($server_id_src);
if (! $ldapserver_src->haveAuthInfo()) if (! $ldapserver_src->haveAuthInfo())
pla_error(_('Not enough information to login to server. Please check your configuration.')); error(_('Not enough information to login to server. Please check your configuration.'),'error','index.php');
$ldapserver_dst = $_SESSION[APPCONFIG]->ldapservers->Instance($server_id_dst); $ldapserver_dst = $_SESSION[APPCONFIG]->ldapservers->Instance($server_id_dst);
if (! $ldapserver_src->haveAuthInfo()) if (! $ldapserver_src->haveAuthInfo())
pla_error(_('Not enough information to login to server. Please check your configuration.')); error(_('Not enough information to login to server. Please check your configuration.'),'error','index.php');
if (! $ldapserver_src->dnExists($dn_src)) if (! $ldapserver_src->dnExists($dn_src))
pla_error(sprintf(_('No such entry: %s'),pretty_print_dn($dn_src))); error(sprintf('%s (%s)',_('No such entry.'),pretty_print_dn($dn_src)),'error','index.php');
if (! $ldapserver_dst->dnExists($dn_dst)) if (! $ldapserver_dst->dnExists($dn_dst))
pla_error(sprintf(_('No such entry: %s'),pretty_print_dn($dn_dst))); error(sprintf('%s (%s)',_('No such entry.'),pretty_print_dn($dn_dst)),'error','index.php');
$attrs_src = $ldapserver_src->getDNAttrs($dn_src,false,$_SESSION[APPCONFIG]->GetValue('deref','view')); $attrs_src = $ldapserver_src->getDNAttrs($dn_src,false,$_SESSION[APPCONFIG]->GetValue('deref','view'));
$attrs_dst = $ldapserver_dst->getDNAttrs($dn_dst,false,$_SESSION[APPCONFIG]->GetValue('deref','view')); $attrs_dst = $ldapserver_dst->getDNAttrs($dn_dst,false,$_SESSION[APPCONFIG]->GetValue('deref','view'));
@ -253,12 +254,12 @@ foreach ($attrs_all as $attr) {
if (count($vals) > 1) if (count($vals) > 1)
for ($i=1; $i<=count($vals); $i++) for ($i=1; $i<=count($vals); $i++)
printf('<a href="%s&amp;value_num=%s"><img src="images/save.png" /> %s(%s)</a><br />',$href,$i,_('download value'),$i); printf('<a href="%s&amp;value_num=%s"><img src="%s/save.png" /> %s(%s)</a><br />',$href,$i,_('download value'),IMGDIR,$i);
else else
printf('<a href="%s"><img src="images/save.png" /> %s</a><br />',$href,_('download value')); printf('<a href="%s"><img src="%s/save.png" /> %s</a><br />',$href,IMGDIR,_('download value'));
if ($side == 'dst' && ! $ldapserver_dst->isReadOnly() && ! $ldapserver->isAttrReadOnly($attr)) if ($side == 'dst' && ! $ldapserver_dst->isReadOnly() && ! $ldapserver->isAttrReadOnly($attr))
printf('<a href="javascript:deleteAttribute(\'%s\');" style="color:red;"><img src="images/trash.png" /> %s</a>',$attr,_('delete attribute')); printf('<a href="javascript:deleteAttribute(\'%s\');" style="color:red;"><img src="%s/trash.png" /> %s</a>',$attr,IMGDIR,_('delete attribute'));
echo '</small>'; echo '</small>';
echo '</td>'; echo '</td>';
@ -322,8 +323,7 @@ foreach ($attrs_all as $attr) {
if ($side == 'dst') { if ($side == 'dst') {
printf('<input style="width: 260px" type="password" name="new_values[userpassword]" value="%s" />',htmlspecialchars($user_password)); printf('<input style="width: 260px" type="password" name="new_values[userpassword]" value="%s" />',htmlspecialchars($user_password));
echo enc_type_select_list($enc_type); echo enc_type_select_list($enc_type,'enc','userpassword',0);
} }
echo '<br />'; echo '<br />';
@ -383,8 +383,8 @@ foreach ($attrs_all as $attr) {
# Is this value is a structural objectClass, make it read-only # Is this value is a structural objectClass, make it read-only
if (0 == strcasecmp($attr,'objectClass')) { if (0 == strcasecmp($attr,'objectClass')) {
printf('<a title="%s" href="cmd.php?cmd=schema&amp;server_id=%s&amp;view=objectClasses&amp;viewvalue=%s"><img src="images/info.png" /></a>', printf('<a title="%s" href="cmd.php?cmd=schema&amp;server_id=%s&amp;view=objectClasses&amp;viewvalue=%s"><img src="%s/info.png" /></a>',
_('View the schema description for this objectClass'),$ldapserver->server_id,htmlspecialchars($val)); _('View the schema description for this objectClass'),$ldapserver->server_id,htmlspecialchars($val),IMGDIR);
$schema_object = $ldapserver->getSchemaObjectClass($val); $schema_object = $ldapserver->getSchemaObjectClass($val);
@ -400,14 +400,14 @@ foreach ($attrs_all as $attr) {
} }
if (is_dn_string($val) || $ldapserver->isDNAttr($attr)) if (is_dn_string($val) || $ldapserver->isDNAttr($attr))
printf('<a title="%s" href="cmd.php?cmd=template_engine&amp;server_id=%s&amp;dn=%s"><img style="vertical-align: top" src="images/go.png" /></a>', printf('<a title="%s" href="cmd.php?cmd=template_engine&amp;server_id=%s&amp;dn=%s"><img style="vertical-align: top" src="%s/go.png" /></a>',
sprintf(_('Go to %s'),htmlspecialchars($val)),$ldapserver->server_id,rawurlencode($val)); sprintf(_('Go to %s'),htmlspecialchars($val)),$ldapserver->server_id,rawurlencode($val),IMGDIR);
elseif (is_mail_string($val)) elseif (is_mail_string($val))
printf('<a href="mailto:%s><img style="vertical-align: center" src="images/mail.png" /></a>',htmlspecialchars($val)); printf('<a href="mailto:%s><img style="vertical-align: center" src="%s/mail.png" /></a>',htmlspecialchars($val),IMGDIR);
elseif (is_url_string($val)) elseif (is_url_string($val))
printf('<a href="%s" target="new"><img style="vertical-align: center" src="images/dc.png" /></a>',htmlspecialchars($val)); printf('<a href="%s" target="new"><img style="vertical-align: center" src="%s/dc.png" /></a>',htmlspecialchars($val),IMGDIR);
if ($ldapserver->isMultiLineAttr($attr,$val)) { if ($ldapserver->isMultiLineAttr($attr,$val)) {
if ($side == 'dst') if ($side == 'dst')

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/compare_form.php,v 1.5 2007/12/15 07:50:30 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/compare_form.php,v 1.5.2.1 2008/12/12 07:29:55 wurley Exp $
/** /**
* Compares to DN entries side by side. * Compares to DN entries side by side.
@ -14,7 +14,7 @@
require_once './common.php'; require_once './common.php';
$dn = (isset($_GET['dn']) ? $_GET['dn'] : ''); $dn = get_request('dn','GET');
$rdn = get_rdn($dn); $rdn = get_rdn($dn);
$select_server_html = server_select_list($ldapserver->server_id,true,'server_id_dst'); $select_server_html = server_select_list($ldapserver->server_id,true,'server_id_dst');

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/copy.php,v 1.44.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/copy.php,v 1.44.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* Copies a given object to create a new one. * Copies a given object to create a new one.
@ -17,8 +17,9 @@
require './common.php'; require './common.php';
if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_move')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_move'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('copy entry'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('copy entry')),'error','index.php');
$entry = array();
$entry['src']['id'] = get_request('server_id'); $entry['src']['id'] = get_request('server_id');
$entry['dst']['id'] = get_request('dest_server_id'); $entry['dst']['id'] = get_request('dest_server_id');
@ -26,10 +27,10 @@ $entry['src']['ldapserver'] = $_SESSION[APPCONFIG]->ldapservers->Instance($entry
$entry['dst']['ldapserver'] = $_SESSION[APPCONFIG]->ldapservers->Instance($entry['dst']['id']); $entry['dst']['ldapserver'] = $_SESSION[APPCONFIG]->ldapservers->Instance($entry['dst']['id']);
if ($entry['dst']['ldapserver']->isReadOnly()) if ($entry['dst']['ldapserver']->isReadOnly())
pla_error(_('Destination server is currently READ-ONLY.')); error(_('Destination server is currently READ-ONLY.'),'error','index.php');
if (! $entry['src']['ldapserver']->haveAuthInfo() || ! $entry['dst']['ldapserver']->haveAuthInfo()) if (! $entry['src']['ldapserver']->haveAuthInfo() || ! $entry['dst']['ldapserver']->haveAuthInfo())
pla_error(_('Not enough information to login to server. Please check your configuration.')); error(_('Not enough information to login to server. Please check your configuration.'),'error','index.php');
$entry['src']['dn'] = get_request('old_dn'); $entry['src']['dn'] = get_request('old_dn');
$entry['dst']['dn'] = get_request('new_dn'); $entry['dst']['dn'] = get_request('new_dn');
@ -38,19 +39,19 @@ $entry['src']['remove'] = (get_request('remove') == 'yes') ? true : false;
# Error checking # Error checking
if (strlen(trim($entry['dst']['dn'])) == 0) if (strlen(trim($entry['dst']['dn'])) == 0)
pla_error(_('You left the destination DN blank.')); error(_('You left the destination DN blank.'),'error','index.php');
if (pla_compare_dns($entry['src']['dn'],$entry['dst']['dn']) == 0 && $entry['src']['id'] == $entry['dst']['id']) if (pla_compare_dns($entry['src']['dn'],$entry['dst']['dn']) == 0 && $entry['src']['id'] == $entry['dst']['id'])
pla_error(_('The source and destination DN are the same.')); error(_('The source and destination DN are the same.'),'error','index.php');
if ($entry['dst']['ldapserver']->dnExists($entry['dst']['dn'])) if ($entry['dst']['ldapserver']->dnExists($entry['dst']['dn']))
pla_error(sprintf(_('The destination entry (%s) already exists.'),pretty_print_dn($entry['dst']['dn']))); error(sprintf(_('The destination entry (%s) already exists.'),pretty_print_dn($entry['dst']['dn'])),'error','index.php');
if (! $entry['dst']['ldapserver']->dnExists(get_container($entry['dst']['dn']))) if (! $entry['dst']['ldapserver']->dnExists(get_container($entry['dst']['dn'])))
pla_error(sprintf(_('The destination container (%s) does not exist.'),pretty_print_dn(get_container($entry['dst']['dn'])))); error(sprintf(_('The destination container (%s) does not exist.'),pretty_print_dn(get_container($entry['dst']['dn']))),'error','index.php');
if ($entry['src']['recursive']) { if ($entry['src']['recursive']) {
$filter = isset($_POST['filter']) ? $_POST['filter'] : '(objectClass=*)'; $filter = get_request('filter','POST',false,'(objectClass=*)');
# Build a tree similar to that of the tree browser to give to r_copy_dn # Build a tree similar to that of the tree browser to give to r_copy_dn
$snapshot_tree = array(); $snapshot_tree = array();
@ -141,7 +142,11 @@ function copy_dn($ldapserver_src,$ldapserver_dst,$dn_src,$dn_dst) {
$add_result = $ldapserver_dst->add($dn_dst,$new_entry); $add_result = $ldapserver_dst->add($dn_dst,$new_entry);
if (! $add_result) { if (! $add_result) {
echo '</small><br /><br />'; echo '</small><br /><br />';
pla_error(_('Failed to copy DN: ').$dn_dst,$ldapserver_dst->error(),$ldapserver_dst->errno()); system_message(array(
'title'=>_('Failed to copy DN.').sprintf(' (%s)',$dn_dst),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
} else { } else {
run_hook('post_entry_create', run_hook('post_entry_create',
array('server_id'=>$ldapserver_dst->server_id,'dn'=>$dn_dst,'attrs'=>$new_entry)); array('server_id'=>$ldapserver_dst->server_id,'dn'=>$dn_dst,'attrs'=>$new_entry));

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/copy_form.php,v 1.30.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/copy_form.php,v 1.30.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* Copies a given object to create a new one. * Copies a given object to create a new one.
@ -15,8 +15,9 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
$entry = array();
$entry['dn'] = get_request('dn','GET'); $entry['dn'] = get_request('dn','GET');
$entry['rdn'] = get_rdn($entry['dn']); $entry['rdn'] = get_rdn($entry['dn']);
@ -99,7 +100,7 @@ echo '</table></form>';
echo "\n"; echo "\n";
if ($_SESSION[APPCONFIG]->GetValue('appearance','show_hints')) if ($_SESSION[APPCONFIG]->GetValue('appearance','show_hints'))
printf('<small><img src="images/light.png" alt="Light" /><span class="hint">%s</span></small>',_('Hint: Copying between different servers only works if there are no schema violations')); printf('<small><img src="%s/light.png" alt="Light" /><span class="hint">%s</span></small>',IMGDIR,_('Hint: Copying between different servers only works if there are no schema violations'));
echo '</center>'; echo '</center>';
?> ?>

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/create.php,v 1.48.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/create.php,v 1.48.2.4 2008/12/12 12:20:22 wurley Exp $
/** /**
* Creates a new object. * Creates a new object.
@ -19,12 +19,12 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode'), null, -1, true); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_create')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_create'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('create entry'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('create entry')),'error','index.php');
$rdn_attr = isset($_POST['rdn_attribute']) ? $_POST['rdn_attribute'] : null; $rdn_attr = get_request('rdn_attribute');
$entryfactoryclass = $_SESSION[APPCONFIG]->GetValue('appearance','entry_factory'); $entryfactoryclass = $_SESSION[APPCONFIG]->GetValue('appearance','entry_factory');
eval('$entry_factory = new '.$entryfactoryclass.'();'); eval('$entry_factory = new '.$entryfactoryclass.'();');
@ -36,7 +36,7 @@ $entry->accept($reader);
$container = $entry->getContainer(); $container = $entry->getContainer();
if (!$container || !$ldapserver->dnExists($container)) if (!$container || !$ldapserver->dnExists($container))
pla_error(sprintf(_('The container you specified (%s) does not exist. Please try again.'),htmlspecialchars($container)),null,-1,true); error(sprintf(_('The container you specified (%s) does not exist. Please try again.'),htmlspecialchars($container)),'error','index.php');
$tree = get_cached_item($ldapserver->server_id,'tree'); $tree = get_cached_item($ldapserver->server_id,'tree');
if ($tree) { if ($tree) {
@ -46,18 +46,18 @@ if ($tree) {
$container_entry = $tree->getEntry($container); $container_entry = $tree->getEntry($container);
if ($container_entry->isLeaf()) if ($container_entry->isLeaf())
pla_error(sprintf(_('The container (%s) is a leaf.'), htmlspecialchars($container)), null, -1, true); error(sprintf(_('The container (%s) is a leaf.'), htmlspecialchars($container)),'error','index.php');
} }
$entry->setRdnAttributeName($rdn_attr); $entry->setRdnAttributeName($rdn_attr);
if (!$entry->getRdnAttribute()) if (!$entry->getRdnAttribute())
pla_error(sprintf(_('The Rdn attribute (%s) does not exist.'), htmlspecialchars($rdn_attr)), null, -1, true); error(sprintf(_('The Rdn attribute (%s) does not exist.'), htmlspecialchars($rdn_attr)),'error','index.php');
$new_dn = $entry->getDn(); $new_dn = $entry->getDn();
if (! $new_dn) if (! $new_dn)
pla_error(_('You left the RDN field blank.')); error(_('You left the RDN field blank.'),'error','index.php');
$redirect = isset($_POST['redirect']) ? $_POST['redirect'] : false; $redirect = get_request('redirect','POST',false,false);
$new_entry = array(); $new_entry = array();
$attrs = $entry->getAttributes(); $attrs = $entry->getAttributes();
@ -69,8 +69,9 @@ foreach ($attrs as $attr) {
$new_vals[] = $val; $new_vals[] = $val;
} }
if ($attr->isRequired() && !$new_vals) if ($attr->isRequired() && !$new_vals && !$ldapserver->isIgnoredAttr($attr->getName()))
pla_error(sprintf(_('You left the value blank for required attribute (%s).'), htmlspecialchars($attr->getName()))); error(sprintf(_('You left the value blank for required attribute (%s).'),htmlspecialchars($attr->getName())),'error','index.php');
if ($new_vals) if ($new_vals)
$new_entry[$attr->getName()] = $new_vals; $new_entry[$attr->getName()] = $new_vals;
@ -83,7 +84,7 @@ foreach ($new_entry as $attr => $vals) {
# Check to see if this is a unique Attribute # Check to see if this is a unique Attribute
if ($badattr = $ldapserver->checkUniqueAttr($new_dn,$attr,$vals)) { if ($badattr = $ldapserver->checkUniqueAttr($new_dn,$attr,$vals)) {
$search_href = sprintf('?cmd=search&amp;search=true&amp;form=advanced&amp;server_id=%s&amp;filter=%s=%s', $ldapserver->server_id,$attr,$badattr); $search_href = sprintf('?cmd=search&amp;search=true&amp;form=advanced&amp;server_id=%s&amp;filter=%s=%s', $ldapserver->server_id,$attr,$badattr);
pla_error(sprintf(_('Your attempt to add <b>%s</b> (<i>%s</i>) to <br><b>%s</b><br> is NOT allowed. That attribute/value belongs to another entry.<p>You might like to <a href=\'%s\'>search</a> for that entry.'),$attr,$badattr,$new_dn,$search_href)); error(sprintf(_('Your attempt to add <b>%s</b> (<i>%s</i>) to <br><b>%s</b><br> is NOT allowed. That attribute/value belongs to another entry.<p>You might like to <a href=\'%s\'>search</a> for that entry.'),$attr,$badattr,$new_dn,$search_href),'error','index.php');
} }
} }
@ -129,6 +130,9 @@ if ($add_result) {
} }
} else { } else {
pla_error(_('Could not add the object to the LDAP server.'),$ldapserver->error(),$ldapserver->errno()); system_message(array(
'title'=>_('Could not add the object to the LDAP server.'),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
} }
?> ?>

View File

@ -1,4 +1,4 @@
/* $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/css/style.css,v 1.48.2.4 2008/01/13 07:17:23 wurley Exp $ */ /* $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/css/style.css,v 1.48.2.8 2008/12/19 00:38:31 wurley Exp $ */
/* Global Page */ /* Global Page */
table.page { table.page {
@ -96,7 +96,7 @@ table.page table.control td.logo img.logo {
text-align: right; text-align: right;
width: 100px; width: 100px;
height: 60px; height: 50px;
} }
/* Global Page - LDAP Tree */ /* Global Page - LDAP Tree */
@ -276,6 +276,7 @@ table.tree td.rdn a:hover {
font-size: 13px; font-size: 13px;
color: #841212; color: #841212;
background-color: #FFF0C0; background-color: #FFF0C0;
text-decoration: none;
} }
table.tree td.rdn span.count { table.tree td.rdn span.count {
@ -300,13 +301,6 @@ table.tree td.link a:hover {
text-decoration: none; text-decoration: none;
} }
table.tree td.rdn a:hover {
font-size: 13px;
color: #841212;
background-color: #FFF0C0;
text-decoration: none;
}
table.tree td.links a:hover { table.tree td.links a:hover {
text-decoration: none; text-decoration: none;
color: blue; color: blue;
@ -438,6 +432,7 @@ table.entry input {
} }
table.entry input.value { table.entry input.value {
color: #000000;
font-size: 14px; font-size: 14px;
width: 350px; width: 350px;
background-color: #FFFFFF; background-color: #FFFFFF;
@ -447,15 +442,16 @@ table.entry div.helper {
text-align: left; text-align: left;
white-space: nowrap; white-space: nowrap;
background-color: #FFFFFF; background-color: #FFFFFF;
color: #888;
font-size: 14px; font-size: 14px;
font-weight: normal; font-weight: normal;
color: #888;
} }
table.entry input.roval { table.entry input.roval {
font-size: 14px; font-size: 14px;
width: 350px; width: 350px;
background-color: #FFFFFF; background-color: #FFFFFF;
color: #000000;
border: none; border: none;
} }
@ -463,12 +459,14 @@ table.entry textarea.value {
font-size: 14px; font-size: 14px;
width: 350px; width: 350px;
background-color: #FFFFFF; background-color: #FFFFFF;
color: #000000;
} }
table.entry textarea.roval { table.entry textarea.roval {
font-size: 14px; font-size: 14px;
width: 350px; width: 350px;
background-color: #FFFFFF; background-color: #FFFFFF;
color: #000000;
border: none; border: none;
} }
@ -604,41 +602,50 @@ table.entry tr.updated td.ew2_val {
#login { #login {
background: url('../images/uid.png') no-repeat 0 1px; background: url('../images/uid.png') no-repeat 0 1px;
background-color: #FAFAFF; background-color: #FAFAFF;
color: #000000;
padding-left: 17px; padding-left: 17px;
} }
#login:focus { #login:focus {
background-color: #F0F0FF; background-color: #F0F0FF;
color: #000000;
} }
#login:disabled { #login:disabled {
background-color: #DDDDFF; background-color: #DDDDFF;
color: #000000;
} }
#password { #password {
background: url('../images/key.png') no-repeat 0 1px; background: url('../images/key.png') no-repeat 0 1px;
background-color: #FAFAFF; background-color: #FAFAFF;
color: #000000;
padding-left: 17px; padding-left: 17px;
} }
#password:focus { #password:focus {
background-color: #F0F0FF; background-color: #F0F0FF;
color: #000000;
} }
#password:disabled { #password:disabled {
background-color: #DDDDFF; background-color: #DDDDFF;
color: #000000;
} }
#generic { #generic {
background-color: #FAFAFF; background-color: #FAFAFF;
color: #000000;
padding-left: 17px; padding-left: 17px;
} }
#generic:focus { #generic:focus {
background-color: #F0F0FF; background-color: #F0F0FF;
color: #000000;
} }
#generic:disabled { #generic:disabled {
background-color: #DDDDFF; background-color: #DDDDFF;
color: #000000;
} }
/* After input results */ /* After input results */

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete.php,v 1.27.2.2 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete.php,v 1.27.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* Deletes a DN and presents a "job's done" message. * Deletes a DN and presents a "job's done" message.
@ -15,24 +15,25 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_delete', 'simple_delete')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_delete', 'simple_delete'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete entry'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete entry')),'error','index.php');
$entry = array();
$entry['dn'] = get_request('dn'); $entry['dn'] = get_request('dn');
if (! $entry['dn']) if (! $entry['dn'])
pla_error(_('You must specify a DN')); error(_('You must specify a DN'),'error','index.php');
if (! $ldapserver->dnExists($entry['dn'])) if (! $ldapserver->dnExists($entry['dn']))
pla_error(sprintf(_('No such entry: %s'),'<b>'.pretty_print_dn($entry['dn']).'</b>')); error(sprintf('%s (%s)',_('No such entry.'),'<b>'.pretty_print_dn($entry['dn']).'</b>'),'error','index.php');
# Check the user-defined custom callback first. # Check the user-defined custom callback first.
if (run_hook('pre_entry_delete',array('server_id'=>$ldapserver->server_id,'dn'=>$entry['dn']))) if (run_hook('pre_entry_delete',array('server_id'=>$ldapserver->server_id,'dn'=>$entry['dn'])))
$result = $ldapserver->delete($entry['dn']); $result = $ldapserver->delete($entry['dn']);
else else
pla_error(sprintf(_('Could not delete the entry: %s'),'<b>'.pretty_print_dn($entry['dn']).'</b>')); error(sprintf(_('Could not delete the entry: %s'),'<b>'.pretty_print_dn($entry['dn']).'</b>'),'error','index.php');
if ($result) { if ($result) {
# Custom callback # Custom callback
@ -46,7 +47,9 @@ if ($result) {
sprintf('index.php?server_id=%s',$ldapserver->server_id)); sprintf('index.php?server_id=%s',$ldapserver->server_id));
} else { } else {
pla_error(sprintf(_('Could not delete the entry: %s'),'<b>'.pretty_print_dn($entry['dn']).'</b>'), system_message(array(
$ldapserver->error(),$ldapserver->errno()); 'title'=>_('Could not delete the entry.').sprintf(' (%s)',pretty_print_dn($entry['dn'])),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
} }
?> ?>

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete_attr.php,v 1.16.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete_attr.php,v 1.16.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* Deletes an attribute from an entry with NO confirmation. * Deletes an attribute from an entry with NO confirmation.
@ -15,23 +15,24 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_delete')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_delete'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete attribute'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete attribute')),'error','index.php');
$entry = array();
$entry['dn']['string'] = get_request('dn'); $entry['dn']['string'] = get_request('dn');
$entry['dn']['encode'] = rawurlencode($entry['dn']['string']); $entry['dn']['encode'] = rawurlencode($entry['dn']['string']);
$entry['attr'] = get_request('attr'); $entry['attr'] = get_request('attr');
if (! $entry['dn']['string']) if (! $entry['dn']['string'])
pla_error(_('No DN specified')); error(_('No DN specified'),'error','index.php');
if (! $entry['attr']) if (! $entry['attr'])
pla_error(_('No attribute name specified.')); error(_('No attribute name specified.'),'error','index.php');
if ($ldapserver->isAttrReadOnly($entry['attr'])) if ($ldapserver->isAttrReadOnly($entry['attr']))
pla_error(sprintf(_('The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'),htmlspecialchars($entry['attr']))); error(sprintf(_('The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'),htmlspecialchars($entry['attr'])),'error','index.php');
$update_array = array(); $update_array = array();
$update_array[$entry['attr']] = array(); $update_array[$entry['attr']] = array();
@ -47,6 +48,9 @@ if ($result) {
die(); die();
} else { } else {
pla_error(_('Could not perform ldap_modify operation.'),$ldapserver->error(),$ldapserver->errno()); system_message(array(
'title'=>_('Could not perform ldap_modify operation.'),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
} }
?> ?>

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete_form.php,v 1.26.2.1 2008/01/13 05:37:00 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete_form.php,v 1.26.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* delete_form.php * delete_form.php
@ -16,8 +16,9 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
$entry = array();
$entry['dn']['string'] = get_request('dn','GET'); $entry['dn']['string'] = get_request('dn','GET');
$entry['dn']['html'] = htmlspecialchars($entry['dn']['string']); $entry['dn']['html'] = htmlspecialchars($entry['dn']['string']);

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/download_binary_attr.php,v 1.15.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/download_binary_attr.php,v 1.15.2.4 2008/12/12 12:20:22 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -12,27 +12,32 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $ldapserver->haveAuthInfo())
pla_error(_('Not enough information to login to server. Please check your configuration.'));
$dn = rawurldecode($_GET['dn']); if (! $ldapserver->haveAuthInfo())
$attr = $_GET['attr']; error(_('Not enough information to login to server. Please check your configuration.'),'error','index.php');
$dn = rawurldecode(get_request('dn','GET'));
$attr = get_request('attr','GET');
# if there are multiple values in this attribute, which one do you want to see? # if there are multiple values in this attribute, which one do you want to see?
$value_num = isset($_GET['value_num']) ? $_GET['value_num'] : null; $value_num = get_request('value_num','GET');
if (! $ldapserver->dnExists($dn)) if (! $ldapserver->dnExists($dn))
pla_error(sprintf(_('No such entry: %s'),pretty_print_dn($dn))); error(sprintf('%s (%s)',_('No such entry.'),pretty_print_dn($dn)),'error','index.php');
$search = $ldapserver->search(null,$dn,'(objectClass=*)',array($attr),'base',false,$_SESSION[APPCONFIG]->GetValue('deref','view')); $search = $ldapserver->search(null,$dn,'(objectClass=*)',array($attr),'base',false,$_SESSION[APPCONFIG]->GetValue('deref','view'));
# Dump the binary data to the browser # Dump the binary data to the browser
if (ob_get_level()) ob_end_clean(); $obStatus = ob_get_status();
if (isset($obStatus['type']) && $obStatus['type'] && $obStatus['status'])
ob_end_clean();
header('Content-type: octet-stream'); header('Content-type: octet-stream');
header("Content-disposition: attachment; filename=$attr"); header("Content-disposition: attachment; filename=$attr");
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
if ($value_num && is_array($search[$attr][$dn])) if ($value_num && is_array($search[$attr][$dn]))
echo $search[$dn][$attr][$value_num]; echo $search[$dn][$attr][$value_num];
else else

View File

@ -1,10 +1,11 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/draw_tree_node.php,v 1.2.2.1 2007/12/21 12:11:55 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/draw_tree_node.php,v 1.2.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
*/ */
$entry = array();
$entry['dn'] = get_request('dn','REQUEST'); $entry['dn'] = get_request('dn','REQUEST');
$entry['server_id'] = get_request('server_id','REQUEST'); $entry['server_id'] = get_request('server_id','REQUEST');
$entry['code'] = get_request('code','REQUEST'); $entry['code'] = get_request('code','REQUEST');

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/entry_chooser.php,v 1.31.2.3 2008/01/13 05:37:00 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/entry_chooser.php,v 1.31.2.5 2008/12/12 12:20:22 wurley Exp $
/** /**
* Display a selection (popup window) to pick a DN. * Display a selection (popup window) to pick a DN.
@ -10,6 +10,7 @@
include './common.php'; include './common.php';
include HTDOCDIR.'header.php'; include HTDOCDIR.'header.php';
$entry = array();
$entry['container'] = get_request('container','GET'); $entry['container'] = get_request('container','GET');
$entry['element'] = get_request('form_element','GET'); $entry['element'] = get_request('form_element','GET');
$entry['rdn'] = get_request('rdn','GET'); $entry['rdn'] = get_request('rdn','GET');
@ -38,7 +39,7 @@ if ($entry['container']) {
if (isset($ldapserver) && ! is_null($entry['container'])) { if (isset($ldapserver) && ! is_null($entry['container'])) {
if (! $ldapserver->haveAuthInfo()) if (! $ldapserver->haveAuthInfo())
pla_error(_('Not enough information to login to server. Please check your configuration.')); error(_('Not enough information to login to server. Please check your configuration.'),'error','index.php');
$entry['children'] = $ldapserver->getContainerContents($entry['container'],0,'(objectClass=*)',$_SESSION[APPCONFIG]->GetValue('deref','tree')); $entry['children'] = $ldapserver->getContainerContents($entry['container'],0,'(objectClass=*)',$_SESSION[APPCONFIG]->GetValue('deref','tree'));
sort($entry['children']); sort($entry['children']);
@ -61,7 +62,7 @@ if (isset($ldapserver) && ! is_null($entry['container'])) {
echo '<tr>'; echo '<tr>';
echo '<td class="blank">&nbsp;</td>'; echo '<td class="blank">&nbsp;</td>';
printf('<td class="icon"><a href="%s"><img src="images/up.png" alt="Up" /></a></td>',$href['up']); printf('<td class="icon"><a href="%s"><img src="%s/up.png" alt="Up" /></a></td>',$href['up'],IMGDIR);
printf('<td colspan=2><a href="%s">%s</a></td>',$href['up'],_('Back Up...')); printf('<td colspan=2><a href="%s">%s</a></td>',$href['up'],_('Back Up...'));
echo '</tr>'; echo '</tr>';
@ -76,7 +77,7 @@ if (isset($ldapserver) && ! is_null($entry['container'])) {
echo '<tr>'; echo '<tr>';
echo '<td class="blank">&nbsp;</td>'; echo '<td class="blank">&nbsp;</td>';
printf('<td class="icon"><a href="%s"><img src="images/plus.png" alt="Plus" /></a></td>',$href['expand']); printf('<td class="icon"><a href="%s"><img src="%s/plus.png" alt="Plus" /></a></td>',$href['expand'],IMGDIR);
printf('<td colspan=2><a href="%s">%s</a></td>',$href['return'],htmlspecialchars($dn)); printf('<td colspan=2><a href="%s">%s</a></td>',$href['return'],htmlspecialchars($dn));
echo '</tr>'; echo '</tr>';
@ -107,7 +108,7 @@ if (isset($ldapserver) && ! is_null($entry['container'])) {
echo '<tr>'; echo '<tr>';
echo '<td class="blank">&nbsp;</td>'; echo '<td class="blank">&nbsp;</td>';
printf('<td colspan=2 class="icon"><a href="%s"><img src="images/plus.png" alt="Plus" /></a></td>',$href['expand']); printf('<td colspan=2 class="icon"><a href="%s"><img src="%s/plus.png" alt="Plus" /></a></td>',$href['expand'],IMGDIR);
printf('<td colspan=2><a href="%s">%s</a></td>',$href['return'],htmlspecialchars($dn)); printf('<td colspan=2><a href="%s">%s</a></td>',$href['return'],htmlspecialchars($dn));
} }
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/export.php,v 1.18.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/export.php,v 1.18.2.4 2008/12/12 12:20:22 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -15,8 +15,9 @@ ini_set('session.cache_limiter','');
require LIBDIR.'export_functions.php'; require LIBDIR.'export_functions.php';
if (! $_SESSION[APPCONFIG]->isCommandAvailable('export')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('export'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('export'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('export')),'error','index.php');
$entry = array();
$entry['base_dn'] = get_request('dn'); $entry['base_dn'] = get_request('dn');
$entry['format'] = get_request('format','POST',false,'unix'); $entry['format'] = get_request('format','POST',false,'unix');
$entry['scope'] = get_request('scope','POST',false,'base'); $entry['scope'] = get_request('scope','POST',false,'base');
@ -40,8 +41,8 @@ if ($entry['sys_attr']) {
array_push($attributes,'+'); array_push($attributes,'+');
} }
(! is_null($entry['exporter_id'])) or pla_error(_('You must choose an export format.')); (! is_null($entry['exporter_id'])) or error(_('You must choose an export format.'),'error','index.php');
isset($exporters[$entry['exporter_id']]) or pla_error(_('Invalid export format')); isset($exporters[$entry['exporter_id']]) or error(_('Invalid export format'),'error','index.php');
# Initialisation of other variables # Initialisation of other variables
$friendly_rdn = get_rdn($entry['base_dn'],1); $friendly_rdn = get_rdn($entry['base_dn'],1);
@ -85,13 +86,13 @@ switch ($entry['exporter_id']) {
default: default:
# truly speaking,this default case will never be reached. See check at the bottom. # truly speaking,this default case will never be reached. See check at the bottom.
pla_error(_('No available exporter found.')); error(_('No available exporter found.'),'error','index.php');
} }
# set the CLRN # set the CLRN
$exporter->setOutputFormat($br); $exporter->setOutputFormat($br);
if (isset($_REQUEST['compress']) && $_REQUEST['compress'] = 'on') if (get_request('compress','REQUEST') == 'on')
$exporter->compress(true); $exporter->compress(true);
# prevent script from bailing early for long search # prevent script from bailing early for long search
@ -99,7 +100,10 @@ if (isset($_REQUEST['compress']) && $_REQUEST['compress'] = 'on')
# send the header # send the header
if ($entry['file']) { if ($entry['file']) {
if (ob_get_level()) ob_end_clean(); $obStatus = ob_get_status();
if (isset($obStatus['type']) && $obStatus['type'] && $obStatus['status'])
ob_end_clean();
header('Content-type: application/download'); header('Content-type: application/download');
header(sprintf('Content-Disposition: filename="%s.%s"',$friendly_rdn,$exporters[$entry['exporter_id']]['extension'].($exporter->isCompressed()?'.gz':''))); header(sprintf('Content-Disposition: filename="%s.%s"',$friendly_rdn,$exporters[$entry['exporter_id']]['extension'].($exporter->isCompressed()?'.gz':'')));
$exporter->export(); $exporter->export();

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/export_form.php,v 1.26.2.1 2008/01/13 05:37:01 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/export_form.php,v 1.26.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* export_form.php * export_form.php
@ -13,6 +13,7 @@ require './common.php';
require LIBDIR.'export_functions.php'; require LIBDIR.'export_functions.php';
$entry = array();
$entry['format'] = get_request('format','GET',false,get_line_end_format()); $entry['format'] = get_request('format','GET',false,get_line_end_format());
$entry['scope'] = get_request('scope','GET',false,'base'); $entry['scope'] = get_request('scope','GET',false,'base');
$entry['id'] = get_request('exporter_id','GET',false,0); $entry['id'] = get_request('exporter_id','GET',false,0);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 665 B

After

Width:  |  Height:  |  Size: 662 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 B

After

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 902 B

After

Width:  |  Height:  |  Size: 902 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

BIN
htdocs/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 608 B

After

Width:  |  Height:  |  Size: 661 B

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/index.php,v 1.49.2.5 2008/01/12 10:01:28 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/index.php,v 1.49.2.10 2008/12/12 12:20:22 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -40,6 +40,10 @@ if (! is_readable(LIBDIR.'functions.php')) {
if (ob_get_level()) if (ob_get_level())
ob_end_clean(); ob_end_clean();
# Make sure this PHP install has pcre
if (! extension_loaded('pcre'))
die('<p>Your install of PHP appears to be missing PCRE support.</p><p>Please install PCRE support before using phpLDAPadmin.<br /><small>(Dont forget to restart your web server afterwards)</small></p>');
require LIBDIR.'functions.php'; require LIBDIR.'functions.php';
# Define the path to our configuration file. # Define the path to our configuration file.
@ -48,9 +52,30 @@ if (defined('CONFDIR'))
else else
$app['config_file'] = 'config.php'; $app['config_file'] = 'config.php';
# Make sure this PHP install has session support
if (! extension_loaded('session'))
error('<p>Your install of PHP appears to be missing php-session support.</p><p>Please install php-session support before using phpLDAPadmin.<br /><small>(Dont forget to restart your web server afterwards)</small></p>','error',null,true);
# Make sure this PHP install has gettext, we use it for language translation # Make sure this PHP install has gettext, we use it for language translation
if (! extension_loaded('gettext')) if (! extension_loaded('gettext'))
error('<p>Your install of PHP appears to be missing GETTEXT support.</p><p>GETTEXT is used for language translation.</p><p>Please install GETTEXT support before using phpLDAPadmin.<br /><small>(Dont forget to restart your web server afterwards)</small></p>','error',true); system_message(array(
'title'=>_('Missing required extension'),
'body'=>'Your install of PHP appears to be missing GETTEXT support.</p><p>GETTEXT is used for language translation.</p><p>Please install GETTEXT support before using phpLDAPadmin.<br /><small>(Dont forget to restart your web server afterwards)</small>',
'type'=>'error'));
# Make sure this PHP install has all our required extensions
if (! extension_loaded('ldap'))
system_message(array(
'title'=>_('Missing required extension'),
'body'=>'Your install of PHP appears to be missing LDAP support.<br /><br />Please install LDAP support before using phpLDAPadmin.<br /><small>(Dont forget to restart your web server afterwards)</small>',
'type'=>'error'));
# Make sure that we have php-xml loaded.
if (! function_exists('xml_parser_create'))
system_message(array(
'title'=>_('Missing required extension'),
'body'=>'Your install of PHP appears to be missing XML support.<br /><br />Please install XML support before using phpLDAPadmin.<br /><small>(Dont forget to restart your web server afterwards)</small>',
'type'=>'error'));
/** /**
* Helper functions. * Helper functions.
@ -59,10 +84,10 @@ if (! extension_loaded('gettext'))
if (isset($app['function_files']) && is_array($app['function_files'])) if (isset($app['function_files']) && is_array($app['function_files']))
foreach ($app['function_files'] as $file_name ) { foreach ($app['function_files'] as $file_name ) {
if (! file_exists($file_name)) if (! file_exists($file_name))
error(sprintf('Fatal error: Required file "%s" does not exist.',$file_name),'error',true); error(sprintf('Fatal error: Required file "%s" does not exist.',$file_name),'error',null,true);
if (! is_readable($file_name)) if (! is_readable($file_name))
error(sprintf('Fatal error: Cannot read the file "%s", its permissions may be too strict.',$file_name),'error',true); error(sprintf('Fatal error: Cannot read the file "%s", its permissions may be too strict.',$file_name),'error',null,true);
ob_start(); ob_start();
require $file_name; require $file_name;
@ -71,10 +96,10 @@ if (isset($app['function_files']) && is_array($app['function_files']))
# Configuration File check # Configuration File check
if (! file_exists($app['config_file'])) { if (! file_exists($app['config_file'])) {
error(sprintf(_('You need to configure %s. Edit the file "%s" to do so. An example config file is provided in "%s.example".'),'phpLDAPadmin',$app['config_file'],$app['config_file']),'error',true); error(sprintf(_('You need to configure %s. Edit the file "%s" to do so. An example config file is provided in "%s.example".'),'phpLDAPadmin',$app['config_file'],$app['config_file']),'error',null,true);
} elseif (! is_readable($app['config_file'])) { } elseif (! is_readable($app['config_file'])) {
error(sprintf('Fatal error: Cannot read your configuration file "%s", its permissions may be too strict.',$app['config_file']),'error',true); error(sprintf('Fatal error: Cannot read your configuration file "%s", its permissions may be too strict.',$app['config_file']),'error',null,true);
} }
# If our config file fails the sanity check, then stop now. # If our config file fails the sanity check, then stop now.
@ -87,5 +112,8 @@ if (! check_config($app['config_file'])) {
exit; exit;
} }
if ($uri = get_request('URI','GET'))
header(sprintf('Location: cmd.php?%s',base64_decode($uri)));
include './cmd.php'; include './cmd.php';
?> ?>

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/ldif_import.php,v 1.35.2.2 2008/01/28 12:58:43 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/ldif_import.php,v 1.35.2.4 2008/12/12 12:20:22 wurley Exp $
/** /**
* Imports an LDIF file to the specified server_id. * Imports an LDIF file to the specified server_id.
@ -16,8 +16,9 @@
require './common.php'; require './common.php';
if (! $_SESSION[APPCONFIG]->isCommandAvailable('import')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('import'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('import'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('import')),'error','index.php');
$entry = array();
$entry['continuous_mode'] = get_request('continuous_mode') ? true : false; $entry['continuous_mode'] = get_request('continuous_mode') ? true : false;
$entry['ldif'] = get_request('ldif'); $entry['ldif'] = get_request('ldif');
@ -31,20 +32,20 @@ if ($entry['ldif']) {
$entry['size'] = $_FILES['ldif_file']['size']; $entry['size'] = $_FILES['ldif_file']['size'];
if (! is_array($_FILES['ldif_file'])) { if (! is_array($_FILES['ldif_file'])) {
pla_error(_('Missing uploaded file.'),null,-1,false); error(_('Missing uploaded file.'),'error');
return; return;
} }
if (! file_exists($file)) { if (! file_exists($file)) {
pla_error(_('No LDIF file specified. Please try again.'),null,-1,false); error(_('No LDIF file specified. Please try again.'),'error');
return; return;
} }
if ($entry['size'] <= 0) { if ($entry['size'] <= 0) {
pla_error(_('Uploaded LDIF file is empty.'),null,-1,false); error(_('Uploaded LDIF file is empty.'),'error');
return; return;
} }
} else { } else {
pla_error(_('You must either upload a file or provide an LDIF in the text box.'),null,-1,false); error(_('You must either upload a file or provide an LDIF in the text box.'),'error');
return; return;
} }
@ -182,7 +183,7 @@ function display_pla_parse_error($exception,$faultyEntry) {
$errorMessage = $actionErrorMsg[$faultyEntry->getChangeType()]; $errorMessage = $actionErrorMsg[$faultyEntry->getChangeType()];
echo '<center>'; echo '<center>';
echo '<table class="error"><tr><td class="img"><img src="images/warning.png" /></td>'; printf('<table class="error"><tr><td class="img"><img src="%s/warning.png" /></td>',IMGDIR);
echo '<td>'; echo '<td>';
printf('<center><h2>%s</h2></center>',_('LDIF Parse Error')); printf('<center><h2>%s</h2></center>',_('LDIF Parse Error'));
echo '<br />'; echo '<br />';

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/ldif_import_form.php,v 1.22.2.1 2008/01/13 05:43:13 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/ldif_import_form.php,v 1.22.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* Displays a form to allow the user to upload and import * Displays a form to allow the user to upload and import
@ -13,10 +13,10 @@
require './common.php'; require './common.php';
if (! ini_get('file_uploads')) if (! ini_get('file_uploads'))
pla_error(_('Your PHP.INI does not have file_uploads = ON. Please enable file uploads in PHP.')); error(_('Your PHP.INI does not have file_uploads = ON. Please enable file uploads in PHP.'),'error','index.php');
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
printf('<h3 class="title" colspan=0>%s</h3>',_('Import LDIF File')); printf('<h3 class="title" colspan=0>%s</h3>',_('Import LDIF File'));
printf('<h3 class="subtitle" colspan=0>%s: <b>%s</b></h3>',_('Server'),htmlspecialchars($ldapserver->name)); printf('<h3 class="subtitle" colspan=0>%s: <b>%s</b></h3>',_('Server'),htmlspecialchars($ldapserver->name));
@ -38,7 +38,7 @@ printf('<tr><td>&nbsp;</td><td class="small"><b>%s %s</b></td></tr>',_('Maximum
echo '<tr><td colspan=2>&nbsp;</td></tr>'; echo '<tr><td colspan=2>&nbsp;</td></tr>';
printf('<tr><td>%s</td></tr>',_('Or paste your LDIF here')); printf('<tr><td>%s</td></tr>',_('Or paste your LDIF here'));
echo '<tr><td colspan=2><textarea name="ldif" rows="20" cols="60"></textarea></td></tr>'; echo '<tr><td colspan=2><textarea name="ldif" rows="20" cols="100"></textarea></td></tr>';
echo '<tr><td colspan=2>&nbsp;</td></tr>'; echo '<tr><td colspan=2>&nbsp;</td></tr>';
printf('<tr><td>&nbsp;</td><td class="small"><input type="checkbox" name="continuous_mode" value="1" />%s</td></tr>', printf('<tr><td>&nbsp;</td><td class="small"><input type="checkbox" name="continuous_mode" value="1" />%s</td></tr>',
_("Don't stop on errors")); _("Don't stop on errors"));

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/login.php,v 1.56.2.4 2008/01/04 12:29:15 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/login.php,v 1.56.2.5 2008/12/12 12:20:22 wurley Exp $
/** /**
* For servers whose auth_type is set to 'cookie' or 'session'. Pass me the * For servers whose auth_type is set to 'cookie' or 'session'. Pass me the
@ -149,7 +149,7 @@ if (! is_resource($ds)) {
} }
$ldapserver->auth_type = $save_auth_type; $ldapserver->auth_type = $save_auth_type;
$ldapserver->setLoginDN($login['dn'],$login['pass'],$anon_bind) or pla_error(_('Could not set cookie.')); $ldapserver->setLoginDN($login['dn'],$login['pass'],$anon_bind) or error(_('Could not set cookie.'),'error','index.php');
set_lastactivity($ldapserver); set_lastactivity($ldapserver);
if (! $anon_bind) { if (! $anon_bind) {

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/login_form.php,v 1.29.2.4 2008/01/13 05:37:01 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/login_form.php,v 1.29.2.7 2008/12/12 12:20:22 wurley Exp $
/** /**
* Displays the login form for a server for users who specify 'cookie' or 'session' for their auth_type. * Displays the login form for a server for users who specify 'cookie' or 'session' for their auth_type.
@ -14,12 +14,12 @@
require './common.php'; require './common.php';
if (! in_array($ldapserver->auth_type, array('cookie','session'))) if (! in_array($ldapserver->auth_type, array('cookie','session')))
pla_error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($ldapserver->auth_type))); error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($ldapserver->auth_type)),'error','index.php');
printf('<h3 class="title">%s %s</h3>',_('Authenticate to server'),$ldapserver->name); printf('<h3 class="title">%s %s</h3>',_('Authenticate to server'),$ldapserver->name);
# Check for a secure connection # Check for a secure connection
if (! isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') { if (! isset($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) != 'on') {
echo '<br />'; echo '<br />';
echo '<center>'; echo '<center>';
echo '<span style="color:red">'; echo '<span style="color:red">';
@ -36,8 +36,8 @@ echo '<form action="cmd.php" method="post" name="login_form">';
echo '<input type="hidden" name="cmd" value="login" />'; echo '<input type="hidden" name="cmd" value="login" />';
printf('<input type="hidden" name="server_id" value="%s" />',$ldapserver->server_id); printf('<input type="hidden" name="server_id" value="%s" />',$ldapserver->server_id);
if (isset($_GET['redirect'])) if (get_request('redirect','GET',false,false))
printf('<input type="hidden" name="redirect" value="%s" />',rawurlencode($_GET['redirect'])); printf('<input type="hidden" name="redirect" value="%s" />',rawurlencode(get_request('redirect','GET')));
echo '<center>'; echo '<center>';
echo '<table class="forminput">'; echo '<table class="forminput">';

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/logout.php,v 1.20.2.1 2007/12/26 03:25:38 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/logout.php,v 1.20.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* For servers whose auth_type is set to 'cookie' or 'session'. Pass me * For servers whose auth_type is set to 'cookie' or 'session'. Pass me
@ -16,18 +16,18 @@
require './common.php'; require './common.php';
if (! $ldapserver->haveAuthInfo()) if (! $ldapserver->haveAuthInfo())
pla_error(_('No one is logged in to that server.')); error(_('No one is logged in to that server.'),'error','index.php');
if (in_array($ldapserver->auth_type, array('cookie','session','http'))) { if (in_array($ldapserver->auth_type, array('cookie','session','http'))) {
syslog_notice (sprintf('Logout for %s',$ldapserver->getLoggedInDN())); syslog_notice (sprintf('Logout for %s',$ldapserver->getLoggedInDN()));
if($ldapserver->auth_type!='http') if($ldapserver->auth_type!='http')
$ldapserver->unsetLoginDN() or pla_error(_('Could not logout.')); $ldapserver->unsetLoginDN() or error(_('Could not logout.'),'error','index.php');
unset_lastactivity($ldapserver); unset_lastactivity($ldapserver);
@session_destroy(); @session_destroy();
} else } else
pla_error(sprintf(_('Unknown auth_type: %s'), htmlspecialchars($ldapserver->auth_type))); error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($ldapserver->auth_type)),'error','index.php');
system_message(array( system_message(array(
'title'=>_('Logout'), 'title'=>_('Logout'),

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/mass_delete.php,v 1.17.2.2 2008/01/13 05:37:01 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/mass_delete.php,v 1.17.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* Enables user to mass delete multiple entries using checkboxes. * Enables user to mass delete multiple entries using checkboxes.
@ -20,22 +20,22 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('Unable to delete, server is in READY-ONLY mode.')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_delete','mass_delete')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_delete','mass_delete'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete mass entries'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete mass entries')),'error','index.php');
$confirmed = isset($_POST['confirmed']) ? true : false; $confirmed = isset($_POST['confirmed']) ? true : false;
isset($_POST['mass_delete']) or isset($_POST['mass_delete']) or
pla_error(_('Error calling mass_delete.php. Missing mass_delete in POST vars.')); error(_('Error calling mass_delete.php. Missing mass_delete in POST vars.'),'error','index.php');
$mass_delete = $_POST['mass_delete']; $mass_delete = $_POST['mass_delete'];
is_array($mass_delete) or is_array($mass_delete) or
pla_error(_('mass_delete POST var is not an array.')); error(_('mass_delete POST var is not an array.'),'error','index.php');
$ldapserver->isMassDeleteEnabled() or $ldapserver->isMassDeleteEnabled() or
pla_error(_('Mass deletion is not enabled. Please enable it in config.php before proceeding.')); error(_('Mass deletion is not enabled. Please enable it in config.php before proceeding.'),'error','index.php');
printf('<h3 class="title">%s</h3>',_('Mass Deleting')); printf('<h3 class="title">%s</h3>',_('Mass Deleting'));
@ -48,7 +48,7 @@ if ($confirmed == true) {
$failed_dns = array(); $failed_dns = array();
if (! is_array($mass_delete)) if (! is_array($mass_delete))
pla_error(_('Malformed mass_delete array.')); error(_('Malformed mass_delete array.'),'error','index.php');
if (count($mass_delete) == 0) { if (count($mass_delete) == 0) {
echo '<br />'; echo '<br />';

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/modify_member_form.php,v 1.5.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/modify_member_form.php,v 1.5.2.6 2008/12/12 12:20:22 wurley Exp $
/** /**
* Displays a form to allow the user to modify group members. * Displays a form to allow the user to modify group members.
@ -18,12 +18,12 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $ldapserver->haveAuthInfo()) if (! $ldapserver->haveAuthInfo())
pla_error(_('Not enough information to login to server. Please check your configuration.')); error(_('Not enough information to login to server. Please check your configuration.'),'error','index.php');
$attr = $_GET['attr']; $attr = get_request('attr','GET');
$dn = isset($_GET['dn']) ? $_GET['dn'] : null; $dn = get_request('dn','GET');
$encoded_dn = rawurlencode($dn); $encoded_dn = rawurlencode($dn);
$encoded_attr = rawurlencode($attr); $encoded_attr = rawurlencode($attr);
@ -39,7 +39,7 @@ if ($current_members)
else else
$num_current_members = 0; $num_current_members = 0;
sort($current_members); usort($current_members,'pla_compare_dns');
# Loop through all base dn's and search possible member entries # Loop through all base dn's and search possible member entries
foreach ($ldapserver->getBaseDN() as $base_dn) { foreach ($ldapserver->getBaseDN() as $base_dn) {
@ -74,6 +74,7 @@ printf('<h3 class="subtitle">%s <b>%s</b> &nbsp;&nbsp;&nbsp; %s: <b>%s</b></h3>'
printf('%s <b>%s</b> %s <b>%s</b>:', printf('%s <b>%s</b> %s <b>%s</b>:',
_('There are'),$num_current_members,_('members in group'),htmlspecialchars($rdn)); _('There are'),$num_current_members,_('members in group'),htmlspecialchars($rdn));
$possible_members = array();
for ($i=0; $i<count($possible_values); $i++) { for ($i=0; $i<count($possible_values); $i++) {
if (preg_match("/^$attr$/i",$_SESSION[APPCONFIG]->GetValue('modify_member','posixgroupattr'))) if (preg_match("/^$attr$/i",$_SESSION[APPCONFIG]->GetValue('modify_member','posixgroupattr')))
$possible_members[$i] = $possible_values[$i][$_SESSION[APPCONFIG]->GetValue('modify_member','posixattr')]; $possible_members[$i] = $possible_values[$i][$_SESSION[APPCONFIG]->GetValue('modify_member','posixattr')];
@ -81,7 +82,7 @@ for ($i=0; $i<count($possible_values); $i++) {
$possible_members[$i] = $possible_values[$i][$_SESSION[APPCONFIG]->GetValue('modify_member','attr')]; $possible_members[$i] = $possible_values[$i][$_SESSION[APPCONFIG]->GetValue('modify_member','attr')];
} }
sort($possible_members); usort($possible_members,'pla_compare_dns');
/* /*
* Show only user that are not already in group. * Show only user that are not already in group.
@ -110,8 +111,8 @@ echo '<input type="hidden" name="cmd" value="update_confirm" />';
echo '<table class="modify_members">'; echo '<table class="modify_members">';
echo '<tr>'; echo '<tr>';
printf('<td><img src="images/user.png" alt="Users" /> %s</td>',_('Available members')); printf('<td><img src="%s/user.png" alt="Users" /> %s</td>',IMGDIR,_('Available members'));
printf('<td><img src="images/uniquegroup.png" alt="Members" /> %s</td>',_('Group members')); printf('<td><img src="%s/uniquegroup.png" alt="Members" /> %s</td>',IMGDIR,_('Group members'));
echo '</tr>'; echo '</tr>';
# Generate select box from all possible members # Generate select box from all possible members

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/password_checker.php,v 1.10.2.1 2008/01/13 05:37:01 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/password_checker.php,v 1.10.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -11,6 +11,7 @@ require './common.php';
include HTDOCDIR.'header.php'; include HTDOCDIR.'header.php';
echo '<body>'; echo '<body>';
$entry = array();
$entry['hash'] = get_request('hash','REQUEST'); $entry['hash'] = get_request('hash','REQUEST');
$entry['password'] = get_request('check_password','REQUEST'); $entry['password'] = get_request('check_password','REQUEST');
$entry['action'] = get_request('action','REQUEST'); $entry['action'] = get_request('action','REQUEST');
@ -34,7 +35,7 @@ echo '<table class="forminput" width=100% border=0>';
echo '<tr>'; echo '<tr>';
printf('<td class="heading">%s</td>',_('Compare')); printf('<td class="heading">%s</td>',_('Compare'));
printf('<td><input type="%s" name="hash" id="hash" value="%s" /></td>', printf('<td><input type="%s" name="hash" id="hash" value="%s" /></td>',
$entry['enc_type'] ? 'text' : 'password',htmlspecialchars($entry['hash'])); (obfuscate_password_display($entry['enc_type']) ? 'password' : 'text'),htmlspecialchars($entry['hash']));
echo '</tr>'; echo '</tr>';
echo '<tr>'; echo '<tr>';

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/purge_cache.php,v 1.9.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/purge_cache.php,v 1.9.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -10,7 +10,7 @@
require './common.php'; require './common.php';
if (! $_SESSION[APPCONFIG]->isCommandAvailable('purge')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('purge'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('purge'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('purge')),'error','index.php');
$purge_session_keys = array('cache'); $purge_session_keys = array('cache');

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/rdelete.php,v 1.28.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/rdelete.php,v 1.28.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* Recursively deletes the specified DN and all of its children * Recursively deletes the specified DN and all of its children
@ -15,17 +15,18 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_delete','simple_delete')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_delete','simple_delete'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete entry'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete entry')),'error','index.php');
$entry['dn'] = $_POST['dn']; $entry = array();
$entry['dn'] = get_request('dn');
if (! $entry['dn']) if (! $entry['dn'])
pla_error(_('You must specify a DN')); error(_('You must specify a DN'),'error','index.php');
if (! $ldapserver->dnExists($entry['dn'])) if (! $ldapserver->dnExists($entry['dn']))
pla_error(sprintf(_('No such entry: %s'),htmlspecialchars($entry['dn']))); error(sprintf('%s (%s)',_('No such entry.'),htmlspecialchars($entry['dn'])),'error','index.php');
printf('<h3 class="title">'._('Deleting %s').'</h3>',htmlspecialchars(get_rdn($entry['dn']))); printf('<h3 class="title">'._('Deleting %s').'</h3>',htmlspecialchars(get_rdn($entry['dn'])));
printf('<h3 class="subtitle">%s</h3>',_('Recursive delete progress')); printf('<h3 class="subtitle">%s</h3>',_('Recursive delete progress'));
@ -42,8 +43,10 @@ if ($result) {
printf(_('Entry %s and sub-tree deleted successfully.'),'<b>'.htmlspecialchars($entry['dn']).'</b>'); printf(_('Entry %s and sub-tree deleted successfully.'),'<b>'.htmlspecialchars($entry['dn']).'</b>');
} else { } else {
pla_error(sprintf(_('Could not delete the entry: %s'),htmlspecialchars($entry['dn'])), system_message(array(
$ldapserver->error(),$ldapserver->errno()); 'title'=>_('Could not delete the entry.').sprintf(' (%s)',pretty_print_dn($entry['dn'])),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
} }
function pla_rdelete($ldapserver,$dn) { function pla_rdelete($ldapserver,$dn) {
@ -60,8 +63,10 @@ function pla_rdelete($ldapserver,$dn) {
return true; return true;
} else { } else {
pla_error(sprintf(_('Failed to delete entry %s'),htmlspecialchars($dn)), system_message(array(
$ldapserver->error(),$ldapserver->errno()); 'title'=>_('Could not delete the entry.').sprintf(' (%s)',pretty_print_dn($entry['dn'])),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
} }
} else { } else {
@ -77,8 +82,10 @@ function pla_rdelete($ldapserver,$dn) {
return true; return true;
} else { } else {
pla_error(sprintf(_('Failed to delete entry %s'),htmlspecialchars($dn)), system_message(array(
$ldapserver->error(),$ldapserver->errno()); 'title'=>_('Could not delete the entry.').sprintf(' (%s)',pretty_print_dn($entry['dn'])),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
} }
} }
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/refresh.php,v 1.18.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/refresh.php,v 1.18.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* This script alters the session variable 'tree', by re-querying * This script alters the session variable 'tree', by re-querying
@ -14,7 +14,7 @@
require './common.php'; require './common.php';
if (! $_SESSION[APPCONFIG]->isCommandAvailable('server_refresh')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('server_refresh'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('refresh server'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('refresh server')),'error','index.php');
unset($_SESSION['cache'][$ldapserver->server_id]['tree']); unset($_SESSION['cache'][$ldapserver->server_id]['tree']);

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/rename.php,v 1.33.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/rename.php,v 1.33.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* Renames a DN to a different name. * Renames a DN to a different name.
@ -18,25 +18,25 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_rename')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_rename'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('rename entry'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('rename entry')),'error','index.php');
$dn = ($_POST['dn']); $dn = get_request('dn');
if (! $ldapserver->isBranchRenameEnabled()) { if (! $ldapserver->isBranchRenameEnabled()) {
# we search all children, not only the visible children in the tree # we search all children, not only the visible children in the tree
$children = $ldapserver->getContainerContents($dn); $children = $ldapserver->getContainerContents($dn);
if (count($children) > 0) if (count($children) > 0)
pla_error(_('You cannot rename an entry which has children entries (eg, the rename operation is not allowed on non-leaf entries)')); error(_('You cannot rename an entry which has children entries (eg, the rename operation is not allowed on non-leaf entries)'),'error','index.php');
} }
$new_rdn = ($_POST['new_rdn']); $new_rdn = get_request('new_rdn');
$container = get_container($dn); $container = get_container($dn);
$new_dn = sprintf('%s,%s',$new_rdn,$container); $new_dn = sprintf('%s,%s',$new_rdn,$container);
if ($new_dn == $dn) if ($new_dn == $dn)
pla_error(_('You did not change the RDN')); error(_('You did not change the RDN'),'error','index.php');
$old_dn_attr = explode('=',$dn); $old_dn_attr = explode('=',$dn);
$old_dn_attr = $old_dn_attr[0]; $old_dn_attr = $old_dn_attr[0];
@ -44,7 +44,7 @@ $old_dn_attr = $old_dn_attr[0];
$new_dn_value = explode('=',$new_rdn,2); $new_dn_value = explode('=',$new_rdn,2);
if (count($new_dn_value) != 2 || ! isset($new_dn_value[1])) if (count($new_dn_value) != 2 || ! isset($new_dn_value[1]))
pla_error(_('Invalid RDN value')); error(_('Invalid RDN value'),'error','index.php');
$new_dn_attr = $new_dn_value[0]; $new_dn_attr = $new_dn_value[0];
$new_dn_value = $new_dn_value[1]; $new_dn_value = $new_dn_value[1];
@ -58,7 +58,7 @@ if ($success) {
$success = $ldapserver->rename($dn,$new_rdn,$container,$deleteoldrdn); $success = $ldapserver->rename($dn,$new_rdn,$container,$deleteoldrdn);
} else { } else {
pla_error(_('Could not rename the entry') ); error(_('Could not rename the entry'),'error','index.php');
} }
if ($success) { if ($success) {

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/rename_form.php,v 1.11.2.1 2008/01/13 05:37:01 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/rename_form.php,v 1.11.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* Displays a form for renaming an LDAP entry. * Displays a form for renaming an LDAP entry.
@ -17,9 +17,9 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $ldapserver->haveAuthInfo()) if (! $ldapserver->haveAuthInfo())
pla_error(_('Not enough information to login to server. Please check your configuration.')); error(_('Not enough information to login to server. Please check your configuration.'),'error','index.php');
$dn = $_GET['dn']; $dn = $_GET['dn'];
$rdn = get_rdn($dn); $rdn = get_rdn($dn);

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/schema.php,v 1.67.2.4 2008/01/28 20:58:08 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/schema.php,v 1.67.2.7 2008/12/12 12:20:22 wurley Exp $
/** /**
* Displays the schema for the specified server_id * Displays the schema for the specified server_id
@ -17,8 +17,9 @@
require './common.php'; require './common.php';
if (! $_SESSION[APPCONFIG]->isCommandAvailable('schema')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('schema'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('view schema'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('view schema')),'error','index.php');
$entry = array();
$entry['view'] = get_request('view','GET','false','objectClasses'); $entry['view'] = get_request('view','GET','false','objectClasses');
$entry['value'] = get_request('viewvalue','GET'); $entry['value'] = get_request('viewvalue','GET');
@ -63,7 +64,7 @@ echo '<br />';
switch($entry['view']) { switch($entry['view']) {
case 'syntaxes': case 'syntaxes':
$highlight_oid = isset($_GET['highlight_oid']) ? $_GET['highlight_oid'] : false; $highlight_oid = get_request('highlight_oid','GET',false,false);
echo '<center>'; echo '<center>';
print '<table class="result_table" border=0>'; print '<table class="result_table" border=0>';
@ -73,7 +74,7 @@ switch($entry['view']) {
$schema_syntaxes = $ldapserver->SchemaSyntaxes(null,true); $schema_syntaxes = $ldapserver->SchemaSyntaxes(null,true);
if (! $schema_syntaxes) if (! $schema_syntaxes)
pla_error($schema_error_str); error($schema_error_str,'error','index.php');
foreach ($schema_syntaxes as $syntax) { foreach ($schema_syntaxes as $syntax) {
$counter++; $counter++;
@ -108,14 +109,15 @@ switch($entry['view']) {
'usage' => _('Usage'), 'usage' => _('Usage'),
'maximum_length' => _('Maximum Length'), 'maximum_length' => _('Maximum Length'),
'aliases' => _('Aliases'), 'aliases' => _('Aliases'),
'used_by_objectclasses' => _('Used by objectClasses') 'used_by_objectclasses' => _('Used by objectClasses'),
'force_as_may' => _('Force as MAY by config')
); );
$schema_attrs = $ldapserver->SchemaAttributes(); $schema_attrs = $ldapserver->SchemaAttributes();
$schema_object_classes = $ldapserver->SchemaObjectClasses(); $schema_object_classes = $ldapserver->SchemaObjectClasses();
if (! $schema_attrs || ! $schema_object_classes) if (! $schema_attrs || ! $schema_object_classes)
pla_error($schema_error_str); error($schema_error_str,'error','index.php');
printf('<small>%s:</small>',_('Jump to an attribute type')); printf('<small>%s:</small>',_('Jump to an attribute type'));
echo '<form action="cmd.php" method="get">'; echo '<form action="cmd.php" method="get">';
@ -279,6 +281,10 @@ switch($entry['view']) {
print '</td>'; print '</td>';
break; break;
case 'force_as_may':
printf('<td>%s</td>',$attr->forced_as_may ? _('Yes') : _('No'));
break;
} }
print '</tr>'; print '</tr>';
} }
@ -292,7 +298,7 @@ switch($entry['view']) {
case 'matching_rules': case 'matching_rules':
$schema_matching_rules = $ldapserver->MatchingRules(null,true); $schema_matching_rules = $ldapserver->MatchingRules(null,true);
if (! $schema_matching_rules) if (! $schema_matching_rules)
pla_error($schema_error_str); error($schema_error_str,'error','index.php');
printf('<small>%s</small><br />',_('Jump to a matching rule')); printf('<small>%s</small><br />',_('Jump to a matching rule'));
@ -371,7 +377,7 @@ switch($entry['view']) {
case 'objectClasses': case 'objectClasses':
$schema_oclasses = $ldapserver->SchemaObjectClasses(); $schema_oclasses = $ldapserver->SchemaObjectClasses();
if (! $schema_oclasses) if (! $schema_oclasses)
pla_error($schema_error_str); error($schema_error_str,'error','index.php');
printf('<small>%s:</small>',_('Jump to an objectClass')); printf('<small>%s:</small>',_('Jump to an objectClass'));
@ -485,6 +491,11 @@ switch($entry['view']) {
$href = htmlspecialchars(sprintf($entry['href']['objectClasses'],strtolower($attr->getSource()))); $href = htmlspecialchars(sprintf($entry['href']['objectClasses'],strtolower($attr->getSource())));
printf('<small>(%s <a href="%s">%s</a>)</small>',_('Inherited from'),$href,$attr->getSource()); printf('<small>(%s <a href="%s">%s</a>)</small>',_('Inherited from'),$href,$attr->getSource());
} }
if ($oclass->isForceMay($attr->getName())) {
echo '<br />';
printf('<small>%s</small>',_('This attribute has been forced as a MAY attribute by the configuration'));
}
echo '</li>'; echo '</li>';
} }
echo '</ul>'; echo '</ul>';
@ -502,5 +513,5 @@ switch($entry['view']) {
} }
if (! is_null($entry['value']) && ! $entry['viewed']) if (! is_null($entry['value']) && ! $entry['viewed'])
pla_error(sprintf(_('No such schema item: "%s"'),htmlspecialchars($entry['value']))); error(sprintf(_('No such schema item: "%s"'),htmlspecialchars($entry['value'])),'error','index.php');
?> ?>

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/search.php,v 1.78.2.6 2008/01/27 11:57:38 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/search.php,v 1.78.2.8 2008/12/12 12:20:22 wurley Exp $
/** /**
* Perform LDAP searches and draw the advanced/simple search forms * Perform LDAP searches and draw the advanced/simple search forms
@ -24,6 +24,7 @@ define('SIZE_LIMIT_EXCEEDED',4);
$result_formats = array('list','table'); $result_formats = array('list','table');
# Our incoming variables # Our incoming variables
$entry = array();
$entry['format'] = get_request('format','GET','false',$_SESSION[APPCONFIG]->GetValue('search','display')); $entry['format'] = get_request('format','GET','false',$_SESSION[APPCONFIG]->GetValue('search','display'));
$entry['form'] = get_request('form','GET',false,get_request('form','SESSION')); $entry['form'] = get_request('form','GET',false,get_request('form','SESSION'));
@ -117,15 +118,15 @@ echo '<br />';
if ($entry['search']) { if ($entry['search']) {
if ($entry['form'] == 'advanced') { if ($entry['form'] == 'advanced') {
if (! $_SESSION[APPCONFIG]->isCommandAvailable('search','advanced_search')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('search','advanced_search'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('advanced search'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('advanced search')),'error','index.php');
} elseif ($entry['form'] == 'predefined') { } elseif ($entry['form'] == 'predefined') {
if (! $_SESSION[APPCONFIG]->isCommandAvailable('search','predefined_search')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('search','predefined_search'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('predefined search'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('predefined search')),'error','index.php');
} elseif ($entry['form'] == 'simple') { } elseif ($entry['form'] == 'simple') {
if (! $_SESSION[APPCONFIG]->isCommandAvailable('search','simple_search')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('search','simple_search'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('simple search'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('simple search')),'error','index.php');
} }
if ($entry['form'] == 'advanced') { if ($entry['form'] == 'advanced') {
@ -247,7 +248,10 @@ if ($entry['search']) {
$entry['scope'],$entry['orderby']['array'],$_SESSION[APPCONFIG]->GetValue('deref','search')); $entry['scope'],$entry['orderby']['array'],$_SESSION[APPCONFIG]->GetValue('deref','search'));
if ((! $results) && $ldapserver->errno()) if ((! $results) && $ldapserver->errno())
pla_error(_('Encountered an error while performing search.'),$ldapserver->error(),$ldapserver->errno()); system_message(array(
'title'=>_('Encountered an error while performing search.'),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
$errno = $ldapserver->errno(); $errno = $ldapserver->errno();
@ -269,11 +273,11 @@ if ($entry['search']) {
$href = htmlspecialchars(sprintf('cmd.php?cmd=export_form&server_id=%s&scope=%s&dn=%s&filter=%s&attributes=%s', $href = htmlspecialchars(sprintf('cmd.php?cmd=export_form&server_id=%s&scope=%s&dn=%s&filter=%s&attributes=%s',
$ldapserver->server_id,$entry['scope'],$base_dn,rawurlencode($entry['filter']['clean']),rawurlencode(join(', ',$search_result_attributes)))); $ldapserver->server_id,$entry['scope'],$base_dn,rawurlencode($entry['filter']['clean']),rawurlencode(join(', ',$search_result_attributes))));
printf('<td style="text-align: right"><small>[ <a href="%s"><img src="images/save.png" alt="Save" /> %s</a> ]', printf('<td style="text-align: right"><small>[ <a href="%s"><img src="%s/save.png" alt="Save" /> %s</a> ]',
$href,_('export results')); $href,IMGDIR,_('export results'));
} }
printf('[ <img src="images/rename.png" alt="rename" /> %s%s',_('Format'),_(':')); printf('[ <img src="%s/rename.png" alt="rename" /> %s%s',IMGDIR,_('Format'),_(':'));
foreach ($result_formats as $f) { foreach ($result_formats as $f) {
echo '&nbsp;'; echo '&nbsp;';
@ -380,7 +384,7 @@ if ($entry['search']) {
elseif ($entry['format'] == 'table') elseif ($entry['format'] == 'table')
require LIBDIR.'search_results_table.php'; require LIBDIR.'search_results_table.php';
else else
pla_error(sprintf(_('Unrecognized search result format: %s'),htmlspecialchars($entry['format']))); error(sprintf(_('Unrecognized search result format: %s'),htmlspecialchars($entry['format'])),'error','index.php');
echo '<br />'; echo '<br />';
if (trim($pager_html)) if (trim($pager_html))

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/server_info.php,v 1.27.2.2 2008/01/13 05:37:01 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/server_info.php,v 1.27.2.4 2008/12/12 12:20:22 wurley Exp $
/** /**
* Fetches and displays all information that it can from the specified server * Fetches and displays all information that it can from the specified server
@ -13,7 +13,7 @@
*/ */
if (! $_SESSION[APPCONFIG]->isCommandAvailable('server_info')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('server_info'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('view server informations'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('view server information')),'error','index.php');
# The attributes we'll examine when searching the LDAP server's RootDSE # The attributes we'll examine when searching the LDAP server's RootDSE
$root_dse_attributes = array( $root_dse_attributes = array(
@ -94,8 +94,8 @@ foreach ($attrs as $attr => $values) {
print '<tr>'; print '<tr>';
if (preg_match('/^[0-9]+\.[0-9]+/',$value)) { if (preg_match('/^[0-9]+\.[0-9]+/',$value)) {
printf('<td width=5%%><img src="images/rfc.png" title="%s" alt="%s" /></td>', printf('<td width=5%%><img src="%s/rfc.png" title="%s" alt="%s" /></td>',
htmlspecialchars($value), htmlspecialchars($value)); IMGDIR,htmlspecialchars($value), htmlspecialchars($value));
if ($oidtext = support_oid_to_text($value)) if ($oidtext = support_oid_to_text($value))
if (isset($oidtext['ref'])) if (isset($oidtext['ref']))

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/show_cache.php,v 1.3.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/show_cache.php,v 1.3.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* This script shows the contents of the cache for debugging purposes * This script shows the contents of the cache for debugging purposes
@ -11,6 +11,7 @@
require './common.php'; require './common.php';
$entry = array();
$entry['key'] = get_request('key','REQUEST'); $entry['key'] = get_request('key','REQUEST');
$entry['index'] = get_request('index','REQUEST'); $entry['index'] = get_request('index','REQUEST');
@ -80,7 +81,7 @@ if (! $_SESSION[APPCONFIG]->GetValue('appearance','hide_debug_info')) {
poststr += "&index=" + encodeURI(xx); poststr += "&index=" + encodeURI(xx);
} }
obj.innerHTML = '<img src="images/ajax-spinner.gif" /> Loading...'; obj.innerHTML = '<img src="<?php echo IMGDIR ?>/ajax-spinner.gif" /> Loading...';
makePOSTRequest('cmd.php',poststr,'alertCacheContents','cancelCacheContents'); makePOSTRequest('cmd.php',poststr,'alertCacheContents','cancelCacheContents');
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/template_engine.php,v 1.45.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/template_engine.php,v 1.45.2.2 2008/12/12 12:20:22 wurley Exp $
/** /**
* Template render engine. * Template render engine.
@ -15,6 +15,7 @@
require_once './common.php'; require_once './common.php';
$entry = array();
$entry['dn']['encode'] = get_request('dn','REQUEST'); $entry['dn']['encode'] = get_request('dn','REQUEST');
$entry['dn']['string'] = rawurldecode($entry['dn']['encode']); $entry['dn']['string'] = rawurldecode($entry['dn']['encode']);
$entry['template'] = get_request('template','REQUEST',false,''); $entry['template'] = get_request('template','REQUEST',false,'');
@ -22,7 +23,7 @@ $entry['template'] = get_request('template','REQUEST',false,'');
# If we have a DN, then this is to edit the entry. # If we have a DN, then this is to edit the entry.
if ($entry['dn']['string']) { if ($entry['dn']['string']) {
$ldapserver->dnExists($entry['dn']['string']) $ldapserver->dnExists($entry['dn']['string'])
or pla_error(sprintf(_('No such entry: %s'),pretty_print_dn($entry['dn']['string']))); or error(sprintf('%s (%s)',_('No such entry'),pretty_print_dn($entry['dn']['string'])),'error','index.php');
$tree = get_cached_item($ldapserver->server_id,'tree'); $tree = get_cached_item($ldapserver->server_id,'tree');
@ -51,7 +52,7 @@ if ($entry['dn']['string']) {
} else { } else {
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
# Create a new empty entry # Create a new empty entry
$entryfactoryclass = $_SESSION[APPCONFIG]->GetValue('appearance','entry_factory'); $entryfactoryclass = $_SESSION[APPCONFIG]->GetValue('appearance','entry_factory');

View File

@ -1,41 +0,0 @@
<?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/timeout.php,v 1.5.2.1 2007/12/21 12:11:55 wurley Exp $
/**
* Time out page to be displayed on the right frame
*
* Variables that come in as GET vars:
* - server_id
*
* @package phpLDAPadmin
*/
/**
*/
require './common.php';
if (! isset($ldapserver)) {
header("Location: index.php");
die();
}
include './header.php';
# If $session_timeout not defined, use ( session_cache_expire() - 1 )
$session_timeout = $ldapserver->session_timeout ? $ldapserver->session_timeout : session_cache_expire()-1;
?>
<h3 class="title"><?php echo $ldapserver->name; ?></h3>
<br />
<br />
<center>
<b><?php printf('%s %s %s',_('Your Session timed out after'),$session_timeout,_('min. of inactivity. You have been automatically logged out.')); ?></b>
<br />
<br />
<?php echo _('To log back in please click on the following link:'); ?><br />
<a href="cmd.php?cmd=login_form&server_id=<?php echo $ldapserver->server_id; ?>"><?php echo _('Login...'); ?></a>
</center>
</body>
</html>

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/update.php,v 1.29.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/update.php,v 1.29.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* Updates or deletes a value from a specified attribute for a specified dn. * Updates or deletes a value from a specified attribute for a specified dn.
@ -26,24 +26,25 @@
require './common.php'; require './common.php';
$entry = array();
$entry['dn']['string'] = get_request('dn'); $entry['dn']['string'] = get_request('dn');
$entry['dn']['encode'] = rawurlencode($entry['dn']['string']); $entry['dn']['encode'] = rawurlencode($entry['dn']['string']);
# If cancel was submited, got back to the edit display. # If cancel was submited, got back to the edit display.
if (isset($_REQUEST['cancel'])) { if (get_request('cancel','REQUEST')) {
header(sprintf('Location: cmd.php?cmd=template_engine&server_id=%s&dn=%s',$ldapserver->server_id,$entry['dn']['encode'])); header(sprintf('Location: cmd.php?cmd=template_engine&server_id=%s&dn=%s',$ldapserver->server_id,$entry['dn']['encode']));
die(); die();
} }
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
$entry['update'] = get_request('update_array','POST',false,array()); $entry['update'] = get_request('update_array','POST',false,array());
$entry['skip'] = get_request('skip_array','POST',false,array()); $entry['skip'] = get_request('skip_array','POST',false,array());
$failed_attrs = array(); $failed_attrs = array();
if (! is_array($entry['update'])) if (! is_array($entry['update']))
pla_error(_('update_array is malformed. This might be a phpLDAPadmin bug. Please report it.')); error(_('update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'),'error','index.php');
run_hook ('pre_update', run_hook ('pre_update',
array('server_id'=>$ldapserver->server_id,'dn'=>$entry['dn']['string'],'update_array'=>$entry['update'])); array('server_id'=>$ldapserver->server_id,'dn'=>$entry['dn']['string'],'update_array'=>$entry['update']));
@ -58,13 +59,14 @@ foreach ($entry['update'] as $attr => $val) {
$entry['update'][$attr] = array(); $entry['update'][$attr] = array();
if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_delete')) if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_delete'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete attribute'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete attribute')),'error','index.php');
} else { # Skip change } else { # Skip change
$entry['update'][$attr] = $val; $entry['update'][$attr] = $val;
if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add_value') if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add_value')
&& ! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_delete_value')) && ! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_delete_value'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('modify attribute values'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('modify attribute values')),'error','index.php');
} }
} else { } else {
@ -77,7 +79,7 @@ foreach ($entry['update'] as $attr => $val) {
if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add_value') if (! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add_value')
&& ! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_delete_value')) && ! $_SESSION[APPCONFIG]->isCommandAvailable('attribute_delete_value'))
pla_error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('modify attribute values'))); error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('modify attribute values')),'error','index.php');
} }
} }
} }
@ -89,8 +91,8 @@ foreach ($entry['update'] as $attr_name => $val) {
$href['search'] = sprintf('cmd.php?cmd=search&search=true&form=advanced&server_id=%s&filter=%s=%s', $href['search'] = sprintf('cmd.php?cmd=search&search=true&form=advanced&server_id=%s&filter=%s=%s',
$ldapserver->server_id,$attr_name,$badattr); $ldapserver->server_id,$attr_name,$badattr);
pla_error(sprintf(_('Your attempt to add <b>%s</b> (<i>%s</i>) to <br><b>%s</b><br> is NOT allowed. That attribute/value belongs to another entry.<p>You might like to <a href="%s">search</a> for that entry.'), error(sprintf(_('Your attempt to add <b>%s</b> (<i>%s</i>) to <br><b>%s</b><br> is NOT allowed. That attribute/value belongs to another entry.<p>You might like to <a href="%s">search</a> for that entry.'),
$attr_name,$badattr,$entry['dn']['string'],$href['search'])); $attr_name,$badattr,$entry['dn']['string'],$href['search']),'error','index.php');
} }
if (run_hook('pre_attr_modify', if (run_hook('pre_attr_modify',
@ -100,8 +102,9 @@ foreach ($entry['update'] as $attr_name => $val) {
$failed_attrs[$attr_name] = $val; $failed_attrs[$attr_name] = $val;
} elseif ($ldapserver->isAttrReadOnly($attr)) { } elseif ($ldapserver->isAttrReadOnly($attr)) {
pla_error(sprintf(_('The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'), error(sprintf(_('The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'),
htmlspecialchars($attr_name))); htmlspecialchars($attr_name)),'error','index.php');
} else { } else {
// binary values // binary values
if (isset($_SESSION['submitform'][$attr_name])) { if (isset($_SESSION['submitform'][$attr_name])) {
@ -175,6 +178,9 @@ if ($result) {
die(); die();
} else { } else {
pla_error(_('Could not perform ldap_modify operation.'),$ldapserver->error(),$ldapserver->errno()); system_message(array(
'title'=>_('Could not perform ldap_modify operation.'),
'body'=>ldap_error_msg($ldapserver->error(),$ldapserver->errno()),
'type'=>'error'));
} }
?> ?>

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/update_confirm.php,v 1.49.2.3 2008/01/13 05:37:01 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/update_confirm.php,v 1.49.2.4 2008/12/12 12:20:22 wurley Exp $
/** /**
* Takes the results of clicking "Save" in template_engine.php and determines which * Takes the results of clicking "Save" in template_engine.php and determines which
@ -16,17 +16,18 @@
require './common.php'; require './common.php';
if ($ldapserver->isReadOnly()) if ($ldapserver->isReadOnly())
pla_error(_('You cannot perform updates while server is in read-only mode')); error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
/***************/ /***************/
/* get entry */ /* get entry */
/***************/ /***************/
$entry = array();
$entry['dn']['string'] = get_request('dn'); $entry['dn']['string'] = get_request('dn');
$entry['dn']['encode'] = rawurlencode($entry['dn']['string']); $entry['dn']['encode'] = rawurlencode($entry['dn']['string']);
if (! $entry['dn']['string'] || ! $ldapserver->dnExists($entry['dn']['string'])) if (! $entry['dn']['string'] || ! $ldapserver->dnExists($entry['dn']['string']))
pla_error(sprintf(_('The entry (%s) does not exist.'),htmlspecialchars($entry['dn']['string'])),null,-1,true); error(sprintf(_('The entry (%s) does not exist.'),htmlspecialchars($entry['dn']['string'])),'error','index.php');
$tree = get_cached_item($ldapserver->server_id,'tree'); $tree = get_cached_item($ldapserver->server_id,'tree');
$entry['ldap'] = null; $entry['ldap'] = null;
@ -40,7 +41,7 @@ if ($tree) {
} }
if (! $entry['ldap'] || $entry['ldap']->isReadOnly()) if (! $entry['ldap'] || $entry['ldap']->isReadOnly())
pla_error(sprintf(_('The entry (%s) is in readonly mode.'),htmlspecialchars($entry['dn']['string'])),null,-1,true); error(sprintf(_('The entry (%s) is in readonly mode.'),htmlspecialchars($entry['dn']['string'])),'error','index.php');
/***************/ /***************/
/* old values */ /* old values */
@ -96,9 +97,9 @@ $attr_to_delete = array();
// if objectClass attribute is modified // if objectClass attribute is modified
if (isset($entry['values']['new']['objectClass'])) { if (isset($entry['values']['new']['objectClass'])) {
if (!isset($entry['values']['old']['objectClass'])) { if (!isset($entry['values']['old']['objectClass']))
pla_error(_('An entry should have one structural objectClass.')); error(_('An entry should have one structural objectClass.'),'error','index.php');
}
// deleted objectClasses // deleted objectClasses
foreach ($entry['values']['old']['objectClass'] as $oldOC) { foreach ($entry['values']['old']['objectClass'] as $oldOC) {
if (!in_array($oldOC, $entry['values']['new']['objectClass'])) { if (!in_array($oldOC, $entry['values']['new']['objectClass'])) {

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/view_jpeg_photo.php,v 1.11.2.1 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/view_jpeg_photo.php,v 1.11.2.3 2008/12/12 12:20:22 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -9,27 +9,29 @@
require './common.php'; require './common.php';
$file = array();
$file['name'] = get_request('file','GET'); $file['name'] = get_request('file','GET');
/* Security check (we don't want anyone tryting to get at /etc/passwd or something) /* Security check (we don't want anyone tryting to get at /etc/passwd or something)
* Slashes and dots are not permitted in these names. * Slashes and dots are not permitted in these names.
*/ */
if (! preg_match('/^pla/',$file['name']) || preg_match('/[\.\/\\\\]/',$file['name'])) if (! preg_match('/^pla/',$file['name']) || preg_match('/[\.\/\\\\]/',$file['name']))
pla_error(sprintf('%s: %s',_('Unsafe file name'),htmlspecialchars($file['name']))); error(sprintf('%s: %s',_('Unsafe file name'),htmlspecialchars($file['name'])),'error','index.php');
/* Little security measure here (prevents users from accessing /* Little security measure here (prevents users from accessing
files, like /etc/passwd for example).*/ files, like /etc/passwd for example).*/
$file['name'] = basename(addcslashes($file['name'],'/\\')); $file['name'] = basename(addcslashes($file['name'],'/\\'));
$file['name'] = sprintf('%s/%s',$_SESSION[APPCONFIG]->GetValue('jpeg','tmpdir'),$file['name']); $file['name'] = sprintf('%s/%s',$_SESSION[APPCONFIG]->GetValue('jpeg','tmpdir'),$file['name']);
if (! file_exists($file['name'])) if (! file_exists($file['name']))
pla_error(sprintf('%s%s %s',_('No such file'),_(':'),htmlspecialchars($file['name']))); error(sprintf('%s%s %s',_('No such file'),_(':'),htmlspecialchars($file['name'])),'error','index.php');
$file['handle'] = fopen($file['name'],'r'); $file['handle'] = fopen($file['name'],'r');
$file['data'] = fread($file['handle'],filesize($file['name'])); $file['data'] = fread($file['handle'],filesize($file['name']));
fclose($file['handle']); fclose($file['handle']);
if (ob_get_level()) $obStatus = ob_get_status();
ob_clean(); if (isset($obStatus['type']) && $obStatus['type'] && $obStatus['status'])
ob_end_clean();
Header('Content-type: image/jpeg'); Header('Content-type: image/jpeg');
Header('Content-disposition: inline; filename=jpeg_photo.jpg'); Header('Content-disposition: inline; filename=jpeg_photo.jpg');

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/welcome.php,v 1.26.2.2 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/welcome.php,v 1.26.2.4 2008/12/12 08:41:30 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -13,7 +13,7 @@ require './common.php';
echo '<center>'; echo '<center>';
echo '<br /><br />'; echo '<br /><br />';
printf('<img src="images/logo.jpg" title="%s" alt="%s" />',_('phpLDAPadmin logo'),_('phpLDAPadmin logo')); printf('<img src="%s/logo.png" title="%s" alt="%s" />',IMGDIR,_('phpLDAPadmin logo'),_('phpLDAPadmin logo'));
echo '<br /><br />'; echo '<br /><br />';
echo _('Use the menu to the left to navigate'); echo _('Use the menu to the left to navigate');
echo '<br /><br />'; echo '<br /><br />';

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/AJAXTree.php,v 1.2 2007/12/15 07:50:31 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/AJAXTree.php,v 1.2.2.2 2008/12/12 06:46:15 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -101,7 +101,7 @@ class AJAXTree extends PLMTree {
} }
echo '<a href="'.$edit_href.'" onclick="return displayMainPage(\''.$edit_href_params.'\');" title="'.$dn.'" >'; echo '<a href="'.$edit_href.'" onclick="return displayMainPage(\''.$edit_href_params.'\');" title="'.$dn.'" >';
echo '<img align="top" border="0" class="imgs" id="jt'.$node_id.'folder" src="images/'.$entry->getIcon($ldapserver).'" alt="->" />'; printf('<img align="top" border="0" class="imgs" id="jt%sfolder" src="%s/%s" alt="->" />',$node_id,IMGDIR,$entry->getIcon($ldapserver));
echo '</a>'; echo '</a>';
echo '&nbsp;'; echo '&nbsp;';
echo '<a href="'.$edit_href.'" onclick="return displayMainPage(\''.$edit_href_params.'\');" title="'.$dn.'" class="phplm">'; echo '<a href="'.$edit_href.'" onclick="return displayMainPage(\''.$edit_href_params.'\');" title="'.$dn.'" class="phplm">';
@ -131,6 +131,10 @@ class AJAXTree extends PLMTree {
$first_child = $this->get_plm_before_first_child($parent_entry,$code); $first_child = $this->get_plm_before_first_child($parent_entry,$code);
$last_child = $this->get_plm_after_last_child($parent_entry,$code); $last_child = $this->get_plm_after_last_child($parent_entry,$code);
# If compression is on, we need to compress this output - but only if called by draw_tree_node
if (function_exists('isCompress') && isCompress() && get_request('cmd','REQUEST') == 'draw_tree_node')
ob_start();
echo $first_child; echo $first_child;
for ($i=0; $i<count($children); $i++) { for ($i=0; $i<count($children); $i++) {
@ -141,6 +145,12 @@ class AJAXTree extends PLMTree {
} }
echo $last_child; echo $last_child;
# If compression is on, we need to compress this output
if (function_exists('isCompress') && isCompress() && get_request('cmd','REQUEST') == 'draw_tree_node') {
$output = ob_get_clean();
echo gzencode($output);
}
} }
/** /**
@ -272,7 +282,7 @@ class AJAXTree extends PLMTree {
} }
//folderLayer.src = \'js/phplayersmenu/menuimages/tree_folder_open.png\'; //folderLayer.src = \'js/phplayersmenu/menuimages/tree_folder_open.png\';
//folderLayer.src = \'js/phplayersmenu/menuimages/tree_folder_closed.png\'; //folderLayer.src = \'js/phplayersmenu/menuimages/tree_folder_closed.png\';
nodeLayer.src = \'images/ajax-spinner.gif\'; nodeLayer.src = \''.IMGDIR.'ajax-spinner.gif\';
// perform action // perform action
if (action == 2) { if (action == 2) {
@ -310,7 +320,7 @@ class AJAXTree extends PLMTree {
} }
function displayMainPage(urlParameters) { function displayMainPage(urlParameters) {
var mainPageDiv = getMainPageDiv(); var mainPageDiv = getMainPageDiv();
if (mainPageDiv) includeHTML(mainPageDiv, \'<img src="images/ajax-progress.gif"><br><small>'._('Retrieving DN').'...<\/small>\'); if (mainPageDiv) includeHTML(mainPageDiv, \'<img src="'.IMGDIR.'ajax-progress.gif"><br><small>'._('Retrieving DN').'...<\/small>\');
makeGETRequest(\'cmd.php\', urlParameters+\'&meth=get_body\', \'alertMainPage\', \'cancelMainPage\'); makeGETRequest(\'cmd.php\', urlParameters+\'&meth=get_body\', \'alertMainPage\', \'cancelMainPage\');
return false; return false;
} }
@ -337,7 +347,7 @@ class AJAXTree extends PLMTree {
$output .= $this->get_indentation($level); $output .= $this->get_indentation($level);
$output .= '<img align="top" border="0" class="imgs" src="js/phplayersmenu/menuimages/tree_split.png" alt="--" />'; $output .= '<img align="top" border="0" class="imgs" src="js/phplayersmenu/menuimages/tree_split.png" alt="--" />';
$output .= '<a href="'.htmlspecialchars($href).'" title="'.$entry->getDn().'">'; $output .= '<a href="'.htmlspecialchars($href).'" title="'.$entry->getDn().'">';
$output .= '<img align="top" border="0" class="imgs" src="images/star.png" alt="->" />'; $output .= sprintf('<img align="top" border="0" class="imgs" src="%s/star.png" alt="->" />',IMGDIR);
$output .= '</a>'; $output .= '</a>';
$output .= '&nbsp;'; $output .= '&nbsp;';
$output .= '<a href="'.htmlspecialchars($href).'" title="'._('Create new entry here').'" class="phplm">'; $output .= '<a href="'.htmlspecialchars($href).'" title="'._('Create new entry here').'" class="phplm">';
@ -361,7 +371,7 @@ class AJAXTree extends PLMTree {
$output .= $this->get_indentation($level); $output .= $this->get_indentation($level);
$output .= '<img align="top" border="0" class="imgs" src="js/phplayersmenu/menuimages/tree_corner.png" alt="--" />'; $output .= '<img align="top" border="0" class="imgs" src="js/phplayersmenu/menuimages/tree_corner.png" alt="--" />';
$output .= '<a href="'.htmlspecialchars($href).'" title="'.$entry->getDn().'">'; $output .= '<a href="'.htmlspecialchars($href).'" title="'.$entry->getDn().'">';
$output .= '<img align="top" border="0" class="imgs" src="images/star.png" alt="->" />'; $output .= sprintf('<img align="top" border="0" class="imgs" src="%s/star.png" alt="->" />',IMGDIR);
$output .= '</a>'; $output .= '</a>';
$output .= '&nbsp;'; $output .= '&nbsp;';
$output .= '<a href="'.htmlspecialchars($href).'" title="'._('Create new entry here').'" class="phplm">'; $output .= '<a href="'.htmlspecialchars($href).'" title="'._('Create new entry here').'" class="phplm">';

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/Attribute.php,v 1.2.2.2 2007/12/26 09:26:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/Attribute.php,v 1.2.2.3 2008/11/28 23:26:51 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -253,10 +253,7 @@ class Attribute {
public function isRdn() { public function isRdn() {
if ($this->entry) { if ($this->entry) {
//$rdn = get_rdn($this->entry->getDn()); return (preg_grep('/'.$this->name.'/',$this->entry->getRdnAttributeName()));
//$attr = $this->name;
//return preg_match("/^${attr}=/", $rdn);
return ($this->name == $this->entry->getRdnAttributeName());
} else { } else {
return false; return false;
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/DefaultCreatingEntry.php,v 1.2.2.2 2007/12/29 08:24:10 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/DefaultCreatingEntry.php,v 1.2.2.3 2008/11/29 01:35:47 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -145,8 +145,8 @@ class DefaultCreatingEntry extends Entry {
public function getRdnAttributeName() { public function getRdnAttributeName() {
$attr = $this->getRdnAttribute(); $attr = $this->getRdnAttribute();
if ($attr) return $attr->getName(); if ($attr) return array($attr->getName());
else return ''; else return array('');
} }
public function getRdnAttribute() { public function getRdnAttribute() {

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/DefaultEditingEntry.php,v 1.2.2.2 2007/12/29 08:25:24 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/DefaultEditingEntry.php,v 1.2.2.3 2008/03/01 02:13:03 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -32,10 +32,20 @@ class DefaultEditingEntry extends Entry {
if (!$int_attrs_vals) $int_attrs_vals = array(); if (!$int_attrs_vals) $int_attrs_vals = array();
elseif (!is_array($int_attrs_vals)) $int_attrs_vals = array($int_attrs_vals); elseif (!is_array($int_attrs_vals)) $int_attrs_vals = array($int_attrs_vals);
$custom_int_attrs_vals = $ldapserver->getCustomDNSysAttrs($this->getDn());
if (! $custom_int_attrs_vals) $attrs_vals = array();
elseif (! is_array($custom_int_attrs_vals)) $custom_int_attrs_vals = array($custom_int_attrs_vals);
$attrs_vals = $ldapserver->getDNAttrs($this->getDn(),false,$_SESSION[APPCONFIG]->GetValue('deref','view')); $attrs_vals = $ldapserver->getDNAttrs($this->getDn(),false,$_SESSION[APPCONFIG]->GetValue('deref','view'));
if (! $attrs_vals) $attrs_vals = array(); if (! $attrs_vals) $attrs_vals = array();
elseif (! is_array($attrs_vals)) $attrs_vals = array($attrs_vals); elseif (! is_array($attrs_vals)) $attrs_vals = array($attrs_vals);
$custom_attrs_vals = $ldapserver->getCustomDNAttrs($this->getDn(),false,$_SESSION[APPCONFIG]->GetValue('deref','view'));
if (! $custom_attrs_vals) $attrs_vals = array();
elseif (! is_array($custom_attrs_vals)) $custom_attrs_vals = array($custom_attrs_vals);
$int_attrs_vals = array_merge($int_attrs_vals,$custom_int_attrs_vals);
$attrs_vals = array_merge($attrs_vals,$custom_attrs_vals);
$attrs_vals = array_merge($attrs_vals, $int_attrs_vals); $attrs_vals = array_merge($attrs_vals, $int_attrs_vals);
uksort($attrs_vals,'sortAttrs'); # Sort these entries uksort($attrs_vals,'sortAttrs'); # Sort these entries

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/Entry.php,v 1.2.2.3 2008/01/27 07:23:43 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/Entry.php,v 1.2.2.4 2008/11/28 23:26:51 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -58,10 +58,17 @@ abstract class Entry {
} }
public function getRdnAttributeName() { public function getRdnAttributeName() {
$attr = ''; $attr = array();
if ($this->dn) { if ($this->dn) {
$i = strpos($this->dn, '='); $i = strpos($this->dn, ',');
if ($i !== false) $attr = substr($this->dn, 0, $i); if ($i !== false) {
$attrs = split('\+',substr($this->dn, 0, $i));
foreach ($attrs as $id => $attr) {
list ($name,$value) = split('=',$attr);
$attrs[$id] = $name;
}
$attr = array_unique($attrs);
}
} }
return $attr; return $attr;
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/EntryReader.php,v 1.2.2.3 2008/01/27 14:09:14 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/EntryReader.php,v 1.2.2.5 2008/12/12 12:20:22 wurley Exp $
define('ENTRY_READER_CREATION_CONTEXT', '1'); define('ENTRY_READER_CREATION_CONTEXT', '1');
define('ENTRY_READER_EDITING_CONTEXT', '2'); define('ENTRY_READER_EDITING_CONTEXT', '2');
@ -113,7 +113,11 @@ class EntryReader extends Visitor {
// @todo editing objectclasses // @todo editing objectclasses
if (($this->context == ENTRY_READER_CREATION_CONTEXT) && ($name == 'objectClass')) return; if (($this->context == ENTRY_READER_CREATION_CONTEXT) && ($name == 'objectClass')) return;
if ($this->context == ENTRY_READER_EDITING_CONTEXT)
$old_vals = $this->get('OldValues', $attribute); $old_vals = $this->get('OldValues', $attribute);
else
$old_vals = array();
$new_vals = $this->get('NewValues', $attribute); $new_vals = $this->get('NewValues', $attribute);
if (isset($_POST['old_values'][$name])) { if (isset($_POST['old_values'][$name])) {
@ -205,7 +209,7 @@ class EntryReader extends Visitor {
} }
if (is_null($val)) { if (is_null($val)) {
pla_error(sprintf(_('Your template is missing variable (%s)'), $request)); error(sprintf(_('Your template is missing variable (%s)'),$request),'error','index.php');
} }
return $val; return $val;
@ -255,7 +259,7 @@ class EntryReader extends Visitor {
if (function_exists($matches[1])) { if (function_exists($matches[1])) {
$val = call_user_func($matches[1], $matches[2], $attribute, $i, $val); $val = call_user_func($matches[1], $matches[2], $attribute, $i, $val);
} else { } else {
pla_error(sprintf(_('Your template has an unknown post function (%s).'), $matches[1])); error(sprintf(_('Your template has an unknown post function (%s).'),$matches[1]),'error','index.php');
} }
} }
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/EntryWriter1.php,v 1.3.2.13 2008/01/28 11:40:16 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/EntryWriter1.php,v 1.3.2.30 2008/12/19 00:35:09 wurley Exp $
define('IdEntryRefreshMenuItem', '0'); define('IdEntryRefreshMenuItem', '0');
define('IdEntryExportBaseMenuItem', '1'); define('IdEntryExportBaseMenuItem', '1');
@ -42,12 +42,12 @@ class EntryWriter1 extends EntryWriter {
/**************************/ /**************************/
protected function drawEntryHeader($entry) { protected function drawEntryHeader($entry) {
// title # Title
$this->draw('Title', $entry); $this->draw('Title', $entry);
$this->draw('Subtitle', $entry); $this->draw('Subtitle', $entry);
echo "\n"; echo "\n";
// menu # Menu
$this->draw('Menu', $entry); $this->draw('Menu', $entry);
} }
@ -56,13 +56,20 @@ class EntryWriter1 extends EntryWriter {
protected function drawEntryMenu($entry) {} protected function drawEntryMenu($entry) {}
protected function drawEntryJavascript($entry) { protected function drawEntryJavascript($entry) {
printf("\n<!-- START: %s -->\n",__METHOD__);
if (isset($_SESSION[APPCONFIG])) { if (isset($_SESSION[APPCONFIG])) {
echo '<script type="text/javascript" language="javascript">'; echo "\n";
echo 'var defaults = new Array();var default_date_format = "'; echo '<!-- Global settings for the js_calendar -->'."\n";
echo $_SESSION[APPCONFIG]->GetValue('appearance', 'date'); echo '<script type="text/javascript" language="javascript">'."\n";
echo '";</script>'; echo 'var defaults = new Array();'."\n";
printf('var default_date_format = "%s";',$_SESSION[APPCONFIG]->GetValue('appearance', 'date'));
echo "\n";
echo '</script>'."\n";
echo "\n";
} }
echo '<!-- START Global functions for general PLA processing. -->'."\n";
echo '<script type="text/javascript" language="javascript"> echo '<script type="text/javascript" language="javascript">
function pla_getComponentById(id) { function pla_getComponentById(id) {
return document.getElementById(id); return document.getElementById(id);
@ -105,9 +112,8 @@ class EntryWriter1 extends EntryWriter {
} else { // text, textarea } else { // text, textarea
component.value = value; component.value = value;
} }
}</script>'; }
echo '<script type="text/javascript" language="javascript">
function getAttributeComponents(prefix, name) { function getAttributeComponents(prefix, name) {
var components = new Array(); var components = new Array();
var i = 0; var i = 0;
@ -128,6 +134,7 @@ class EntryWriter1 extends EntryWriter {
} }
return components; return components;
} }
function getAttributeValues(prefix, name) { function getAttributeValues(prefix, name) {
var components = getAttributeComponents(prefix, name); var components = getAttributeComponents(prefix, name);
var values = new Array(); var values = new Array();
@ -136,26 +143,32 @@ class EntryWriter1 extends EntryWriter {
if (val) values[values.length] = val; if (val) values[values.length] = val;
} }
return values; return values;
}</script>'; }
</script>'."\n";
echo '<!-- END Global functions for general PLA processing. -->'."\n";
echo "\n";
echo '<script type="text/javascript" language="javascript"> echo '<script type="text/javascript" language="javascript">
function validateForm(silence) { function validateForm(silence) {
var i = 0; var i = 0;
var valid = true; var valid = true;
var components = null;'; var components = null;'."\n";
foreach ($entry->getAttributes() as $attribute) { foreach ($entry->getAttributes() as $attribute) {
if ($attribute->isVisible()) { if ($attribute->isVisible() && ($attribute->hasProperty('onchange')) || $attribute->isRequired()) {
echo "\n";
echo ' components = getAttributeComponents("new", "'.$attribute->getName().'"); echo ' components = getAttributeComponents("new", "'.$attribute->getName().'");
for (i = 0; i < components.length; i++) { for (i = 0; i < components.length; i++) {
if (window.validate_'.$attribute->getName().') { if (window.validate_'.$attribute->getName().') {
valid = (!validate_'.$attribute->getName().'(components[i], silence) || !valid) ? false : true; valid = (!validate_'.$attribute->getName().'(components[i], silence) || !valid) ? false : true;
} }
}'; }';
echo "\n";
} }
} }
echo ' return valid; echo ' return valid;
} }
</script>'; </script>'."\n";
echo '<script type="text/javascript" language="javascript"> echo '<script type="text/javascript" language="javascript">
function submitForm(form) { function submitForm(form) {
@ -167,7 +180,7 @@ class EntryWriter1 extends EntryWriter {
function alertError(err, silence) { function alertError(err, silence) {
if (!silence) alert(err); if (!silence) alert(err);
} }
</script>'; </script>'."\n";
for ($i = 0; $i < count($this->shown_attributes); $i++) { for ($i = 0; $i < count($this->shown_attributes); $i++) {
$this->draw('Javascript', $this->shown_attributes[$i]); $this->draw('Javascript', $this->shown_attributes[$i]);
@ -175,7 +188,9 @@ class EntryWriter1 extends EntryWriter {
echo '<script type="text/javascript" language="javascript"> echo '<script type="text/javascript" language="javascript">
validateForm(true); validateForm(true);
</script>'; </script>'."\n";
printf("\n<!-- END: %s -->\n",__METHOD__);
} }
/********************************/ /********************************/
@ -186,10 +201,10 @@ class EntryWriter1 extends EntryWriter {
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
debug_log('Entered with (%s)',1,__FILE__,__LINE__,__METHOD__,$entry->getDn()); debug_log('Entered with (%s)',1,__FILE__,__LINE__,__METHOD__,$entry->getDn());
// init # Init
$this->visit('Entry::Start', $entry); $this->visit('Entry::Start', $entry);
// check # Check
$container = $entry->getContainer(); $container = $entry->getContainer();
$container_ok = true; $container_ok = true;
$objectclasses_ok = true; $objectclasses_ok = true;
@ -205,17 +220,17 @@ class EntryWriter1 extends EntryWriter {
} }
} }
// header # Header
$this->draw('Header', $entry); $this->draw('Header', $entry);
// errors # Errors
if (!$container_ok) { if (!$container_ok) {
pla_error(sprintf(_('The container you specified (%s) does not exist.'),htmlspecialchars($container)), null, -1, false); error(sprintf(_('The container you specified (%s) does not exist.'),htmlspecialchars($container)),'error');
echo '<br />'; echo '<br />';
} }
if (!$objectclasses_ok) { if (!$objectclasses_ok) {
pla_error(_('You did not select any objectClasses for this object.'), null, -1, false); error(_('You did not select any objectClasses for this object.'),'error');
echo '<br />'; echo '<br />';
} }
} }
@ -318,7 +333,7 @@ class EntryWriter1 extends EntryWriter {
public function drawDefaultCreatingEntryStepFormEnd($entry, $step) { public function drawDefaultCreatingEntryStepFormEnd($entry, $step) {
echo '</form>'; echo '</form>';
// javascript # Javascript
$this->draw('Javascript', $entry); $this->draw('Javascript', $entry);
} }
@ -381,13 +396,11 @@ class EntryWriter1 extends EntryWriter {
protected function drawDefaultCreatingEntryShownAttributes($entry) { protected function drawDefaultCreatingEntryShownAttributes($entry) {
$attrs = array(); $attrs = array();
// put required attributes first # Put required attributes first
foreach ($this->shown_attributes as $sa) { foreach ($this->shown_attributes as $sa)
if ($sa->isRequired()) $attrs[] = $sa; if ($sa->isRequired()) $attrs[] = $sa;
} foreach ($this->shown_attributes as $sa)
foreach ($this->shown_attributes as $sa) {
if (!$sa->isRequired()) $attrs[] = $sa; if (!$sa->isRequired()) $attrs[] = $sa;
}
$has_required_attrs = false; $has_required_attrs = false;
$has_optional_attrs = false; $has_optional_attrs = false;
@ -409,7 +422,7 @@ class EntryWriter1 extends EntryWriter {
} }
} }
$this->draw('', $attr); $this->draw('',$attr,$entry);
echo "\n"; echo "\n";
} }
@ -421,7 +434,7 @@ class EntryWriter1 extends EntryWriter {
protected function drawDefaultCreatingEntryHiddenAttributes($entry) { protected function drawDefaultCreatingEntryHiddenAttributes($entry) {
foreach ($this->hidden_attributes as $attr) { foreach ($this->hidden_attributes as $attr) {
$this->draw('', $attr); $this->draw('',$attr,$entry);
echo "\n"; echo "\n";
} }
} }
@ -438,13 +451,13 @@ class EntryWriter1 extends EntryWriter {
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
debug_log('Entered with (%s)',1,__FILE__,__LINE__,__METHOD__,$entry->getDn()); debug_log('Entered with (%s)',1,__FILE__,__LINE__,__METHOD__,$entry->getDn());
// init # Init
$this->visit('Entry::Start', $entry); $this->visit('Entry::Start', $entry);
// header # Header
$this->draw('Header', $entry); $this->draw('Header', $entry);
// form start # Form start
if (! $entry->isReadOnly()) { if (! $entry->isReadOnly()) {
echo '<form action="cmd.php?cmd=update_confirm" method="post" enctype="multipart/form-data" name="entry_form" onSubmit="return submitForm(this)">'; echo '<form action="cmd.php?cmd=update_confirm" method="post" enctype="multipart/form-data" name="entry_form" onSubmit="return submitForm(this)">';
printf('<input type="hidden" name="server_id" value="%s" />',$this->index); printf('<input type="hidden" name="server_id" value="%s" />',$this->index);
@ -459,21 +472,21 @@ class EntryWriter1 extends EntryWriter {
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
debug_log('Entered with (%s)',1,__FILE__,__LINE__,__METHOD__,$entry->getDn()); debug_log('Entered with (%s)',1,__FILE__,__LINE__,__METHOD__,$entry->getDn());
// draw internal attributes # Draw internal attributes
if (get_request('show_internal_attrs','REQUEST')) { if (get_request('show_internal_attrs','REQUEST')) {
$this->draw('InternalAttributes', $entry); $this->draw('InternalAttributes', $entry);
echo "\n\n"; echo "\n\n";
} }
// draw visible attributes # Draw visible attributes
$this->draw('ShownAttributes', $entry); $this->draw('ShownAttributes', $entry);
// form end # Form end
if (! $entry->isReadOnly()) { if (! $entry->isReadOnly()) {
$this->draw('FormSubmitButton', $entry); $this->draw('FormSubmitButton', $entry);
echo '</table>'; echo '</table>';
// draw hidden attributes # Draw hidden attributes
$this->draw('HiddenAttributes', $entry); $this->draw('HiddenAttributes', $entry);
printf('</form>'); printf('</form>');
@ -482,7 +495,7 @@ class EntryWriter1 extends EntryWriter {
printf('</table>'); printf('</table>');
} }
// javascript # Javascript
$this->draw('Javascript', $entry); $this->draw('Javascript', $entry);
} }
@ -631,13 +644,13 @@ class EntryWriter1 extends EntryWriter {
case IdEntryRenameMenuItem : case IdEntryRenameMenuItem :
if (!$entry->isReadOnly() && $config->isCommandAvailable('entry_rename')) { if (!$entry->isReadOnly() && $config->isCommandAvailable('entry_rename')) {
$rdnAttr = $entry->getAttribute($entry->getRdnAttributeName()); foreach ($entry->getRdnAttributeName() as $rdnAttr) {
if ($rdnAttr && $rdnAttr->isVisible() && !$rdnAttr->isReadOnly()) { $rdnAttr = $entry->getAttribute($rdnAttr);
if ($rdnAttr && $rdnAttr->isVisible() && !$rdnAttr->isReadOnly())
return $this->get('RenameMenuItem', $entry); return $this->get('RenameMenuItem', $entry);
} else {
return '';
} }
} else return ''; }
return '';
case IdEntryDeleteAttributeMessage : case IdEntryDeleteAttributeMessage :
if ($config->GetValue('appearance', 'show_hints') if ($config->GetValue('appearance', 'show_hints')
@ -666,12 +679,12 @@ class EntryWriter1 extends EntryWriter {
static $children_count = false; static $children_count = false;
static $more_children = false; static $more_children = false;
if ($children_count === false) { if ($children_count === false) {
// visible children in the tree # Visible children in the tree
$children_count = $entry->getChildrenNumber(); $children_count = $entry->getChildrenNumber();
// is there filtered children ? # Is there filtered children ?
$more_children = $entry->isSizeLimited(); $more_children = $entry->isSizeLimited();
if (!$more_children) { if (!$more_children) {
// all children in ldap # All children in ldap
$all_children = $this->getLDAPServer()->getContainerContents( $all_children = $this->getLDAPServer()->getContainerContents(
$entry->getDn(), $children_count + 1, $entry->getDn(), $children_count + 1,
'(objectClass=*)', $config->GetValue('deref','view')); '(objectClass=*)', $config->GetValue('deref','view'));
@ -805,7 +818,7 @@ class EntryWriter1 extends EntryWriter {
} }
protected function getDefaultEditingEntryDeleteAttributeMessage($entry) { protected function getDefaultEditingEntryDeleteAttributeMessage($entry) {
if ($_SESSION[APPCONFIG]->isCommandAvailable('attribute_delete_value')) if ($_SESSION[APPCONFIG]->isCommandAvailable('attribute_delete_value') && ! $entry->isReadOnly())
return sprintf($this->hint_layout,_('Hint: To delete an attribute, empty the text field and click save.')); return sprintf($this->hint_layout,_('Hint: To delete an attribute, empty the text field and click save.'));
else else
return ''; return '';
@ -830,7 +843,7 @@ class EntryWriter1 extends EntryWriter {
$counter = 0; $counter = 0;
foreach ($this->internal_attributes as $attr) { foreach ($this->internal_attributes as $attr) {
$this->draw('',$attr); $this->draw('',$attr,$entry);
$counter++; $counter++;
echo "\n"; echo "\n";
} }
@ -844,14 +857,14 @@ class EntryWriter1 extends EntryWriter {
protected function drawDefaultEditingEntryShownAttributes($entry) { protected function drawDefaultEditingEntryShownAttributes($entry) {
foreach ($this->shown_attributes as $attr) { foreach ($this->shown_attributes as $attr) {
$this->draw('',$attr); $this->draw('',$attr,$entry);
echo "\n"; echo "\n";
} }
} }
protected function drawDefaultEditingEntryHiddenAttributes($entry) { protected function drawDefaultEditingEntryHiddenAttributes($entry) {
foreach ($this->hidden_attributes as $attr) { foreach ($this->hidden_attributes as $attr) {
$this->draw('',$attr); $this->draw('',$attr,$entry);
echo "\n"; echo "\n";
} }
} }
@ -970,13 +983,11 @@ class EntryWriter1 extends EntryWriter {
echo '<form action="cmd.php?cmd=template_engine" method="post" enctype="multipart/form-data" name="entry_form" onSubmit="return submitForm(this)">'; echo '<form action="cmd.php?cmd=template_engine" method="post" enctype="multipart/form-data" name="entry_form" onSubmit="return submitForm(this)">';
} else { } else {
// Patch 1539633
// default action is create.php
// you can change this behavior by setting <action>myscript.php</action> in template header
echo '<form action="cmd.php" method="post" enctype="multipart/form-data" name="entry_form" onSubmit="return submitForm(this)">'; echo '<form action="cmd.php" method="post" enctype="multipart/form-data" name="entry_form" onSubmit="return submitForm(this)">';
printf('<input type="hidden" name="cmd" value="%s" />', printf('<input type="hidden" name="cmd" value="%s" />',
$entry->hasProperty('action') ? rawurlencode($entry->getProperty('action')) : 'create'); $entry->hasProperty('action') ? rawurlencode($entry->getProperty('action')) : 'create');
} }
} else { } else {
$this->draw('DefaultCreatingEntry::StepFormStart', $entry, $step); $this->draw('DefaultCreatingEntry::StepFormStart', $entry, $step);
} }
@ -998,7 +1009,7 @@ class EntryWriter1 extends EntryWriter {
$this->draw('RdnChooser', $entry); $this->draw('RdnChooser', $entry);
// draw attributes # Draw attributes
$this->draw('ShownAttributes', $entry); $this->draw('ShownAttributes', $entry);
$this->draw('StepFormSubmitButton', $entry, $step); $this->draw('StepFormSubmitButton', $entry, $step);
@ -1040,6 +1051,7 @@ class EntryWriter1 extends EntryWriter {
$i = -1; $i = -1;
$templates = &$entry->getTemplates(); $templates = &$entry->getTemplates();
$nb_templates = count($templates); $nb_templates = count($templates);
if ($entry->hasDefaultTemplate()) $nb_templates++; if ($entry->hasDefaultTemplate()) $nb_templates++;
foreach ($templates as $template_name => $template_attrs) { foreach ($templates as $template_name => $template_attrs) {
@ -1109,12 +1121,13 @@ class EntryWriter1 extends EntryWriter {
foreach ($this->shown_attributes as $attr) { foreach ($this->shown_attributes as $attr) {
$page = $attr->getProperty('page'); $page = $attr->getProperty('page');
if ($page == $this->step) { if ($page == $this->step) {
$this->draw('', $attr); $this->draw('',$attr,$entry);
echo "\n"; echo "\n";
//} elseif ($page < $this->step) {
} else { } else {
// the displayed attributes are the visible attributes in shown_attributes list # The displayed attributes are the visible attributes in shown_attributes list
$attr->hide(); $attr->hide();
$this->hidden_attributes[] = $attr; $this->hidden_attributes[] = $attr;
} }
@ -1128,15 +1141,13 @@ class EntryWriter1 extends EntryWriter {
} }
foreach ($this->hidden_attributes as $attr) { foreach ($this->hidden_attributes as $attr) {
//$page = $attr->hasProperty('page') ? $attr->getProperty('page') : -1; $this->draw('',$attr,$entry);
//if ($page <= $this->step) {
$this->draw('', $attr);
echo "\n"; echo "\n";
//}
} }
} }
protected function drawTemplateCreatingEntryJavascript($entry) { protected function drawTemplateCreatingEntryJavascript($entry) {
printf("\n<!-- START: %s -->\n",__METHOD__);
$this->draw('DefaultCreatingEntry::Javascript', $entry); $this->draw('DefaultCreatingEntry::Javascript', $entry);
$templates = new Templates($this->index); $templates = new Templates($this->index);
@ -1173,6 +1184,7 @@ class EntryWriter1 extends EntryWriter {
// here comes template-specific implementation, generated by php // here comes template-specific implementation, generated by php
if (false) {}'; if (false) {}';
foreach ($entry->getAttributes() as $attribute) { foreach ($entry->getAttributes() as $attribute) {
if ($attribute->isVisible() && ($attribute->hasProperty('onchange')) || $attribute->isRequired()) {
$attr = $attribute->getName(); $attr = $attribute->getName();
echo "\n\t\t\t\t\telse if ((i = id.indexOf('_".$attr."_')) >= 0) {\n"; echo "\n\t\t\t\t\telse if ((i = id.indexOf('_".$attr."_')) >= 0) {\n";
echo "\t\t\t\t\t\tpre = id.substring(0, i+1);\n"; echo "\t\t\t\t\t\tpre = id.substring(0, i+1);\n";
@ -1183,7 +1195,10 @@ class EntryWriter1 extends EntryWriter {
} }
echo "\t\t\t}\n"; echo "\t\t\t}\n";
} }
}
echo '}}</script>'; echo '}}</script>';
printf("\n<!-- END: %s -->\n",__METHOD__);
} }
/********************************/ /********************************/
@ -1258,6 +1273,7 @@ class EntryWriter1 extends EntryWriter {
$i = -1; $i = -1;
$templates = &$entry->getTemplates(); $templates = &$entry->getTemplates();
$nb_templates = count($templates); $nb_templates = count($templates);
if ($entry->hasDefaultTemplate()) $nb_templates++; if ($entry->hasDefaultTemplate()) $nb_templates++;
foreach ($templates as $template_name => $template_attrs) { foreach ($templates as $template_name => $template_attrs) {
@ -1309,7 +1325,7 @@ class EntryWriter1 extends EntryWriter {
protected function drawTemplateEditingEntryShownAttributes($entry) { protected function drawTemplateEditingEntryShownAttributes($entry) {
foreach ($this->shown_attributes as $attr) { foreach ($this->shown_attributes as $attr) {
// @todo if this->page == attr->page // @todo if this->page == attr->page
$this->draw('', $attr); $this->draw('',$attr,$entry);
echo "\n"; echo "\n";
} }
} }
@ -1320,6 +1336,7 @@ class EntryWriter1 extends EntryWriter {
} }
protected function drawTemplateEditingEntryJavascript($entry) { protected function drawTemplateEditingEntryJavascript($entry) {
printf("\n<!-- START: %s -->\n",__METHOD__);
$this->draw('DefaultEditingEntry::Javascript', $entry); $this->draw('DefaultEditingEntry::Javascript', $entry);
$templates = new Templates($this->index); $templates = new Templates($this->index);
@ -1354,6 +1371,7 @@ class EntryWriter1 extends EntryWriter {
// here comes template-specific implementation, generated by php // here comes template-specific implementation, generated by php
if (false) {}'; if (false) {}';
foreach ($entry->getAttributes() as $attribute) { foreach ($entry->getAttributes() as $attribute) {
if ($attribute->isVisible() && ($attribute->hasProperty('onchange')) || $attribute->isRequired()) {
$attr = $attribute->getName(); $attr = $attribute->getName();
echo "\n\t\t\telse if ((i = id.indexOf('_".$attr."_')) >= 0) {\n"; echo "\n\t\t\telse if ((i = id.indexOf('_".$attr."_')) >= 0) {\n";
echo "\t\t\t\tpre = id.substring(0, i+1);\n"; echo "\t\t\t\tpre = id.substring(0, i+1);\n";
@ -1364,34 +1382,36 @@ class EntryWriter1 extends EntryWriter {
} }
echo "\t\t\t}\n"; echo "\t\t\t}\n";
} }
}
echo '}}</script>'; echo '}}</script>';
printf("\n<!-- END: %s -->\n",__METHOD__);
} }
/**************************/ /**************************/
/* Paint an Attribute */ /* Paint an Attribute */
/**************************/ /**************************/
protected function drawAttribute($attribute) { protected function drawAttribute($attribute,$entry) {
if ($attribute->isVisible()) $this->draw('Informations', $attribute); if ($attribute->isVisible()) $this->draw('Informations', $attribute);
$this->draw('Values', $attribute); $this->draw('Values',$attribute,$entry);
} }
protected function drawAttributeJavascript($attribute) { protected function drawAttributeJavascript($attribute) {
echo '<script type="text/javascript" language="javascript">'; echo '<script type="text/javascript" language="javascript">'."\n";
echo 'function focus_'.$attribute->getName().'(component) {'; echo 'function focus_'.$attribute->getName().'(component) {';
$this->draw('FocusJavascript', $attribute, 'component'); $this->draw('FocusJavascript', $attribute, 'component');
echo '}'; echo '}'."\n";
echo 'function blur_'.$attribute->getName().'(component) {'; echo 'function blur_'.$attribute->getName().'(component) {';
$this->draw('BlurJavascript', $attribute, 'component'); $this->draw('BlurJavascript', $attribute, 'component');
echo '}'; echo '}'."\n";
echo 'function validate_'.$attribute->getName().'(component, silence) {'; echo 'function validate_'.$attribute->getName().'(component, silence) {';
echo ' var valid = true;'; echo ' var valid = true;';
$this->draw('ValidateJavascript', $attribute, 'component', 'silence', 'valid'); $this->draw('ValidateJavascript', $attribute, 'component', 'silence', 'valid');
echo ' if (valid) component.style.backgroundColor = "white";'; echo ' if (valid) { component.style.backgroundColor = "white"; component.style.color = "black"; }';
echo ' else component.style.backgroundColor = \'#F0F0FF\';'; echo ' else { component.style.backgroundColor = \'#FFFFA0\'; component.style.color = "black"; }';
echo ' return valid;'; echo ' return valid;';
echo '}'; echo '}'."\n";
echo '</script>'; echo '</script>'."\n";
} }
protected function drawAttributeFocusJavascript($attribute, $component) { protected function drawAttributeFocusJavascript($attribute, $component) {
@ -1417,7 +1437,8 @@ class EntryWriter1 extends EntryWriter {
}'; }';
echo 'var comp = getAttributeComponents("new", "'.$attribute->getName().'"); echo 'var comp = getAttributeComponents("new", "'.$attribute->getName().'");
for (var i = 0; i < comp.length; i++) { for (var i = 0; i < comp.length; i++) {
comp[i].style.backgroundColor = '.$var_valid.' ? "white" : \'#F0F0FF\'; comp[i].style.backgroundColor = '.$var_valid.' ? "white" : \'#FFFFA0\';
comp[i].style.color = '.$var_valid.' ? "black" : \'#00005F\';
}'; }';
} }
} }
@ -1436,7 +1457,6 @@ class EntryWriter1 extends EntryWriter {
protected function getTemplateCreatingEntryAttributeBlurJavascript($entry, $attribute, $component) { protected function getTemplateCreatingEntryAttributeBlurJavascript($entry, $attribute, $component) {
$j = 'fill('.$component.'.id, pla_getComponentValue('.$component.'));'; $j = 'fill('.$component.'.id, pla_getComponentValue('.$component.'));';
//$j .= $this->get('DefaultCreatingEntry::AttributeBlurJavascript',$entry, $attribute, $component);
return $j; return $j;
} }
@ -1446,7 +1466,6 @@ class EntryWriter1 extends EntryWriter {
protected function getTemplateEditingEntryAttributeBlurJavascript($entry, $attribute, $component) { protected function getTemplateEditingEntryAttributeBlurJavascript($entry, $attribute, $component) {
$j = 'fill('.$component.'.id, pla_getComponentValue('.$component.'));'; $j = 'fill('.$component.'.id, pla_getComponentValue('.$component.'));';
//$j .= $this->get('DefaultEditingEntry::AttributeBlurJavascript',$entry, $attribute, $component);
return $j; return $j;
} }
@ -1494,6 +1513,12 @@ class EntryWriter1 extends EntryWriter {
$attr_note .= $rdn_note; $attr_note .= $rdn_note;
} }
$hint_note = $this->get('HintNote',$attribute);
if ($hint_note) {
if (trim($attr_note)) $attr_note .= ', ';
$attr_note .= $hint_note;
}
if ($attr_note) printf('<sup><small>%s</small></sup>', $attr_note); if ($attr_note) printf('<sup><small>%s</small></sup>', $attr_note);
if ($attribute->isReadOnly() && $this->getLDAPServer()->isAttrReadOnly($attribute->getName())) { if ($attribute->isReadOnly() && $this->getLDAPServer()->isAttrReadOnly($attribute->getName())) {
@ -1503,14 +1528,14 @@ class EntryWriter1 extends EntryWriter {
} }
} }
protected function drawAttributeValues($attribute) { protected function drawAttributeValues($attribute,$entry) {
if ($attribute->isVisible()) $this->draw('StartValueLine', $attribute); if ($attribute->isVisible()) $this->draw('StartValueLine', $attribute);
# draws values # draws values
$value_count = $attribute->getValueCount(); $value_count = $attribute->getValueCount();
$i = 0; $i = 0;
for (; $i < $value_count; $i++) { for (; $i < $value_count; $i++) {
$this->draw('Value', $attribute, $i); $this->draw('Value',$attribute,$i,$entry);
} }
if ($this->context == ENTRY_WRITER_CREATION_CONTEXT) { if ($this->context == ENTRY_WRITER_CREATION_CONTEXT) {
@ -1519,7 +1544,7 @@ class EntryWriter1 extends EntryWriter {
else $blankvalue_count -= $value_count; else $blankvalue_count -= $value_count;
for ($j = 0; $j < $blankvalue_count; $j++) { for ($j = 0; $j < $blankvalue_count; $j++) {
$this->draw('BlankValue', $attribute, $i + $j); $this->draw('BlankValue',$attribute,$i+$j,$entry);
} }
} }
@ -1548,7 +1573,7 @@ class EntryWriter1 extends EntryWriter {
switch ($i) { switch ($i) {
case IdAttributeAddValueMenuItem : case IdAttributeAddValueMenuItem :
if ($attribute->isVisible() && !$attribute->isReadOnly() if ($attribute->isVisible() && !$attribute->isReadOnly()
&& !$attribute->isRdn() && $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add_value')) { && $_SESSION[APPCONFIG]->isCommandAvailable('attribute_add_value')) {
if ($attribute->getMaxValueCount() < 0 || $attribute->getValueCount() < $attribute->getMaxValueCount()) { if ($attribute->getMaxValueCount() < 0 || $attribute->getValueCount() < $attribute->getMaxValueCount()) {
return $this->get('AddValueMenuItem', $attribute); return $this->get('AddValueMenuItem', $attribute);
} }
@ -1595,7 +1620,7 @@ class EntryWriter1 extends EntryWriter {
} }
} }
protected function drawAttributeValue($attribute, $i) { protected function drawAttributeValue($attribute,$i,$entry) {
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
debug_log('Entered with (%s, %d)',1,__FILE__,__LINE__,__METHOD__,$attribute->getName(),$i); debug_log('Entered with (%s, %d)',1,__FILE__,__LINE__,__METHOD__,$attribute->getName(),$i);
@ -1610,7 +1635,7 @@ class EntryWriter1 extends EntryWriter {
$this->draw('OldValue', $attribute, $i); $this->draw('OldValue', $attribute, $i);
$this->draw('NewValue', $attribute, $i); $this->draw('NewValue',$attribute,$i,$entry);
if ($attribute->isVisible()) { if ($attribute->isVisible()) {
echo '</td><td valign="top" align="right" width="100%">'; echo '</td><td valign="top" align="right" width="100%">';
@ -1626,7 +1651,10 @@ class EntryWriter1 extends EntryWriter {
* Save the current value to detect changes * Save the current value to detect changes
*/ */
protected function drawAttributeOldValue($attribute, $i) { protected function drawAttributeOldValue($attribute, $i) {
if ($this->context == ENTRY_WRITER_EDITING_CONTEXT)
$val = $attribute->getValue($i); $val = $attribute->getValue($i);
else
$val = '';
if (!is_string($val)) $val = ''; if (!is_string($val)) $val = '';
if ($i < 0) $i = 0; if ($i < 0) $i = 0;
@ -1637,11 +1665,24 @@ class EntryWriter1 extends EntryWriter {
/** /**
* Display the current value * Display the current value
*/ */
protected function drawAttributeNewValue($attribute, $i) { protected function drawAttributeNewValue($attribute,$i,$entry) {
if (!$attribute->isVisible()) { if (!$attribute->isVisible()) {
$this->draw('HiddenValue', $attribute, $i); $this->draw('HiddenValue', $attribute, $i);
$this->draw('Javascript',$attribute);
} elseif ($attribute->isReadOnly() || ($attribute->getEntry() && $attribute->getEntry()->getDn() && $attribute->isRdn())) { } elseif ($attribute->isReadOnly() || ($attribute->getEntry() && $attribute->getEntry()->getDn() && $attribute->isRdn())) {
/* If this is the RDN, we need to see if it has multiple values. If it does, and the multivalues are not
* not in the RDN, then we need to make them editable. */
if ($attribute->isRdn()) {
$rdn = split('\+',get_rdn($entry->getDN()));
if (in_array(sprintf('%s=%s',$attribute->getName(),$attribute->getValue($i)),$rdn))
$this->draw('ReadOnlyValue', $attribute, $i);
else
$this->draw('ReadWriteValue', $attribute, $i);
} else
$this->draw('ReadOnlyValue', $attribute, $i); $this->draw('ReadOnlyValue', $attribute, $i);
} else { } else {
@ -1649,8 +1690,8 @@ class EntryWriter1 extends EntryWriter {
} }
} }
protected function drawAttributeBlankValue($attribute, $i) { protected function drawAttributeBlankValue($attribute,$i,$entry) {
$this->draw('Value', $attribute, $i); $this->draw('Value',$attribute,$i,$entry);
} }
protected function drawAttributeHiddenValue($attribute, $i) { protected function drawAttributeHiddenValue($attribute, $i) {
@ -1854,9 +1895,8 @@ class EntryWriter1 extends EntryWriter {
printf('<img src="%s/go.png" alt="Go" align="top" />&nbsp;',IMGDIR); printf('<img src="%s/go.png" alt="Go" align="top" />&nbsp;',IMGDIR);
} elseif ($this->getLDAPServer()->dnExists($val)) { } elseif ($this->getLDAPServer()->dnExists($val)) {
$href = sprintf('cmd.php?cmd=template_engine&server_id=%s&dn=%s',$this->index,$val); printf('<a title="%s %s" href="cmd.php?cmd=template_engine&amp;server_id=%s&amp;dn=%s"><img src="%s/go.png" alt="Go" /></a>&nbsp;',
printf('<a title="%s %s" href="%s"><img src="%s/go.png" alt="Go" /></a>&nbsp;',_('Go to'), _('Go to'),htmlspecialchars($val),$this->index,rawurlencode($val),IMGDIR);
htmlspecialchars($val), htmlspecialchars($href),IMGDIR);
} else { } else {
printf('<a title="%s %s"><img src="%s/nogo.png" alt="Go" /></a>&nbsp;',_('DN not available'),htmlspecialchars($val),IMGDIR); printf('<a title="%s %s"><img src="%s/nogo.png" alt="Go" /></a>&nbsp;',_('DN not available'),htmlspecialchars($val),IMGDIR);
@ -1872,8 +1912,9 @@ class EntryWriter1 extends EntryWriter {
protected function drawAttributeUrlValueIcon($attribute, $val) { protected function drawAttributeUrlValueIcon($attribute, $val) {
$img = sprintf('<img src="%s/dc.png" alt="%s" align="top" />',IMGDIR,_('URL')); $img = sprintf('<img src="%s/dc.png" alt="%s" align="top" />',IMGDIR,_('URL'));
$url = split(' +',$val,2);
if (strlen($val) <= 0) echo $img; if (strlen($val) <= 0) echo $img;
else printf('<a href="%s" target="new">'.$img.'</a>', htmlspecialchars($val)); else printf('<a href="%s" target="new">%s</a>',htmlspecialchars($url[0]),$img);
echo '&nbsp;'; echo '&nbsp;';
} }
@ -1884,25 +1925,27 @@ class EntryWriter1 extends EntryWriter {
if ($attribute->getEntry() && $attribute->getEntry()->getDn() // if not creating attribute if ($attribute->getEntry() && $attribute->getEntry()->getDn() // if not creating attribute
&& $config->isCommandAvailable('schema') ) { && $config->isCommandAvailable('schema') ) {
$href = sprintf('cmd.php?cmd=schema&server_id=%s&view=attributes&viewvalue=%s', $href = sprintf('cmd.php?cmd=schema&server_id=%s&view=attributes&viewvalue=%s',
$this->index, real_attr_name($attribute->getName())); $this->index, real_attr_name($attribute->getName()));
printf('<a title="'._('Click to view the schema definition for attribute type \'%s\'') printf('<a title="'._('Click to view the schema definition for attribute type \'%s\'')
.'" href="%s">%s</a>', $attribute->getName(), htmlspecialchars($href), $attr_display); .'" href="%s">%s</a>', $attribute->getName(), htmlspecialchars($href), $attr_display);
} else { } else {
printf('%s', $attr_display); printf('%s', $attr_display);
} }
} }
protected function getAttributeAliasNote($attribute) { protected function getAttributeAliasNote($attribute) {
# is there a user-friendly translation available for this attribute? # Is there a user-friendly translation available for this attribute?
$friendly_name = $attribute->getFriendlyName(); $friendly_name = $attribute->getFriendlyName();
if ($friendly_name != $attribute->getName()) { if ($friendly_name != $attribute->getName())
return sprintf('<acronym title="%s: \'%s\' %s \'%s\'">%s</acronym>',_('Note'),$friendly_name,_('is an alias for'),$attribute->getName(),_('alias')); return sprintf('<acronym title="%s: \'%s\' %s \'%s\'">%s</acronym>',
} else { _('Note'),$friendly_name,_('is an alias for'),$attribute->getName(),_('alias'));
else
return ''; return '';
} }
}
protected function getAttributeRequiredNote($attribute) { protected function getAttributeRequiredNote($attribute) {
# is this attribute required by an objectClass ? # is this attribute required by an objectClass ?
@ -1949,6 +1992,15 @@ class EntryWriter1 extends EntryWriter {
} }
} }
protected function getAttributeHintNote($attribute) {
# Is there a hint for this attribute
if ($attribute->getHint()) {
return sprintf('<acronym title="%s">%s</acronym>&nbsp;',htmlspecialchars($attribute->getHint()),_('hint'));
} else {
return '';
}
}
protected function drawAttributeRequiredSymbol($attribute) { protected function drawAttributeRequiredSymbol($attribute) {
echo '*'; echo '*';
} }
@ -2029,6 +2081,7 @@ class EntryWriter1 extends EntryWriter {
} }
protected function drawBinaryAttributeJavascript($attribute) { protected function drawBinaryAttributeJavascript($attribute) {
printf("\n<!-- START: %s -->\n",__METHOD__);
$this->draw('Attribute::Javascript', $attribute); $this->draw('Attribute::Javascript', $attribute);
$dn = ''; $dn = '';
@ -2057,6 +2110,7 @@ class EntryWriter1 extends EntryWriter {
} }
} }
</script>'; </script>';
printf("\n<!-- END: %s -->\n",__METHOD__);
} }
protected function drawBinaryAttributeBlurJavascript($attribute, $component) { protected function drawBinaryAttributeBlurJavascript($attribute, $component) {
@ -2077,10 +2131,11 @@ class EntryWriter1 extends EntryWriter {
($attribute->getSize() > 0) ? 'size="'.$attribute->getSize().'"' : '', ($attribute->getSize() > 0) ? 'size="'.$attribute->getSize().'"' : '',
($attribute->getMaxLength() > 0) ? 'maxlength="'.$attribute->getMaxLength().'"' : ''); ($attribute->getMaxLength() > 0) ? 'maxlength="'.$attribute->getMaxLength().'"' : '');
draw_date_selector_link($attribute->getName().'_'.$i); draw_date_selector_link($attribute->getName().'_'.$i);
echo '</span>'; echo '</span>'."\n";
} }
protected function drawDateAttributeJavascript($attribute) { protected function drawDateAttributeJavascript($attribute) {
printf("\n<!-- START: %s -->\n",__METHOD__);
$this->draw('Attribute::Javascript', $attribute); $this->draw('Attribute::Javascript', $attribute);
$entry['date'] = $_SESSION[APPCONFIG]->GetValue('appearance','date_attrs'); $entry['date'] = $_SESSION[APPCONFIG]->GetValue('appearance','date_attrs');
@ -2100,6 +2155,7 @@ class EntryWriter1 extends EntryWriter {
if (in_array_ignore_case($attribute->getName(),array_keys($entry['time'])) && ($entry['time'][$attribute->getName()])) if (in_array_ignore_case($attribute->getName(),array_keys($entry['time'])) && ($entry['time'][$attribute->getName()]))
printf('<script type="text/javascript" language="javascript">defaults[\'f_time_%s_%s\'] = \'%s\';</script>',$attribute->getName(),$i,'true'); printf('<script type="text/javascript" language="javascript">defaults[\'f_time_%s_%s\'] = \'%s\';</script>',$attribute->getName(),$i,'true');
} }
printf("\n<!-- END: %s -->\n",__METHOD__);
} }
/***************************/ /***************************/
@ -2135,6 +2191,7 @@ class EntryWriter1 extends EntryWriter {
$this->draw('Helper', $attribute, $i); $this->draw('Helper', $attribute, $i);
echo '</td></tr></table>'; echo '</td></tr></table>';
} }
echo "\n";
} }
protected function drawDnAttributeIcon($attribute, $val) { protected function drawDnAttributeIcon($attribute, $val) {
@ -2261,7 +2318,7 @@ class EntryWriter1 extends EntryWriter {
/* Paint a ObjectClassAttribute */ /* Paint a ObjectClassAttribute */
/********************************/ /********************************/
protected function drawObjectClassAttributeNewValue($attribute, $i) { protected function drawObjectClassAttributeNewValue($attribute,$i,$entry) {
$val = $attribute->getValue($i); $val = $attribute->getValue($i);
if (!is_string($val)) $val = ''; if (!is_string($val)) $val = '';
if ($i < 0) $i = 0; if ($i < 0) $i = 0;
@ -2282,7 +2339,7 @@ class EntryWriter1 extends EntryWriter {
_('This is a structural ObjectClass and cannot be removed.'), _('This is a structural ObjectClass and cannot be removed.'),
_('structural')); _('structural'));
} else { } else {
$this->draw('Attribute::NewValue', $attribute, $i); $this->draw('Attribute::NewValue',$attribute,$i,$entry);
} }
} }
@ -2300,16 +2357,13 @@ class EntryWriter1 extends EntryWriter {
/*****************************/ /*****************************/
protected function drawPasswordAttributeOldValue($attribute, $i) { protected function drawPasswordAttributeOldValue($attribute, $i) {
//if ($this->context == ENTRY_WRITER_CREATION_CONTEXT) {
$this->draw('Attribute::OldValue', $attribute, $i); $this->draw('Attribute::OldValue', $attribute, $i);
//}
} }
protected function drawPasswordAttributeHiddenValue($attribute, $i) { protected function drawPasswordAttributeHiddenValue($attribute, $i) {
if ($this->context == ENTRY_WRITER_CREATION_CONTEXT) { if ($this->context == ENTRY_WRITER_CREATION_CONTEXT)
$this->draw('Attribute::HiddenValue', $attribute, $i); $this->draw('Attribute::HiddenValue', $attribute, $i);
} }
}
protected function drawPasswordAttributeReadOnlyValue($attribute, $i) { protected function drawPasswordAttributeReadOnlyValue($attribute, $i) {
$val = $attribute->getValue($i); $val = $attribute->getValue($i);
@ -2324,6 +2378,7 @@ class EntryWriter1 extends EntryWriter {
($obfuscate_password ? 'password' : 'text'), ($obfuscate_password ? 'password' : 'text'),
htmlspecialchars($attribute->getName()), $i, htmlspecialchars($attribute->getName()), htmlspecialchars($attribute->getName()), $i, htmlspecialchars($attribute->getName()),
$i, htmlspecialchars($val), ($attribute->getSize() > 0) ? 'size="'.$attribute->getSize().'"' : ''); $i, htmlspecialchars($val), ($attribute->getSize() > 0) ? 'size="'.$attribute->getSize().'"' : '');
if ($val != '') $this->draw('CheckLink', $attribute, 'new_values_'.htmlspecialchars($attribute->getName()).'_'.$i); if ($val != '') $this->draw('CheckLink', $attribute, 'new_values_'.htmlspecialchars($attribute->getName()).'_'.$i);
} }
@ -2335,9 +2390,8 @@ class EntryWriter1 extends EntryWriter {
$enc_type = get_enc_type($val); $enc_type = get_enc_type($val);
# Set the default hashing type if the password is blank (must be newly created) # Set the default hashing type if the password is blank (must be newly created)
if ($val == '') { if ($val == '')
$enc_type = get_default_hash($this->index); $enc_type = get_default_hash($this->index);
}
echo '<table cellspacing="0" cellpadding="0"><tr><td valign="top">'; echo '<table cellspacing="0" cellpadding="0"><tr><td valign="top">';
@ -2353,11 +2407,12 @@ class EntryWriter1 extends EntryWriter {
($attribute->getMaxLength() > 0) ? 'maxlength="'.$attribute->getMaxLength().'"' : ''); ($attribute->getMaxLength() > 0) ? 'maxlength="'.$attribute->getMaxLength().'"' : '');
echo '</td><td valign="top">'; echo '</td><td valign="top">';
if ($attribute->hasProperty('helper')) {
if ($attribute->hasProperty('helper'))
$this->draw('Helper', $attribute, $i); $this->draw('Helper', $attribute, $i);
} else { else
echo enc_type_select_list($enc_type,'enc',$attribute,$i); echo enc_type_select_list($enc_type,'enc',$attribute->getName(),$i);
}
echo '</td></tr><tr><td valign="top">'; echo '</td></tr><tr><td valign="top">';
if ($attribute->hasProperty('verify') && $attribute->getProperty('verify') && $obfuscate_password) { if ($attribute->hasProperty('verify') && $attribute->getProperty('verify') && $obfuscate_password) {
@ -2394,6 +2449,7 @@ class EntryWriter1 extends EntryWriter {
} }
protected function drawPasswordAttributeJavascript($attribute) { protected function drawPasswordAttributeJavascript($attribute) {
printf("\n<!-- START: %s -->\n",__METHOD__);
$this->draw('Attribute::Javascript', $attribute); $this->draw('Attribute::Javascript', $attribute);
static $already_draw = false; static $already_draw = false;
@ -2401,6 +2457,7 @@ class EntryWriter1 extends EntryWriter {
else $already_draw = true; else $already_draw = true;
# add the javascript so we can call check password later. # add the javascript so we can call check password later.
printf("\n<!-- %s -->\n",__METHOD__);
echo ' echo '
<script type="text/javascript" language="javascript"> <script type="text/javascript" language="javascript">
function passwordComparePopup(component_id) { function passwordComparePopup(component_id) {
@ -2409,6 +2466,7 @@ class EntryWriter1 extends EntryWriter {
if (mywindow.opener == null) mywindow.opener = self; if (mywindow.opener == null) mywindow.opener = self;
} }
</script>'; </script>';
printf("\n<!-- END: %s -->\n",__METHOD__);
} }
/***********************************/ /***********************************/
@ -2416,12 +2474,14 @@ class EntryWriter1 extends EntryWriter {
/***********************************/ /***********************************/
protected function drawRandomPasswordAttributeJavascript($attribute) { protected function drawRandomPasswordAttributeJavascript($attribute) {
printf("\n<!-- START: %s -->\n",__METHOD__);
$this->draw('PasswordAttribute::Javascript', $attribute); $this->draw('PasswordAttribute::Javascript', $attribute);
$pwd = password_generate(); $pwd = password_generate();
$pwd = str_replace("\\", "\\\\", $pwd); $pwd = str_replace("\\", "\\\\", $pwd);
$pwd = str_replace("'", "\\'", $pwd); $pwd = str_replace("'", "\\'", $pwd);
printf("\n<!-- %s -->\n",__METHOD__);
echo '<script type="text/javascript" language="javascript">'; echo '<script type="text/javascript" language="javascript">';
printf('var i = 0; var component = document.getElementById(\'new_values_%s_\'+i);', $attribute->getName()); printf('var i = 0; var component = document.getElementById(\'new_values_%s_\'+i);', $attribute->getName());
printf('while (component) { if (!component.value) {'); printf('while (component) { if (!component.value) {');
@ -2429,15 +2489,16 @@ class EntryWriter1 extends EntryWriter {
printf('alert(\'%s%s\n%s\');', _('A random password was generated for you'), _(':'), $pwd); printf('alert(\'%s%s\n%s\');', _('A random password was generated for you'), _(':'), $pwd);
printf('} i++; component = document.getElementById(\'new_values_%s_\'+i); }', $attribute->getName()); printf('} i++; component = document.getElementById(\'new_values_%s_\'+i); }', $attribute->getName());
echo '</script>'; echo '</script>';
printf("\n<!-- END: %s -->\n",__METHOD__);
} }
/******************************/ /******************************/
/* Paint a SelectionAttribute */ /* Paint a SelectionAttribute */
/******************************/ /******************************/
protected function drawSelectionAttributeValues($attribute) { protected function drawSelectionAttributeValues($attribute,$entry) {
if (!$attribute->isVisible() || !$attribute->isMultiple() || ($attribute->getValueCount() > 0)) { if (!$attribute->isVisible() || !$attribute->isMultiple() || ($attribute->getValueCount() > 0)) {
$this->draw('Attribute::Values', $attribute); $this->draw('Attribute::Values',$attribute,$entry);
} else { } else {
$this->draw('StartValueLine', $attribute); $this->draw('StartValueLine', $attribute);
$this->draw('Value', $attribute, 0); $this->draw('Value', $attribute, 0);
@ -2463,7 +2524,7 @@ class EntryWriter1 extends EntryWriter {
protected function drawSelectionAttributeReadWriteValue($attribute, $i) { protected function drawSelectionAttributeReadWriteValue($attribute, $i) {
if ($attribute->isMultiple()) { if ($attribute->isMultiple()) {
// for multiple selection, we draw the component only one time # For multiple selection, we draw the component only one time
if ($i > 0) return; if ($i > 0) return;
if (($attribute->getSize() > 0) && ($attribute->getSize() < $attribute->getOptionCount())) { if (($attribute->getSize() > 0) && ($attribute->getSize() < $attribute->getOptionCount())) {
@ -2472,13 +2533,16 @@ class EntryWriter1 extends EntryWriter {
htmlspecialchars($attribute->getName()), $attribute->getSize()); htmlspecialchars($attribute->getName()), $attribute->getSize());
$vals = $attribute->getValues(); $vals = $attribute->getValues();
$j = 0; $j = 0;
foreach ($attribute->getSelection() as $value => $description) { foreach ($attribute->getSelection() as $value => $description) {
if (in_array($value, $vals)) $selected[$value] = true; if (in_array($value, $vals)) $selected[$value] = true;
$id = 'new_values_'.htmlspecialchars($attribute->getName()).'_'.($j++); $id = 'new_values_'.htmlspecialchars($attribute->getName()).'_'.($j++);
printf('<option id="%s" value="%s" onMouseDown="focus_%s(this);" onClick="blur_%s(this);" %s>%s</option>', printf('<option id="%s" value="%s" onMouseDown="focus_%s(this);" onClick="blur_%s(this);" %s>%s</option>',
$id, $value, htmlspecialchars($attribute->getName()), htmlspecialchars($attribute->getName()), $id, $value, htmlspecialchars($attribute->getName()), htmlspecialchars($attribute->getName()),
isset($selected[$value]) ? 'selected' : '', $description); isset($selected[$value]) ? 'selected' : '', $description);
echo "\n";
} }
foreach ($vals as $val) { foreach ($vals as $val) {
if (!isset($selected[$val])) { if (!isset($selected[$val])) {
$id = 'new_values_'.htmlspecialchars($attribute->getName()).'_'.($j++); $id = 'new_values_'.htmlspecialchars($attribute->getName()).'_'.($j++);
@ -2486,8 +2550,10 @@ class EntryWriter1 extends EntryWriter {
.'%s</option>', $id, $val, htmlspecialchars($attribute->getName()), .'%s</option>', $id, $val, htmlspecialchars($attribute->getName()),
htmlspecialchars($attribute->getName()), $val); htmlspecialchars($attribute->getName()), $val);
} }
echo "\n";
} }
echo '</select>'; echo '</select>';
} else { } else {
$selected = array(); $selected = array();
$vals = $attribute->getValues(); $vals = $attribute->getValues();
@ -2504,6 +2570,7 @@ class EntryWriter1 extends EntryWriter {
isset($selected[$value]) ? 'checked' : '', isset($selected[$value]) ? 'checked' : '',
"<span style=\"white-space: nowrap;\">&nbsp;$description</span>"); "<span style=\"white-space: nowrap;\">&nbsp;$description</span>");
} }
foreach ($vals as $val) { foreach ($vals as $val) {
if (!isset($selected[$val])) { if (!isset($selected[$val])) {
$id = 'new_values_'.htmlspecialchars($attribute->getName()).'_'.($j++); $id = 'new_values_'.htmlspecialchars($attribute->getName()).'_'.($j++);
@ -2516,19 +2583,28 @@ class EntryWriter1 extends EntryWriter {
} }
echo '</table>'; echo '</table>';
} }
} else { } else {
$val = $attribute->getValue($i); $val = $attribute->getValue($i);
if (!is_string($val)) $val = ''; if (!is_string($val)) $val = '';
if ($i < 0) $i = 0; if ($i < 0) $i = 0;
if ($attribute->hasProperty('helper')) { if ($attribute->hasProperty('helper'))
echo '<table cellspacing="0" cellpadding="0"><tr><td valign="top">'; echo '<table cellspacing="0" cellpadding="0"><tr><td valign="top">';
}
$found = false; $found = false;
$empty_value = false; $empty_value = false;
$id = 'new_values_'.htmlspecialchars($attribute->getName()).'_'.$i; $id = 'new_values_'.htmlspecialchars($attribute->getName()).'_'.$i;
# If we are a required attribute, and the selection is blank, then the user cannot submit this form.
if ($attribute->isRequired() && ! count($attribute->getSelection()))
system_message(array(
'title'=>_('Template Value Error'),
'body'=>sprintf('This template uses a selection list for attribute [<b>%s</b>], however the selection list is empty.<br />You may need to create some dependancy entries in your LDAP server so that this attribute renders with values. Alternatively, you may be able to define the appropriate selection values in the template file.',$attribute->getName()),
'type'=>'warn'));
printf('<select id="%s" name="new_values[%s][]" onFocus="focus_%s(this);" onChange="blur_%s(this);">', printf('<select id="%s" name="new_values[%s][]" onFocus="focus_%s(this);" onChange="blur_%s(this);">',
$id, htmlspecialchars($attribute->getName()), $attribute->getName(), $attribute->getName()); $id, htmlspecialchars($attribute->getName()), $attribute->getName(), $attribute->getName());
@ -2537,14 +2613,19 @@ class EntryWriter1 extends EntryWriter {
($value == $val) ? 'selected' : '', $description); ($value == $val) ? 'selected' : '', $description);
if ($value == $val) $found = true; if ($value == $val) $found = true;
if ($value == '') $empty_value = true; if ($value == '') $empty_value = true;
echo "\n";
} }
if (!$found) { if (!$found) {
/*if ($val || ($i >= 0) || ($attribute->getEntry() && $attribute->getEntry()->getDn()))*/ /*if ($val || ($i >= 0) || ($attribute->getEntry() && $attribute->getEntry()->getDn()))*/
printf('<option value="%s" selected>%s</option>', $val, $val); printf('<option value="%s" selected>%s</option>', $val, $val);
if ($val == '') $empty_value = true; if ($val == '') $empty_value = true;
echo "\n";
} }
if ((strlen($val) > 0) && !$empty_value && ($attribute->getEntry() && $attribute->getEntry()->getDn())) { if ((strlen($val) > 0) && !$empty_value && ($attribute->getEntry() && $attribute->getEntry()->getDn())) {
printf('<option value="">(%s)</option>', _('none, remove value')); printf('<option value="">(%s)</option>', _('none, remove value'));
echo "\n";
} }
echo '</select>'; echo '</select>';
@ -2563,18 +2644,19 @@ class EntryWriter1 extends EntryWriter {
return $this->get('Attribute::MenuItem', $attribute, $i); return $this->get('Attribute::MenuItem', $attribute, $i);
} }
return ''; return '';
case IdAttributeModifyMemberMenuItem : case IdAttributeModifyMemberMenuItem :
return ''; return '';
default : default :
return $this->get('Attribute::MenuItem', $attribute, $i); return $this->get('Attribute::MenuItem', $attribute, $i);
} }
} }
protected function drawSelectionAttributeIcon($attribute, $val) { protected function drawSelectionAttributeIcon($attribute, $val) {
if (!$attribute->isMultiple() || $attribute->isReadOnly()) { if (!$attribute->isMultiple() || $attribute->isReadOnly())
$this->draw('Attribute::Icon', $attribute, $val); $this->draw('Attribute::Icon', $attribute, $val);
} }
}
/***************************/ /***************************/
/* Paint a ShadowAttribute */ /* Paint a ShadowAttribute */
@ -2626,7 +2708,6 @@ class EntryWriter1 extends EntryWriter {
protected function drawShadowAttributeShadowDate($attribute, $shadow_date) { protected function drawShadowAttributeShadowDate($attribute, $shadow_date) {
$config = $_SESSION[APPCONFIG]; $config = $_SESSION[APPCONFIG];
//$shadow_format_attrs = array_merge($shadow_before_today_attrs,$shadow_after_today_attrs);
$shadow_before_today_attrs = arrayLower($attribute->shadow_before_today_attrs); $shadow_before_today_attrs = arrayLower($attribute->shadow_before_today_attrs);
$shadow_after_today_attrs = arrayLower($attribute->shadow_after_today_attrs); $shadow_after_today_attrs = arrayLower($attribute->shadow_after_today_attrs);
$today = date('U'); $today = date('U');

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/EntryWriter2.php,v 1.2.2.3 2008/01/27 06:48:59 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/EntryWriter2.php,v 1.2.2.4 2008/11/29 11:33:53 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -246,9 +246,9 @@ class EntryWriter2 extends EntryWriter1 {
} }
protected function drawAttributeMenu($attribute) { protected function drawAttributeMenu($attribute) {
if ($attribute->getHint() /*&& $_SESSION[APPCONFIG]->GetValue('appearance', 'show_hints')*/) { if ($attribute->getHint())
echo '<img src="images/light.png" alt="Hint" /> <span class="hint">'.$attribute->getHint().'</span>'; printf('<img src="%s/light.png" alt="Hint" /> <span class="hint">%s</span>',IMGDIR,$attribute->getHint());
}
parent::drawAttributeMenu($attribute); parent::drawAttributeMenu($attribute);
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/HTMLTree.php,v 1.2.2.6 2008/01/27 10:17:28 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/HTMLTree.php,v 1.2.2.10 2008/12/13 02:13:13 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -43,8 +43,8 @@ class HTMLTree extends Tree {
printf('<tr><td class="blank" colspan="%s">&nbsp;</td></tr>',$this->getDepth()+3); printf('<tr><td class="blank" colspan="%s">&nbsp;</td></tr>',$this->getDepth()+3);
printf('<tr><td>&nbsp;</td><td><div style="overflow: auto; %s%s"><table class="tree" border=0>', printf('<tr><td>&nbsp;</td><td><div style="overflow: auto; %s%s"><table class="tree" border=0>',
$_SESSION['plaConfig']->GetValue('appearance','tree_width') ? sprintf('width: %spx; ',$_SESSION['plaConfig']->GetValue('appearance','tree_width')) : '', $_SESSION[APPCONFIG]->GetValue('appearance','tree_width') ? sprintf('width: %spx; ',$_SESSION[APPCONFIG]->GetValue('appearance','tree_width')) : '',
$_SESSION['plaConfig']->GetValue('appearance','tree_height') ? sprintf('height: %spx; ',$_SESSION['plaConfig']->GetValue('appearance','tree_height')) : ''); $_SESSION[APPCONFIG]->GetValue('appearance','tree_height') ? sprintf('height: %spx; ',$_SESSION[APPCONFIG]->GetValue('appearance','tree_height')) : '');
foreach ($ldapserver->getBaseDN() as $base_dn) { foreach ($ldapserver->getBaseDN() as $base_dn) {
# Did we get a base_dn for this server somehow? # Did we get a base_dn for this server somehow?
@ -55,7 +55,7 @@ class HTMLTree extends Tree {
if (! $ldapserver->dnExists($base_dn)) { if (! $ldapserver->dnExists($base_dn)) {
$javascript_id++; $javascript_id++;
printf('<tr><td class="spacer"></td><td class="spacer"></td><td><img src="images/unknown.png" /></td><td colspan="%s">%s</td></tr>',$this->getDepth()+3-3,pretty_print_dn($base_dn)); printf('<tr><td class="spacer"></td><td class="spacer"></td><td><img src="%s/unknown.png" /></td><td colspan="%s">%s</td></tr>',IMGDIR,$this->getDepth()+3-3,pretty_print_dn($base_dn));
/* Move this form and add it to the end of the html - otherwise the javascript /* Move this form and add it to the end of the html - otherwise the javascript
* doesnt work when isMassDeleteEnabled returning true. * doesnt work when isMassDeleteEnabled returning true.
@ -103,8 +103,9 @@ class HTMLTree extends Tree {
} }
} else { // end if $ldapserver->haveAuthInfo() } else { // end if $ldapserver->haveAuthInfo()
/* We don't have enough information to login to this server /* We don't have enough information to login to this server
* Draw the "login..." link * Draw the "login..." link */
*/
if ($ldapserver->auth_type != 'http')
$this->draw_login_link(); $this->draw_login_link();
} }
@ -153,14 +154,14 @@ class HTMLTree extends Tree {
$ldapserver = $this->getLdapServer(); $ldapserver = $this->getLdapServer();
echo '<tr class="server">'; echo '<tr class="server">';
printf('<td class="icon"><img src="images/server.png" alt="%s" /></td>',_('Server')); printf('<td class="icon"><img src="%s/server.png" alt="%s" /></td>',IMGDIR,_('Server'));
printf('<td class="name" colspan="%s">',$this->getDepth()+3-1); printf('<td class="name" colspan="%s">',$this->getDepth()+3-1);
printf('%s',htmlspecialchars($ldapserver->name)); printf('%s',htmlspecialchars($ldapserver->name));
if ($ldapserver->haveAuthInfo() && $ldapserver->auth_type != 'config') { if ($ldapserver->haveAuthInfo() && ! in_array($ldapserver->auth_type,array('config','http'))) {
$m = sprintf(_('Inactivity will log you off at %s'), $m = sprintf(_('Inactivity will log you off at %s'),
strftime('%H:%M',time() + ($ldapserver->session_timeout*60))); strftime('%H:%M',time() + ($ldapserver->session_timeout*60)));
printf(' <img width=14 height=14 src="images/timeout.png" title="%s" alt="%s"/>',$m,$m); printf(' <img width=14 height=14 src="%s/timeout.png" title="%s" alt="%s"/>',IMGDIR,$m,$m);
} }
echo '</td></tr>'; echo '</td></tr>';
} }
@ -209,7 +210,7 @@ class HTMLTree extends Tree {
if ($_SESSION[APPCONFIG]->isCommandAvailable('export')) return $this->get_export_menu_item(); if ($_SESSION[APPCONFIG]->isCommandAvailable('export')) return $this->get_export_menu_item();
else return ''; else return '';
case 6 : case 6 :
if ($ldapserver->auth_type != 'config') return $this->get_logout_menu_item(); if (! in_array($ldapserver->auth_type,array('config','http'))) return $this->get_logout_menu_item();
else return ''; else return '';
default : default :
return false; return false;
@ -220,56 +221,56 @@ class HTMLTree extends Tree {
$ldapserver = $this->getLdapServer(); $ldapserver = $this->getLdapServer();
$href = sprintf('cmd.php?cmd=schema&server_id=%s',$ldapserver->server_id); $href = sprintf('cmd.php?cmd=schema&server_id=%s',$ldapserver->server_id);
return sprintf('<a title="%s %s" href="%s"><img src="%s" alt="%s" /><br />%s</a>', return sprintf('<a title="%s %s" href="%s"><img src="%s/%s" alt="%s" /><br />%s</a>',
_('View schema for'),$ldapserver->name,htmlspecialchars($href),'images/schema.png',_('schema'),_('schema')); _('View schema for'),$ldapserver->name,htmlspecialchars($href),IMGDIR,'schema.png',_('schema'),_('schema'));
} }
protected function get_search_menu_item() { protected function get_search_menu_item() {
$ldapserver = $this->getLdapServer(); $ldapserver = $this->getLdapServer();
$href = sprintf('cmd.php?cmd=search&server_id=%s&form=undefined',$ldapserver->server_id); $href = sprintf('cmd.php?cmd=search&server_id=%s&form=undefined',$ldapserver->server_id);
return sprintf('<a title="%s %s" href="%s"><img src="%s" alt="%s" /><br />%s</a>', return sprintf('<a title="%s %s" href="%s"><img src="%s/%s" alt="%s" /><br />%s</a>',
_('search'),$ldapserver->name,htmlspecialchars($href),'images/search.png',_('search'),_('search')); _('search'),$ldapserver->name,htmlspecialchars($href),IMGDIR,'search.png',_('search'),_('search'));
} }
protected function get_refresh_menu_item() { protected function get_refresh_menu_item() {
$ldapserver = $this->getLdapServer(); $ldapserver = $this->getLdapServer();
$href = sprintf('cmd.php?cmd=refresh&server_id=%s',$ldapserver->server_id); $href = sprintf('cmd.php?cmd=refresh&server_id=%s',$ldapserver->server_id);
return sprintf('<a title="%s %s" href="%s"><img src="%s" alt="%s" /><br />%s</a>', return sprintf('<a title="%s %s" href="%s"><img src="%s/%s" alt="%s" /><br />%s</a>',
_('Refresh all expanded containers for'),$ldapserver->name,htmlspecialchars($href),'images/refresh-big.png',_('refresh'),_('refresh')); _('Refresh all expanded containers for'),$ldapserver->name,htmlspecialchars($href),IMGDIR,'refresh-big.png',_('refresh'),_('refresh'));
} }
protected function get_info_menu_item() { protected function get_info_menu_item() {
$ldapserver = $this->getLdapServer(); $ldapserver = $this->getLdapServer();
$href = sprintf('cmd.php?cmd=server_info&server_id=%s',$ldapserver->server_id); $href = sprintf('cmd.php?cmd=server_info&server_id=%s',$ldapserver->server_id);
return sprintf('<a title="%s" href="%s"><img src="%s" alt="%s" /><br />%s</a>', return sprintf('<a title="%s" href="%s"><img src="%s/%s" alt="%s" /><br />%s</a>',
_('View server-supplied information'),htmlspecialchars($href),'images/info.png',_('info'),_('info')); _('View server-supplied information'),htmlspecialchars($href),IMGDIR,'info.png',_('info'),_('info'));
} }
protected function get_import_menu_item() { protected function get_import_menu_item() {
$ldapserver = $this->getLdapServer(); $ldapserver = $this->getLdapServer();
$href = sprintf('cmd.php?cmd=ldif_import_form&server_id=%s',$ldapserver->server_id); $href = sprintf('cmd.php?cmd=ldif_import_form&server_id=%s',$ldapserver->server_id);
return sprintf('<a title="%s" href="%s"><img src="%s" alt="%s" /><br />%s</a>', return sprintf('<a title="%s" href="%s"><img src="%s/%s" alt="%s" /><br />%s</a>',
_('Import entries from an LDIF file'),htmlspecialchars($href),'images/import.png',_('import'),_('import')); _('Import entries from an LDIF file'),htmlspecialchars($href),IMGDIR,'import.png',_('import'),_('import'));
} }
protected function get_export_menu_item() { protected function get_export_menu_item() {
$ldapserver = $this->getLdapServer(); $ldapserver = $this->getLdapServer();
$href = sprintf('cmd.php?cmd=export_form&server_id=%s',$ldapserver->server_id); $href = sprintf('cmd.php?cmd=export_form&server_id=%s',$ldapserver->server_id);
return sprintf('<a title="%s" href="%s"><img src="%s" alt="%s" /><br />%s</a>', return sprintf('<a title="%s" href="%s"><img src="%s/%s" alt="%s" /><br />%s</a>',
_('Export entries'),htmlspecialchars($href),'images/export.png',_('export'),_('export')); _('Export entries'),htmlspecialchars($href),IMGDIR,'export.png',_('export'),_('export'));
} }
protected function get_logout_menu_item() { protected function get_logout_menu_item() {
$ldapserver = $this->getLdapServer(); $ldapserver = $this->getLdapServer();
$href = sprintf('cmd.php?cmd=logout&server_id=%s',$ldapserver->server_id); $href = sprintf('cmd.php?cmd=logout&server_id=%s',$ldapserver->server_id);
return sprintf('<a title="%s" href="%s"><img src="%s" alt="%s" /><br />%s</a>', return sprintf('<a title="%s" href="%s"><img src="%s/%s" alt="%s" /><br />%s</a>',
_('Logout of this server'),htmlspecialchars($href),'images/logout.png',_('logout'),_('logout')); _('Logout of this server'),htmlspecialchars($href),IMGDIR,'logout.png',_('logout'),_('logout'));
} }
protected function draw_logged_in_dn() { protected function draw_logged_in_dn() {
@ -338,7 +339,7 @@ class HTMLTree extends Tree {
$href['expand'] = sprintf('cmd.php?cmd=expand&server_id=%s&amp;dn=%s',$ldapserver->server_id,$encoded_dn); $href['expand'] = sprintf('cmd.php?cmd=expand&server_id=%s&amp;dn=%s',$ldapserver->server_id,$encoded_dn);
$href['collapse'] = sprintf('cmd.php?cmd=collapse&server_id=%s&amp;dn=%s',$ldapserver->server_id,$encoded_dn); $href['collapse'] = sprintf('cmd.php?cmd=collapse&server_id=%s&amp;dn=%s',$ldapserver->server_id,$encoded_dn);
$href['edit'] = sprintf('cmd.php?cmd=template_engine&server_id=%s&amp;dn=%s',$ldapserver->server_id,$encoded_dn); $href['edit'] = sprintf('cmd.php?cmd=template_engine&server_id=%s&amp;dn=%s',$ldapserver->server_id,$encoded_dn);
$img_src = sprintf('images/%s',$dnEntry->getIcon($ldapserver)); $img_src = sprintf('%s/%s',IMGDIR,$dnEntry->getIcon($ldapserver));
$rdn = get_rdn($dn); $rdn = get_rdn($dn);
echo '<tr class="option">'; echo '<tr class="option">';
@ -362,15 +363,15 @@ class HTMLTree extends Tree {
# Is this node expanded? (deciding whether to draw "+" or "-") # Is this node expanded? (deciding whether to draw "+" or "-")
if ($dnEntry->isOpened()) { if ($dnEntry->isOpened()) {
if (!$child_count && !$ldapserver->isShowCreateEnabled()) { if (!$child_count && !$ldapserver->isShowCreateEnabled()) {
echo '<td class="expander"><img src="images/minus.png" alt="-" /></td>'; printf('<td class="expander"><img src="%s/minus.png" alt="-" /></td>',IMGDIR);
} else { } else {
printf('<td class="expander"><a href="%s"><img src="images/minus.png" alt="-" /></a></td>',$href['collapse']); printf('<td class="expander"><a href="%s"><img src="%s/minus.png" alt="-" /></a></td>',$href['collapse'],IMGDIR);
} }
} else { } else {
if (($child_count !== false) && (!$child_count) && (!$ldapserver->isShowCreateEnabled())) { if (($child_count !== false) && (!$child_count) && (!$ldapserver->isShowCreateEnabled())) {
echo '<td class="expander"><img src="images/minus.png" alt="-" /></td>'; printf('<td class="expander"><img src="%s/minus.png" alt="-" /></td>',IMGDIR);
} else { } else {
printf('<td class="expander"><a href="%s"><img src="images/plus.png" alt="+" /></a></td>',$href['expand']); printf('<td class="expander"><a href="%s"><img src="%s/plus.png" alt="+" /></a></td>',$href['expand'],IMGDIR);
} }
} }
$colspan--; $colspan--;
@ -458,7 +459,7 @@ class HTMLTree extends Tree {
echo '<td class="spacer"></td>'; echo '<td class="spacer"></td>';
echo '<td class="spacer"></td>'; echo '<td class="spacer"></td>';
printf('<td class="icon"><a href="%s"><img src="images/star.png" alt="%s" /></a></td>',$href,_('new')); printf('<td class="icon"><a href="%s"><img src="%s/star.png" alt="%s" /></a></td>',$href,IMGDIR,_('new'));
printf('<td class="link" colspan="%s"><a href="%s" title="%s %s">%s</a></td>', printf('<td class="link" colspan="%s"><a href="%s" title="%s %s">%s</a></td>',
$this->getDepth()+3-$level-1-3,$href,_('Create a new entry in'),$rdn,_('Create new entry here')); $this->getDepth()+3-$level-1-3,$href,_('Create a new entry in'),$rdn,_('Create new entry here'));
echo '</tr>'; echo '</tr>';
@ -473,7 +474,7 @@ class HTMLTree extends Tree {
sprintf('cmd.php?cmd=%s&server_id=%s',get_custom_file($ldapserver->server_id,'login_form',''),$ldapserver->server_id)); sprintf('cmd.php?cmd=%s&server_id=%s',get_custom_file($ldapserver->server_id,'login_form',''),$ldapserver->server_id));
echo '<tr class="option"><td class="spacer"></td>'; echo '<tr class="option"><td class="spacer"></td>';
printf('<td class="icon"><a href="%s"><img src="images/uid.png" alt="%s" /></a></td>',$href,_('login')); printf('<td class="icon"><a href="%s"><img src="%s/uid.png" alt="%s" /></a></td>',$href,IMGDIR,_('login'));
printf('<td class="logged_in" colspan="%s"><a href="%s">%s</a></td>',$this->getDepth()+3-2,$href,_('Login').'...'); printf('<td class="logged_in" colspan="%s"><a href="%s">%s</a></td>',$this->getDepth()+3-2,$href,_('Login').'...');
echo '</tr>'; echo '</tr>';
@ -489,7 +490,7 @@ class HTMLTree extends Tree {
protected function draw_logout_link() { protected function draw_logout_link() {
$ldapserver = $this->getLdapServer(); $ldapserver = $this->getLdapServer();
if ($ldapserver->auth_type != 'config') { if (! in_array($ldapserver->auth_type,array('config','http'))) {
printf('<tr><td class="spacer"></td><td colspan="%s"><small><a href="cmd.php?cmd=%s&server_id=%s">%s</a></small></td></tr>', printf('<tr><td class="spacer"></td><td colspan="%s"><small><a href="cmd.php?cmd=%s&server_id=%s">%s</a></small></td></tr>',
$this->getDepth()+3-1,get_custom_file($ldapserver->server_id,'logout',''),$ldapserver->server_id,_('logout')); $this->getDepth()+3-1,get_custom_file($ldapserver->server_id,'logout',''),$ldapserver->server_id,_('logout'));
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/PLMTree.php,v 1.2 2007/12/15 07:50:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/PLMTree.php,v 1.2.2.1 2008/11/29 11:33:53 wurley Exp $
require HTDOCDIR.JSDIR.'phplayersmenu/lib/PHPLIB.php'; require HTDOCDIR.JSDIR.'phplayersmenu/lib/PHPLIB.php';
require HTDOCDIR.JSDIR.'phplayersmenu/lib/layersmenu-common.inc.php'; require HTDOCDIR.JSDIR.'phplayersmenu/lib/layersmenu-common.inc.php';
@ -41,8 +41,8 @@ class PLMTree extends HTMLTree {
if (! isset($tm)) { if (! isset($tm)) {
$tm = new TreeMenu(); $tm = new TreeMenu();
$tm->setDirroot(JSDIR.'phplayersmenu/'); $tm->setDirroot(JSDIR.'phplayersmenu/');
$tm->setIcondir(HTDOCDIR.'/images/'); $tm->setIcondir(IMGDIR);
$tm->setIconwww('images/'); $tm->setIconwww(IMGDIR);
$tm->setImgwww(JSDIR.'phplayersmenu/menuimages/'); $tm->setImgwww(JSDIR.'phplayersmenu/menuimages/');
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/TemplateCreatingEntry.php,v 1.3.2.1 2007/12/26 09:26:33 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/TemplateCreatingEntry.php,v 1.3.2.2 2008/11/28 12:50:20 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -66,6 +66,9 @@ class TemplateCreatingEntry extends DefaultCreatingEntry {
} }
public function hasDefaultTemplate() { public function hasDefaultTemplate() {
if ($_SESSION[APPCONFIG]->GetValue('appearance','disable_default_template'))
return false;
else
return $this->default_template; return $this->default_template;
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/TemplateEditingEntry.php,v 1.3.2.2 2007/12/29 08:24:11 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/TemplateEditingEntry.php,v 1.3.2.4 2008/11/28 12:50:20 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -19,7 +19,7 @@ class TemplateEditingEntry extends DefaultEditingEntry {
parent::__construct($dn); parent::__construct($dn);
$this->templates = array(); $this->templates = array();
$this->valid = false; $this->valid = false;
$this->default_template = false; $this->default_template = true;
$this->selected_template = ''; $this->selected_template = '';
} }
@ -81,6 +81,9 @@ class TemplateEditingEntry extends DefaultEditingEntry {
} }
public function hasDefaultTemplate() { public function hasDefaultTemplate() {
if ($_SESSION[APPCONFIG]->GetValue('appearance','disable_default_template'))
return false;
else
return $this->default_template; return $this->default_template;
} }
@ -105,12 +108,22 @@ class TemplateEditingEntry extends DefaultEditingEntry {
$int_attrs_vals = $ldapserver->getDNSysAttrs($this->getDn()); $int_attrs_vals = $ldapserver->getDNSysAttrs($this->getDn());
if (! $int_attrs_vals) $attrs_vals = array(); if (! $int_attrs_vals) $attrs_vals = array();
elseif (! is_array($int_attrs_vals)) $int_attrs_vals = array($attrs_vals); elseif (! is_array($int_attrs_vals)) $int_attrs_vals = array($int_attrs_vals);
$custom_int_attrs_vals = $ldapserver->getCustomDNSysAttrs($this->getDn());
if (! $custom_int_attrs_vals) $attrs_vals = array();
elseif (! is_array($custom_int_attrs_vals)) $custom_int_attrs_vals = array($custom_int_attrs_vals);
$attrs_vals = $ldapserver->getDNAttrs($this->getDn(),false,$_SESSION[APPCONFIG]->GetValue('deref','view')); $attrs_vals = $ldapserver->getDNAttrs($this->getDn(),false,$_SESSION[APPCONFIG]->GetValue('deref','view'));
if (! $attrs_vals) $attrs_vals = array(); if (! $attrs_vals) $attrs_vals = array();
elseif (! is_array($attrs_vals)) $attrs_vals = array($attrs_vals); elseif (! is_array($attrs_vals)) $attrs_vals = array($attrs_vals);
$custom_attrs_vals = $ldapserver->getCustomDNAttrs($this->getDn(),false,$_SESSION[APPCONFIG]->GetValue('deref','view'));
if (! $custom_attrs_vals) $attrs_vals = array();
elseif (! is_array($custom_attrs_vals)) $custom_attrs_vals = array($custom_attrs_vals);
$int_attrs_vals = array_merge($int_attrs_vals,$custom_int_attrs_vals);
$attrs_vals = array_merge($attrs_vals,$custom_attrs_vals);
$attrs_vals = array_merge($attrs_vals,$int_attrs_vals); $attrs_vals = array_merge($attrs_vals,$int_attrs_vals);
$selected_tmpl = isset($this->templates[$this->selected_template]) $selected_tmpl = isset($this->templates[$this->selected_template])

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/blowfish.php,v 1.4 2007/12/15 07:50:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/blowfish.php,v 1.4.2.1 2008/12/12 12:20:22 wurley Exp $
/** /**
* The Cipher_blowfish:: class implements the Cipher interface enryption data * The Cipher_blowfish:: class implements the Cipher interface enryption data
@ -13,7 +13,7 @@
* did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
* *
* @author Mike Cochrane <mike@graftonhall.co.nz> * @author Mike Cochrane <mike@graftonhall.co.nz>
* @version $Revision: 1.4 $ * @version $Revision: 1.4.2.1 $
* @since Horde 2.2 * @since Horde 2.2
* @package horde.cipher * @package horde.cipher
*/ */
@ -440,9 +440,9 @@ class Horde_Cipher_blowfish {
$unpack = unpack('N*', $block); $unpack = unpack('N*', $block);
if (! is_array($unpack)) if (! is_array($unpack))
pla_error( error(
sprintf('BLOWFISH: decryptBock()<br>We expected unpack to produce an array, but instead it produced [%s]. This function was entered with (%s,%s). If you think that this is a bug, then please tell the PLA developers how you got here. You are using PLA [%s,%s]', sprintf('BLOWFISH: decryptBock()<br>We expected unpack to produce an array, but instead it produced [%s]. This function was entered with (%s,%s). If you think that this is a bug, then please tell the PLA developers how you got here. You are using PLA [%s,%s]',
serialize($unpack),rawurlencode($block),$key,pla_version(),phpversion())); serialize($unpack),rawurlencode($block),$key,pla_version(),phpversion()),'error','index.php');
list($L, $R) = array_values($unpack); list($L, $R) = array_values($unpack);

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/common.php,v 1.80.2.9 2008/01/30 11:14:02 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/common.php,v 1.80.2.17 2008/12/13 08:57:09 wurley Exp $
/** /**
* Contains code to be executed at the top of each application page. * Contains code to be executed at the top of each application page.
@ -26,7 +26,9 @@ if (! defined('APPCONFIG'))
*/ */
$app['direct_scripts'] = array('cmd.php','index.php', $app['direct_scripts'] = array('cmd.php','index.php',
'view_jpeg_photo.php','entry_chooser.php', 'view_jpeg_photo.php','entry_chooser.php',
'password_checker.php','download_binary_attr.php'); 'password_checker.php','download_binary_attr.php',
'unserialize.php'
);
foreach ($app['direct_scripts'] as $script) { foreach ($app['direct_scripts'] as $script) {
$scriptOK = false; $scriptOK = false;
@ -132,20 +134,31 @@ error_reporting(E_ALL);
# Start our session. # Start our session.
pla_session_start(); pla_session_start();
# Initialise the hooks
require_once LIBDIR.'hooks.php';
# If we get here, and $_SESSION[APPCONFIG] is not set, then redirect the user to the index. # If we get here, and $_SESSION[APPCONFIG] is not set, then redirect the user to the index.
if (! isset($_SESSION[APPCONFIG])) { if (! isset($_SESSION[APPCONFIG])) {
if (isset($_REQUEST['server_id'])) header(sprintf('Location: index.php?URI=%s',base64_encode($_SERVER['QUERY_STRING'])));
header(sprintf('Location: index.php?server_id=%s',$_REQUEST['server_id']));
else
header('Location: index.php');
die(); die();
} else { } else {
# SF Bug #1903987
if (! method_exists($_SESSION[APPCONFIG],'CheckCustom'))
error('Unknown situation, $_SESSION[APPCONFIG] exists, but method CheckCustom() does not','error',null,true,true);
# Check our custom variables. # Check our custom variables.
# @todo: Change this so that we dont process a cached session. # @todo: Change this so that we dont process a cached session.
$_SESSION[APPCONFIG]->CheckCustom(); $_SESSION[APPCONFIG]->CheckCustom();
} }
# Check for safe mode.
if (ini_get('safe_mode') && ! get_request('cmd','GET'))
system_message(array(
'title'=>_('PHP Safe Mode'),
'body'=>_('You have PHP Safe Mode enabled. PLA may work unexpectedly in Safe Mode.'),
'type'=>'info'));
# Set our timezone, if it is specified in config.php # Set our timezone, if it is specified in config.php
if ($_SESSION[APPCONFIG]->GetValue('appearance','timezone')) if ($_SESSION[APPCONFIG]->GetValue('appearance','timezone'))
date_default_timezone_set($_SESSION[APPCONFIG]->GetValue('appearance','timezone')); date_default_timezone_set($_SESSION[APPCONFIG]->GetValue('appearance','timezone'));
@ -163,11 +176,11 @@ if (DEBUG_ENABLED)
# Set our PHP timelimit. # Set our PHP timelimit.
if ($_SESSION[APPCONFIG]->GetValue('session','timelimit')) if ($_SESSION[APPCONFIG]->GetValue('session','timelimit'))
set_time_limit($_SESSION[APPCONFIG]->GetValue('session','timelimit')); @set_time_limit($_SESSION[APPCONFIG]->GetValue('session','timelimit'));
# If debug mode is set, increase the time_limit, since we probably need it. # If debug mode is set, increase the time_limit, since we probably need it.
if (DEBUG_ENABLED && $_SESSION[APPCONFIG]->GetValue('session','timelimit')) if (DEBUG_ENABLED && $_SESSION[APPCONFIG]->GetValue('session','timelimit'))
set_time_limit($_SESSION[APPCONFIG]->GetValue('session','timelimit') * 5); @set_time_limit($_SESSION[APPCONFIG]->GetValue('session','timelimit') * 5);
/** /**
* Language configuration. Auto or specified? * Language configuration. Auto or specified?
@ -204,7 +217,7 @@ if ($language == 'auto') {
(file_exists($language_dir) && is_readable($language_dir))) { (file_exists($language_dir) && is_readable($language_dir))) {
# Set language # Set language
putenv('LANG='.$HTTP_LANG); # e.g. LANG=de_DE @putenv('LANG='.$HTTP_LANG); # e.g. LANG=de_DE
$HTTP_LANG .= '.UTF-8'; $HTTP_LANG .= '.UTF-8';
setlocale(LC_ALL,$HTTP_LANG); # set LC_ALL to de_DE setlocale(LC_ALL,$HTTP_LANG); # set LC_ALL to de_DE
bindtextdomain('messages',LANGDIR); bindtextdomain('messages',LANGDIR);
@ -225,7 +238,7 @@ if ($language == 'auto') {
$language = 'en_GB'; $language = 'en_GB';
# Set language # Set language
putenv('LANG='.$language); # e.g. LANG=de_DE @putenv('LANG='.$language); # e.g. LANG=de_DE
$language .= '.UTF-8'; $language .= '.UTF-8';
setlocale(LC_ALL,$language); # set LC_ALL to de_DE setlocale(LC_ALL,$language); # set LC_ALL to de_DE
bindtextdomain('messages',LANGDIR); bindtextdomain('messages',LANGDIR);
@ -261,16 +274,23 @@ if (isset($_REQUEST['server_id'])) {
* Look/evaluate our timeout * Look/evaluate our timeout
*/ */
if (isset($ldapserver) && is_object($ldapserver) && method_exists($ldapserver,'haveAuthInfo')) { if (isset($ldapserver) && is_object($ldapserver) && method_exists($ldapserver,'haveAuthInfo')) {
if ($ldapserver->haveAuthInfo() && isset($ldapserver->auth_type) && $ldapserver->auth_type != 'config') { if ($ldapserver->haveAuthInfo() && isset($ldapserver->auth_type) && ! in_array($ldapserver->auth_type,array('config','http'))) {
/** /**
* If time out value has been reached: * If time out value has been reached:
* - log out user * - log out user
* - put $server_id in array of recently timed out servers * - put $server_id in array of recently timed out servers
*/ */
if (function_exists('session_timed_out') && session_timed_out($ldapserver)) { if (function_exists('session_timed_out') && session_timed_out($ldapserver)) {
$app['url_timeout'] = sprintf('cmd.php?cmd=timeout&server_id=%s',$_REQUEST['server_id']);
printf('<script type="text/javascript" language="javascript">location.href=\'%s\'</script>', # If $session_timeout not defined, use ( session_cache_expire() - 1 )
htmlspecialchars($app['url_timeout'])); $session_timeout = $ldapserver->session_timeout ? $ldapserver->session_timeout : session_cache_expire()-1;
system_message(array(
'title'=>_('Session Timed Out'),
'body'=>sprintf('%s %s %s',
_('Your Session timed out after'),$session_timeout,
_('min. of inactivity. You have been automatically logged out.')),
'type'=>'info'),'index.php');
die(); die();
} }
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/config_default.php,v 1.27.2.7 2008/01/30 11:16:02 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/config_default.php,v 1.27.2.9 2008/12/12 12:20:22 wurley Exp $
/** /**
* Configuration processing and defaults. * Configuration processing and defaults.
@ -84,6 +84,10 @@ class Config {
'desc'=>'Array of attributes that should show a the time when showing the jscalendar', 'desc'=>'Array of attributes that should show a the time when showing the jscalendar',
'default'=>array('')); 'default'=>array(''));
$this->default->appearance['disable_default_template'] = array(
'desc'=>'Disabled the Default Template',
'default'=>false);
$this->default->appearance['hide_debug_info'] = array( $this->default->appearance['hide_debug_info'] = array(
'desc'=>'Hide the features that may provide sensitive debugging information to the browser', 'desc'=>'Hide the features that may provide sensitive debugging information to the browser',
'default'=>true); 'default'=>true);
@ -508,10 +512,10 @@ class Config {
if (! isset($config[$key])) if (! isset($config[$key]))
error(sprintf('A call was made in [%s] to GetValue requesting [%s] that isnt predefined.', error(sprintf('A call was made in [%s] to GetValue requesting [%s] that isnt predefined.',
basename($_SERVER['PHP_SELF']),$key),'error',true); basename($_SERVER['PHP_SELF']),$key),'error',null,true);
if (! isset($config[$key][$index])) if (! isset($config[$key][$index]))
error(sprintf('Requesting an index [%s] in key [%s] that isnt predefined.',$index,$key),'error',true); error(sprintf('Requesting an index [%s] in key [%s] that isnt predefined.',$index,$key),'error',null,true);
return isset($config[$key][$index]['value']) ? $config[$key][$index]['value'] : $config[$key][$index]['default']; return isset($config[$key][$index]['value']) ? $config[$key][$index]['value'] : $config[$key][$index]['default'];
} }
@ -526,23 +530,23 @@ class Config {
if (isset($this->default->$masterkey)) { if (isset($this->default->$masterkey)) {
if (! is_array($masterdetails)) if (! is_array($masterdetails))
error(sprintf('Error in configuration file, [%s] should be an ARRAY.',$masterdetails),'error',true); error(sprintf('Error in configuration file, [%s] should be an ARRAY.',$masterdetails),'error',null,true);
foreach ($masterdetails as $key => $value) { foreach ($masterdetails as $key => $value) {
# Test that the key is correct. # Test that the key is correct.
if (! in_array($key,array_keys($this->default->$masterkey))) if (! in_array($key,array_keys($this->default->$masterkey)))
error(sprintf('Error in configuration file, [%s] has not been defined as a configurable variable.',$key),'error',true); error(sprintf('Error in configuration file, [%s] has not been defined as a configurable variable.',$key),'error',null,true);
# Test if its should be an array or not. # Test if its should be an array or not.
if (is_array($this->default->{$masterkey}[$key]['default']) && ! is_array($value)) if (is_array($this->default->{$masterkey}[$key]['default']) && ! is_array($value))
error(sprintf('Error in configuration file, %s[\'%s\'] SHOULD be an array of values.',$masterkey,$key),'error',true); error(sprintf('Error in configuration file, %s[\'%s\'] SHOULD be an array of values.',$masterkey,$key),'error',null,true);
if (! is_array($this->default->{$masterkey}[$key]['default']) && is_array($value)) if (! is_array($this->default->{$masterkey}[$key]['default']) && is_array($value))
error(sprintf('Error in configuration file, %s[\'%s\'] should NOT be an array of values.',$masterkey,$key),'error',true); error(sprintf('Error in configuration file, %s[\'%s\'] should NOT be an array of values.',$masterkey,$key),'error',null,true);
} }
} else { } else {
error(sprintf('Error in configuration file, [%s] has not been defined as a MASTER configurable variable.',$masterkey),'error',true); error(sprintf('Error in configuration file, [%s] has not been defined as a MASTER configurable variable.',$masterkey),'error',null,true);
} }
} }
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/emuhash_functions.php,v 1.6.10.1 2007/12/21 12:11:55 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/emuhash_functions.php,v 1.6.10.2 2008/12/12 12:20:23 wurley Exp $
/******************************************************************************* /*******************************************************************************
* emuhash - partly emulates the php mhash functions * emuhash - partly emulates the php mhash functions
@ -64,7 +64,7 @@ if( ! function_exists( 'mhash' ) && ! function_exists( 'mhash_keygen_s2k' ) ) {
$pwhandle = fopen( $tmpfile, "w" ); $pwhandle = fopen( $tmpfile, "w" );
if( ! $pwhandle ) if( ! $pwhandle )
pla_error( "Unable to create a temporary file '$tmpfile' to create hashed password" ); error(sprintf('Unable to create a temporary file %s to create hashed password',$tmpfile) ,'error','index.php');
fwrite( $pwhandle, $password_clear ); fwrite( $pwhandle, $password_clear );
fclose( $pwhandle ); fclose( $pwhandle );

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/export_functions.php,v 1.36.2.1 2007/12/26 09:26:33 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/export_functions.php,v 1.36.2.2 2008/12/12 12:20:23 wurley Exp $
/** /**
* Fuctions and classes for exporting ldap entries to others formats * Fuctions and classes for exporting ldap entries to others formats
@ -249,8 +249,10 @@ class PlaLdapExporter extends PlaAbstractExporter {
# if no result, there is a something wrong # if no result, there is a something wrong
if (! $this->results && $this->ldap_info->ldapserver->errno()) if (! $this->results && $this->ldap_info->ldapserver->errno())
pla_error(_('Encountered an error while performing search.'),$this->ldap_info->ldapserver->error(), system_message(array(
$this->ldap_info->ldapserver->errno()); 'title'=>_('Encountered an error while performing search.'),
'body'=>ldap_error_msg($this->ldap_info->ldapserver->error(),$this->ldap_info->ldapserver->errno()),
'type'=>'error'));
usort($this->results,'pla_compare_dns'); usort($this->results,'pla_compare_dns');
$this->num_entries = count($this->results); $this->num_entries = count($this->results);

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/functions.php,v 1.303.2.26 2008/01/30 11:17:00 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/functions.php,v 1.303.2.41 2008/12/12 12:52:26 wurley Exp $
/** /**
* A collection of common generic functions used throughout the application. * A collection of common generic functions used throughout the application.
@ -37,8 +37,6 @@ $app['function_files'] = array(
LIBDIR.'template_functions.php', LIBDIR.'template_functions.php',
# Functions for hashing passwords with OpenSSL binary (only if mhash not present) # Functions for hashing passwords with OpenSSL binary (only if mhash not present)
LIBDIR.'emuhash_functions.php', LIBDIR.'emuhash_functions.php',
# Functions for running various hooks
LIBDIR.'hooks.php',
# Functions for creating Samba passwords # Functions for creating Samba passwords
LIBDIR.'createlm.php', LIBDIR.'createlm.php',
# Functions for timeout and automatic logout feature # Functions for timeout and automatic logout feature
@ -66,6 +64,15 @@ function __autoload($className) {
'type'=>'error')); 'type'=>'error'));
} }
/**
* If gettext is not installed, we will emulate it here.
*/
if (! function_exists('_')) {
function _($msg) {
return $msg;
}
}
/** /**
* Generic Utility Functions * Generic Utility Functions
*/ */
@ -151,7 +158,7 @@ function pla_error_handler($errno,$errstr,$file,$lineno) {
} }
# If this is a more serious error, call the error call. # If this is a more serious error, call the error call.
error(sprintf('%s: %s',$errtype,$errstr),'error',true,true); error(sprintf('%s: %s',$errtype,$errstr),'error',null,true,true);
} }
/** /**
@ -161,6 +168,11 @@ function pla_error_handler($errno,$errstr,$file,$lineno) {
* @return string The current version as read from the VERSION file. * @return string The current version as read from the VERSION file.
*/ */
function pla_version() { function pla_version() {
static $return = null;
if ($return)
return $return;
$version_file = realpath(LIBDIR.'../VERSION'); $version_file = realpath(LIBDIR.'../VERSION');
if (! file_exists($version_file)) if (! file_exists($version_file))
$return = 'UNKNOWN'; $return = 'UNKNOWN';
@ -229,27 +241,6 @@ function check_config($config_file) {
REQUIRED_PHP_VERSION,phpversion()), REQUIRED_PHP_VERSION,phpversion()),
'type'=>'error')); 'type'=>'error'));
# Make sure this PHP install has all our required extensions
if (! extension_loaded('ldap'))
system_message(array(
'title'=>_('Missing required extension'),
'body'=>'Your install of PHP appears to be missing LDAP support.<br /><br />Please install LDAP support before using phpLDAPadmin.<br /><small>(Dont forget to restart your web server afterwards)</small>',
'type'=>'error'));
# Make sure that we have php-xml loaded.
if (! function_exists('xml_parser_create'))
system_message(array(
'title'=>_('Missing required extension'),
'body'=>'Your install of PHP appears to be missing XML support.<br /><br />Please install XML support before using phpLDAPadmin.<br /><small>(Dont forget to restart your web server afterwards)</small>',
'type'=>'error'));
# Make sure their session save path is writable, if they are using a file system session module, that is.
if (! strcasecmp('Files',session_module_name() && ! is_writable(realpath(session_save_path()))))
system_message(array(
'title'=>_('PHP session configuration incorrect'),
'body'=>sprintf('Your PHP session configuration is incorrect. Please check the value of session.save_path in your php.ini to ensure that the directory specified there exists and is writable. The current setting of "%s" is un-writable by the web server.',session_save_path()),
'type'=>'error'));
$config = new Config; $config = new Config;
ob_start(); ob_start();
@ -353,19 +344,19 @@ function check_config($config_file) {
*/ */
function cmd_control_pane() { function cmd_control_pane() {
return array( return array(
'home'=>array('link'=>sprintf('<a href="cmd.php?cmd=welcome" title="%s"><img src="images/home-big.png" alt="%s" /><br />%s</a>',_('Home'),_('Home'),_('Home'))), 'home'=>array('link'=>sprintf('<a href="cmd.php?cmd=welcome" title="%s"><img src="%s/home-big.png" alt="%s" /><br />%s</a>',_('Home'),IMGDIR,_('Home'),_('Home'))),
'purge'=>array('link'=>sprintf('<a href="cmd.php?cmd=purge_cache" title="%s"><img src="images/trash-big.png" alt="%s" /><br />%s</a>', 'purge'=>array('link'=>sprintf('<a href="cmd.php?cmd=purge_cache" title="%s"><img src="%s/trash-big.png" alt="%s" /><br />%s</a>',
_('Purge caches'),_('Purge all cached data in phpLDAPadmin, including server schemas.'),_('Purge caches'))), _('Purge caches'),IMGDIR,_('Purge all cached data in phpLDAPadmin, including server schemas.'),_('Purge caches'))),
'external_links:feature'=>array('link'=>sprintf('<a href="%s" target="new" title="%s"><img src="images/request-feature.png" alt="%s" /><br />%s</a>', 'external_links:feature'=>array('link'=>sprintf('<a href="%s" target="new" title="%s"><img src="%s/request-feature.png" alt="%s" /><br />%s</a>',
get_href('add_rfe'),_('Request feature'),_('light'),_('Request feature'))), get_href('add_rfe'),_('Request feature'),IMGDIR,_('light'),_('Request feature'))),
'external_links:bug'=>array('link'=>sprintf('<a href="%s" target="new" title="%s"><img src="images/bug-big.png" alt="%s" /><br />%s</a>', 'external_links:bug'=>array('link'=>sprintf('<a href="%s" target="new" title="%s"><img src="%s/bug-big.png" alt="%s" /><br />%s</a>',
get_href('add_bug'),_('Report a bug'),_('bug'),_('Report a bug'))), get_href('add_bug'),_('Report a bug'),IMGDIR,_('bug'),_('Report a bug'))),
'external_links:donation'=>array('link'=>sprintf('<a href="%s" target="new" title="%s"><img src="images/smile-big.png" alt="%s" /><br />%s</a>', 'external_links:donation'=>array('link'=>sprintf('<a href="%s" target="new" title="%s"><img src="%s/smile-big.png" alt="%s" /><br />%s</a>',
get_href('donate'),_('Donate'),_('Donate'),_('Donate'))), get_href('donate'),_('Donate'),IMGDIR,_('Donate'),_('Donate'))),
'appearance:hide_debug_info'=>array('link'=>sprintf('<a href="cmd.php?cmd=show_cache" title="%s"><img src="images/debug-cache.png" alt="%s" /><br />%s</a>', 'appearance:hide_debug_info'=>array('link'=>sprintf('<a href="cmd.php?cmd=show_cache" title="%s"><img src="%s/debug-cache.png" alt="%s" /><br />%s</a>',
_('Show Cache'),_('Show Cache'),_('Show Cache'))), _('Show Cache'),IMGDIR,_('Show Cache'),_('Show Cache'))),
'external_links:help'=>array('link'=>sprintf('<a href="%s" target="new" title="%s"><img src="images/help-big.png" alt="%s" /><br />%s</a>', 'external_links:help'=>array('link'=>sprintf('<a href="%s" target="new" title="%s"><img src="%s/help-big.png" alt="%s" /><br />%s</a>',
get_href('documentation'),_('Help'),_('Help'),_('Help'))) get_href('documentation'),_('Help'),IMGDIR,_('Help'),_('Help')))
); );
} }
@ -389,6 +380,14 @@ function debug_dump($variable,$die=false,$onlydebugaddr=false) {
die(); die();
} }
/**
* This function generates a backtrace
* @param boolean Whether to stop execution or not.
*/
function debug_dump_backtrace($msg='Calling BackTrace',$die=false) {
error($msg,'note',null,$die,true);
}
/** /**
* Debug Logging to Syslog * Debug Logging to Syslog
* *
@ -498,7 +497,7 @@ function debug_log($msg,$level=0) {
/** /**
* Display an error message in the system message panel of the page. * Display an error message in the system message panel of the page.
*/ */
function error($msg,$type='note',$fatal=false,$backtrace=false) { function error($msg,$type='note',$redirect=null,$fatal=false,$backtrace=false) {
global $www; global $www;
global $counter; global $counter;
@ -510,7 +509,10 @@ function error($msg,$type='note',$fatal=false,$backtrace=false) {
if (! isset($www['page'])) if (! isset($www['page']))
$www['page'] = new page(); $www['page'] = new page();
if ($fatal)
$www['page']->setsysmsg(array('title'=>_('Error'),'body'=>$msg,'type'=>$type)); $www['page']->setsysmsg(array('title'=>_('Error'),'body'=>$msg,'type'=>$type));
else
system_message(array('title'=>_('Error'),'body'=>$msg,'type'=>$type),$redirect);
# Spin loop detection # Spin loop detection
if ($counter++ > 20) { if ($counter++ > 20) {
@ -525,24 +527,33 @@ function error($msg,$type='note',$fatal=false,$backtrace=false) {
$body = '<table class="result_table">'; $body = '<table class="result_table">';
$body .= "\n"; $body .= "\n";
foreach (debug_backtrace() as $error => $line) {
$body .= sprintf('<tr class="hightlight"><td colspan="2"><b><small>%s</small></b></td><td>%s (%s)</td></tr>',
_('File'),isset($line['file']) ? $line['file'] : '',isset($line['line']) ? $line['line'] : '');
foreach (debug_backtrace() as $error => $line) {
$_SESSION['backtrace'][$error]['file'] = $line['file'];
$_SESSION['backtrace'][$error]['line'] = $line['line'];
$body .= sprintf('<tr class="hightlight"><td colspan="2"><b><small>%s</small></b></td><td>%s (%s)</td></tr>',
_('File'),isset($line['file']) ? $line['file'] : $last['file'],isset($line['line']) ? $line['line'] : '');
$_SESSION['backtrace'][$error]['function'] = $line['function'];
$body .= sprintf('<tr><td>&nbsp;</td><td><b><small>%s</small></b></td><td><small>%s', $body .= sprintf('<tr><td>&nbsp;</td><td><b><small>%s</small></b></td><td><small>%s',
_('Function'),$line['function']); _('Function'),$line['function']);
if (isset($line['args'])) if (isset($line['args'])) {
$display = strlen(serialize($line['args'])) < 50 ? serialize($line['args']) : substr(serialize($line['args']),0,50).'...<TRUNCATED>';
$_SESSION['backtrace'][$error]['args'] = $line['args'];
if (file_exists(LIBDIR.'../tools/unserialize.php')) if (file_exists(LIBDIR.'../tools/unserialize.php'))
$body .= sprintf('&nbsp;(<a href="%s?var=%s">%s</a>)', $body .= sprintf('&nbsp;(<a href="%s?index=%s" target="backtrace">%s</a>)',
'/tools/unserialize.php', '../tools/unserialize.php',$error,htmlspecialchars($display));
htmlspecialchars(serialize($line['args'])),
htmlspecialchars(serialize($line['args'])));
else else
$body .= sprintf('&nbsp;(%s)',htmlspecialchars(serialize($line['args']))); $body .= sprintf('&nbsp;(%s)',htmlspecialchars($display));
}
$body .= '</small></td></tr>'; $body .= '</small></td></tr>';
$body .= "\n"; $body .= "\n";
if ($line['file'])
$last['file'] = $line['file'];
} }
$body .= '</table>'; $body .= '</table>';
$body .= "\n"; $body .= "\n";
$backtraceblock->SetBody($body); $backtraceblock->SetBody($body);
@ -609,7 +620,16 @@ function system_message($msg,$redirect=null) {
$_SESSION['sysmsg'][] = $msg; $_SESSION['sysmsg'][] = $msg;
if (get_request('redirect','GET'))
debug_dump_backtrace('Redirect Loop Detected',true);
if ($redirect) { if ($redirect) {
if (preg_match('/\?/',$redirect))
$redirect .= '&';
else
$redirect .= '?';
$redirect .= 'redirect=true';
header("Location: $redirect"); header("Location: $redirect");
die(); die();
} }
@ -1149,17 +1169,17 @@ function get_next_number(&$ldapserver,$startbase='',$type='uid',$increment=false
$base_dn = $_SESSION[APPCONFIG]->ldapservers->GetValue($ldapserver->server_id,'auto_number','search_base'); $base_dn = $_SESSION[APPCONFIG]->ldapservers->GetValue($ldapserver->server_id,'auto_number','search_base');
if (is_null($base_dn)) if (is_null($base_dn))
pla_error(sprintf(_('You specified the "auto_uid_number_mechanism" as "search" in your error(sprintf(_('You specified the "auto_uid_number_mechanism" as "search" in your
configuration for server <b>%s</b>, but you did not specify the configuration for server <b>%s</b>, but you did not specify the
"auto_uid_number_search_base". Please specify it before proceeding.'),$ldapserver->name)); "auto_uid_number_search_base". Please specify it before proceeding.'),$ldapserver->name),'error','index.php');
} else { } else {
$base_dn = $startbase; $base_dn = $startbase;
} }
if (! $ldapserver->dnExists($base_dn)) if (! $ldapserver->dnExists($base_dn))
pla_error(sprintf(_('Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'), error(sprintf(_('Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'),
$ldapserver->name)); $ldapserver->name),'error','index.php');
$filter = '(|(uidNumber=*)(gidNumber=*))'; $filter = '(|(uidNumber=*)(gidNumber=*))';
$results = array(); $results = array();
@ -1170,12 +1190,13 @@ function get_next_number(&$ldapserver,$startbase='',$type='uid',$increment=false
$_SESSION[APPCONFIG]->ldapservers->GetValue($ldapserver->server_id,'auto_number','pass')); $_SESSION[APPCONFIG]->ldapservers->GetValue($ldapserver->server_id,'auto_number','pass'));
if (! $con) if (! $con)
pla_error(sprintf(_('Unable to bind to <b>%s</b> with your with auto_uid credentials. Please check your configuration file.'),$ldapserver->name)); error(sprintf(_('Unable to bind to <b>%s</b> with your with auto_uid credentials. Please check your configuration file.'),$ldapserver->name),
'error','index.php');
$search = $ldapserver->search($con,$base_dn,$filter,array('uidNumber','gidNumber'),'sub',false,$_SESSION[APPCONFIG]->GetValue('deref','search')); $search = $ldapserver->search($con,$base_dn,$filter,array('uidNumber','gidNumber'),'sub',false,$_SESSION[APPCONFIG]->GetValue('deref','search'));
if (! is_array($search)) if (! is_array($search))
pla_error('Untrapped error.'); error(_('Untrapped error.'),'error','index.php');
foreach ($search as $dn => $attrs) { foreach ($search as $dn => $attrs) {
$attrs = array_change_key_case($attrs); $attrs = array_change_key_case($attrs);
@ -1198,7 +1219,7 @@ function get_next_number(&$ldapserver,$startbase='',$type='uid',$increment=false
} }
break; break;
default : default :
pla_error(sprintf('Unknown type [%s] in search',$type)); error(sprintf('Unknown type [%s] in search',$type),'error','index.php');
} }
} }
@ -1234,13 +1255,15 @@ function get_next_number(&$ldapserver,$startbase='',$type='uid',$increment=false
$_SESSION[APPCONFIG]->ldapservers->GetValue($ldapserver->server_id,'auto_number','pass')); $_SESSION[APPCONFIG]->ldapservers->GetValue($ldapserver->server_id,'auto_number','pass'));
if (! $con) if (! $con)
pla_error(sprintf(_('Unable to bind to <b>%s</b> with your with auto_uid credentials. Please check your configuration file.'),$ldapserver->name)); error(sprintf(_('Unable to bind to <b>%s</b> with your with auto_uid credentials. Please check your configuration file.'),$ldapserver->name),
'error','index.php');
# assume that uidpool dn is set in config file if no filter given # assume that uidpool dn is set in config file if no filter given
if (empty($filter)) if (empty($filter)) {
$uidpool_dn = $_SESSION[APPCONFIG]->ldapservers->GetValue($ldapserver->server_id,'auto_number','uidpool_dn'); $uidpool_dn = $_SESSION[APPCONFIG]->ldapservers->GetValue($ldapserver->server_id,'auto_number','uidpool_dn');
$filter = '(objectclass=*)';
else { } else {
$filter = str_replace(array('&amp;',':::'),array('&',','),$filter); $filter = str_replace(array('&amp;',':::'),array('&',','),$filter);
$dns = $ldapserver->search($con,$startbase,$filter,array('dn'),'sub'); $dns = $ldapserver->search($con,$startbase,$filter,array('dn'),'sub');
@ -1249,10 +1272,10 @@ function get_next_number(&$ldapserver,$startbase='',$type='uid',$increment=false
break; break;
case '0': case '0':
pla_error(_('Uidpool dn not found, please change filter parameter')); error(_('Uidpool dn not found, please change filter parameter'),'error','index.php');
default: default:
pla_error(_('There is more than one dn for uidpool,please change filter parameter')); error(_('There is more than one dn for uidpool,please change filter parameter'),'error','index.php');
} }
list ($key,$attrs) = each($dns); list ($key,$attrs) = each($dns);
@ -1260,31 +1283,38 @@ function get_next_number(&$ldapserver,$startbase='',$type='uid',$increment=false
$uidpool_dn = $attrs['dn']; $uidpool_dn = $attrs['dn'];
} }
if (empty($uidpool_dn)) # Check that the UIDPOOL DN exists.
pla_error(_('uidpool_dn not found. Please check filter (arg 3) or set up uidpool_dn in config file')); if (empty($uidpool_dn) || (! $ldapserver->dnExists($uidpool_dn)))
error(_('uidpool_dn not found. Please check filter (arg 3) or set up uidpool_dn in config file'),'error','index.php');
$attrs = array($type); switch ($type) {
$key = strtolower($type); case 'uid' : $attr = 'uidnumber';
$realkey = $type; break;
case 'gid' : $attr = 'gidnumber';
break;
default :
error(_('Unknown uidpool type.'),'error','index.php');
}
$number = $ldapserver->search($con,$uidpool_dn,$filter,$attrs,'base'); $number = $ldapserver->search($con,$uidpool_dn,$filter,array($attr),'base');
list($rkey,$number) = each($number); $numbers = array_change_key_case($number[$uidpool_dn]);
$number = array_change_key_case($number);
$number = $number[$key];
if (isset($increment) && ($increment == 'true')) { if (! isset($numbers[$attr]))
$updatedattr = array ($key => $number + 1); error(_('A query on the uidpool_dn did return a valid uidNumber.'),'error','index.php');
else
if ($increment) {
$updatedattr = array($attr => $numbers[$attr] + 1);
$ldapserver->modify($uidpool_dn,$updatedattr); $ldapserver->modify($uidpool_dn,$updatedattr);
} }
return $number; return $numbers[$attr];
break; break;
# No other cases allowed. The user has an error in the configuration # No other cases allowed. The user has an error in the configuration
default : default :
pla_error( sprintf( _('You specified an invalid value for auto_uid_number_mechanism ("%s") error(sprintf(_('You specified an invalid value for auto_uid_number_mechanism ("%s") in your configration. Only "uidpool" and "search" are valid.
in your configration. Only "uidpool" and "search" are valid. Please correct this problem.'),$mechanism),'error','index.php');
Please correct this problem.') , $mechanism) );
} }
} }
@ -1380,7 +1410,7 @@ function get_icon( $ldapserver, $dn ) {
$cval = explode( '=', $tmp[0], 2 ); $cval = explode( '=', $tmp[0], 2 );
$cval = isset( $cval[1] ) ? $cval[1] : false; $cval = isset( $cval[1] ) ? $cval[1] : false;
if( $cval && false === strpos( $cval, ".." ) && if( $cval && false === strpos( $cval, ".." ) &&
file_exists( realpath( sprintf("./images/countries/%s.png",strtolower($cval)) ) ) ) file_exists(realpath(sprintf('%s/countries/%s.png',IMGDIR,strtolower($cval)))))
return sprintf("countries/%s.png",strtolower($cval)); return sprintf("countries/%s.png",strtolower($cval));
@ -1732,56 +1762,28 @@ function support_oid_to_text($oid_id) {
} }
/** /**
* Prints an HTML-formatted error string. If you specify the optional * Print an LDAP error message
* parameters $ldap_err_msg and $ldap_err_no, this function will
* lookup the error number and display a verbose message in addition
* to the message you pass it.
*
* @param string $msg The error message to display.
* @param string $ldap_err_msg (optional) The error message supplied by the LDAP server
* @param string $ldap_err_no (optional) The hexadecimal error number string supplied by the LDAP server
* @param bool $fatal (optional) If true, phpLDAPadmin will terminate execution with the PHP die() function.
*
* @see die
* @see ldap_errno
* @see pla_verbose_error
*/ */
function pla_error($msg,$ldap_err_msg=null,$ldap_err_no=-1,$fatal=true) { function ldap_error_msg($msg,$errnum) {
if (defined('DEBUG_ENABLED') && (DEBUG_ENABLED)) $body = '<table border=0>';
debug_log('Entered with (%s,%s,%s,%s)',1,__FILE__,__LINE__,__METHOD__,
$msg,$ldap_err_msg,$ldap_err_no,$fatal);
$title = ''; $errnum = ('0x'.str_pad(dechex($errnum),2,0,STR_PAD_LEFT));
$verbose_error = pla_verbose_error($errnum);
if (function_exists('syslog_err')) $body .= sprintf('<tr><td><b>%s</b>:</td><td>%s</td></tr>',_('LDAP said'),htmlspecialchars($msg));
syslog_err($msg);
if ($ldap_err_msg)
$title = sprintf('<b>%s</b>: %s',_('LDAP said'),htmlspecialchars($ldap_err_msg));
if ($ldap_err_no != -1) {
$body = '<table>';
$ldap_err_no = ('0x'.str_pad(dechex($ldap_err_no),2,0,STR_PAD_LEFT));
$verbose_error = pla_verbose_error($ldap_err_no);
if ($verbose_error) { if ($verbose_error) {
$body .= sprintf('<tr><td colspan="2"><b>%s</b>: %s (%s)</td></tr>',_('Error number'),$ldap_err_no,$verbose_error['title']); $body .= sprintf('<tr><td><b>%s</b>:</td><td>%s (%s)</td></tr>',_('Error number'),$errnum,$verbose_error['title']);
$body .= sprintf('<tr><td colspan="2"><b>%s</b>: %s</td></tr>',_('Description'),$verbose_error['desc']); $body .= sprintf('<tr><td><b>%s</b>:</td><td>%s</td></tr>',_('Description'),$verbose_error['desc']);
} else { } else {
$body .= sprintf('<tr><td colspan="2"><b>%s</b>: %s</td></tr>',_('Error number'),$ldap_err_no); $body .= sprintf('<tr><td><b>%s</b>:</td><td>%s</td></tr>',_('Error number'),$errnum);
$body .= sprintf('<tr><td colspan="2"><b>%s</b>: (%s)</td></tr>',_('Description'),_('no description available')); $body .= sprintf('<tr><td><b>%s</b>:</td><td>(%s)</td></tr>',_('Description'),_('no description available'));
} }
$body .= '</table>'; $body .= '</table>';
if (function_exists('syslog_err')) return $body;
syslog_err(sprintf('%s %s',_('Error number'),$ldap_err_no));
} else {
$body = $msg;
}
system_message(array('title'=>$title ? $title : 'Error','body'=>$body,'type'=>'error'),$fatal ? 'index.php' : null);
} }
/** /**
@ -1832,7 +1834,7 @@ function draw_jpeg_photos($ldapserver,$dn,$attr_name='jpegPhoto',$draw_delete_bu
$jpeg_temp_dir = realpath($_SESSION[APPCONFIG]->GetValue('jpeg','tmpdir').'/'); $jpeg_temp_dir = realpath($_SESSION[APPCONFIG]->GetValue('jpeg','tmpdir').'/');
if (! is_writable($jpeg_temp_dir)) if (! is_writable($jpeg_temp_dir))
pla_error(_('Please set $jpeg_temp_dir to a writable directory in the phpLDAPadmin config.php') ); error(_('Please set $jpeg_temp_dir to a writable directory in the phpLDAPadmin config.php'),'error','index.php');
if (! is_array($jpeg_data[$attr_name])) if (! is_array($jpeg_data[$attr_name]))
$jpeg_data[$attr_name] = array($jpeg_data[$attr_name]); $jpeg_data[$attr_name] = array($jpeg_data[$attr_name]);
@ -1841,7 +1843,8 @@ function draw_jpeg_photos($ldapserver,$dn,$attr_name='jpegPhoto',$draw_delete_bu
$jpeg_filename = tempnam($jpeg_temp_dir.'/','pla'); $jpeg_filename = tempnam($jpeg_temp_dir.'/','pla');
$outjpeg = @fopen($jpeg_filename,'wb'); $outjpeg = @fopen($jpeg_filename,'wb');
if (! $outjpeg) if (! $outjpeg)
pla_error(sprintf(_('Could not write to the $jpeg_temp_dir directory %s. Please verify that your web server can write files there.'),$jpeg_temp_dir)); error(sprintf(_('Could not write to the $jpeg_temp_dir directory %s. Please verify that your web server can write files there.'),$jpeg_temp_dir),
'error','index.php');
fwrite($outjpeg,$jpeg); fwrite($outjpeg,$jpeg);
fclose ($outjpeg); fclose ($outjpeg);
@ -1902,7 +1905,7 @@ function draw_jpeg_photos($ldapserver,$dn,$attr_name='jpegPhoto',$draw_delete_bu
} }
closedir($handle); closedir($handle);
} else { } else {
pla_error(sprintf('failed to open dir %s : permission denied', $jpeg_temp_dir), null, -1, false, false); error(sprintf('failed to open dir %s : permission denied',$jpeg_temp_dir),'error');
} }
} }
@ -1932,21 +1935,21 @@ function password_hash( $password_clear, $enc_type ) {
case 'ext_des': case 'ext_des':
// extended des crypt. see OpenBSD crypt man page. // extended des crypt. see OpenBSD crypt man page.
if ( ! defined( 'CRYPT_EXT_DES' ) || CRYPT_EXT_DES == 0 ) if ( ! defined( 'CRYPT_EXT_DES' ) || CRYPT_EXT_DES == 0 )
pla_error( _('Your system crypt library does not support extended DES encryption.') ); error(_('Your system crypt library does not support extended DES encryption.'),'error','index.php');
$new_value = '{CRYPT}' . crypt( $password_clear, '_' . random_salt(8) ); $new_value = '{CRYPT}' . crypt( $password_clear, '_' . random_salt(8) );
break; break;
case 'md5crypt': case 'md5crypt':
if( ! defined( 'CRYPT_MD5' ) || CRYPT_MD5 == 0 ) if( ! defined( 'CRYPT_MD5' ) || CRYPT_MD5 == 0 )
pla_error( _('Your system crypt library does not support md5crypt encryption.') ); error(_('Your system crypt library does not support md5crypt encryption.'),'error','index.php');
$new_value = '{CRYPT}' . crypt( $password_clear , '$1$' . random_salt(9) ); $new_value = '{CRYPT}' . crypt( $password_clear , '$1$' . random_salt(9) );
break; break;
case 'blowfish': case 'blowfish':
if( ! defined( 'CRYPT_BLOWFISH' ) || CRYPT_BLOWFISH == 0 ) if( ! defined( 'CRYPT_BLOWFISH' ) || CRYPT_BLOWFISH == 0 )
pla_error( _('Your system crypt library does not support blowfish encryption.') ); error(_('Your system crypt library does not support blowfish encryption.'),'error','index.php');
// hardcoded to second blowfish version and set number of rounds // hardcoded to second blowfish version and set number of rounds
$new_value = '{CRYPT}' . crypt( $password_clear , '$2a$12$' . random_salt(13) ); $new_value = '{CRYPT}' . crypt( $password_clear , '$2a$12$' . random_salt(13) );
@ -1965,7 +1968,7 @@ function password_hash( $password_clear, $enc_type ) {
$new_value = '{SHA}' . base64_encode( mhash( MHASH_SHA1, $password_clear) ); $new_value = '{SHA}' . base64_encode( mhash( MHASH_SHA1, $password_clear) );
} else { } else {
pla_error( _('Your PHP install does not have the mhash() function. Cannot do SHA hashes.') ); error(_('Your PHP install does not have the mhash() function. Cannot do SHA hashes.'),'error','index.php');
} }
break; break;
@ -1976,7 +1979,7 @@ function password_hash( $password_clear, $enc_type ) {
$new_value = "{SSHA}".base64_encode( mhash( MHASH_SHA1, $password_clear.$salt ).$salt ); $new_value = "{SSHA}".base64_encode( mhash( MHASH_SHA1, $password_clear.$salt ).$salt );
} else { } else {
pla_error( _('Your PHP install does not have the mhash() function. Cannot do SHA hashes.') ); error(_('Your PHP install does not have the mhash() function. Cannot do SHA hashes.'),'error','index.php');
} }
break; break;
@ -1987,7 +1990,7 @@ function password_hash( $password_clear, $enc_type ) {
$new_value = "{SMD5}".base64_encode( mhash( MHASH_MD5, $password_clear.$salt ).$salt ); $new_value = "{SMD5}".base64_encode( mhash( MHASH_MD5, $password_clear.$salt ).$salt );
} else { } else {
pla_error( _('Your PHP install does not have the mhash() function. Cannot do SHA hashes.') ); error(_('Your PHP install does not have the mhash() function. Cannot do SHA hashes.'),'error','index.php');
} }
break; break;
@ -2026,7 +2029,8 @@ function password_check( $cryptedpassword, $plainpassword ) {
// check php mhash support before using it // check php mhash support before using it
if( function_exists( 'mhash' ) ) { if( function_exists( 'mhash' ) ) {
$hash = base64_decode($cryptedpassword); $hash = base64_decode($cryptedpassword);
$salt = substr($hash, -4); # OpenLDAP uses a 4 byte salt, SunDS uses an 8 byte salt - both from char 20.
$salt = substr($hash,20);
$new_hash = base64_encode( mhash( MHASH_SHA1, $plainpassword.$salt).$salt ); $new_hash = base64_encode( mhash( MHASH_SHA1, $plainpassword.$salt).$salt );
if( strcmp( $cryptedpassword, $new_hash ) == 0 ) if( strcmp( $cryptedpassword, $new_hash ) == 0 )
@ -2035,7 +2039,7 @@ function password_check( $cryptedpassword, $plainpassword ) {
return false; return false;
} else { } else {
pla_error( _('Your PHP install does not have the mhash() function. Cannot do SHA hashes.') ); error(_('Your PHP install does not have the mhash() function. Cannot do SHA hashes.'),'error','index.php');
} }
break; break;
@ -2053,7 +2057,7 @@ function password_check( $cryptedpassword, $plainpassword ) {
return false; return false;
} else { } else {
pla_error( _('Your PHP install does not have the mhash() function. Cannot do SHA hashes.') ); error(_('Your PHP install does not have the mhash() function. Cannot do SHA hashes.'),'error','index.php');
} }
break; break;
@ -2080,7 +2084,7 @@ function password_check( $cryptedpassword, $plainpassword ) {
// make sure that web server supports blowfish crypt // make sure that web server supports blowfish crypt
if( ! defined( 'CRYPT_BLOWFISH' ) || CRYPT_BLOWFISH == 0 ) if( ! defined( 'CRYPT_BLOWFISH' ) || CRYPT_BLOWFISH == 0 )
pla_error( _('Your system crypt library does not support blowfish encryption.') ); error(_('Your system crypt library does not support blowfish encryption.'),'error','index.php');
list(,$version,$rounds,$salt_hash) = explode('$',$cryptedpassword); list(,$version,$rounds,$salt_hash) = explode('$',$cryptedpassword);
@ -2095,7 +2099,7 @@ function password_check( $cryptedpassword, $plainpassword ) {
// make sure that web server supports md5 crypt // make sure that web server supports md5 crypt
if( ! defined( 'CRYPT_MD5' ) || CRYPT_MD5 == 0 ) if( ! defined( 'CRYPT_MD5' ) || CRYPT_MD5 == 0 )
pla_error( _('Your system crypt library does not support md5crypt encryption.') ); error(_('Your system crypt library does not support md5crypt encryption.'),'error','index.php');
list(,$type,$salt,$hash) = explode('$',$cryptedpassword); list(,$type,$salt,$hash) = explode('$',$cryptedpassword);
@ -2110,7 +2114,7 @@ function password_check( $cryptedpassword, $plainpassword ) {
// make sure that web server supports ext_des // make sure that web server supports ext_des
if ( ! defined( 'CRYPT_EXT_DES' ) || CRYPT_EXT_DES == 0 ) if ( ! defined( 'CRYPT_EXT_DES' ) || CRYPT_EXT_DES == 0 )
pla_error( _('Your system crypt library does not support extended DES encryption.') ); error(_('Your system crypt library does not support extended DES encryption.'),'error','index.php');
if( crypt($plainpassword, $cryptedpassword ) == $cryptedpassword ) if( crypt($plainpassword, $cryptedpassword ) == $cryptedpassword )
return true; return true;
@ -2218,7 +2222,7 @@ function draw_chooser_link( $form_element, $include_choose_text=true, $rdn="none
$title = _('Click to popup a dialog to select an entry (DN) graphically'); $title = _('Click to popup a dialog to select an entry (DN) graphically');
printf('<a href="%s" title="%s"><img class="chooser" src="images/find.png" alt="Find" /></a>',$href,$title); printf('<a href="%s" title="%s"><img class="chooser" src="%s/find.png" alt="Find" /></a>',$href,$title,IMGDIR);
if ($include_choose_text) if ($include_choose_text)
printf('<span class="x-small"><a href="%s" title="%s">%s</a></span>',$href,$title,_('browse')); printf('<span class="x-small"><a href="%s" title="%s">%s</a></span>',$href,$title,_('browse'));
} }
@ -2330,7 +2334,7 @@ function dn_unescape($dn) {
*/ */
function get_href($type,$extra_info='') { function get_href($type,$extra_info='') {
$sf = 'https://sourceforge.net'; $sf = 'https://sourceforge.net';
$pla = 'http://phpldapadmin.wiki.sourceforge.net'; $pla = 'http://phpldapadmin.sourceforge.net';
$group_id = '61828'; $group_id = '61828';
$bug_atid = '498546'; $bug_atid = '498546';
$rfe_atid = '498549'; $rfe_atid = '498549';
@ -2921,13 +2925,13 @@ function server_info_list($visible=false) {
return $server_info_list; return $server_info_list;
} }
function enc_type_select_list($enc_type,$id,$attribute,$i) { function enc_type_select_list($enc_type,$id,$attributename,$i) {
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
debug_log('Entered with (%s,%s,%s,%s)',1,__FILE__,__LINE__,__METHOD__,$enc_type,$id,$attribute,$i); debug_log('Entered with (%s,%s,%s,%s)',1,__FILE__,__LINE__,__METHOD__,$enc_type,$id,$attributename,$i);
$html = sprintf('<select id="%s_%s_%s" name="%s[%s][%s]">', $html = sprintf('<select id="%s_%s_%s" name="%s[%s][%s]">',
$id, htmlspecialchars($attribute->getName()), $i, $id,htmlspecialchars($attributename),$i,
$id, htmlspecialchars($attribute->getName()), $i); $id,htmlspecialchars($attributename),$i);
$html .= '<option>clear</option>'; $html .= '<option>clear</option>';
foreach (array('crypt','ext_des','md5crypt','blowfish','md5','smd5','sha','ssha') as $option) foreach (array('crypt','ext_des','md5crypt','blowfish','md5','smd5','sha','ssha') as $option)
@ -3201,7 +3205,7 @@ function draw_date_selector_link( $attr ) {
$href = "javascript:dateSelector('$attr');"; $href = "javascript:dateSelector('$attr');";
$title = _('Click to popup a dialog to select a date graphically'); $title = _('Click to popup a dialog to select a date graphically');
printf('<a href="%s" title="%s"><img class="chooser" src="images/calendar.png" id="f_trigger_%s" style="cursor: pointer;" alt="Calendar" /></a>',$href,$title,$attr); printf('<a href="%s" title="%s"><img class="chooser" src="%s/calendar.png" id="f_trigger_%s" style="cursor: pointer;" alt="Calendar" /></a>',$href,$title,IMGDIR,$attr);
} }
/** /**
@ -3223,4 +3227,13 @@ function random_junk() {
function htmlid($sid,$dn) { function htmlid($sid,$dn) {
return sprintf('SID%s:%s',$sid,preg_replace('/[\ =,]/','_',$dn)); return sprintf('SID%s:%s',$sid,preg_replace('/[\ =,]/','_',$dn));
} }
/**
* Is compression enabled for output
*/
function isCompress() {
return (isset($_SESSION[APPCONFIG]) && $_SESSION[APPCONFIG]->GetValue('appearance','compress')
&& ! ini_get('zlib.output_compression')
&& eregi('gzip',$_SERVER['HTTP_ACCEPT_ENCODING']));
}
?> ?>

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/hooks.php,v 1.10.2.1 2007/12/26 09:26:33 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/hooks.php,v 1.10.2.3 2008/11/28 04:44:54 wurley Exp $
/** /**
* Functions related to hooks management. * Functions related to hooks management.
@ -52,7 +52,6 @@ function sort_array_by_priority($a,$b) {
function run_hook($hook_name,$args) { function run_hook($hook_name,$args) {
$hooks = isset($_SESSION[APPCONFIG]) ? $_SESSION[APPCONFIG]->hooks : array(); $hooks = isset($_SESSION[APPCONFIG]) ? $_SESSION[APPCONFIG]->hooks : array();
$debug = 0;
syslog_debug("Running hook $hook_name."); syslog_debug("Running hook $hook_name.");
if (! array_key_exists($hook_name,$hooks)) { if (! array_key_exists($hook_name,$hooks)) {
@ -109,17 +108,17 @@ function run_hook($hook_name,$args) {
* called upon failure. * called upon failure.
*/ */
function add_hook($hook_name,$priority,$hook_function,$rollback_function) { function add_hook($hook_name,$priority,$hook_function,$rollback_function) {
global $config; if (! array_key_exists($hook_name,$_SESSION[APPCONFIG]->hooks))
$_SESSION[APPCONFIG]->hooks[$hook_name] = array();
if (! array_key_exists($hook_name,$config->hooks)) {
$config->hooks[$hook_name] = array();
}
remove_hook($hook_name,-1,$hook_function,''); remove_hook($hook_name,-1,$hook_function,'');
array_push($config->hooks[$hook_name],array('priority' => $priority,'hook_function' => $hook_function,'rollback_function' => $rollback_function)); array_push($_SESSION[APPCONFIG]->hooks[$hook_name],array(
'priority' => $priority,
'hook_function' => $hook_function,
'rollback_function' => $rollback_function));
uasort($config->hooks[$hook_name],"sort_array_by_priority"); uasort($_SESSION[APPCONFIG]->hooks[$hook_name],'sort_array_by_priority');
} }
/** /**
@ -138,17 +137,15 @@ function add_hook($hook_name,$priority,$hook_function,$rollback_function) {
* as a rollback will be removed. * as a rollback will be removed.
*/ */
function remove_hook($hook_name,$priority,$hook_function,$rollback_function) { function remove_hook($hook_name,$priority,$hook_function,$rollback_function) {
global $config; if (array_key_exists($hook_name,$_SESSION[APPCONFIG]->hooks)) {
reset($_SESSION[APPCONFIG]->hooks[$hook_name]);
if (array_key_exists($hook_name,$config->hooks)) { while (list($key,$hook) = each($_SESSION[APPCONFIG]->hooks[$hook_name])) {
reset($config->hooks[$hook_name]);
while (list($key,$hook) = each($config->hooks[$hook_name])) {
if (($priority >= 0 && $priority == $hook['priority']) || if (($priority >= 0 && $priority == $hook['priority']) ||
($hook_function && $hook_function == $hook['hook_function']) || ($hook_function && $hook_function == $hook['hook_function']) ||
($rollback_function && $rollback_function == $hook['rollback_function'])) { ($rollback_function && $rollback_function == $hook['rollback_function'])) {
unset($config->hooks[$hook_name][$key]); unset($_SESSION[APPCONFIG]->hooks[$hook_name][$key]);
} }
} }
} }
@ -160,22 +157,18 @@ function remove_hook($hook_name,$priority,$hook_function,$rollback_function) {
* @param hook_name Name of hook to clear. * @param hook_name Name of hook to clear.
*/ */
function clear_hooks($hook_name) { function clear_hooks($hook_name) {
global $config; if (array_key_exists($hook_name,$_SESSION[APPCONFIG]->hooks))
if (!isset($config) && isset($_SESSION[APPCONFIG])) unset($_SESSION[APPCONFIG]->hooks[$hook_name]);
$config = $_SESSION[APPCONFIG];
if (array_key_exists($hook_name,$config->hooks))
unset($config->hooks[$hook_name]);
} }
# Evaluating user-made hooks # Evaluating user-made hooks
if (is_dir(HOOKSDIR.'functions')) { if (is_dir(HOOKSDIR.'functions')) {
$dir = dir(HOOKSDIR.'functions'); $dir = dir(HOOKSDIR.'functions');
while (false !== ($entry = $dir->read())) { while (false !== ($hookfile = $dir->read())) {
$filename = sprintf('%s/%s/%s',HOOKSDIR,'functions',$entry); $filename = sprintf('%s/%s/%s',HOOKSDIR,'functions',$hookfile);
if (is_file($filename) and eregi('php[0-9]?$',$entry)) if (is_file($filename) and eregi('php[0-9]?$',$hookfile))
require_once "$filename"; require_once "$filename";
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/page.php,v 1.3.2.14 2008/01/27 11:57:39 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/page.php,v 1.3.2.16 2008/12/12 09:20:06 wurley Exp $
/** /**
* Page Rendering Functions * Page Rendering Functions
@ -28,7 +28,7 @@ class page {
# Default Values for configurable items. # Default Values for configurable items.
$this->_default['stylecss'] = CSSDIR.'style.css'; $this->_default['stylecss'] = CSSDIR.'style.css';
$this->_default['logo'] = IMGDIR.'logo_small.jpg'; $this->_default['logo'] = IMGDIR.'logo-small.png';
$this->_default['sysmsg']['error'] = IMGDIR.'warning.png'; $this->_default['sysmsg']['error'] = IMGDIR.'warning.png';
$this->_default['sysmsg']['warn'] = IMGDIR.'notice.png'; $this->_default['sysmsg']['warn'] = IMGDIR.'notice.png';
$this->_default['sysmsg']['info'] = IMGDIR.'light-big.png'; $this->_default['sysmsg']['info'] = IMGDIR.'light-big.png';
@ -45,11 +45,7 @@ class page {
} }
header('Content-type: text/html; charset="UTF-8"'); header('Content-type: text/html; charset="UTF-8"');
if (isset($_SESSION[APPCONFIG]) if (isCompress()) {
&& $_SESSION[APPCONFIG]->GetValue('appearance','compress')
&& eregi('gzip',$_SERVER['HTTP_ACCEPT_ENCODING'])
&& ! ini_get('zlib.output_compression')) {
header('Content-Encoding: gzip'); header('Content-Encoding: gzip');
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
@ -304,11 +300,7 @@ class page {
echo $object->draw('body'); echo $object->draw('body');
} }
if ($compress && ob_get_level() && isset($_SESSION[APPCONFIG]) if ($compress && ob_get_level() && isCompress()) {
&& $_SESSION[APPCONFIG]->GetValue('appearance','compress')
&& ! ini_get('zlib.output_compression')
&& eregi('gzip',$_SERVER['HTTP_ACCEPT_ENCODING'])) {
$output = ob_get_contents(); $output = ob_get_contents();
ob_end_clean(); ob_end_clean();
@ -324,7 +316,9 @@ class page {
if (defined('DEBUG_ENABLED') && DEBUG_ENABLED) if (defined('DEBUG_ENABLED') && DEBUG_ENABLED)
debug_log('Entered with ()',129,__FILE__,__LINE__,__METHOD__); debug_log('Entered with ()',129,__FILE__,__LINE__,__METHOD__);
printf('<tr class="foot"><td colspan=3>%s</td></tr>',pla_version()); printf('<tr class="foot"><td><small>%s</small></td><td colspan=2>%s</td></tr>',
isCompress() ? '[C]' : '&nbsp;',
pla_version());
} }
public function display($filter=array()) { public function display($filter=array()) {
@ -384,11 +378,7 @@ class page {
echo '</html>'; echo '</html>';
# compress output # compress output
if (ob_get_level() && isset($_SESSION[APPCONFIG]) if (ob_get_level() && isCompress()) {
&& $_SESSION[APPCONFIG]->GetValue('appearance','compress')
&& ! ini_get('zlib.output_compression')
&& eregi('gzip',$_SERVER['HTTP_ACCEPT_ENCODING'])) {
$output = ob_get_contents(); $output = ob_get_contents();
ob_end_clean(); ob_end_clean();

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/schema_functions.php,v 1.92 2007/12/15 07:50:32 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/schema_functions.php,v 1.92.2.1 2008/11/29 09:23:11 wurley Exp $
/** /**
* Classes and functions for fetching and parsing schema from an LDAP server. * Classes and functions for fetching and parsing schema from an LDAP server.
@ -61,6 +61,8 @@ class ObjectClass extends SchemaItem {
var $must_attrs; var $must_attrs;
# Arrays of attribute names that this objectClass allows, but does not require # Arrays of attribute names that this objectClass allows, but does not require
var $may_attrs; var $may_attrs;
# Arrays of attribute names that this objectClass has been forced to MAY attrs, due to configuration
var $force_may;
# Boolean value indicating whether this objectClass is obsolete # Boolean value indicating whether this objectClass is obsolete
var $is_obsolete; var $is_obsolete;
# Array of objectClasses which inherit from this one (must be set at runtime explicitly by the caller) # Array of objectClasses which inherit from this one (must be set at runtime explicitly by the caller)
@ -76,6 +78,7 @@ class ObjectClass extends SchemaItem {
$this->sup_classes = array(); $this->sup_classes = array();
$this->type = $ldapserver->schema_oclass_default; $this->type = $ldapserver->schema_oclass_default;
$this->must_attrs = array(); $this->must_attrs = array();
$this->force_may = array();
$this->may_attrs = array(); $this->may_attrs = array();
$this->is_obsolete = false; $this->is_obsolete = false;
$this->children_objectclasses = array(); $this->children_objectclasses = array();
@ -265,11 +268,17 @@ class ObjectClass extends SchemaItem {
foreach ($attrs as $string) { foreach ($attrs as $string) {
$attr = new ObjectClass_ObjectClassAttribute($string,$this->name); $attr = new ObjectClass_ObjectClassAttribute($string,$this->name);
if ($ldapserver->isForceMay($attr->name)) {
array_push($this->force_may,$attr);
array_push($this->may_attrs,$attr);
} else
array_push($this->must_attrs,$attr); array_push($this->must_attrs,$attr);
} }
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
debug_log('Case MUST returned (%s)',8,__FILE__,__LINE__,__METHOD__,$this->must_attrs); debug_log('Case MUST returned (%s) (%s)',8,__FILE__,__LINE__,__METHOD__,$this->must_attrs,$this->force_may);
break; break;
case 'MAY': case 'MAY':
@ -304,8 +313,8 @@ class ObjectClass extends SchemaItem {
$this->description = preg_replace("/\'$/",'',$this->description); $this->description = preg_replace("/\'$/",'',$this->description);
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
debug_log('Returning () - NAME (%s), DESCRIPTION (%s), MUST (%s), MAY (%s)',9,__FILE__,__LINE__,__METHOD__, debug_log('Returning () - NAME (%s), DESCRIPTION (%s), MUST (%s), MAY (%s), FORCE MAY (%s)',9,__FILE__,__LINE__,__METHOD__,
$this->name,$this->description,$this->must_attrs,$this->may_attrs); $this->name,$this->description,$this->must_attrs,$this->may_attrs,$this->force_may);
} }
/** /**
@ -547,6 +556,17 @@ class ObjectClass extends SchemaItem {
$this->may_attrs = array_values(array_unique(array_merge($this->may_attrs,$new_may_attrs))); $this->may_attrs = array_values(array_unique(array_merge($this->may_attrs,$new_may_attrs)));
} }
/**
* Determine if an array is listed in the force_may attrs
*/
function isForceMay($attr) {
foreach ($this->force_may as $forcemay)
if ($forcemay->getName() == $attr)
return true;
return false;
}
} }
/** /**
@ -628,6 +648,8 @@ class AttributeType extends SchemaItem {
var $used_in_object_classes; var $used_in_object_classes;
# A list of object class names that require this attribute type. # A list of object class names that require this attribute type.
var $required_by_object_classes; var $required_by_object_classes;
# This attribute has been forced a MAY attribute by the configuration.
var $forced_as_may;
/** /**
* Initialize the class' member variables * Initialize the class' member variables
@ -654,10 +676,11 @@ class AttributeType extends SchemaItem {
$this->type = null; $this->type = null;
$this->used_in_object_classes = array(); $this->used_in_object_classes = array();
$this->required_by_object_classes = array(); $this->required_by_object_classes = array();
$this->forced_as_may = false;
} }
/** /**
* Creates a new AttributeType objcet from a raw LDAP AttributeType string. * Creates a new AttributeType object from a raw LDAP AttributeType string.
*/ */
function AttributeType($raw_ldap_attr_string) { function AttributeType($raw_ldap_attr_string) {
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
@ -1108,6 +1131,13 @@ class AttributeType extends SchemaItem {
function getRequiredByObjectClasses() { function getRequiredByObjectClasses() {
return $this->required_by_object_classes; return $this->required_by_object_classes;
} }
/**
* This function will mark this attribute as a forced MAY attribute
*/
function setForceMay() {
$this->forced_as_may = true;
}
} }
/** /**

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/search_results_list.php,v 1.7.2.3 2008/01/13 05:37:02 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/search_results_list.php,v 1.7.2.5 2008/11/30 13:19:49 wurley Exp $
/** /**
* @package phpLDAPadmin * @package phpLDAPadmin
@ -20,7 +20,7 @@ foreach ($results as $dn => $dndetails) {
echo '<table class="result" border=0>'; echo '<table class="result" border=0>';
echo '<tr class="list_title">'; echo '<tr class="list_title">';
printf('<td class="icon"><img src="images/%s" alt="icon" /></td>',get_icon($ldapserver,$dn)); printf('<td class="icon"><img src="%s/%s" alt="icon" /></td>',IMGDIR,get_icon($ldapserver,$dn));
$formatted_dn = get_rdn($dn); $formatted_dn = get_rdn($dn);
if (!$_SESSION[APPCONFIG]->isCommandAvailable('schema')) { if (!$_SESSION[APPCONFIG]->isCommandAvailable('schema')) {

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/search_results_table.php,v 1.9.2.3 2008/01/13 05:37:02 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/search_results_table.php,v 1.9.2.4 2008/11/29 11:33:53 wurley Exp $
/** /**
* Incoming variables (among others) * Incoming variables (among others)
@ -31,7 +31,7 @@ foreach ($results as $dn => $dndetails) {
$edit_url = sprintf('cmd.php?cmd=template_engine&amp;server_id=%s&amp;dn=%s',$ldapserver->server_id,rawurlencode($dn)); $edit_url = sprintf('cmd.php?cmd=template_engine&amp;server_id=%s&amp;dn=%s',$ldapserver->server_id,rawurlencode($dn));
$attrs_display = array(); $attrs_display = array();
$attrs_display[''] = sprintf('<center><a href="%s"><img src="images/%s" alt="icon" /></a></center>',$edit_url,get_icon($ldapserver,$dn)); $attrs_display[''] = sprintf('<center><a href="%s"><img src="%s/%s" alt="icon" /></a></center>',$edit_url,IMGDIR,get_icon($ldapserver,$dn));
if ($_SESSION[APPCONFIG]->isCommandAvailable('schema')) { if ($_SESSION[APPCONFIG]->isCommandAvailable('schema')) {
$dn_display = strlen($dn) > 40 $dn_display = strlen($dn) > 40

View File

@ -1,5 +1,5 @@
<?php <?php
/* $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/server_functions.php,v 1.51.2.7 2008/01/31 12:34:26 wurley Exp $ */ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/server_functions.php,v 1.51.2.15 2008/12/13 08:57:41 wurley Exp $
/** /**
* Classes and functions for LDAP server configuration and capability * Classes and functions for LDAP server configuration and capability
@ -77,7 +77,7 @@ class LDAPserver {
$return = false; $return = false;
# For session or cookie auth_types, we check the session or cookie to see if a user has logged in. # For session or cookie auth_types, we check the session or cookie to see if a user has logged in.
if (in_array($this->auth_type,array('session','cookie','http'))) { if (in_array($this->auth_type,array('session','cookie'))) {
/* we don't look at getLoggedInPass() cause it may be null for anonymous binds /* we don't look at getLoggedInPass() cause it may be null for anonymous binds
* getLoggedInDN() will never return null if someone is really logged in. */ * getLoggedInDN() will never return null if someone is really logged in. */
@ -88,11 +88,30 @@ class LDAPserver {
/* whether or not the login_dn or pass is specified, we return /* whether or not the login_dn or pass is specified, we return
* true here. (if they are blank, we do an anonymous bind anyway) */ * true here. (if they are blank, we do an anonymous bind anyway) */
} elseif ($this->auth_type == 'http') {
# This is temp, to avoid multiple displays of this message
static $shown = false;
if (! $this->getLoggedInDN() && ! $shown) {
system_message(array(
'title'=>_('No HTTP AUTH information'),
'body'=>_('Your configuration file has authentication set to http_auth, however, there was none presented to phpLDAPadmin'),
'type'=>'error'));
$shown = true;
}
if ($this->getLoggedInDN())
$return = true;
else
$return = false;
} elseif ($this->auth_type == 'config') { } elseif ($this->auth_type == 'config') {
$return = true; $return = true;
} else { } else {
error(sprintf(_('Error: You have an error in your config file. The only three allowed values for auth_type in the $servers section are \'session\', \'cookie\', and \'config\'. You entered \'%s\', which is not allowed.'),htmlspecialchars($this->auth_type)),'error',true); error(sprintf(_('Error: You have an error in your config file. The only three allowed values for auth_type in the $servers section are \'session\', \'cookie\', and \'config\'. You entered \'%s\', which is not allowed.'),htmlspecialchars($this->auth_type)),'error',null,true);
} }
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
@ -160,6 +179,15 @@ class LDAPserver {
$this->connection[$connect_id]['login_pass'] ? md5($this->connection[$connect_id]['login_pass']) : ''); $this->connection[$connect_id]['login_pass'] ? md5($this->connection[$connect_id]['login_pass']) : '');
} }
} elseif ($this->auth_type == 'http') {
if (! $dn && ! $pass)
$connect_id = 'anonymous';
else {
$this->connection[$connect_id]['login_dn'] = $dn;
$this->connection[$connect_id]['login_pass'] = $pass;
}
} else { } else {
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
debug_log('This IS some other login',80,__FILE__,__LINE__,__METHOD__); debug_log('This IS some other login',80,__FILE__,__LINE__,__METHOD__);
@ -262,7 +290,7 @@ class LDAPserver {
# Try to fire up TLS is specified in the config # Try to fire up TLS is specified in the config
if ($this->isTLSEnabled()) { if ($this->isTLSEnabled()) {
function_exists('ldap_start_tls') or error(_('Your PHP install does not support TLS.'),'error'); function_exists('ldap_start_tls') or error(_('Your PHP install does not support TLS.'),'error');
@ldap_start_tls($resource) or error(_('Could not start TLS. Please check your LDAP server configuration.'),'error',true); @ldap_start_tls($resource) or error(_('Could not start TLS. Please check your LDAP server configuration.'),'error',null,true);
} }
$bind_result = false; $bind_result = false;
@ -309,9 +337,9 @@ class LDAPserver {
# invalid regex? # invalid regex?
if (is_null($authz_id)) { if (is_null($authz_id)) {
pla_error(sprintf(_('It seems that sasl_authz_id_regex "%s"." contains invalid PCRE regular expression.'), error(sprintf(_('It seems that sasl_authz_id_regex "%s"." contains invalid PCRE regular expression.'),
$this->connection[$connect_id]['sasl_authz_id_regex']). $this->connection[$connect_id]['sasl_authz_id_regex']).((isset($php_errormsg)) ? ' Error message: '.$php_errormsg : '')
((isset($php_errormsg)) ? ' Error message: '.$php_errormsg : '')); ,'error','index.php');
} }
} }
@ -696,8 +724,8 @@ class LDAPserver {
# This error message is not localized as only developers should ever see it # This error message is not localized as only developers should ever see it
if (! in_array($schema_to_fetch,$valid_schema_to_fetch)) if (! in_array($schema_to_fetch,$valid_schema_to_fetch))
pla_error(sprintf('Bad parameter provided to function to %s::getRawSchema(). "%s" is not valid for the schema_to_fetch parameter.', error(sprintf('Bad parameter provided to function to %s::getRawSchema(). "%s" is not valid for the schema_to_fetch parameter.',
get_class($this),htmlspecialchars($schema_to_fetch))); get_class($this),htmlspecialchars($schema_to_fetch)),'error','index.php');
# Try to get the schema DN from the specified entry. # Try to get the schema DN from the specified entry.
$schema_dn = $this->getSchemaDN($dn); $schema_dn = $this->getSchemaDN($dn);
@ -841,7 +869,7 @@ class LDAPserver {
# We need to have objectclasses and attribues, so display an error, asking the user to get us this information. # We need to have objectclasses and attribues, so display an error, asking the user to get us this information.
if (in_array($schema_to_fetch,$schema_error_message_array)) { if (in_array($schema_to_fetch,$schema_error_message_array)) {
pla_error(sprintf('Our attempts to find your SCHEMA for "%s" have FAILED.<br /><br />%s',$schema_to_fetch,$schema_error_message)); error(sprintf('Our attempts to find your SCHEMA for "%s" have FAILED.<br /><br />%s',$schema_to_fetch,$schema_error_message),'error','index.php');
} else { } else {
$return = false; $return = false;
@ -856,8 +884,8 @@ class LDAPserver {
# Did we get something unrecognizable? # Did we get something unrecognizable?
if (gettype($schema_search) != 'resource') { if (gettype($schema_search) != 'resource') {
if (in_array($schema_to_fetch,$schema_error_message_array)) { if (in_array($schema_to_fetch,$schema_error_message_array)) {
pla_error(sprintf('Our attempts to find your SCHEMA for "%s" has return UNEXPECTED results.<br /><br /><small>(We expected a "resource" for $schema_search, instead, we got (%s))</small><br /><br />%s<br /><br />Dump of $schema_search:<hr /><pre><small>%s</small></pre>', error(sprintf('Our attempts to find your SCHEMA for "%s" has return UNEXPECTED results.<br /><br /><small>(We expected a "resource" for $schema_search, instead, we got (%s))</small><br /><br />%s<br /><br />Dump of $schema_search:<hr /><pre><small>%s</small></pre>',
$schema_to_fetch,gettype($schema_search),$schema_error_message,serialize($schema_search))); $schema_to_fetch,gettype($schema_search),$schema_error_message,serialize($schema_search)),'error','index.php');
} else { } else {
$return = false; $return = false;
@ -879,8 +907,8 @@ class LDAPserver {
if(! isset($schema_entries[0][$schema_to_fetch])) { if(! isset($schema_entries[0][$schema_to_fetch])) {
if (in_array($schema_to_fetch,$schema_error_message_array)) { if (in_array($schema_to_fetch,$schema_error_message_array)) {
pla_error(sprintf('Our attempts to find your SCHEMA for "%s" has return UNEXPECTED results.<br /><br /><small>(We expected a "%s" in the $schema array but it wasnt there.)</small><br /><br />%s<br /><br />Dump of $schema_search:<hr /><pre><small>%s</small></pre>', error(sprintf('Our attempts to find your SCHEMA for "%s" has return UNEXPECTED results.<br /><br /><small>(We expected a "%s" in the $schema array but it wasnt there.)</small><br /><br />%s<br /><br />Dump of $schema_search:<hr /><pre><small>%s</small></pre>',
$schema_to_fetch,gettype($schema_search),$schema_error_message,serialize($schema_entries))); $schema_to_fetch,gettype($schema_search),$schema_error_message,serialize($schema_entries)),'error','index.php');
} else { } else {
$return = false; $return = false;
@ -1243,8 +1271,8 @@ class LDAPserver {
} }
if (! isset($attrs[strtolower($sup_attr_name)])){ if (! isset($attrs[strtolower($sup_attr_name)])){
pla_error(sprintf('Schema error: attributeType "%s" inherits from "%s", but attributeType "%s" does not exist.', error(sprintf('Schema error: attributeType "%s" inherits from "%s", but attributeType "%s" does not exist.',
$attr->getName(),$sup_attr_name,$sup_attr_name)); $attr->getName(),$sup_attr_name,$sup_attr_name),'error','index.php');
return; return;
} }
@ -1325,6 +1353,15 @@ class LDAPserver {
} }
} }
# Force May
foreach ($object_class->force_may as $attr_name) {
if (isset($attrs[strtolower($attr_name->name)]))
$attrs[strtolower($attr_name->name)]->setForceMay();
else {
#echo "Warning, attr not set: $attr_name<br />";
}
}
} }
$return = $attrs; $return = $attrs;
@ -1521,7 +1558,10 @@ class LDAPserver {
function rename($dn,$new_rdn,$container,$deleteoldrdn) { function rename($dn,$new_rdn,$container,$deleteoldrdn) {
$this->lastop = 'write'; $this->lastop = 'write';
if (! @ldap_rename($this->connect(true,$this->lastop,false,false),$dn,$new_rdn,$container,$deleteoldrdn)) { if (! @ldap_rename($this->connect(true,$this->lastop,false,false),$dn,$new_rdn,$container,$deleteoldrdn)) {
pla_error(_('Could not rename the entry'),$this->error(),$this->errno(),false); system_message(array(
'title'=>_('Could not rename the entry.'),
'body'=>ldap_error_msg($this->error(),$this->errno()),
'type'=>'error'));
} else { } else {
# Update the tree # Update the tree
@ -1778,7 +1818,7 @@ class LDAPserver {
if ($attr = ldap_first_attribute($resource,$entry_id,$attrs)) { if ($attr = ldap_first_attribute($resource,$entry_id,$attrs)) {
if (DEBUG_ENABLED) if (DEBUG_ENABLED)
debug_log('Processing ATTR [%s].',64,__FILE__,__LINE__,__METHOD__,$attr); debug_log('Processing First ATTR [%s].',64,__FILE__,__LINE__,__METHOD__,$attr);
# Iterate over the attributes # Iterate over the attributes
while ($attr) { while ($attr) {
@ -1797,6 +1837,10 @@ class LDAPserver {
$return[$dn][$attr] = $values; $return[$dn][$attr] = $values;
$attr = ldap_next_attribute($resource,$entry_id,$attrs); $attr = ldap_next_attribute($resource,$entry_id,$attrs);
if (DEBUG_ENABLED)
debug_log('Processing Next ATTR [%s].',64,__FILE__,__LINE__,__METHOD__,$attr);
} # end while attr } # end while attr
} }
@ -1972,7 +2016,7 @@ class LDAPserver {
break; break;
default: default:
pla_error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($this->auth_type))); error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($this->auth_type)),'error','index.php');
break; break;
} }
} }
@ -2044,7 +2088,7 @@ class LDAPserver {
break; break;
default: default:
pla_error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($auth_type))); error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($auth_type)),'error','index.php');
break; break;
} }
} }
@ -2153,7 +2197,7 @@ class LDAPserver {
# See what the server schema says about this attribute # See what the server schema says about this attribute
$schema_attr = $this->getSchemaAttribute($attr_name); $schema_attr = $this->getSchemaAttribute($attr_name);
if (! $schema_attr) { if (! is_object($schema_attr)) {
/* Strangely, some attributeTypes may not show up in the server /* Strangely, some attributeTypes may not show up in the server
* schema. This behavior has been observed in MS Active Directory.*/ * schema. This behavior has been observed in MS Active Directory.*/
@ -2172,6 +2216,7 @@ class LDAPserver {
strcasecmp($attr_name,'networkaddress') == 0 || strcasecmp($attr_name,'networkaddress') == 0 ||
strcasecmp($attr_name,'objectGUID') == 0 || strcasecmp($attr_name,'objectGUID') == 0 ||
strcasecmp($attr_name,'objectSID') == 0 || strcasecmp($attr_name,'objectSID') == 0 ||
strcasecmp($attr_name,'jpegPhoto') == 0 ||
$syntax == '1.3.6.1.4.1.1466.115.121.1.10' || $syntax == '1.3.6.1.4.1.1466.115.121.1.10' ||
$syntax == '1.3.6.1.4.1.1466.115.121.1.28' || $syntax == '1.3.6.1.4.1.1466.115.121.1.28' ||
$syntax == '1.3.6.1.4.1.1466.115.121.1.5' || $syntax == '1.3.6.1.4.1.1466.115.121.1.5' ||
@ -2338,7 +2383,7 @@ class LDAPserver {
break; break;
default: default:
pla_error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($this->auth_type))); error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($this->auth_type)),'error','index.php');
} }
} }
@ -2385,11 +2430,11 @@ class LDAPserver {
break; break;
case 'http': case 'http':
if (isset($_SERVER['PHP_AUTH_USER'])) if (isset($_SERVER['PHP_AUTH_USER'])) {
{
if ($this->isLoginAttrEnabled()) { if ($this->isLoginAttrEnabled()) {
if ($this->isLoginStringEnabled()) { if ($this->isLoginStringEnabled()) {
$return = str_replace('<username>',$_SERVER['PHP_AUTH_USER'],$this->getLoginString()); $return = str_replace('<username>',$_SERVER['PHP_AUTH_USER'],$this->getLoginString());
} else { } else {
if ($this->login_dn) if ($this->login_dn)
$this->connect(true,'user',false,true,$this->login_dn,$this->login_pass); $this->connect(true,'user',false,true,$this->login_dn,$this->login_pass);
@ -2406,38 +2451,40 @@ class LDAPserver {
$result = $this->search(null,$base_dn,$filter,array('dn')); $result = $this->search(null,$base_dn,$filter,array('dn'));
$result = array_pop($result); $result = array_pop($result);
$return = $result['dn']; $return = $result['dn'];
if ($return) break; if ($return)
break;
} }
} }
} else { } else {
$return = $_SERVER['PHP_AUTH_USER']; $return = $_SERVER['PHP_AUTH_USER'];
} }
}
else } else
$return = false; $return = false;
if ($return) { if ($return) {
$dn = $return; $dn = $return;
$pass = ''; $pass = '';
if (isset($_SERVER['PHP_AUTH_PW'])) $pass = $_SERVER['PHP_AUTH_PW'];
if (isset($_SERVER['PHP_AUTH_PW']))
$pass = $_SERVER['PHP_AUTH_PW'];
if ($this->userIsAllowedLogin($dn)) { if ($this->userIsAllowedLogin($dn)) {
$ds = $this->connect(false,'user',true,true,$dn,$pass); $ds = $this->connect(false,'user',true,true,$dn,$pass);
if (! is_resource($ds)) { if (! is_resource($ds)) {
system_message(array( system_message(array(
'title'=>_('Authenticate to server'), 'title'=>_('Authenticate to server'),
'body'=>_('Bad username or password. Please try again.'), 'body'=>_('Bad username or password. Please try again.'),
'type'=>'error'), 'type'=>'error'),
sprintf('cmd.php?cmd=login_form&server_id=%s',$this->server_id)); sprintf('cmd.php?cmd=login_form&server_id=%s',$this->server_id));
syslog_notice("Authentification FAILED for $dn");
} }
$this->auth_type = 'config';
$this->login_dn = $dn; $this->login_dn = $dn;
$this->login_pass = $pass; $this->login_pass = $pass;
} else { } else {
$this->auth_type = 'session';
$return = false; $return = false;
} }
} }
@ -2449,7 +2496,7 @@ class LDAPserver {
break; break;
default: default:
pla_error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($auth_type))); error(sprintf(_('Unknown auth_type: %s'),htmlspecialchars($auth_type)),'error','index.php');
} }
} }
@ -2509,6 +2556,108 @@ class LDAPserver {
return $return_attrs; return $return_attrs;
} }
/**
* Gets the user defined operational attributes for an entry. Given a DN, this function fetches that entry's
* operational (ie, system or internal) attributes.
*
* These attributes should be treated as internal attributes.
*
* The returned associative array is of this form:
* <code>
* Array (
* [nsroleDN] => Array (
* [0] => "cn=nsManagedDisabledRole,dc=example,dc=com",
* [1] => "cn=nsDisabledRole,dc=example,dc=com",
* [2] => "cn=nsAdminRole,dc=example,dc=com"
* )
* [passwordExpirationTime]=> Array (
* [0] => "20080314183611Z"
* )
* [passwordAllowChangeTime] => Array (
* [0] => "20080116175354Z"
* )
* )
* </code>
*
* @param string $dn The DN of the entry whose interal attributes are desired.
* @param int $deref For aliases and referrals, this parameter specifies whether to
* follow references to the referenced DN or to fetch the attributes for
* the referencing DN. See http://php.net/ldap_search for the 4 valid
* options.
* @return array An associative array whose keys are attribute names and whose values
* are arrays of values for the aforementioned attribute.
*/
function getCustomDNSysAttrs($dn,$deref=LDAP_DEREF_NEVER) {
if (DEBUG_ENABLED)
debug_log('Entered with (%s,%s)',17,__FILE__,__LINE__,__METHOD__,$dn,$deref);
$attrs = $this->custom_sys_attrs;
$search = $this->search(null,$dn,'(objectClass=*)',$attrs,'base',false,$deref);
$return_attrs = array();
foreach ($search as $dn => $attrs)
foreach ($attrs as $attr => $value) {
if (is_array($value)) {
foreach ($value as $val) $return_attrs[$attr][] = $val;
} else {
$return_attrs[$attr][] = $value;
}
}
return $return_attrs;
}
/**
* Gets the user defined operational attributes for an entry. Given a DN, this function fetches that entry's
* operational (ie, system or internal) attributes.
*
* These attributes should be treated as regular attributes, not as internal attributes.
*
* The returned associative array is of this form:
* <code>
* Array (
* [nsroleDN] => Array (
* [0] => "cn=nsManagedDisabledRole,dc=example,dc=com",
* [1] => "cn=nsDisabledRole,dc=example,dc=com",
* [2] => "cn=nsAdminRole,dc=example,dc=com"
* )
* [passwordExpirationTime]=> Array (
* [0] => "20080314183611Z"
* )
* [passwordAllowChangeTime] => Array (
* [0] => "20080116175354Z"
* )
* )
* </code>
*
* @param string $dn The DN of the entry whose interal attributes are desired.
* @param int $deref For aliases and referrals, this parameter specifies whether to
* follow references to the referenced DN or to fetch the attributes for
* the referencing DN. See http://php.net/ldap_search for the 4 valid
* options.
* @return array An associative array whose keys are attribute names and whose values
* are arrays of values for the aforementioned attribute.
*/
function getCustomDNAttrs($dn,$deref=LDAP_DEREF_NEVER) {
if (DEBUG_ENABLED)
debug_log('Entered with (%s,%s)',17,__FILE__,__LINE__,__METHOD__,$dn,$deref);
$attrs = $this->custom_attrs;
$search = $this->search(null,$dn,'(objectClass=*)',$attrs,'base',false,$deref);
$return_attrs = array();
foreach ($search as $dn => $attrs)
foreach ($attrs as $attr => $value) {
if (is_array($value)) {
foreach ($value as $val) $return_attrs[$attr][] = $val;
} else {
$return_attrs[$attr][] = $value;
}
}
return $return_attrs;
}
/** /**
* Gets the attributes/values of an entry. Returns an associative array whose * Gets the attributes/values of an entry. Returns an associative array whose
* keys are attribute value names and whose values are arrays of values for * keys are attribute value names and whose values are arrays of values for
@ -2733,7 +2882,8 @@ class LDAPserver {
$_SESSION[APPCONFIG]->ldapservers->GetValue($this->server_id,'unique_attrs','pass')); $_SESSION[APPCONFIG]->ldapservers->GetValue($this->server_id,'unique_attrs','pass'));
if (! $con) if (! $con)
pla_error(sprintf(_('Unable to bind to <b>%s</b> with your with unique_attrs credentials. Please check your configuration file.'),$this->name)); error(sprintf(_('Unable to bind to <b>%s</b> with your with unique_attrs credentials. Please check your configuration file.'),$this->name),
'error','index.php');
# Build our search filter to double check each attribute. # Build our search filter to double check each attribute.
$searchfilter = '(|'; $searchfilter = '(|';
@ -2895,6 +3045,20 @@ class LDAPserver {
return null; return null;
} }
/**
* This function determines if the specified attribute is contained in the force_may list
* as configured in config.php.
*
* @return bool True if the specified attribute is in the $force_may list and false
* otherwise.
*/
function isForceMay($attr_name) {
if (DEBUG_ENABLED)
debug_log('Entered with (%s)',17,__FILE__,__LINE__,__METHOD__,$attr_name);
return in_array($attr_name,$this->force_may);
}
} }
class LDAPservers { class LDAPservers {
@ -3052,6 +3216,15 @@ class LDAPservers {
'desc'=>'Password for DN to use when evaluating numbers', 'desc'=>'Password for DN to use when evaluating numbers',
'default'=>null); 'default'=>null);
$this->default->auto_number['uidpool_dn'] = array(
'desc'=>'DN to use for the uidPool',
'default'=>'cn=uidPool,dc=example,dc=com');
$this->default->force_may['attrs'] = array(
'desc'=>'Attributes to force as MAY attributes, even though the schema may indicate that they are MUST attributes',
'var' => 'force_may',
'default'=>array());
$this->default->unique_attrs['dn'] = array( $this->default->unique_attrs['dn'] = array(
'desc'=>'DN to use when evaluating uniqueness', 'desc'=>'DN to use when evaluating uniqueness',
'default'=>null); 'default'=>null);
@ -3098,6 +3271,16 @@ class LDAPservers {
'desc' => 'SASL properties', 'desc' => 'SASL properties',
'var' => 'sasl_props', 'var' => 'sasl_props',
'default' => null); 'default' => null);
$this->default->server['custom_attrs'] = array(
'desc' => 'Custom operational attributes to be treated as regular attributes',
'var' => 'custom_attrs',
'default' => array(''));
$this->default->server['custom_sys_attrs'] = array(
'desc' => 'Custom operational attributes to be treated as internal attributes',
'var' => 'custom_sys_attrs',
'default' => array(''));
} }
function SetValue($server_id,$key,$index,$value) { function SetValue($server_id,$key,$index,$value) {
@ -3106,21 +3289,21 @@ class LDAPservers {
$server_id,$key,$index,$value); $server_id,$key,$index,$value);
if (! isset($this->default->$key)) if (! isset($this->default->$key))
pla_error("ERROR: Setting a key [$key] that isnt predefined."); error("ERROR: Setting a key [$key] that isnt predefined.",'error','index.php');
else else
$default = $this->default->$key; $default = $this->default->$key;
if (! isset($default[$index])) if (! isset($default[$index]))
pla_error("ERROR: Setting a index [$index] that isnt predefined."); error("ERROR: Setting a index [$index] that isnt predefined.",'error','index.php');
else else
$default = $default[$index]; $default = $default[$index];
# Test if its should be an array or not. # Test if its should be an array or not.
if (is_array($default['default']) && ! is_array($value)) if (is_array($default['default']) && ! is_array($value))
pla_error("Error in configuration file, {$key}['$index'] SHOULD be an array of values."); error("Error in configuration file, {$key}['$index'] SHOULD be an array of values.",'error','index.php');
if (! is_array($default['default']) && is_array($value)) if (! is_array($default['default']) && is_array($value))
pla_error("Error in configuration file, {$key}['$index'] should NOT be an array of values."); error("Error in configuration file, {$key}['$index'] should NOT be an array of values.",'error','index.php');
# Some special processing. # Some special processing.
# @todo: Add ldaps port details here. # @todo: Add ldaps port details here.

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/session_functions.php,v 1.18.2.4 2008/01/13 06:35:51 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/session_functions.php,v 1.18.2.5 2008/12/12 12:20:23 wurley Exp $
/** /**
* A collection of functions to handle sessions throughout phpLDAPadmin. * A collection of functions to handle sessions throughout phpLDAPadmin.
@ -117,7 +117,7 @@ function pla_session_start() {
@header('Cache-control: private'); // IE 6 Fix @header('Cache-control: private'); // IE 6 Fix
if (pla_session_id_paranoid && ! pla_session_verify_id()) if (pla_session_id_paranoid && ! pla_session_verify_id())
pla_error('Session inconsistent or session timeout'); error('Session inconsistent or session timeout','error','index.php');
# Check we have the correct version of the SESSION cache # Check we have the correct version of the SESSION cache
if (isset($_SESSION['cache']) || isset($_SESSION[pla_session_id_init])) { if (isset($_SESSION['cache']) || isset($_SESSION[pla_session_id_init])) {

View File

@ -1,5 +1,5 @@
<?php <?php
/* $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/template_functions.php,v 1.43.2.3 2008/01/04 14:29:44 wurley Exp $ */ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/template_functions.php,v 1.43.2.8 2008/12/12 12:20:23 wurley Exp $
/** /**
* Classes and functions for the template engine.ation and capability * Classes and functions for the template engine.ation and capability
@ -42,9 +42,10 @@ class xml2array {
$this->strXmlData = xml_parse($this->resParser,$strInputXML); $this->strXmlData = xml_parse($this->resParser,$strInputXML);
if (! $this->strXmlData) if (! $this->strXmlData)
die(sprintf('XML error: %s at line %d', die(sprintf('XML error: %s at line %d in file %s',
xml_error_string(xml_get_error_code($this->resParser)), xml_error_string(xml_get_error_code($this->resParser)),
xml_get_current_line_number($this->resParser))); xml_get_current_line_number($this->resParser),
$file));
xml_parser_free($this->resParser); xml_parser_free($this->resParser);
@ -113,7 +114,7 @@ class Templates {
while( ( $file = readdir( $dir ) ) !== false ) { while( ( $file = readdir( $dir ) ) !== false ) {
if (! preg_match('/.xml$/',$file)) continue; if (! preg_match('/.xml$/',$file)) continue;
if ($_SESSION['plaConfig']->GetValue('appearance','custom_templates_only') if ($_SESSION[APPCONFIG]->GetValue('appearance','custom_templates_only')
&& ! preg_match('/^custom_/',$file)) && ! preg_match('/^custom_/',$file))
continue; continue;
@ -141,7 +142,7 @@ class Templates {
if (! preg_match('/.xml$/',$file)) if (! preg_match('/.xml$/',$file))
continue; continue;
if ($_SESSION['plaConfig']->GetValue('appearance','custom_templates_only') if ($_SESSION[APPCONFIG]->GetValue('appearance','custom_templates_only')
&& ! preg_match('/^custom_/',$file)) && ! preg_match('/^custom_/',$file))
continue; continue;
@ -682,7 +683,7 @@ class Templates {
$args[0] = $_SESSION[APPCONFIG]->ldapservers->GetValue($ldapserver->server_id,'auto_number','search_base'); $args[0] = $_SESSION[APPCONFIG]->ldapservers->GetValue($ldapserver->server_id,'auto_number','search_base');
$container = $ldapserver->getContainerParent($container,$args[0]); $container = $ldapserver->getContainerParent($container,$args[0]);
$vals = get_next_number($ldapserver,$container,$args[1],(!empty($args[2]) && ($args[2] == 'true')) ? true : false,(!empty($args[3])) ? $args[3] : false); $vals = get_next_number($ldapserver,$container,$args[1],(!empty($args[2]) && ($args[2] == 'false')) ? false : true,(!empty($args[3])) ? $args[3] : false);
# operate calculus on next number. # operate calculus on next number.
if (!empty($args[4])) { if (!empty($args[4])) {
$mod = split(';',$args[4]); $mod = split(';',$args[4]);
@ -981,8 +982,8 @@ class Templates {
if (isset($_POST['form'][$varname])) if (isset($_POST['form'][$varname]))
$function_args[] = $_POST['form'][$varname]; $function_args[] = $_POST['form'][$varname];
else else
pla_error(sprintf(_('Your template calls php.Function for a default value, however (%s) is NOT available in the POST FORM variables. The following variables are available [%s].'),$varname, error(sprintf(_('Your template calls php.Function for a default value, however (%s) is NOT available in the POST FORM variables. The following variables are available [%s].'),$varname,
(isset($_POST['form']) ? implode('|',array_keys($_POST['form'])) : 'NONE'))); (isset($_POST['form']) ? implode('|',array_keys($_POST['form'])) : 'NONE')),'error','index.php');
} else { } else {
$function_args[] = $arg; $function_args[] = $arg;
} }

View File

@ -1,5 +1,5 @@
<?php <?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/timeout_functions.php,v 1.10.2.2 2008/01/27 05:11:41 wurley Exp $ // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/timeout_functions.php,v 1.10.2.4 2008/12/13 08:57:09 wurley Exp $
/** /**
* A collection of functions used throughout phpLDAPadmin for the timeout and automatic logout feature * A collection of functions used throughout phpLDAPadmin for the timeout and automatic logout feature
@ -42,7 +42,6 @@ function unset_lastactivity($ldapserver) {
* Check if custom session timeout has been reached for server $ldapserver. * Check if custom session timeout has been reached for server $ldapserver.
* If it has: * If it has:
* - automatically log out user by calling $ldapserver->unsetLoginDN() * - automatically log out user by calling $ldapserver->unsetLoginDN()
* - if $server_id is equal to right frame $server_id, load timeout.php page in the right frame
* - return true * - return true
* *
* @param object $ldapserver The LDAPServer object of the server which the user has logged in. * @param object $ldapserver The LDAPServer object of the server which the user has logged in.
@ -69,7 +68,7 @@ function session_timed_out($ldapserver) {
if (in_array($ldapserver->auth_type,array('cookie','session'))) { if (in_array($ldapserver->auth_type,array('cookie','session'))) {
syslog_notice('Logout for '.$ldapserver->getLoggedInDN()); syslog_notice('Logout for '.$ldapserver->getLoggedInDN());
$ldapserver->unsetLoginDN() or pla_error(_('Could not logout.')); $ldapserver->unsetLoginDN() or error(_('Could not logout.'),'error','index.php');
} }
return true; return true;

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More