function fb_admin_application_edit_form_validate in Drupal for Facebook 7.4
Form validation.
TODO: this function may be calling fb_graph too often. fb_token_save may be inefficient.
File
- ./
fb.admin.inc, line 950
Code
function fb_admin_application_edit_form_validate($form, &$form_state) {
$fb_app = $form_state['values'];
if ($form_state['values']['op'] != t('Delete application')) {
try {
if (!empty($fb_app['secret'])) {
$fb_app['data']['access_token'] = fb_admin_get_app_token($fb_app['fba'], $fb_app['secret']);
}
else {
// Allow id and secret in one field.
list($fba, $secret, $token) = _fb_admin_parse_textfield($fb_app['fba']);
$fb_app['fba'] = $fba;
$fb_app['secret'] = $secret;
$fb_app['data']['access_token'] = $token;
}
// Change form values before submit.
foreach (array(
'fba',
'secret',
'data',
) as $key) {
form_set_value($form[$key], $fb_app[$key], $form_state);
}
if (!empty($fb_app['secret']) && empty($fb_app['data']['access_token'])) {
form_set_error('secret', t('Unable to get an application token. Are you sure your ID (%id) and Secret are correct?', array(
'%id' => $fb_app['fba'],
)));
}
else {
$graph = fb_graph($fb_app['fba'], $fb_app['data']['access_token'], FB_CACHE_STORE) + array(
// Defaults for values that Facebook might not return.
'namespace' => NULL,
);
$form_state['fb']['graph'] = $graph;
// Populate form with up-to-date values from facebook.
$fb_app['data']['logo_url'] = $graph['logo_url'];
form_set_value($form['data'], $fb_app['data'], $form_state);
form_set_value($form['title'], $graph['name'], $form_state);
form_set_value($form['namespace'], $graph['namespace'], $form_state);
// If default checkbox selected, we need graph data during submit.
form_set_value($form['fb_app_data'], array(
'client_id' => $graph['id'],
'name' => $graph['name'],
'namespace' => $graph['namespace'],
), $form_state);
}
} catch (exception $e) {
$msg = t('Failed to confirm application data with facebook. (%fba)', array(
'%fba' => $fb_app['fba'],
));
fb_log_exception($e, $msg);
form_set_error('fba', $msg);
// TODO: figure out why this happens.
if ($e
->getCode() == 100) {
drupal_set_message(t('Hint: Error code 100 may mean that an application has "social discovery" disabled.'), 'error');
}
}
}
}