Skip to content
Snippets Groups Projects
Commit fdba19ef authored by Rasmus Fuhse's avatar Rasmus Fuhse
Browse files

Resolve "OER Campus: OERSI Ergebnisse unvollständig"

Closes #2521

Merge request studip/studip!1825
parent 034eec5f
No related branches found
No related tags found
No related merge requests found
......@@ -188,9 +188,24 @@ class Oer_MarketController extends StudipController
"oer_tags_material.tag_hash = oer_tags.tag_hash",
"LEFT JOIN"
);
$search->join(
"oer_material_users",
"oer_material_users.material_id = oer_material.material_id",
"LEFT JOIN"
);
$search->join(
"external_users",
"oer_material_users.user_id = external_users.external_contact_id AND oer_material_users.external_contact = '1'",
"LEFT JOIN"
);
$search->join(
"auth_user_md5",
"oer_material_users.user_id = auth_user_md5.user_id AND oer_material_users.external_contact = '0'",
"LEFT JOIN"
);
$search->where(
"textsearch",
"(oer_material.name LIKE :search OR oer_material.description LIKE :search OR oer_material.short_description LIKE :search OR oer_tags.name LIKE :search)",
"(oer_material.name LIKE :search OR oer_material.description LIKE :search OR oer_material.short_description LIKE :search OR oer_tags.name LIKE :search OR external_users.name LIKE :search OR CONCAT(auth_user_md5.Vorname, ' ', auth_user_md5.Nachname) LIKE :search)",
['search' => '%'.Request::get("search").'%']
);
}
......
......@@ -264,8 +264,9 @@ class OERHost extends OERIdentity
{
$users = [];
foreach ($material->users as $materialdata) {
if ($materialdata['external_contact']) {
if ($materialdata['oeruser']) {
$user = $materialdata['oeruser'];
$users[] = [
'user_id' => $user['foreign_id'],
'name' => $user['name'],
......
......@@ -69,13 +69,20 @@ class OERHostOERSI extends OERHost
'front_image_url' => $material_data['_source']['image'],
'download' => $material_data['_source']['encoding'][0]['contentUrl'] ?: '',
'id' => $material_data['_id'],
'authors' => $material_data['_source']['creator'],
'organization' => $material_data['_source']['sourceOrganization'][0]['name'] ?: $material_data['_source']['publisher'][0]['name']
];
$material->store();
//set topics:
//$material->setUsers([]);
//set users:
$userdata = [];
foreach ((array) $material_data['_source']['creator'] as $creator) {
$userdata[] = [
'user_id' => md5($creator['name']),
'name' => $creator['name'],
'host_url' => $this['url']
];
}
$material->setUsers($userdata);
//set topics:
$material->setTopics($material_data['_source']['keywords']);
......@@ -128,7 +135,6 @@ class OERHostOERSI extends OERHost
$data['data'] = $material['data']->getArrayCopy();
$data['data']['download'] = $output['encoding'][0]['contentUrl'] ?? '';
$data['data']['front_image_url'] = $output['image'] ?? '';
$data['data']['authors'] = $output['creator'];
$data['data']['organization'] = $output['sourceOrganization'][0]['name'] ?? $output['publisher'][0]['name'] ?? '';
return [
'data' => $data,
......@@ -167,19 +173,6 @@ class OERHostOERSI extends OERHost
return false;
}
public function getAuthorsForMaterial(OERMaterial $material)
{
$users = [];
$data = $material->data->getArrayCopy();
foreach ((array) $data['authors'] as $author) {
$users[] = [
'name' => $author['name'],
'hostname' => $data['organization'] ?: $this['name']
];
}
return $users;
}
public function getDownloadURLForMaterial(OERMaterial $material)
{
return $material['uri'];
......
......@@ -166,9 +166,11 @@ class OERMaterial extends SimpleORMap
$cache_name = "oer_remote_searched_for_".md5($text)."_".($tag ? 1 : 0);
$already_searched = (bool) StudipCacheFactory::getCache()->read($cache_name);
if (!$already_searched) {
$host = OERHost::findOneBySQL("index_server = '1' AND allowed_as_index_server = '1' ORDER BY RAND()");
if ($host && !$host->isMe()) {
$host->fetchRemoteSearch($text, $tag);
$hosts = OERHost::findBySQL("index_server = '1' AND allowed_as_index_server = '1' ORDER BY RAND()");
foreach ($hosts as $host) {
if (!$host->isMe()) {
$host->fetchRemoteSearch($text, $tag);
}
}
StudipCacheFactory::getCache()->read($cache_name, "1", 60);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment