public function test_email_search() { global $DB, $CFG; $this->resetAfterTest(true); // Create test data. $firstcourse = $this->getDataGenerator()->create_course(); $secondcourse = $this->getDataGenerator()->create_course(); $firstcategory = $this->getDataGenerator()->create_category(); $secondcategory = $this->getDataGenerator()->create_category(); $firstuser = $this->getDataGenerator()->create_user(); $seconduser = $this->getDataGenerator()->create_user(); $firstcohort = $this->getDataGenerator()->create_cohort(); $secondcohort = $this->getDataGenerator()->create_cohort(); $firstcourse->category = $firstcategory->id; $DB->update_record('course', $firstcourse); $secondcourse->category = $secondcategory->id; $DB->update_record('course', $secondcourse); $firstcohort->idnumber = 1400.99999; $DB->update_record('cohort', $firstcohort); $secondcohort->idnumber = 1402.99999; $DB->update_record('cohort', $secondcohort); $firstcohortenrol = new stdClass(); $firstcohortenrol->courseid = $firstcourse->id; $firstcohortenrol->customint1 = $firstcohort->id; $DB->insert_record('enrol', $firstcohortenrol); $secondcohortenrol = new stdClass(); $secondcohortenrol->courseid = $secondcourse->id; $secondcohortenrol->customint1 = $secondcohort->id; $DB->insert_record('enrol', $secondcohortenrol); $this->getDataGenerator()->enrol_user($firstuser->id, $firstcourse->id); $this->getDataGenerator()->enrol_user($seconduser->id, $secondcourse->id); $firstuser->lastaccess = 1417630663; $firstuser->email = "*****@*****.**"; $DB->update_record('user', $firstuser); $seconduser->lastaccess = 1417630889; $seconduser->email = "*****@*****.**"; $DB->update_record('user', $seconduser); // Test just category. $searcher = new email_search(); $searcher->addcategory($firstcourse->category); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(1, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $result->close(); $searcher = new email_search(); $searcher->addcategory($firstcourse->category); $searcher->addcategory($secondcourse->category); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(2, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $this->assertEquals($seconduser->email, $resultarray[1]); $result->close(); // Test just role. $searcher = new email_search(); $roleids = $DB->get_record('role_assignments', array('userid' => $firstuser->id)); $roleid = $roleids->roleid; $searcher->addrole($roleid); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals($firstuser->email, $resultarray[0]); $result->close(); $searcher = new email_search(); $roleids = $DB->get_record('role_assignments', array('userid' => $firstuser->id)); $roleid = $roleids->roleid; $searcher->addrole($roleid); $roleids = $DB->get_record('role_assignments', array('userid' => $seconduser->id)); $roleid = $roleids->roleid; $searcher->addrole($roleid); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals($firstuser->email, $resultarray[0]); $this->assertEquals($seconduser->email, $resultarray[1]); $result->close(); // Test just courses. $searcher = new email_search(); $searcher->addcourse($firstcourse->id); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(1, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $result->close(); $searcher = new email_search(); $searcher->addcourse($firstcourse->id); $searcher->addcourse($secondcourse->id); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(2, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $this->assertEquals($seconduser->email, $resultarray[1]); $result->close(); // Test just lastaccess. $searcher = new email_search(); $searcher->setlastaccess(1417630888); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(1, count($resultarray)); $this->assertEquals($seconduser->email, $resultarray[0]); $result->close(); $searcher = new email_search(); $searcher->setlastaccess(1417630889); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(1, count($resultarray)); $this->assertEquals($seconduser->email, $resultarray[0]); $result->close(); $searcher = new email_search(); $searcher->setlastaccess(1417630600); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(2, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $this->assertEquals($seconduser->email, $resultarray[1]); $result->close(); $searcher = new email_search(); $searcher->setlastaccess(1517630999); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(0, count($resultarray)); $result->close(); $searcher = new email_search(); $searcher->setlastaccess(0); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(2, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $this->assertEquals($seconduser->email, $resultarray[1]); $result->close(); $searcher = new email_search(); $searcher->setlastaccess(1); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(2, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $this->assertEquals($seconduser->email, $resultarray[1]); $result->close(); // Test just term. $searcher = new email_search(); $searcher->addterm(1400); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(1, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $result->close(); $searcher = new email_search(); $searcher->addterm(1400); $searcher->addterm(1402); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(2, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $this->assertEquals($seconduser->email, $resultarray[1]); $result->close(); // All criteria together. $searcher = new email_search(); $searcher->addterm(1400); $searcher->setlastaccess(1417630888); $roleids = $DB->get_record('role_assignments', array('userid' => $firstuser->id)); $roleid = $roleids->roleid; $searcher->addrole($roleid); $searcher->addcategory($firstcourse->category); $searcher->addcourse($firstcourse->id); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(0, count($resultarray)); $result->close(); $searcher = new email_search(); $searcher->addterm(1400); $searcher->setlastaccess(1417630663); $roleids = $DB->get_record('role_assignments', array('userid' => $firstuser->id)); $roleid = $roleids->roleid; $searcher->addrole($roleid); $searcher->addcategory($firstcourse->category); $searcher->addcourse($firstcourse->id); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(1, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $result->close(); $searcher = new email_search(); $searcher->setlastaccess(1417630663); $searcher->addterm(1400); $searcher->addterm(1402); $roleids = $DB->get_record('role_assignments', array('userid' => $firstuser->id)); $roleid = $roleids->roleid; $searcher->addrole($roleid); $roleids = $DB->get_record('role_assignments', array('userid' => $seconduser->id)); $roleid = $roleids->roleid; $searcher->addrole($roleid); $searcher->addcategory($firstcourse->category); $searcher->addcategory($secondcourse->category); $searcher->addcourse($firstcourse->id); $searcher->addcourse($secondcourse->id); $result = $searcher->getemails(); $resultarray = $this->recordset_to_array($result); $this->assertEquals(2, count($resultarray)); $this->assertEquals($firstuser->email, $resultarray[0]); $this->assertEquals($seconduser->email, $resultarray[1]); $result->close(); }
} if (!empty($roleids[0])) { foreach ($roleids as $roleid) { $searcher->addrole($roleid); } } if (!empty($courseids[0])) { foreach ($courseids as $courseid) { $searcher->addcourse($courseid); } } if (!empty($lastaccess[0])) { $searcher->setlastaccess($lastaccess[0]); } echo "<div>"; $emails = $searcher->getemails(); if ($emails->valid()) { foreach ($emails as $record) { // Print out the email addresses. echo $record->email . '<br>'; } } else { echo "No records found."; } $emails->close(); echo "</div>"; } catch (Exception $e) { $fail = <<<fail <pre> ','. '. ; : ,',' '..'FAIL,..'