From 7af9a41881ed0b9d44d18a0ce03a123a8441adf5 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Thu, 20 Oct 2016 11:31:52 +0200 Subject: Minor code cleanup: PHPDoc, spelling, unused variables, etc. --- application/Updater.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'application/Updater.php') diff --git a/application/Updater.php b/application/Updater.php index b6cbc56c..90913235 100644 --- a/application/Updater.php +++ b/application/Updater.php @@ -37,7 +37,7 @@ class Updater * * @param array $doneUpdates Updates which are already done. * @param LinkDB $linkDB LinkDB instance. - * @oaram ConfigManager $conf Configuration Manager instance. + * @param ConfigManager $conf Configuration Manager instance. * @param boolean $isLoggedIn True if the user is logged in. */ public function __construct($doneUpdates, $linkDB, $conf, $isLoggedIn) -- cgit v1.2.3 From f21abf329234ae4d5a1d56c5a9dd0bc11f80bac8 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Thu, 20 Oct 2016 21:19:51 +0200 Subject: LinkDB: update datastore method names Relates to https://github.com/shaarli/Shaarli/issues/95 Signed-off-by: VirtualTam --- application/Updater.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'application/Updater.php') diff --git a/application/Updater.php b/application/Updater.php index 90913235..36eddd4f 100644 --- a/application/Updater.php +++ b/application/Updater.php @@ -143,7 +143,7 @@ class Updater $link['tags'] = implode(' ', array_unique(LinkFilter::tagsStrToArray($link['tags'], true))); $this->linkDB[$link['linkdate']] = $link; } - $this->linkDB->savedb($this->conf->get('resource.page_cache')); + $this->linkDB->save($this->conf->get('resource.page_cache')); return true; } -- cgit v1.2.3 From 1dc37f9cf8397e6050c4d5d981da263e6333a849 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Mon, 28 Nov 2016 16:14:33 +0100 Subject: Update method to use the new ID system, which replaces linkdate primary keys. creation and update dates are now DateTime objects. Since this update is very sensitve (changing the whole database), the datastore will be automatically backed up into the file datastore..php. --- application/Updater.php | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) (limited to 'application/Updater.php') diff --git a/application/Updater.php b/application/Updater.php index 36eddd4f..94b63990 100644 --- a/application/Updater.php +++ b/application/Updater.php @@ -138,10 +138,10 @@ class Updater public function updateMethodRenameDashTags() { $linklist = $this->linkDB->filterSearch(); - foreach ($linklist as $link) { + foreach ($linklist as $key => $link) { $link['tags'] = preg_replace('/(^| )\-/', '$1', $link['tags']); $link['tags'] = implode(' ', array_unique(LinkFilter::tagsStrToArray($link['tags'], true))); - $this->linkDB[$link['linkdate']] = $link; + $this->linkDB[$key] = $link; } $this->linkDB->save($this->conf->get('resource.page_cache')); return true; @@ -215,6 +215,48 @@ class Updater } return true; } + + /** + * Update the database to use the new ID system, which replaces linkdate primary keys. + * Also, creation and update dates are now DateTime objects. + * + * Since this update is very sensitve (changing the whole database), the datastore will be + * automatically backed up into the file datastore..php. + * + * @return bool true if the update is successful, false otherwise. + */ + public function updateMethodDatastoreIds() + { + // up to date database + if (isset($this->linkDB[0])) { + return true; + } + + $save = $this->conf->get('resource.data_dir') .'/datastore.'. date('YmdHis') .'.php'; + copy($this->conf->get('resource.datastore'), $save); + + $links = array(); + foreach ($this->linkDB as $offset => $value) { + $links[] = $value; + unset($this->linkDB[$offset]); + } + $links = array_reverse($links); + $cpt = 0; + foreach ($links as $l) { + $l['created'] = DateTime::createFromFormat('Ymd_His', $l['linkdate']); + if (! empty($l['updated'])) { + $l['updated'] = DateTime::createFromFormat('Ymd_His', $l['updated']); + } + unset($l['linkdate']); + $l['id'] = $cpt; + $this->linkDB[$cpt++] = $l; + } + + $this->linkDB->save($this->conf->get('resource.page_cache')); + $this->linkDB->reorder(); + + return true; + } } /** -- cgit v1.2.3 From 01878a75b93b9966f7366ea2937c118bbc3e459e Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Mon, 28 Nov 2016 16:16:44 +0100 Subject: Apply the new ID system accros the whole codebase --- application/Updater.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'application/Updater.php') diff --git a/application/Updater.php b/application/Updater.php index 94b63990..16c8c376 100644 --- a/application/Updater.php +++ b/application/Updater.php @@ -218,7 +218,7 @@ class Updater /** * Update the database to use the new ID system, which replaces linkdate primary keys. - * Also, creation and update dates are now DateTime objects. + * Also, creation and update dates are now DateTime objects (done by LinkDB). * * Since this update is very sensitve (changing the whole database), the datastore will be * automatically backed up into the file datastore..php. @@ -243,10 +243,6 @@ class Updater $links = array_reverse($links); $cpt = 0; foreach ($links as $l) { - $l['created'] = DateTime::createFromFormat('Ymd_His', $l['linkdate']); - if (! empty($l['updated'])) { - $l['updated'] = DateTime::createFromFormat('Ymd_His', $l['updated']); - } unset($l['linkdate']); $l['id'] = $cpt; $this->linkDB[$cpt++] = $l; -- cgit v1.2.3 From d592daea8343bb4dfecff5d97e93699581ccc58c Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Mon, 28 Nov 2016 18:24:15 +0100 Subject: Add a persistent 'shorturl' key to all links All existing link will keep their permalinks. New links will have smallhash generated with date+id. The purpose of this is to avoid collision between links due to their creation date. --- application/Updater.php | 3 +++ 1 file changed, 3 insertions(+) (limited to 'application/Updater.php') diff --git a/application/Updater.php b/application/Updater.php index 16c8c376..f0d02814 100644 --- a/application/Updater.php +++ b/application/Updater.php @@ -223,6 +223,9 @@ class Updater * Since this update is very sensitve (changing the whole database), the datastore will be * automatically backed up into the file datastore..php. * + * LinkDB also adds the field 'shorturl' with the precedent format (linkdate smallhash), + * which will be saved by this method. + * * @return bool true if the update is successful, false otherwise. */ public function updateMethodDatastoreIds() -- cgit v1.2.3