Skip to content
This repository has been archived by the owner. It is now read-only.

Commit

Permalink
Added support for email-address lookup
Browse files Browse the repository at this point in the history
Using different LDAP function because I'm validating type of search via
javascript
  • Loading branch information
Salman Z Kaleem committed Jul 16, 2015
1 parent 6386530 commit 8664240
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 19 deletions.
21 changes: 17 additions & 4 deletions uc-people.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,38 @@
jQuery(document).ready(function($){
if( $('#uc_people_netid_lookup').length ){
$('#uc_people_netid_search').click(function(ev){
if( $('#uc_people_lookup').length ){
$('#uc_people_lookup_search').click(function(ev){
ev.preventDefault();

var query = $('#uc_people_netid_lookup').val();
var query = $('#uc_people_lookup').val();
var type = null;
if( query.length == 8 && query.match(/[a-z]{3}[0-9]{5}/) ){
var type = 'netid';
} else if( query.match(/uconn.edu/) ){
var type = 'email';
}

if( type != null ){
$.ajax({
url: ajax_object.ajax_url,
data: { 'action': 'uc_netid_lookup', 'netid': query },
data: { 'action': 'uc_people_lookup', 'query': query, 'type': type },
success: function(response){
if( !isEmpty(response) ){
$('#uc_people_lookup_metabox p.howto').text("Person found");
var fields = ['first_name', 'last_name', 'phone', 'email'];
fields.forEach(function(el,i,a){
$('#acf-field-'+el).val("");
if( response.hasOwnProperty(el) ){
$('#acf-field-'+el).val( response[el] );
}
});
} else {
$('#uc_people_lookup_metabox p.howto').text("Person not found");
}
},
dataType: 'json'
});
} else {
$('#uc_people_lookup_metabox p.howto').text("Invalid e-mail address or NetID entered");
}
});
}
Expand Down
92 changes: 77 additions & 15 deletions uc-people.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@
if ( ! defined( 'WPINC' ) ) {
die;
}
include 'acf-export.php';
require_once(WP_CONTENT_DIR . '/ldap.php');
require 'acf-export.php';
//require_once(WP_CONTENT_DIR . '/ldap.php');


function create_custom_custom_post_type(){
$labels = array(
Expand Down Expand Up @@ -130,7 +131,7 @@ function importFile(){
$title = $v['First Name'].' '.$v['Last Name'];
$args = array(
'post_title' => $title,
'post_name' => 'testing-contact',
'post_name' => strtolower($v['First Name']).'-'.strtolower($v['Last Name']),
'post_status' => 'publish',
'post_type' => 'person',
'menu_order' => ( !empty($v['Order']) ? $v['Order'] : 0 ),
Expand Down Expand Up @@ -182,32 +183,93 @@ function uc_people_settings_page(){
<?php
}

function uc_people_netid_metabox(){
add_meta_box( 'uc_netid_lookup', 'NetID Lookup', 'uc_people_netid_metabox_callback', 'person', 'side', 'core' );
function uc_people_lookup_metabox(){
add_meta_box( 'uc_lookup', 'UConn Lookup', 'uc_people_lookup_metabox_callback', 'person', 'side', 'core' );
}
add_action( 'add_meta_boxes', 'uc_people_netid_metabox' );
function uc_people_netid_metabox_callback(){
echo '<div id="uc_people_netid_metabox">';
echo '<input type="text" id="uc_people_netid_lookup" class="form-input-tip" size="16">';
echo '<input type="button" id="uc_people_netid_search" class="button" value="Search">';
add_action( 'add_meta_boxes', 'uc_people_lookup_metabox' );
function uc_people_lookup_metabox_callback(){
echo '<div id="uc_people_lookup_metabox">';
echo '<p><input type="text" id="uc_people_lookup" class="form-input-tip" size="16">';
echo '<input type="button" id="uc_people_lookup_search" class="button" value="Search"></p>';
echo '<p class="howto"></p>';
echo '</div>';
}


function uc_acf_admin_enqueue_scripts(){
wp_enqueue_script( 'ucpeoplejs', plugin_dir_url(__FILE__).'/uc-people.js', array('jquery'), '1.0' );
wp_localize_script( 'ucpeoplejs', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}

add_action('acf/input/admin_enqueue_scripts', 'uc_acf_admin_enqueue_scripts');

add_action( 'wp_ajax_uc_netid_lookup', 'uc_netid_lookup_callback' );
function uc_netid_lookup_callback(){
$query = $_GET['netid'];
if( !function_exists('uc_people_lookup') ){
function uc_people_lookup( $query, $type ){
if( is_null($query) || is_null($type) ){
return false;
}
//LDAP Config
$ldapdn = 'uid=web-aurora,ou=accounts,ou=ldap,dc=uconn,dc=edu';
$ldappass = 'nyZqY6evmFBft2oS5fJDReeIa1W36CXViEPZCXpTRyD5IuiM2GCdeiDOlNJQOiu0';

$ldaphost = 'ldaps://ldap.uconn.edu:636';
$ldapconn = ldap_connect($ldaphost) or die('Can\'t contact LDAP');

if($ldapconn){
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
$ldapbind = ldap_bind($ldapconn, $ldapdn, $ldappass) or die('Can\'t bind LDAP');

$search = '';
if( $type == 'netid' ){
$field = 'uid';
} else if( $type == 'email' ){
$field = 'mail';
}
$search = '('.$field.'='.$query.')';

$ldap_fields = array('uid', 'title','cn', 'telephoneNumber', 'postalAddress', 'givenName', 'sn','mail','uconnpersonaffiliation','l','ou');
$results = ldap_search($ldapconn, 'dc=uconn,dc=edu', $search, $ldap_fields);
if($results == false){
return;
}

$var = ldap_get_entries($ldapconn, $results);
$ldap_keys = array('title' ,'cn', 'telephonenumber', 'postaladdress', 'givenname', 'sn','mail','uconnpersonaffiliation','l','ou');
$meta_keys = array('title', 'name', 'phone', 'address', 'first_name', 'last_name','email','affiliation','campus','department');
$fields = array_combine($ldap_keys, $meta_keys);
$user_data = array();
foreach( $var as $k=>$result ){
if( is_int($k) ){
foreach ($fields as $ldap_key=>$meta_key){
if( isset($result) && isset($result[$ldap_key]) && isset($result[$ldap_key][0]) ){
$count = $result[$ldap_key]['count'] - 1;
if( $count > 0 ){
for ($i=0; $i <= $count; $i++) {
$user_data[$meta_key][$i] = $result[$ldap_key][$i];
}
} else if( $count == 0 ) {
$user_data[$meta_key] = $result[$ldap_key][0];
}
}
}
}
}
return $user_data;
}
ldap_close($ldapconn);
}
}

add_action( 'wp_ajax_uc_people_lookup', 'uc_people_lookup_callback' );
function uc_people_lookup_callback(){
$query = $_GET['query'];
$type = $_GET['type'];

$userInfo = netid_lookup($query);
$userInfo = uc_people_lookup($query, $type);

echo wp_json_encode($userInfo);

wp_die();
}

?>
?>

0 comments on commit 8664240

Please sign in to comment.