/** * */ public function Index() { AssetLoadManager::register("jquery", "scrollto"); if (!($ps_daterange = $this->request->getParameter('daterange', pString))) { $ps_daterange = _t('today'); } $va_dashboard_config = $this->opo_library_services_config->getAssoc('dashboard'); $this->view->setVar('stats', $va_stats = ca_object_checkouts::getDashboardStatistics($ps_daterange)); $this->view->setVar('daterange', $ps_daterange); // process user lists foreach (array('checkoutUserList' => 'checkout_user_list', 'checkinUserList' => 'checkin_user_list', 'overdueCheckoutUserList' => 'overdue_checkout_user_list', 'reservationUserList' => 'reservation_user_list') as $vs_stat_key => $vs_var_name) { $va_user_list = array(); $vn_c = 0; foreach ($va_stats[$vs_stat_key] as $va_user) { $va_user_list[] = "<a href='#' class='caLibraryUserLink' data-user_id='" . $va_user['user_id'] . "'>" . trim($va_user['fname'] . ' ' . $va_user['lname']) . "</a>"; //.($va_user['email'] ? ' ('.$va_user['email'].')' : ''); $vn_c++; if ($vn_c >= 10) { $va_user_list[] = _t(' and %1 more', sizeof($va_stats[$vs_stat_key]) - $vn_c); break; } } $this->view->setVar($vs_var_name, $va_user_list); } $this->view->setVar('panels', $va_panels = is_array($va_dashboard_config['panels']) ? $va_dashboard_config['panels'] : array()); // // Gather data for configurable stat panels. // // These panels break counts of checkins, checkouts or reservations by an object metadata element. // For example: # of checkouts by item format // foreach ($va_panels as $vs_panel => $va_panel_info) { if (!($va_group_bys = $va_panel_info['group_by'])) { continue; } if (!is_array($va_group_bys)) { $va_group_bys = array($va_group_bys); } $va_group_by_elements = array(); foreach ($va_group_bys as $vn_i => $vs_group_by) { $va_tmp = explode('.', $vs_group_by); $va_group_by_elements[$vn_i] = array_pop($va_tmp); } $va_counts = array(); switch (strtolower($va_panel_info['event'])) { case 'checkin': $va_object_ids = ca_object_checkouts::getObjectIDsForCheckins($ps_daterange); break; case 'reserve': $va_object_ids = ca_object_checkouts::getObjectIDsForReservations(); break; case 'checkout': default: $va_object_ids = ca_object_checkouts::getObjectIDsForOutstandingCheckouts($ps_daterange); break; } if (sizeof($va_object_ids) == 0) { continue; } $qr_objects = caMakeSearchResult('ca_objects', $va_object_ids); while ($qr_objects->nextHit()) { foreach ($va_group_bys as $vn_i => $vs_group_by) { if (is_array($va_vals = $qr_objects->get($vs_group_by, array('returnAsArray' => true, 'convertCodesToDisplayText' => true)))) { if (!sizeof($va_vals)) { $va_count['?']++; break; } foreach ($va_vals as $vn_attr_id => $va_val) { $va_counts[$va_val[$va_group_by_elements[$vn_i]]]++; } break; } else { $va_count['?']++; } } } $this->view->setVar("panel_{$vs_panel}", $va_counts); } $this->render('dashboard/index_html.php'); }