} else { // no such chart error_chart_not_found($id); } } /** * API: copy/duplicate/fork a chart * * @param chart_id chart id */ $app->post('/charts/:id/copy', function ($chart_id) use($app) { if_chart_is_readable($chart_id, function ($user, $chart) use($app) { try { $copy = ChartQuery::create()->copyChart($chart); $copy->setUser(DatawrapperSession::getUser()); $copy->save(); ok(array('id' => $copy->getId())); } catch (Exception $e) { error('io-error', $e->getMessage()); } }); }); $app->post('/charts/:id/publish', function ($chart_id) use($app) { disable_cache($app); if_chart_is_writable($chart_id, function ($user, $chart) use($app) { $justLocal = $app->request()->get('local') == 1; $chart->publish(); publish_chart($user, $chart, false, $justLocal); ok(); }); }); $app->get('/charts/:id/publish/status', function ($chart_id) use($app) {
if (!empty($GLOBALS['dw_config']['debug_export_test_cases'])) { if_chart_exists($chart_id, function ($chart) use($app) { $json = $chart->serialize(); $payload = json_decode($app->request()->getBody(), true); $name = $payload['id']; $json['_data'] = $chart->loadData(); $json['_sig'] = $payload['signature']; if (empty($name)) { error('', 'no name specified'); } else { $name = str_replace(" ", "-", $name); $json['_id'] = $name; file_put_contents("../../test/test-charts/" . $name . ".json", json_encode($json)); ok(); } }); } }); $app->get('/charts/:id/vis-data', function ($chart_id) { if_chart_is_readable($chart_id, function ($user, $chart) { try { $allVis = array(); foreach (DatawrapperVisualization::all() as $vis) { $allVis[$vis['id']] = $vis; } ok(array('visualizations' => $allVis, 'vis' => DatawrapperVisualization::get($chart->getType()), 'themes' => DatawrapperTheme::all())); } catch (Exception $e) { error('io-error', $e->getMessage()); } }); });