/php/janrain-engage-php-sdk-0.1/sample/insert-update-user.php

https://github.com/Doap/Janrain-Sample-Code · PHP · 116 lines · 115 code · 1 blank · 0 comment · 29 complexity · 75af7769eeb34cbedb71c800a7573906 MD5 · raw file

  1. <?php
  2. ob_start();
  3. $debug = array();
  4. $stat = 'ok';
  5. session_name('engage');
  6. session_start();
  7. $session = $_SESSION;
  8. if ( !empty($session['authinfo']['profile']['identifier']) && class_exists('SQLite3') ) {
  9. $user = array();
  10. $user['user_name'] = '';
  11. $user['first_name'] = '';
  12. $user['last_name'] = '';
  13. $user['email'] = '';
  14. $user['profile_url'] = '';
  15. $user['phone'] = '';
  16. $user['company'] = '';
  17. foreach ($user as $key=>$val) {
  18. if ( !empty($session['user_data'][$key]) ) {
  19. $user[$key] = addslashes($session['user_data'][$key]);
  20. }
  21. }
  22. $user['identifier'] = addslashes($session['authinfo']['profile']['identifier']);
  23. $user['provider'] = addslashes($session['authinfo']['profile']['providerName']);
  24. if ( !empty($session['authinfo']['profile']['photo']) ) {
  25. $user['avatar_url'] = $session['authinfo']['profile']['photo'];
  26. }
  27. $sqdb = new SQLite3('demo.sqlite');
  28. $sqdb->exec('CREATE TABLE IF NOT EXISTS users '
  29. .'(id INTEGER PRIMARY KEY AUTOINCREMENT, user_name STRING, first_name STRING, last_name STRING, '
  30. .'email STRING, profile_url STRING, avatar_url STRING, phone STRING, company STRING)');
  31. $sqdb->exec('CREATE TABLE IF NOT EXISTS user_map (id INTEGER NOT NULL, identifier STRING, provider STRING)');
  32. $sqdb->exec('CREATE TABLE IF NOT EXISTS user_posts (id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, comment STRING)');
  33. $identifier = $sqdb->querySingle('SELECT id FROM user_map WHERE identifier = \''.$user['identifier'].'\'');
  34. if ( empty($identifier) ) {
  35. $query = 'INSERT INTO users (user_name) VALUES (\'\')';
  36. $insert = $sqdb->exec($query);
  37. if (!$insert) {
  38. $stat = 'fail';
  39. $debug[] = $query;
  40. $debug[] = $sqdb->lastErrorMsg();
  41. } else {
  42. $user['id'] = $sqdb->lastInsertRowID();
  43. $query = 'INSERT INTO user_map (id, identifier, provider) VALUES (\''.$user['id'].'\',\''.$user['identifier'].'\',\''.$user['provider'].'\')';
  44. $insert = $sqdb->exec($query);
  45. if (!$insert) {
  46. $stat = 'fail';
  47. $debug[] = $query;
  48. $debug[] = $sqdb->lastErrorMsg();
  49. }
  50. }
  51. } else {
  52. $user['id'] = $identifier;
  53. }
  54. if ( !empty($user['id']) && $stat == 'ok' ) {
  55. $query = 'SELECT * FROM users WHERE id = \''.$user['id'].'\'';
  56. $db_user = $sqdb->querySingle($query, true);
  57. foreach ($db_user as $key=>$val) {
  58. if ( empty($user[$key]) ) {
  59. $user[$key] = addslashes($val);
  60. }
  61. }
  62. $user_updates = array();
  63. foreach ($user as $key=>$val) {
  64. if ( !empty($val) && $key != 'id' && $key != 'identifier' && $key != 'provider' ) {
  65. $user_updates[] = $key.' = \''.$val.'\'';
  66. }
  67. }
  68. $user_update = implode(', ', $user_updates);
  69. if ( !empty($user_update) ) {
  70. $query = 'UPDATE users SET '.$user_update.' WHERE id = \''.$user['id'].'\'';
  71. $update = $sqdb->exec($query);
  72. if (!$update) {
  73. $stat = 'fail';
  74. $debug[] = $query;
  75. $debug[] = $sqdb->lastErrorMsg();
  76. }
  77. }
  78. $query = 'SELECT * FROM users WHERE id = \''.$user['id'].'\'';
  79. $user_data = $sqdb->querySingle($query, true);
  80. $query = 'SELECT identifier FROM user_map WHERE id = \''.$user['id'].'\'';
  81. $map_result = $sqdb->query($query);
  82. $map_result->reset();
  83. $map_data = array();
  84. while ($row = $map_result->fetchArray(SQLITE3_ASSOC)) {
  85. $map_data[] = $row;
  86. }
  87. $map_result->finalize();
  88. }
  89. if ( !empty($user['id']) ) {
  90. $query = 'SELECT * FROM user_posts WHERE user_id = \''.$user['id'].'\'';
  91. $post_data = $sqdb->querySingle($query, true);
  92. if ( empty($post_data) && !empty($_SESSION['post_data']) ) {
  93. $comment = addslashes($_SESSION['post_data']['comment']);
  94. $query = 'INSERT INTO user_posts (user_id, comment) VALUES (\''.$user['id'].'\',\''.$comment.'\')';
  95. $post_insert = $sqdb->exec($query);
  96. } elseif ( !empty($post_data) && !empty($_SESSION['post_data']) ) {
  97. $comment = addslashes($_SESSION['post_data']['comment']);
  98. $query = 'UPDATE user_posts SET comment = \''.$comment.'\' WHERE id = '.$post_data['id'];
  99. $post_update = $sqdb->exec($query);
  100. if (!$post_update) {
  101. $stat = 'fail';
  102. $debug[] = $query;
  103. $debug[] = $sqdb->lastErrorMsg();
  104. }
  105. }
  106. }
  107. }
  108. $out_array = array('data'=>$user,'stat'=>$stat);
  109. if ( !empty($debug) ) {
  110. $out_array['debug'] = $debug;
  111. }
  112. $json = json_encode($out_array);
  113. ob_end_clean();
  114. echo $json;
  115. ?>