Passed
Pull Request — master (#117)
by Spuds
07:11
created

elkarte1_1_importer   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 15
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 15
rs 10
c 0
b 0
f 0
wmc 1
lcom 0
cbo 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A getName() 0 3 1
1
<?php
2
/**
3
 * @name      OpenImporter
4
 * @copyright OpenImporter contributors
5
 * @license   BSD https://opensource.org/licenses/BSD-3-Clause
6
 *
7
 * @version 1.0
8
 *
9
 * This file contains code based on:
10
 *
11
 * Simple Machines Forum (SMF)
12
 * copyright:	2011 Simple Machines (http://www.simplemachines.org)
13
 * license:	BSD, See included LICENSE.TXT for terms and conditions.
14
 */
15
16
/**
17
 * The class contains code that allows the Importer to obtain settings
18
 * from the ElkArte installation.
19
 */
20
class elkarte1_1_importer extends Importers\SmfCommonSource
21
{
22
	/** @var string */
23
	public $attach_extension = 'elk';
24
25
	/**
26
	 * @return string
27
	 */
28
	public function getName()
29
	{
30
		return 'ElkArte 1.1';
31
	}
32
}
33
34
class elkarte1_1_importer_step1 extends Importers\SmfCommonSourceStep1
35
{
36
}
37
38
class elkarte1_1_importer_step2 extends Importers\SmfCommonSourceStep2
39
{
40
	/**
41
	 * Repair any wrong number of personal messages
42
	 */
43
	public function substep0()
44
	{
45
		$to_prefix = $this->config->to_prefix;
46
47
		// Get all members with wrong number of personal messages and fix it
48
		$request = $this->db->query("
49
			SELECT
50
				mem.id_member, COUNT(pmr.id_pm) AS real_num, mem.personal_messages
51
			FROM {$to_prefix}members AS mem
52
				LEFT JOIN {$to_prefix}pm_recipients AS pmr ON (mem.id_member = pmr.id_member AND pmr.deleted = 0)
53
			GROUP BY mem.id_member
54
			HAVING real_num != personal_messages");
55
		while ($row = $this->db->fetch_assoc($request))
56
		{
57
			$this->db->query("
58
				UPDATE {$to_prefix}members
59
				SET personal_messages = $row[real_num]
60
				WHERE id_member = $row[id_member]
61
				LIMIT 1");
62
63
			pastTime(0);
64
		}
65
		$this->db->free_result($request);
66
67
		$request = $this->db->query("
68
			SELECT
69
				mem.id_member, COUNT(pmr.id_pm) AS real_num, mem.unread_messages
70
			FROM {$to_prefix}members AS mem
71
				LEFT JOIN {$to_prefix}pm_recipients AS pmr ON (mem.id_member = pmr.id_member AND pmr.deleted = 0 AND pmr.is_read = 0)
72
			GROUP BY mem.id_member
73
			HAVING real_num != unread_messages");
74
		while ($row = $this->db->fetch_assoc($request))
75
		{
76
			$this->db->query("
77
				UPDATE {$to_prefix}members
78
				SET unread_messages = $row[real_num]
79
				WHERE id_member = $row[id_member]
80
				LIMIT 1");
81
82
			pastTime(0);
83
		}
84
		$this->db->free_result($request);
85
	}
86
87
	/**
88
	 * Count the topic likes based on first message id
89
	 */
90
	public function substep100()
91
	{
92
		$to_prefix = $this->config->to_prefix;
93
94
		// Set the number of topic likes based on likes to the first message in the topic
95
		$request = $this->db->query("
96
			SELECT
97
				COUNT(*) AS count, t.id_topic
98
			FROM {$to_prefix}message_likes AS ml
99
				INNER JOIN {$to_prefix}topics AS t ON (t.id_first_msg = ml.id_msg)
100
			GROUP BY t.id_topic");
101
		while ($row = $this->db->fetch_assoc($request))
102
		{
103
			$this->db->query("
104
				UPDATE {$to_prefix}topics
105
				SET num_likes = $row[count]
106
				WHERE id_topic = $row[id_topic]
107
				LIMIT 1");
108
109
			pastTime(0);
110
		}
111
		$this->db->free_result($request);
112
	}
113
114
	/**
115
	 * Validate / Update member likes received
116
	 */
117
	public function substep101()
118
	{
119
		$to_prefix = $this->config->to_prefix;
120
121
		// Update the likes each member has received based on liked messages
122
		$request = $this->db->query("
123
			SELECT
124
				COUNT(*) AS count, id_poster
125
			FROM {$to_prefix}message_likes
126
			GROUP BY id_poster");
127
		while ($row = $this->db->fetch_assoc($request))
128
		{
129
			$this->db->query("
130
				UPDATE {$to_prefix}members
131
				SET likes_received = $row[count]
132
				WHERE id_member = $row[id_poster]
133
				LIMIT 1");
134
135
			pastTime(0);
136
		}
137
		$this->db->free_result($request);
138
	}
139
140
	/**
141
	 * Validate / Update likes given by a member
142
	 */
143
	public function substep102()
144
	{
145
		$to_prefix = $this->config->to_prefix;
146
147
		// Update the likes each member has given
148
		$request = $this->db->query("
149
			SELECT
150
				COUNT(*) AS count, id_member
151
			FROM {$to_prefix}message_likes
152
			GROUP BY id_member");
153
		while ($row = $this->db->fetch_assoc($request))
154
		{
155
			$this->db->query("
156
				UPDATE {$to_prefix}members
157
				SET likes_given = $row[count]
158
				WHERE id_member = $row[id_member]
159
				LIMIT 1");
160
161
			pastTime(0);
162
		}
163
		$this->db->free_result($request);
164
	}
165
}
166
167
class elkarte1_1_importer_step3 extends Importers\SmfCommonSourceStep3
168
{
169
}
170