/** * @return Smarty Locally-usable Smarty instance. */ function get_smarty_instance($user) { $s = new Smarty(); $s->compile_dir = join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), '..', 'templates', 'cache')); $s->cache_dir = join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), '..', 'templates', 'cache')); $s->template_dir = join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), '..', 'templates')); $s->config_dir = join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), '..', 'templates')); $s->assign('domain', get_domain_name()); $s->assign('base_dir', get_base_dir()); $s->assign('base_href', get_base_href()); $s->assign('constants', get_defined_constants()); $s->assign('providers', get_map_providers()); $s->assign('request', array('get' => $_GET, 'post' => $_POST, 'uri' => $_SERVER['REQUEST_URI'], 'query' => $_SERVER['QUERY_STRING'], 'authenticated' => isset($user), 'user' => $user)); $s->register_modifier('nice_placename', 'nice_placename'); $s->register_modifier('nice_domainname', 'nice_domainname'); $s->register_modifier('nice_relativetime', 'nice_relativetime'); $s->register_modifier('nice_datetime', 'nice_datetime'); $s->register_modifier('nice_degree', 'nice_degree'); $s->register_modifier('decode_utf8', 'decode_utf8'); return $s; }
$query = array("place" => $print['place_woeid']); $nearby_prints = get_prints($context->db, $context->user, $query, 200); $nearby_prints = $nearby_prints[0]; if ($nearby_prints) { //print var_dump($nearby_prints); $rdm_keys = array_rand($nearby_prints, $num_req = 6); $rdm_nearby = array(); foreach ($rdm_keys as $key => $val) { $rdm_nearby[] = $nearby_prints[$val]; } $context->sm->assign('nearby_prints', $rdm_nearby); } $context->sm->assign('nearby_prints_json', json_encode($nearby_prints)); $context->sm->assign('zoom', $pages[0]['zoom']); $context->sm->assign('activity', get_print_activity($context->db, $print_id, true)); $context->sm->assign('providers', get_map_providers()); if ($context->type == 'text/html') { header("Content-Type: text/html; charset=UTF-8"); print $context->sm->fetch("atlas.html.tpl"); } elseif ($context->type == 'application/paperwalking+xml') { header("Content-Type: application/paperwalking+xml; charset=UTF-8"); header("Access-Control-Allow-Origin: *"); print '<' . '?xml version="1.0" encoding="utf-8"?' . ">\n"; print $context->sm->fetch("atlas.xml.tpl"); } elseif ($context->type == 'application/geo+json' || $context->type == 'application/json') { header("Content-Type: application/geo+json; charset=UTF-8"); echo print_to_geojson($print, $pages) . "\n"; } else { header('HTTP/1.1 400'); die("Unknown type.\n"); }
prints.place_woeid, prints.region_woeid, prints.country_woeid, prints.private, prints.cloned, prints.refreshed, pages.provider FROM prints LEFT JOIN pages ON pages.print_id=prints.id GROUP BY prints.id ORDER BY created DESC EOQ; $res = $context->db->query($query); if (PEAR::isError($res)) { die_with_code(500, $res->message); } $rsp = array(); while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) { $rsp[] = array("pages" => (int) $row['pages'], "created" => date("c", strtotime($row['created'])), "composed" => date("c", strtotime($row['composed'])), "orientation" => $row['orientation'], "layout" => $row['layout'], "provider" => $row['provider']); } //echo json_encode($rsp); $metric_data = json_encode($rsp); $context->sm->assign('metric_data', $metric_data); $providers = get_map_providers(); $providers_by_name = array(); foreach ($providers as $i => $provider) { $providers_by_name[$provider[0]] = $provider[1]; } $context->sm->assign('providers', json_encode($providers_by_name)); header("Content-Type: text/html; charset=UTF-8"); print $context->sm->fetch("metrics.html.tpl");
function get_print(&$dbh, $print_id) { $atlas_part = false; if (preg_match('#^(\\w+)/(\\w+)$#', $print_id, $m)) { list($print_id, $page_number) = array($m[1], $m[2]); } $q = "SELECT layout, atlas_pages,\n paper_size, orientation, provider, private,\n pdf_url, preview_url, geotiff_url,\n id, title, text, form_id, north, south, east, west, zoom,\n (north + south) / 2 AS latitude,\n (east + west) / 2 AS longitude,\n UNIX_TIMESTAMP(created) AS created,\n UNIX_TIMESTAMP(composed) AS composed,\n UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(created) AS age,\n country_name, country_woeid, region_name, region_woeid, place_name, place_woeid,\n user_id, progress, cloned, refreshed\n FROM prints\n WHERE id = ?"; $res = $dbh->query($q, $print_id); if (PEAR::isError($res)) { die_with_code(500, "{$res->message}\n{$q}\n"); } $row = $res->fetchRow(DB_FETCHMODE_ASSOC); if (empty($row)) { return null; } // TODO: ditch special-case for provider if (empty($row['provider'])) { $row['provider'] = reset(reset(get_map_providers())); } // TODO: ditch special-case for pdf_url if (empty($row['pdf_url']) && S3_BUCKET_ID) { $row['pdf_url'] = sprintf('http://%s.s3.amazonaws.com/prints/%s/walking-paper-%s.pdf', S3_BUCKET_ID, $row['id'], $row['id']); } // TODO: ditch special-case for preview_url if (empty($row['preview_url']) && S3_BUCKET_ID) { $row['preview_url'] = sprintf('http://%s.s3.amazonaws.com/prints/%s/preview.png', S3_BUCKET_ID, $row['id']); } if ($page_number) { $row['selected_page'] = get_print_page($dbh, $print_id, $page_number); } return $row; }