Skip to content
Snippets Groups Projects
Commit cd36e999 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 fff82e71
No related branches found
No related tags found
No related merge requests found
...@@ -188,9 +188,24 @@ class Oer_MarketController extends StudipController ...@@ -188,9 +188,24 @@ class Oer_MarketController extends StudipController
"oer_tags_material.tag_hash = oer_tags.tag_hash", "oer_tags_material.tag_hash = oer_tags.tag_hash",
"LEFT JOIN" "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( $search->where(
"textsearch", "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").'%'] ['search' => '%'.Request::get("search").'%']
); );
} }
......
...@@ -264,8 +264,9 @@ class OERHost extends OERIdentity ...@@ -264,8 +264,9 @@ class OERHost extends OERIdentity
{ {
$users = []; $users = [];
foreach ($material->users as $materialdata) { foreach ($material->users as $materialdata) {
if ($materialdata['external_contact']) { if ($materialdata['oeruser']) {
$user = $materialdata['oeruser']; $user = $materialdata['oeruser'];
$users[] = [ $users[] = [
'user_id' => $user['foreign_id'], 'user_id' => $user['foreign_id'],
'name' => $user['name'], 'name' => $user['name'],
......
...@@ -69,13 +69,20 @@ class OERHostOERSI extends OERHost ...@@ -69,13 +69,20 @@ class OERHostOERSI extends OERHost
'front_image_url' => $material_data['_source']['image'], 'front_image_url' => $material_data['_source']['image'],
'download' => $material_data['_source']['encoding'][0]['contentUrl'] ?: '', 'download' => $material_data['_source']['encoding'][0]['contentUrl'] ?: '',
'id' => $material_data['_id'], 'id' => $material_data['_id'],
'authors' => $material_data['_source']['creator'],
'organization' => $material_data['_source']['sourceOrganization'][0]['name'] ?: $material_data['_source']['publisher'][0]['name'] 'organization' => $material_data['_source']['sourceOrganization'][0]['name'] ?: $material_data['_source']['publisher'][0]['name']
]; ];
$material->store(); $material->store();
//set topics: //set users:
//$material->setUsers([]); $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: //set topics:
$material->setTopics($material_data['_source']['keywords']); $material->setTopics($material_data['_source']['keywords']);
...@@ -128,7 +135,6 @@ class OERHostOERSI extends OERHost ...@@ -128,7 +135,6 @@ class OERHostOERSI extends OERHost
$data['data'] = $material['data']->getArrayCopy(); $data['data'] = $material['data']->getArrayCopy();
$data['data']['download'] = $output['encoding'][0]['contentUrl'] ?? ''; $data['data']['download'] = $output['encoding'][0]['contentUrl'] ?? '';
$data['data']['front_image_url'] = $output['image'] ?? ''; $data['data']['front_image_url'] = $output['image'] ?? '';
$data['data']['authors'] = $output['creator'];
$data['data']['organization'] = $output['sourceOrganization'][0]['name'] ?? $output['publisher'][0]['name'] ?? ''; $data['data']['organization'] = $output['sourceOrganization'][0]['name'] ?? $output['publisher'][0]['name'] ?? '';
return [ return [
'data' => $data, 'data' => $data,
...@@ -167,19 +173,6 @@ class OERHostOERSI extends OERHost ...@@ -167,19 +173,6 @@ class OERHostOERSI extends OERHost
return false; 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) public function getDownloadURLForMaterial(OERMaterial $material)
{ {
return $material['uri']; return $material['uri'];
......
...@@ -166,9 +166,11 @@ class OERMaterial extends SimpleORMap ...@@ -166,9 +166,11 @@ class OERMaterial extends SimpleORMap
$cache_name = "oer_remote_searched_for_".md5($text)."_".($tag ? 1 : 0); $cache_name = "oer_remote_searched_for_".md5($text)."_".($tag ? 1 : 0);
$already_searched = (bool) StudipCacheFactory::getCache()->read($cache_name); $already_searched = (bool) StudipCacheFactory::getCache()->read($cache_name);
if (!$already_searched) { if (!$already_searched) {
$host = OERHost::findOneBySQL("index_server = '1' AND allowed_as_index_server = '1' ORDER BY RAND()"); $hosts = OERHost::findBySQL("index_server = '1' AND allowed_as_index_server = '1' ORDER BY RAND()");
if ($host && !$host->isMe()) { foreach ($hosts as $host) {
$host->fetchRemoteSearch($text, $tag); if (!$host->isMe()) {
$host->fetchRemoteSearch($text, $tag);
}
} }
StudipCacheFactory::getCache()->read($cache_name, "1", 60); StudipCacheFactory::getCache()->read($cache_name, "1", 60);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment