Passed
Push — master ( 655649...07d5b2 )
by Spuds
06:48 queued 05:03
created

elkarte1_0_importer   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 13
Duplicated Lines 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
eloc 3
c 1
b 1
f 0
dl 0
loc 13
rs 10
wmc 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_0_importer extends Importers\SmfCommonSource
21
{
22
	/**
23
	 * @var string
24
	 */
25
	public $attach_extension = 'elk';
26
27
	/**
28
	 * @return string
29
	 */
30
	public function getName()
31
	{
32
		return 'ElkArte 1.0';
33
	}
34
}
35
36
class elkarte1_0_importer_step1 extends Importers\SmfCommonSourceStep1
37
{
38
}
39
40
class elkarte1_0_importer_step2 extends Importers\SmfCommonSourceStep2
41
{
42
	/**
43
	 * Repair any wrong number of personal messages
44
	 */
45
	public function substep0()
46
	{
47
		$to_prefix = $this->config->to_prefix;
48
49
		// Get all members with wrong number of personal messages and fix it
50
		$request = $this->db->query("
51
			SELECT
52
				mem.id_member, COUNT(pmr.id_pm) AS real_num, mem.personal_messages
53
			FROM {$to_prefix}members AS mem
54
				LEFT JOIN {$to_prefix}pm_recipients AS pmr ON (mem.id_member = pmr.id_member AND pmr.deleted = 0)
55
			GROUP BY mem.id_member
56
			HAVING real_num != personal_messages");
57
		while ($row = $this->db->fetch_assoc($request))
58
		{
59
			$this->db->query("
60
				UPDATE {$to_prefix}members
61
				SET personal_messages = $row[real_num]
62
				WHERE id_member = $row[id_member]
63
				LIMIT 1");
64
65
			pastTime(0);
66
		}
67
		$this->db->free_result($request);
68
69
		$request = $this->db->query("
70
			SELECT
71
				mem.id_member, COUNT(pmr.id_pm) AS real_num, mem.unread_messages
72
			FROM {$to_prefix}members AS mem
73
				LEFT JOIN {$to_prefix}pm_recipients AS pmr ON (mem.id_member = pmr.id_member AND pmr.deleted = 0 AND pmr.is_read = 0)
74
			GROUP BY mem.id_member
75
			HAVING real_num != unread_messages");
76
		while ($row = $this->db->fetch_assoc($request))
77
		{
78
			$this->db->query("
79
				UPDATE {$to_prefix}members
80
				SET unread_messages = $row[real_num]
81
				WHERE id_member = $row[id_member]
82
				LIMIT 1");
83
84
			pastTime(0);
85
		}
86
		$this->db->free_result($request);
87
	}
88
89
	/**
90
	 * Count the topic likes based on first message id
91
	 */
92
	public function substep100()
93
	{
94
		$to_prefix = $this->config->to_prefix;
95
96
		// Set the number of topic likes based on likes to the first message in the topic
97
		$request = $this->db->query("
98
			SELECT
99
				COUNT(*) AS count, t.id_topic
100
			FROM {$to_prefix}message_likes AS ml
101
				INNER JOIN {$to_prefix}topics AS t ON (t.id_first_msg = ml.id_msg)
102
			GROUP BY t.id_topic");
103
		while ($row = $this->db->fetch_assoc($request))
104
		{
105
			$this->db->query("
106
				UPDATE {$to_prefix}topics
107
				SET num_likes = $row[count]
108
				WHERE id_topic = $row[id_topic]
109
				LIMIT 1");
110
111
			pastTime(0);
112
		}
113
		$this->db->free_result($request);
114
	}
115
116
	/**
117
	 * Validate / Update member likes received
118
	 */
119
	public function substep101()
120
	{
121
		$to_prefix = $this->config->to_prefix;
122
123
		// Update the likes each member has received based on liked messages
124
		$request = $this->db->query("
125
			SELECT
126
				COUNT(*) AS count, id_poster
127
			FROM {$to_prefix}message_likes
128
			GROUP BY id_poster");
129
		while ($row = $this->db->fetch_assoc($request))
130
		{
131
			$this->db->query("
132
				UPDATE {$to_prefix}members
133
				SET likes_received = $row[count]
134
				WHERE id_member = $row[id_poster]
135
				LIMIT 1");
136
137
			pastTime(0);
138
		}
139
		$this->db->free_result($request);
140
	}
141
142
	/**
143
	 * Validate / Update likes given by a member
144
	 */
145
	public function substep102()
146
	{
147
		$to_prefix = $this->config->to_prefix;
148
149
		// Update the likes each member has given
150
		$request = $this->db->query("
151
			SELECT
152
				COUNT(*) AS count, id_member
153
			FROM {$to_prefix}message_likes
154
			GROUP BY id_member");
155
		while ($row = $this->db->fetch_assoc($request))
156
		{
157
			$this->db->query("
158
				UPDATE {$to_prefix}members
159
				SET likes_given = $row[count]
160
				WHERE id_member = $row[id_member]
161
				LIMIT 1");
162
163
			pastTime(0);
164
		}
165
		$this->db->free_result($request);
166
	}
167
}
168
169
class elkarte1_0_importer_step3 extends Importers\SmfCommonSourceStep3
170
{
171
}