-
Notifications
You must be signed in to change notification settings - Fork 0
/
elx_badges.mongo.php
61 lines (59 loc) · 1.83 KB
/
elx_badges.mongo.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
/**
* Root directory of Drupal installation.
*/
define('DRUPAL_ROOT', getcwd());
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
drupal_set_time_limit(240);
require '/usr/local/Cellar/composer/1.1.2/libexec/vendor/autoload.php';
$mongo = new MongoDB\Client();
$collection = $mongo->selectCollection('mean-prod', 'user');
$collection = $collection->find();
foreach($collection as $obj) {
$mongo_uid = $obj->uid;
$mongo_name = $obj->name;
if (!empty($obj->earned_badges)) {
$mongo_badges_object = $obj->earned_badges;
$mongo_badges_array = (array) $mongo_badges_object;
$mongo_badges_array = str_replace('-', ' ', $mongo_badges_array);
if (!empty($mongo_badges_array)) {
$user_badges[$obj->uid]['uid'] = $obj->uid;
$user_badges[$obj->uid]['name'] = $obj->name;
$user_badges[$obj->uid]['badges'] = $mongo_badges_array;
}
}
}
// Insert mongo user badges into new elx badges schema
foreach($user_badges as $user) {
$user_uid = $user['uid'];
foreach($user['badges'] as $badge) {
if ($badge == 'First 1000 Points') {
$badge = 'First 1,000 Points';
}
if ($badge == 'First 5000 Points') {
$badge = 'First 5,000 Points';
}
$result = db_select('node', 'n')
->fields('n', array('nid'))
->condition('type', 'badge', 'like')
->condition('title', $badge, '=')
->execute()
->fetchCol();
if (!empty($result[0])) {
$nid = $result[0];
// Insert mongo user badges into new elx badges schema
$bid = db_insert('badges') // Table name no longer needs {}
->fields(array(
'nid' => $nid,
'title' => $badge,
'uid' => $user_uid,
'timestamp' => REQUEST_TIME,
))
->execute();
if (empty($bid)) {
$error[$user_uid]['error'] = $nid . ':' . $user_uid;
}
}
}
}