/** * Returns Basic User Details * * @param string $username * @return array * @author Ben Evans */ public static function getUserDetails($username) { // Start by consulting the local database first $db = Zend_Registry::get("db"); $query = "SELECT * FROM ad_user_cache WHERE samaccountname=" . $db->quote($username); $stmt = $db->query($query); $rows = $stmt->fetchAll(); if (sizeof($rows) == 1) { $row = current($rows); return $row; } // OK. We need to do an LDAP Query instead (and then update the database) $vUser = Model_Auth_ActiveDirectory::updateUser($username); if (!array_key_exists("sn", $vUser[0])) { if (!array_key_exists("givenname", $vUser[0])) { $vUser[0]['sn'] = array($username); $vUser[0]['givenname'] = array(""); } } elseif (!array_key_exists("givenname", $vUser[0])) { $vUser[0]['givenname'] = array(""); } $ad_groups = self::getUserGroups($username); return array("last_name" => $vUser[0]['sn'][0], "first_name" => $vUser[0]['givenname'][0], "groups" => $ad_groups); }
/** * This function Caches the local Usernames (and First/Last names) * from the designated Authentication source (eg. LDAP) */ public function syncusernamesAction() { $vGroups = array(); $vCounter = 0; //Get all the quizzes $vQuizzes = Model_Quiz_Quiz::getAll(); foreach ($vQuizzes as $vQuiz) { if (!in_array($vQuiz->getPermissions_group(), $vGroups)) { $vGroups[] = $vQuiz->getPermissions_group(); } } //So we have all groups now in the system foreach ($vGroups as $vGroup) { //Get the members of this group $vMembers = Model_Auth_ActiveDirectory::getUsersFromGroup($vGroup); if (is_array($vMembers) && sizeof($vMembers) > 0) { foreach ($vMembers as $vMember) { Model_Auth_ActiveDirectory::updateUser($vMember); $vCounter++; } } } $this->view->counter = $vCounter; }