aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTeromene <teromene@teromene.fr>2016-10-11 16:37:42 +0100
committerTeromene <teromene@teromene.fr>2016-10-13 16:37:43 +0100
commit5e148f8a529abf72256ef74ed149d56a5b27bd72 (patch)
tree541690731c5678a0f1cccf51a0a861c2d6acdd8b
parentdc8e03bfc415d3771a45ccd324078a48b7466cbe (diff)
downloadShaarli-5e148f8a529abf72256ef74ed149d56a5b27bd72.tar.gz
Shaarli-5e148f8a529abf72256ef74ed149d56a5b27bd72.tar.zst
Shaarli-5e148f8a529abf72256ef74ed149d56a5b27bd72.zip
Archive.org plugin: do not propose archival of private notes
Fixes #637
-rw-r--r--plugins/archiveorg/archiveorg.php3
-rw-r--r--tests/plugins/PluginArchiveorgTest.php102
2 files changed, 101 insertions, 4 deletions
diff --git a/plugins/archiveorg/archiveorg.php b/plugins/archiveorg/archiveorg.php
index 7d172584..03d13d0e 100644
--- a/plugins/archiveorg/archiveorg.php
+++ b/plugins/archiveorg/archiveorg.php
@@ -17,6 +17,9 @@ function hook_archiveorg_render_linklist($data)
17 $archive_html = file_get_contents(PluginManager::$PLUGINS_PATH . '/archiveorg/archiveorg.html'); 17 $archive_html = file_get_contents(PluginManager::$PLUGINS_PATH . '/archiveorg/archiveorg.html');
18 18
19 foreach ($data['links'] as &$value) { 19 foreach ($data['links'] as &$value) {
20 if($value['private'] && preg_match('/^\?[a-zA-Z0-9-_@]{6}($|&|#)/', $value['real_url'])) {
21 continue;
22 }
20 $archive = sprintf($archive_html, $value['url']); 23 $archive = sprintf($archive_html, $value['url']);
21 $value['link_plugin'][] = $archive; 24 $value['link_plugin'][] = $archive;
22 } 25 }
diff --git a/tests/plugins/PluginArchiveorgTest.php b/tests/plugins/PluginArchiveorgTest.php
index dbc52bc8..4daa4c9d 100644
--- a/tests/plugins/PluginArchiveorgTest.php
+++ b/tests/plugins/PluginArchiveorgTest.php
@@ -7,8 +7,8 @@
7require_once 'plugins/archiveorg/archiveorg.php'; 7require_once 'plugins/archiveorg/archiveorg.php';
8 8
9/** 9/**
10 * Class PlugQrcodeTest 10 * Class PluginArchiveorgTest
11 * Unit test for the QR-Code plugin 11 * Unit test for the archiveorg plugin
12 */ 12 */
13class PluginArchiveorgTest extends PHPUnit_Framework_TestCase 13class PluginArchiveorgTest extends PHPUnit_Framework_TestCase
14{ 14{
@@ -21,21 +21,25 @@ class PluginArchiveorgTest extends PHPUnit_Framework_TestCase
21 } 21 }
22 22
23 /** 23 /**
24 * Test render_linklist hook. 24 * Test render_linklist hook on external links.
25 */ 25 */
26 function testArchiveorgLinklist() 26 function testArchiveorgLinklistOnExternalLinks()
27 { 27 {
28 $str = 'http://randomstr.com/test'; 28 $str = 'http://randomstr.com/test';
29
29 $data = array( 30 $data = array(
30 'title' => $str, 31 'title' => $str,
31 'links' => array( 32 'links' => array(
32 array( 33 array(
33 'url' => $str, 34 'url' => $str,
35 'private' => 0,
36 'real_url' => $str
34 ) 37 )
35 ) 38 )
36 ); 39 );
37 40
38 $data = hook_archiveorg_render_linklist($data); 41 $data = hook_archiveorg_render_linklist($data);
42
39 $link = $data['links'][0]; 43 $link = $data['links'][0];
40 // data shouldn't be altered 44 // data shouldn't be altered
41 $this->assertEquals($str, $data['title']); 45 $this->assertEquals($str, $data['title']);
@@ -44,5 +48,95 @@ class PluginArchiveorgTest extends PHPUnit_Framework_TestCase
44 // plugin data 48 // plugin data
45 $this->assertEquals(1, count($link['link_plugin'])); 49 $this->assertEquals(1, count($link['link_plugin']));
46 $this->assertNotFalse(strpos($link['link_plugin'][0], $str)); 50 $this->assertNotFalse(strpos($link['link_plugin'][0], $str));
51
52 }
53
54 /**
55 * Test render_linklist hook on internal links.
56 */
57 function testArchiveorgLinklistOnInternalLinks()
58 {
59 $internalLink1 = 'http://shaarli.shaarli/?qvMAqg';
60 $internalLinkRealURL1 = '?qvMAqg';
61
62 $internalLink2 = 'http://shaarli.shaarli/?2_7zww';
63 $internalLinkRealURL2 = '?2_7zww';
64
65 $internalLink3 = 'http://shaarli.shaarli/?z7u-_Q';
66 $internalLinkRealURL3 = '?z7u-_Q';
67
68 $data = array(
69 'title' => $internalLink1,
70 'links' => array(
71 array(
72 'url' => $internalLink1,
73 'private' => 0,
74 'real_url' => $internalLinkRealURL1
75 ),
76 array(
77 'url' => $internalLink1,
78 'private' => 1,
79 'real_url' => $internalLinkRealURL1
80 ),
81 array(
82 'url' => $internalLink2,
83 'private' => 0,
84 'real_url' => $internalLinkRealURL2
85 ),
86 array(
87 'url' => $internalLink2,
88 'private' => 1,
89 'real_url' => $internalLinkRealURL2
90 ),
91 array(
92 'url' => $internalLink3,
93 'private' => 0,
94 'real_url' => $internalLinkRealURL3
95 ),
96 array(
97 'url' => $internalLink3,
98 'private' => 1,
99 'real_url' => $internalLinkRealURL3
100 )
101 )
102 );
103
104
105 $data = hook_archiveorg_render_linklist($data);
106
107 // Case n°1: first link type, public
108 $link = $data['links'][0];
109
110 $this->assertEquals(1, count($link['link_plugin']));
111 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink1));
112
113 // Case n°2: first link type, private
114 $link = $data['links'][1];
115
116 $this->assertArrayNotHasKey('link_plugin', $link);
117
118 // Case n°3: second link type, public
119 $link = $data['links'][2];
120
121 $this->assertEquals(1, count($link['link_plugin']));
122 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink2));
123
124 // Case n°4: second link type, private
125 $link = $data['links'][3];
126
127 $this->assertArrayNotHasKey('link_plugin', $link);
128
129 // Case n°5: third link type, public
130 $link = $data['links'][4];
131
132 $this->assertEquals(1, count($link['link_plugin']));
133 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink3));
134
135 // Case n°6: third link type, private
136 $link = $data['links'][5];
137
138 $this->assertArrayNotHasKey('link_plugin', $link);
139
47 } 140 }
141
48} 142}