Zimbra offers Open Source email server software and shared calendar for Linux and the Mac
 
Go Back   Zimbra - Forums > Zimbra Collaboration Suite > Developers

Welcome to the Zimbra - Forums!
Welcome, if you would like to post a comment please register. We also encourage you to explore all things Zimbra with our team and members of the community.

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 05-31-2006, 08:44 AM
Junior Member
 
Posts: 9
Default PHP LDAP Address/Phone Book

Has anyone successfully developed a PHP script to do an LDAP query to Zimbra OpenLDAP? We would like to use our Zimbra Server as the the main Address/Phonebook for our district. If you have, can you please send me the PHP scripts?

I found one online, but I am unable to make it work. I have very limited PHP knowledge.

Thanks,
Mark
Reply With Quote
  #2 (permalink)  
Old 05-31-2006, 08:52 AM
Zimbra Consultant
 
Posts: 5,606
Default

Hi phxmark, and welcome.

We hope you enjoy the forums. As a note, please do not cross post in forums. As you can tell, we have a lot of posts. Because of this, we try to keep the level of confusion down when users search the forums.

I have removed your other post in the admin forum as it was a duplicate with this post.

Also, I have not heard anything thing on an LDAP Address book. I have an address book that runs on ASP that accesses an sql database, but it is in no way tied into zimbra.

Good luck!
john
Reply With Quote
  #3 (permalink)  
Old 06-01-2006, 12:34 PM
Junior Member
 
Posts: 9
Default PHP LDAP Address/Phonebook

OK. I have put together something that works. It is a work in progress, but it is close to doing what I want. It is a mish-mash of other PHP scripts found on the Internet.

The only issue I am having with it is that I cannot search by Site(Company) attribute. All else works.

This is programmed under PHP 5 and Apache Server.

pbform.html:

<html>
<head>
<title>Search</title>
</head>
<body>
<form action="search.php" method="POST">
First name
<br>
<input type="text" name="gn" length="30" value="*"><br>
Last name
<br>
<input type="text" name="sn" length="30" value="*"><br>
Email address
<br>
<input type="text" name="email" length="30" value="*"><br>
Site
<br>
<input type="text" name="comp" length="30" value="*"><br>
<br>
<input type="submit" name="submit" value="Search">
</form>
</body>
</html>

search.php:

<html>
<head>
</head>
<body>

<table width="500" cellpadding="5" cellspacing="5" border="1">

<?php

// specify the LDAP server to connect to
$conn = ldap_connect("yourzimbraserver.domain.com") or die("Could not connect to server");
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);

// bind to the LDAP server specified above
$r = ldap_bind($conn) or die("Could not bind to server");

// create the search string
$query = "(&(givenname=" . $_POST['gn'] . ")(sn=" . $_POST['sn'] . ")(mail=" . $_POST['email'] . ")(company=" . $_POST['comp'] . "))";

echo $query;

// start searching
// specify both the start location and the search criteria
// in this case, start at the top and return all entries
$result = ldap_search($conn,"dc=domain,dc=com", $query) or die("Error in search query");

// get entry data as array
$info = ldap_get_entries($conn, $result);

?>

<tr>
<td>Last Name</td>
<td>First Name</td>
<td>E-Mail Address</td>
<td>Site</td>
<td>Room</td>
<td>Phone</td>
<tf colspan=6>&nbsp;</td>
</tr>

<?php

// Sort Data by Company, Last Name and First Name
$attribs = array('company','sn','givenname');

for ($i=0; $i<$info["count"]; $i++)
{
$index = $info[$i];
$j=$i;
do {
//create comparison variables from attributes:
$a = $b = null;
foreach($attribs as $attrib){
$a .= $info[$j-1][$attrib][0];
$b .= $index[$attrib][0];
}
// do the comparison
if ($a > $b){
$is_greater = true;
$info[$j] = $info[$j-1];
$j = $j-1;
}else{
$is_greater = false;
}
} while ($j>0 && $is_greater);

$info[$j] = $index;
}

// iterate over array and print data for each entry
echo "<ul>";
for ($i=0; $i<$info["count"]; $i++)
{
echo "<tr>";
echo "<td>".$info[$i]["sn"][0]."</td>";
echo "<td>".$info[$i]["givenname"][0]."</td>";
echo "<td>".$info[$i]["mail"][0]."</td>";
echo "<td>".$info[$i]["company"][0]."</td>";
echo "<td>".$info[$i]["physicaldeliveryofficename"][0]."</td>";
echo "<td>".$info[$i]["telephonenumber"][0]."</td>";
echo "</tr>";
}

// print number of entries found
echo "Number of entries found: " . ldap_count_entries($conn, $result) . "<p>";

// all done? clean up
ldap_close($conn);

?>

</table>
</body>
</html>
Reply With Quote
  #4 (permalink)  
Old 06-16-2006, 01:16 AM
Starter Member
 
Posts: 1
Default What about the phpldapadmin project?

http://phpldapadmin.sourceforge.net/download.php

Probably not nescessary to reinvent the wheel, or wont this work toward zimbra?
Reply With Quote
  #5 (permalink)  
Old 06-16-2006, 08:01 AM
Junior Member
 
Posts: 9
Default

This does work on Zimbra. I used it to help me with the script I am working on.
Reply With Quote
  #6 (permalink)  
Old 08-31-2009, 06:44 AM
Advanced Member
 
Posts: 183
Default

this php script does work form me, but what i get are the mail accounts; i would get contacts but i dunno how can get them

i would use a ph script to feed aastra phones like you can find here
Reply With Quote
  #7 (permalink)  
Old 08-31-2009, 09:54 AM
Trained Alumni
 
Posts: 32
Default

What I'd like to see is a Zimlet that does the hover over lookups like the date zimlet- plugging that into the VOIP or other zimlets would be cool as well.
Reply With Quote
Reply


Thread Tools
Display Modes


Similar Threads

Why Join?

Registering let's you ask questions, makes it easier to search, displays any files attached to posts, and notifies you about replies.

Zimbrablog.com