-
Notifications
You must be signed in to change notification settings - Fork 0
/
uc_cron_gbase_token.include
170 lines (139 loc) · 5.46 KB
/
uc_cron_gbase_token.include
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?php
require_once('uc_cron_gbase_token.include');
function uc_cron_gbase_token($new_token = NULL) {
static $token;
if (!empty($new_token)) {
$new_token = trim($new_token);
variable_set('uc_gbase_token', uc_gbase_encrypt($new_token));
$token = $new_token;
} elseif (empty($token)) {
$token = uc_cron_gbase_decrypt(variable_get('uc_gbase_token', NULL));
}
return $token;
}
function uc_cron_gbase_check_token($token) {
$token_info_url = 'https://www.google.com/accounts/AuthSubTokenInfo';
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded',
'Authorization' => 'AuthSub token="' . $token . '"',
);
$result = drupal_http_request($token_info_url, $headers);
return ($result->code == 200);
}
function uc_cron_gbase_exchange_token() {
$url = 'https://www.google.com/accounts/AuthSubSessionToken';
$token = $_GET['token'];
$headers = array('Authorization' => 'AuthSub token="' . $token . '"');
$result = drupal_http_request($url, $headers);
list($temp, $token) = explode('=', $result->data, 2);
if (empty($token)) {
watchdog('uc_cron_gbase', t('Failed to receive AuthSub session token.'), NULL, WATCHDOG_ERROR);
drupal_set_message(t('Failed to receive AuthSub session token.'), 'error');
}
uc_cron_gbase_token($token);
drupal_goto('admin/store/settings/uc_cron_gbase');
}
function uc_cron_gbase_encrypt($string) {
$key = uc_cron_gbase_get_key();
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
function uc_cron_gbase_decrypt($string) {
$key = uc_cron_gbase_get_key();
$result = '';
$string = base64_decode($string);
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)-ord($keychar));
$result.=$char;
}
return $result;
}
function uc_cron_gbase_get_key() {
global $cookie_domain, $db_url;
return md5($cookie_domain . $db_url . $_SERVER['SERVER_NAME']);
}
function uc_cron_gbase_store_admin_settings_form() {
// variable_get('uc_currency_sign', 'moo');
$form = array();
$form['authentication'] = array(
'#type' => 'fieldset',
'#title' => t('Authentication'),
'#collapsible' => FALSE,
'#collapsed' => FALSE,
);
$form['settings'] = array(
'#type' => 'fieldset',
'#title' => t('Settings'),
'#collapsible' => FALSE,
'#collapsed' => FALSE,
);
$form['settings']['uc_cron_gbase_enabled'] = array(
'#type' => 'radios',
'#default_value' => variable_get('uc_cron_gbase_enabled',1),
'#options' => array(
1 => t('Submit new/edited products item to Google Merchant by default.'),
0 => t('Do not submit new/edited product items to Google Merchant by default.')
),
'#description' => 'Control if products on new / edited products should be submitted to Google Merchant by default'
);
$form['settings']['uc_cron_gbase_default_taxonomy'] = array(
'#type' => 'textfield',
'#title' => t('Default Taxonomy'),
'#size' => 60,
'#maxlength' => 500,
'#required' => TRUE,
'#description' =>'The default category which this Product should be listed under on Google Product Search,
You Can refer to categories on <a href="http://www.google.com/support/merchants/bin/answer.py?hl=en&answer=160081">Google Merchant Help</a>,
Or you can find the sheet on <a href="http://www.google.com/basepages/producttype/taxonomy.txt">Product Taxonomy</a>,
An example of what you should enter in this field is:<br /> Electronics > Computers > Computer Components > Storage Devices > Hard Drives
',
'#default_value' => variable_get('uc_cron_gbase_default_taxonomy', ''),
);
$form['settings']['uc_cron_gbase_default_condition'] = array(
'#type' => 'radios',
'#title' => 'Product Condition',
'#default_value' => variable_get('uc_cron_gbase_default_condition', 0),
'#options' => array(
t('New'),
t('Used'),
t('Refurbished')
),
'#description' => 'Set the default condition of your products'
);
$token = uc_cron_gbase_token();
// Check if token is still valid.
if(uc_cron_gbase_check_token($token)) {
$status = theme('image', 'misc/watchdog-ok.png', t('Authenticatedthenticated'), t('Authenticated')) . ' ' . t("You have successfully signed in to your Google Account.");
} else {
$itemsFeedURL = 'http://www.google.com/base/feeds/items';
$next_url = url('uc_cron_gbase/exchange', array('absolute' => TRUE));
$redirect_url = 'https://www.google.com/accounts/AuthSubRequest?session=1';
$redirect_url .= '&next=';
$redirect_url .= urlencode($next_url);
$redirect_url .= "&scope=";
$redirect_url .= urlencode($itemsFeedURL);
$status = theme('image', 'misc/watchdog-error.png', t('Error'), t('Error')) . ' ' . t('You must') . ' ' . l('sign in to your Google account', $redirect_url) . '.';
}
$form['authentication']['status'] = array(
'#value' => $status,
);
$form['authentication']['uc_cron_gbase_key'] = array(
'#type' => 'textfield',
'#title' => t('Developer Key'),
'#size' => 60,
'#maxlength' => 255,
'#required' => TRUE,
'#default_value' => variable_get('uc_cron_gbase_key', ''),
);
// @todo add variable_get('uc_cron_gbase_key', '') form field
$form = system_settings_form($form);
return $form;
}