CreditApi::getTotalDollarSales(), 'totalPeople' => CreditApi::getTotalPeople() ]]; } public static function executeFaq() { $allPosts = Post::find(static::VIEW_FOLDER_FAQ); $allCategories = array_merge(['' => ''] + Post::collectMetadata($allPosts, 'category'), [ 'getstarted' => 'Getting Started', 'install' => 'Installing LBRY', 'running' => 'Running LBRY', 'wallet' => 'The LBRY Wallet', 'hosting' => 'Hosting Content', 'mining' => 'Mining LBC', 'policy' => 'Policies', 'developer' => 'Developers', 'other' => 'Other Questions', ]); $selectedCategory = static::param('category'); $filters = array_filter([ 'category' => $selectedCategory && isset($allCategories[$selectedCategory]) ? $selectedCategory : null, ]); asort($allCategories); $posts = $filters ? Post::filter($allPosts, $filters) : $allPosts ; $groups = array_fill_keys(array_keys($allCategories), []); foreach($posts as $post) { $groups[$post->getCategory()][] = $post; } return ['content/faq', [ 'categories' => $allCategories, 'selectedCategory' => $selectedCategory, 'postGroups' => $groups ]]; } public static function executeNews() { $posts = Post::find(static::VIEW_FOLDER_NEWS, Post::SORT_DATE_DESC); return ['content/news', [ 'posts' => $posts, View::LAYOUT_PARAMS => [ 'showRssLink' => true ] ]]; } public static function executeRss() { $posts = Post::find(static::VIEW_FOLDER_NEWS, Post::SORT_DATE_DESC); return ['content/rss', [ 'posts' => array_slice($posts, 0, 10), '_no_layout' => true ], [ 'Content-Type' => 'text/xml; charset=utf-8' ]]; } public static function executeNewsPost($relativeUri) { $post = Post::load(ltrim($relativeUri, '/')); if (!$post) { return ['page/404', []]; } return ['content/news-post', [ 'post' => $post, View::LAYOUT_PARAMS => [ 'showRssLink' => true ] ]]; } public static function executeFaqPost($relativeUri) { $post = Post::load(ltrim($relativeUri, '/')); if (!$post) { return ['page/404', []]; } return ['content/faq-post', [ 'post' => $post, ]]; } public static function executeRoadmap() { return ['content/roadmap', [ 'tasks' => Asana::listRoadmapTasks() ]]; } public static function executePressKit() { $zipFileName = 'lbry-press-kit-' . date('Y-m-d') . '.zip'; $zipPath = tempnam('/tmp', $zipFileName); $zip = new ZipArchive(); $zip->open($zipPath, ZipArchive::OVERWRITE); // $pageHtml = View::render('page/press-kit', ['showHeader' => false]); // $html = << // // // LBRY Press Kit // // // // // $pageHtml // // //EOD; // // $zip->addFromString('press.html', $html); foreach(glob(ROOT_DIR . '/web/img/press/*') as $productImgPath) { $imgPathTokens = explode('/', $productImgPath); $imgName = $imgPathTokens[count($imgPathTokens) - 1]; $zip->addFile($productImgPath, '/logo_and_product/' . $imgName); } foreach(glob(ROOT_DIR . '/posts/bio/*.md') as $bioPath) { list($metadata, $bioHtml) = View::parseMarkdown($bioPath); $zip->addFile($bioPath, '/team_bios/' . $metadata['name'] . ' - ' . $metadata['role'] . '.txt'); } foreach(array_filter(glob(ROOT_DIR . '/web/img/team/*.jpg'), function($path) { return strpos($path, 'spooner') === false; }) as $bioImgPath) { $imgPathTokens = explode('/', $bioImgPath); $imgName = str_replace('644x450', 'lbry', $imgPathTokens[count($imgPathTokens) - 1]); $zip->addFile($bioImgPath, '/team_photos/' . $imgName); } $zip->close(); return ['internal/zip', [ '_no_layout' => true, 'zipPath' => $zipPath ], [ 'Content-Disposition' => 'attachment;filename=' . $zipFileName, 'X-Content-Type-Options' => 'nosniff', 'Content-Type' => 'application/zip', 'Content-Length' => filesize($zipPath), ]]; } public static function prepareBioPartial(array $vars) { $person = $vars['person']; $path = 'bio/' . $person . '.md'; list($metadata, $bioHtml) = View::parseMarkdown($path); $relativeImgSrc = '/img/team/' . $person . '-644x450.jpg'; $imgSrc = file_exists(ROOT_DIR . '/web' . $relativeImgSrc) ? $relativeImgSrc : '/img/team/spooner-644x450.jpg'; return $vars + $metadata + [ 'imgSrc' => $imgSrc, 'bioHtml' => $bioHtml, 'orientation' => 'vertical' ]; } public static function preparePostAuthorPartial(array $vars) { $post = $vars['post']; return [ 'authorName' => $post->getAuthorName(), 'photoImgSrc' => $post->getAuthorPhoto(), 'authorBioHtml' => $post->getAuthorBioHtml() ]; } }