diff --git a/uc-people.js b/uc-people.js
index 3af157d..fe4951c 100644
--- a/uc-people.js
+++ b/uc-people.js
@@ -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");
}
});
}
diff --git a/uc-people.php b/uc-people.php
index 9f05b49..1f6fc01 100644
--- a/uc-people.php
+++ b/uc-people.php
@@ -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(
@@ -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 ),
@@ -182,32 +183,93 @@ function uc_people_settings_page(){
';
- echo '';
- echo '';
+add_action( 'add_meta_boxes', 'uc_people_lookup_metabox' );
+function uc_people_lookup_metabox_callback(){
+ echo '
';
}
+
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();
}
-?>
+?>
\ No newline at end of file