$slug, 'title' => $slug, 'filename' => $name, 'path' => $resolved, ); } } if (!function_exists('courseware_build_deck')) { function courseware_build_deck($slug) { $found = courseware_resolve_pptx($slug); if ($found === null) { return null; } return array( 'slug' => $found['slug'], 'title' => $found['title'], 'filename' => $found['filename'], 'url' => 'courseware-file.php?deck=' . rawurlencode($found['slug']), ); } } if (!function_exists('courseware_list_decks')) { function courseware_list_decks() { $decks = array(); $seen = array(); foreach (courseware_scan_pptx_entries() as $slug => $name) { unset($name); if (isset($seen[$slug])) { continue; } $deck = courseware_build_deck($slug); if ($deck !== null) { $seen[$slug] = true; $decks[] = $deck; } } usort($decks, function ($a, $b) { return strnatcasecmp($a['title'], $b['title']); }); return $decks; } } if (!function_exists('courseware_clamp_page')) { function courseware_clamp_page($deck, $page) { $page = intval($page); if ($page < 1) { return 1; } $count = (is_array($deck) && isset($deck['page_count'])) ? intval($deck['page_count']) : 0; if ($count < 1) { return $page; } if ($page > $count) { return $count; } return $page; } } if (!function_exists('courseware_content_disposition')) { function courseware_content_disposition($filename) { $safe = str_replace(array("\r", "\n", '"', '\\'), '_', strval($filename)); $ascii = preg_replace('/[^\x20-\x7E]/', '_', $safe); if ($ascii === '' || $ascii === '_' || $ascii === '.pptx') { $ascii = 'courseware.pptx'; } return 'inline; filename="' . $ascii . '"; filename*=UTF-8\'\'' . rawurlencode($filename); } }