Пример #1
0
 /**
  * Test creation of XML document.
  *
  * @return void
  */
 public function testAsXML()
 {
     $record = $this->getMockForAbstractClass('VuFindSearch\\Backend\\Solr\\Record\\SerializableRecordInterface');
     $record->expects($this->once())->method('getFields')->will($this->returnValue(['id' => 'ID', 'field' => 'FIELD']));
     $document = new UpdateDocument();
     $document->addRecord($record, ['boost' => '2.0']);
     $xml = $document->asXML();
     $this->assertXmlStringEqualsXmlString('<add><doc boost="2.0"><field name="id">ID</field><field name="field">FIELD</field></doc></add>', $xml);
 }
Пример #2
0
 /**
  * Build the reserves index from date returned by the ILS driver,
  * specifically: getInstructors, getDepartments, getCourses, findReserves
  *
  * @param array $instructors Array of instructors $instructor_id => $instructor
  * @param array $courses     Array of courses     $course_id => $course
  * @param array $departments Array of department  $dept_id => $department
  * @param array $reserves    Array of reserves records from driver's
  * findReserves.
  *
  * @return UpdateDocument
  */
 protected function buildReservesIndex($instructors, $courses, $departments, $reserves)
 {
     foreach ($reserves as $record) {
         if (!isset($record['INSTRUCTOR_ID']) || !isset($record['COURSE_ID']) || !isset($record['DEPARTMENT_ID'])) {
             throw new \Exception('INSTRUCTOR_ID and/or COURSE_ID and/or DEPARTMENT_ID fields ' . 'not present in reserve records. Please update ILS driver.');
         }
         $instructor_id = $record['INSTRUCTOR_ID'];
         $course_id = $record['COURSE_ID'];
         $department_id = $record['DEPARTMENT_ID'];
         $id = $course_id . '|' . $instructor_id . '|' . $department_id;
         if (!isset($index[$id])) {
             $index[$id] = ['id' => $id, 'bib_id' => [], 'instructor_id' => $instructor_id, 'instructor' => isset($instructors[$instructor_id]) ? $instructors[$instructor_id] : '', 'course_id' => $course_id, 'course' => isset($courses[$course_id]) ? $courses[$course_id] : '', 'department_id' => $department_id, 'department' => isset($departments[$department_id]) ? $departments[$department_id] : ''];
         }
         $index[$id]['bib_id'][] = $record['BIB_ID'];
     }
     $updates = new UpdateDocument();
     foreach ($index as $id => $data) {
         if (!empty($data['bib_id'])) {
             $updates->addRecord(new SerializableRecord($data));
         }
     }
     return $updates;
 }