public static function get_extra_view_info(&$viewdata, $getartefacts = true, $gettags = true) { if ($viewdata) { // Get view owner details for display $owners = array(); $groups = array(); $institutions = array(); foreach ($viewdata as $v) { if (!empty($v->owner) && !isset($owners[$v->owner])) { $owners[$v->owner] = (int) $v->owner; } else { if (!empty($v->group) && !isset($groups[$v->group])) { $groups[$v->group] = (int) $v->group; } else { if (!empty($v->institution) && !isset($institutions[$v->institution])) { $institutions[$v->institution] = $v->institution; } } } } $viewidlist = join(',', array_map('intval', array_keys($viewdata))); if ($getartefacts) { $artefacts = get_records_sql_array('SELECT va.view, va.artefact, a.title, a.artefacttype, t.plugin FROM {view_artefact} va INNER JOIN {artefact} a ON va.artefact = a.id INNER JOIN {artefact_installed_type} t ON a.artefacttype = t.name WHERE va.view IN (' . $viewidlist . ') GROUP BY va.view, va.artefact, a.title, a.artefacttype, t.plugin ORDER BY a.title, va.artefact', array()); if ($artefacts) { foreach ($artefacts as $artefactrec) { safe_require('artefact', $artefactrec->plugin); $classname = generate_artefact_class_name($artefactrec->artefacttype); $artefactobj = new $classname(0, array('title' => $artefactrec->title)); $artefactobj->set('dirty', false); if (!$artefactobj->in_view_list()) { continue; } $artname = $artefactobj->display_title(30); if (strlen($artname)) { $viewdata[$artefactrec->view]->artefacts[] = array('id' => $artefactrec->artefact, 'title' => $artname); } } } } if ($gettags) { $tags = get_records_select_array('view_tag', 'view IN (' . $viewidlist . ')'); if ($tags) { foreach ($tags as &$tag) { $viewdata[$tag->view]->tags[] = $tag->tag; } } } if (!empty($owners)) { global $USER; $userid = $USER->get('id'); $fields = array('id', 'username', 'firstname', 'lastname', 'preferredname', 'admin', 'staff', 'studentid', 'email', 'profileicon', 'urlid', 'suspendedctime'); if (count($owners) == 1 && isset($owners[$userid])) { $owners = array($userid => new StdClass()); foreach ($fields as $f) { $owners[$userid]->{$f} = $USER->get($f); } } else { $owners = get_records_select_assoc('usr', 'id IN (' . join(',', array_fill(0, count($owners), '?')) . ')', $owners, '', join(',', $fields)); } } if (!empty($groups)) { require_once 'group.php'; $groups = get_records_select_assoc('group', 'id IN (' . join(',', $groups) . ')', null, '', 'id,name,urlid'); } if (!empty($institutions)) { $institutions = get_records_assoc('institution', '', '', '', 'name,displayname'); $institutions['mahara']->displayname = get_config('sitename'); } $wwwroot = get_config('wwwroot'); $needsubdomain = get_config('cleanurlusersubdomains'); foreach ($viewdata as &$v) { $v->anonymous = FALSE; if (!empty($v->owner)) { $v->sharedby = View::owner_name($v->ownerformat, $owners[$v->owner]); $v->user = $owners[$v->owner]; // Get a real view object so we can do the checks. $view_obj = new View($v->id); $v->anonymous = $view_obj->is_anonymous(); $v->staff_or_admin = $view_obj->is_staff_or_admin_for_page(); } else { if (!empty($v->group)) { $v->sharedby = $groups[$v->group]->name; $v->groupdata = $groups[$v->group]; } else { if (!empty($v->institution)) { $v->sharedby = $institutions[$v->institution]->displayname; } } } $v = (array) $v; // Now that we have the owner & group records, create a temporary View object // so that we can use display_title_editing and get_url methods. $view = new View(0, $v); $view->set('dirty', false); $v['displaytitle'] = $view->display_title_editing(); $v['url'] = $view->get_url(false); $v['fullurl'] = $needsubdomain ? $view->get_url(true) : $wwwroot . $v['url']; } } }
public static function get_extra_view_info(&$viewdata, $getartefacts = true) { if ($viewdata) { // Get view owner details for display $owners = array(); $groups = array(); $institutions = array(); foreach ($viewdata as $v) { if ($v->owner && !isset($owners[$v->owner])) { $owners[$v->owner] = (int) $v->owner; } else { if ($v->group && !isset($groups[$v->group])) { $groups[$v->group] = (int) $v->group; } else { if (strlen($v->institution) && !isset($institutions[$v->institution])) { $institutions[$v->institution] = $v->institution; } } } } $viewidlist = join(',', array_map('intval', array_keys($viewdata))); if ($getartefacts) { $artefacts = get_records_sql_array('SELECT va.view, va.artefact, a.title, a.artefacttype, t.plugin FROM {view_artefact} va INNER JOIN {artefact} a ON va.artefact = a.id INNER JOIN {artefact_installed_type} t ON a.artefacttype = t.name WHERE va.view IN (' . $viewidlist . ') GROUP BY va.view, va.artefact, a.title, a.artefacttype, t.plugin ORDER BY a.title, va.artefact', ''); if ($artefacts) { foreach ($artefacts as $artefactrec) { safe_require('artefact', $artefactrec->plugin); $classname = generate_artefact_class_name($artefactrec->artefacttype); $artefactobj = new $classname(0, array('title' => $artefactrec->title)); $artefactobj->set('dirty', false); if (!$artefactobj->in_view_list()) { continue; } $artname = $artefactobj->display_title(30); if (strlen($artname)) { $viewdata[$artefactrec->view]->artefacts[] = array('id' => $artefactrec->artefact, 'title' => $artname); } } } } $tags = get_records_select_array('view_tag', 'view IN (' . $viewidlist . ')'); if ($tags) { foreach ($tags as &$tag) { $viewdata[$tag->view]->tags[] = $tag->tag; } } if (!empty($owners)) { $owners = get_records_select_assoc('usr', 'id IN (' . join(',', $owners) . ')', null, '', 'id,username,firstname,lastname,preferredname,admin,staff,studentid,email,profileicon'); } if (!empty($groups)) { $groups = get_records_select_assoc('group', 'id IN (' . join(',', $groups) . ')', null, '', 'id,name'); } if (!empty($institutions)) { $institutions = get_records_assoc('institution', '', '', '', 'name,displayname'); $institutions['mahara']->displayname = get_config('sitename'); } foreach ($viewdata as &$v) { $v->shortdescription = str_shorten_html(str_replace('<br />', ' ', $v->description), 100, true); if ($v->owner) { $v->sharedby = View::owner_name($v->ownerformat, $owners[$v->owner]); $v->user = $owners[$v->owner]; } else { if ($v->group) { $v->sharedby = $groups[$v->group]->name; } else { if ($v->institution) { $v->sharedby = $institutions[$v->institution]->displayname; } } } $v = (array) $v; } } }