From feeceaf1fa31a0e2a3761e3fe3d1488716522f29 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Fri, 12 Feb 2010 16:55:11 -0500 Subject: [PATCH] save post for admin --- .../backends/ComicPressBackendFilesystem.inc | 30 +++--- .../ComicPressBackendFilesystemAdminTest.php | 94 +++++++++++++++++++ 2 files changed, 112 insertions(+), 12 deletions(-) create mode 100644 test/backends/ComicPressBackendFilesystemAdminTest.php diff --git a/classes/backends/ComicPressBackendFilesystem.inc b/classes/backends/ComicPressBackendFilesystem.inc index 4578c63..636cf4a 100644 --- a/classes/backends/ComicPressBackendFilesystem.inc +++ b/classes/backends/ComicPressBackendFilesystem.inc @@ -376,23 +376,29 @@ class ComicPressBackendFilesystemAdmin { function save_post($post_id) { if (isset($_POST['cp'])) { $info = $_POST['cp']; - if (isset($info['attachments'])) { - $image_meta_updates = array(); - foreach ($info['attachments'] as $id => $properties) { - if ($backend = ComicPressBackend::generate_from_id($id)) { - if (is_a($backend, 'ComicPressBackendFilesystem')) { - $image_meta_updates[$backend->root] = array(); - foreach (array('alt_text', 'title_text') as $field) { - if (isset($properties[$field])) { - $image_meta_updates[$backend->root][$field] = strip_tags($properties[$field]); - } else { - $image_meta_updates[$backend->root][$field] = ''; + if (is_array($info)) { + if (isset($info['attachments'])) { + if (is_array($info['attachments'])) { + $image_meta_updates = array(); + foreach ($info['attachments'] as $id => $properties) { + if (is_array($properties)) { + if ($backend = ComicPressBackend::generate_from_id($id)) { + if (is_a($backend, 'ComicPressBackendFilesystem')) { + $image_meta_updates[$backend->root] = array(); + foreach (array('alt_text', 'title_text') as $field) { + if (isset($properties[$field])) { + $image_meta_updates[$backend->root][$field] = strip_tags($properties[$field]); + } else { + $image_meta_updates[$backend->root][$field] = ''; + } + } + } } } } + update_post_meta($post_id, 'backend_filesystem_image_meta', $image_meta_updates); } } - update_post_meta($post_id, 'backend_filesystem_image_meta', $image_meta_updates); } } } diff --git a/test/backends/ComicPressBackendFilesystemAdminTest.php b/test/backends/ComicPressBackendFilesystemAdminTest.php new file mode 100644 index 0000000..13431a3 --- /dev/null +++ b/test/backends/ComicPressBackendFilesystemAdminTest.php @@ -0,0 +1,94 @@ + 'test'), array() + ), + array( + array('cp' => array( + 'attachments' => 'test' + )), array() + ), + array( + array('cp' => array( + 'attachments' => array( + 'bad' => 'bad' + ) + )), array() + ), + array( + array('cp' => array( + 'attachments' => array( + 'filesystem' => 'bad' + ) + )), array() + ), + array( + array('cp' => array( + 'attachments' => array( + 'filesystem' => array( + 'bad' => 'bad' + ) + ) + )), array( + 'root' => array( + 'alt_text' => '', + 'title_text' => '' + ) + ) + ), + array( + array('cp' => array( + 'attachments' => array( + 'filesystem' => array( + 'alt_text' => 'alt' + ) + ) + )), array( + 'root' => array( + 'alt_text' => 'alt', + 'title_text' => '' + ) + ) + ), + ); + } + + /** + * @dataProvider providerTestSavePost + */ + function testSavePost($post, $expected_post_meta) { + $filesystem = $this->getMock('ComicPressBackendFilesystem'); + $filesystem->root = 'root'; + + $faulty = (object)array('not a' => 'backend'); + + $factory = $this->getMock('ComicPressSavePostBackend', array('generate_from_id')); + $factory->expects($this->any()) + ->method('generate_from_id') + ->will($this->returnCallback(function($id) use ($filesystem, $faulty) { + return ($id == 'filesystem') ? $filesystem : $faulty; + })); + + $comicpress = ComicPress::get_instance(true); + $comicpress->backends = array($factory); + + $_POST = $post; + + update_post_meta(1, 'backend_filesystem_image_meta', array()); + + ComicPressBackendFilesystemAdmin::save_post(1); + + $this->assertEquals($expected_post_meta, get_post_meta(1, 'backend_filesystem_image_meta', true)); + } +}