X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2Futils%2FReferenceLinkDB.php;h=e887aa78c2251747c46cf37fab4359c782b32b36;hb=cb7940e2deacba66f2510816732be654b255cc70;hp=6b16c9e8759600ef0e9430408ad8bf5b69dd1ca3;hpb=c3dfd8995921083ff7250c25d0b6ab1184b91aff;p=github%2Fshaarli%2FShaarli.git diff --git a/tests/utils/ReferenceLinkDB.php b/tests/utils/ReferenceLinkDB.php index 6b16c9e8..e887aa78 100644 --- a/tests/utils/ReferenceLinkDB.php +++ b/tests/utils/ReferenceLinkDB.php @@ -4,7 +4,7 @@ */ class ReferenceLinkDB { - public static $NB_LINKS_TOTAL = 8; + public static $NB_LINKS_TOTAL = 9; private $_links = array(); private $_publicCount = 0; @@ -21,7 +21,7 @@ class ReferenceLinkDB '?WDWyig', 'Stallman has a beard and is part of the Free Software Foundation (or not). Seriously, read this. #hashtag', 0, - DateTime::createFromFormat('Ymd_His', '20150310_114651'), + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114651'), 'sTuff', null, 'WDWyig' @@ -33,19 +33,29 @@ class ReferenceLinkDB '?WDWyig', 'Used to test links reordering.', 0, - DateTime::createFromFormat('Ymd_His', '20100310_101010'), + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20100310_101010'), 'ut' ); + $this->addLink( + 9, + 'PSR-2: Coding Style Guide', + 'http://www.php-fig.org/psr/psr-2/', + 'This guide extends and expands on PSR-1, the basic coding standard.', + 0, + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20121206_152312'), + '' + ); + $this->addLink( 8, 'Free as in Freedom 2.0 @website', 'https://static.fsf.org/nosvn/faif-2.0.pdf', 'Richard Stallman and the Free Software Revolution. Read this. #hashtag', 0, - DateTime::createFromFormat('Ymd_His', '20150310_114633'), + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114633'), 'free gnu software stallman -exclude stuff hashtag', - DateTime::createFromFormat('Ymd_His', '20160803_093033') + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20160803_093033') ); $this->addLink( @@ -54,9 +64,9 @@ class ReferenceLinkDB 'http://mediagoblin.org/', 'A free software media publishing platform #hashtagOther', 0, - DateTime::createFromFormat('Ymd_His', '20130614_184135'), + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20130614_184135'), 'gnu media web .hidden hashtag', - null, + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20130615_184230'), 'IuWvgA' ); @@ -66,7 +76,7 @@ class ReferenceLinkDB 'https://dvcs.w3.org/hg/markup-validator/summary', 'Mercurial repository for the W3C Validator #private', 1, - DateTime::createFromFormat('Ymd_His', '20141125_084734'), + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20141125_084734'), 'css html w3c web Mercurial' ); @@ -76,7 +86,7 @@ class ReferenceLinkDB 'http://ars.userfriendly.org/cartoons/?id=20121206', 'Naming conventions... #private', 0, - DateTime::createFromFormat('Ymd_His', '20121206_142300'), + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20121206_142300'), 'dev cartoon web' ); @@ -86,7 +96,7 @@ class ReferenceLinkDB 'http://ars.userfriendly.org/cartoons/?id=20010306', 'Tropical printing', 0, - DateTime::createFromFormat('Ymd_His', '20121206_172539'), + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20121206_172539'), 'samba cartoon web' ); @@ -96,7 +106,7 @@ class ReferenceLinkDB 'http://geek-and-poke.com/', '', 1, - DateTime::createFromFormat('Ymd_His', '20121206_182539'), + DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20121206_182539'), 'dev cartoon tag1 tag2 tag3 tag4 ' ); } @@ -115,7 +125,7 @@ class ReferenceLinkDB 'tags' => $tags, 'created' => $date, 'updated' => $updated, - 'shorturl' => $shorturl ? $shorturl : smallHash($date->format('Ymd_His') . $id), + 'shorturl' => $shorturl ? $shorturl : smallHash($date->format(LinkDB::LINK_DATE_FORMAT) . $id), ); $this->_links[$id] = $link; @@ -131,12 +141,34 @@ class ReferenceLinkDB */ public function write($filename) { + $this->reorder(); file_put_contents( $filename, '_links))).' */ ?>' ); } + /** + * Reorder links by creation date (newest first). + * + * Also update the urls and ids mapping arrays. + * + * @param string $order ASC|DESC + */ + public function reorder($order = 'DESC') + { + // backward compatibility: ignore reorder if the the `created` field doesn't exist + if (! isset(array_values($this->_links)[0]['created'])) { + return; + } + + $order = $order === 'ASC' ? -1 : 1; + // Reorder array by dates. + usort($this->_links, function($a, $b) use ($order) { + return $a['created'] < $b['created'] ? 1 * $order : -1 * $order; + }); + } + /** * Returns the number of links in the reference data */ @@ -161,8 +193,23 @@ class ReferenceLinkDB return $this->_privateCount; } + /** + * Returns the number of links without tag + */ + public function countUntaggedLinks() + { + $cpt = 0; + foreach ($this->_links as $link) { + if (empty($link['tags'])) { + ++$cpt; + } + } + return $cpt; + } + public function getLinks() { + $this->reorder(); return $this->_links; }