1<?php
2namespace Elgg\Likes\Upgrades;
3
4use Elgg\Upgrade\AsynchronousUpgrade;
5use Elgg\Upgrade\Result;
6
7class PublicLikesAnnotations implements AsynchronousUpgrade {
8
9	/**
10	 * {@inheritdoc}
11	 */
12	public function getVersion() {
13		return 2017120700;
14	}
15
16	/**
17	 * {@inheritdoc}
18	 */
19	public function needsIncrementOffset() {
20		return false;
21	}
22
23	/**
24	 * {@inheritdoc}
25	 */
26	public function shouldBeSkipped() {
27		return empty($this->countItems());
28	}
29
30	/**
31	 * {@inheritdoc}
32	 */
33	public function countItems() {
34		$dbprefix = elgg_get_config('dbprefix');
35		$public = ACCESS_PUBLIC;
36
37		$query = "SELECT COUNT(*) as total
38			FROM {$dbprefix}annotations
39			WHERE name = 'likes'
40			AND access_id != {$public}
41		";
42
43		$row = elgg()->db->getDataRow($query);
44		if (empty($row)) {
45			return 0;
46		}
47
48		return (int) $row->total;
49	}
50
51	/**
52	 * {@inheritDoc}
53	 */
54	public function run(Result $result, $offset) {
55		$dbprefix = elgg_get_config('dbprefix');
56		$public = ACCESS_PUBLIC;
57
58		$query = "UPDATE {$dbprefix}annotations
59			SET access_id = {$public}
60			WHERE name = 'likes'
61			AND access_id != {$public}
62		";
63
64		$count = elgg()->db->updateData($query, true, []);
65
66		$result->addSuccesses($count);
67	}
68}