phoneapp.mod.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?php
  2. defined('IN_IA') or exit('Access Denied');
  3. function phoneapp_support_modules() {
  4. global $_W;
  5. load()->model('user');
  6. $modules = user_modules($_W['uid']);
  7. $phoneapp_modules = array();
  8. if (!empty($modules)) {
  9. foreach ($modules as $module) {
  10. if ($module['phoneapp_support'] == MODULE_SUPPORT_PHONEAPP) {
  11. $phoneapp_modules[$module['name']] = $module;
  12. }
  13. }
  14. }
  15. return $phoneapp_modules;
  16. }
  17. function phoneapp_get_some_lastversions($uniacid) {
  18. $version_lasts = array();
  19. $uniacid = safe_gpc_int($uniacid);
  20. if (empty($uniacid)) {
  21. return $version_lasts;
  22. }
  23. $version_lasts = table('phoneapp')->phoneappLatestVersion($uniacid);
  24. $last_switch_version = phoneapp_last_switch_version();
  25. if (!empty($last_switch_version[$uniacid]) && !empty($version_lasts[$last_switch_version[$uniacid]['version_id']])) {
  26. $version_lasts[$last_switch_version[$uniacid]['version_id']]['current'] = true;
  27. } else {
  28. reset($version_lasts);
  29. $firstkey = key($version_lasts);
  30. $version_lasts[$firstkey]['current'] = true;
  31. }
  32. return $version_lasts;
  33. }
  34. function phoneapp_last_switch_version() {
  35. global $_GPC;
  36. static $phoneapp_cookie_uniacids;
  37. if (empty($phoneapp_cookie_uniacids) && !empty($_GPC['__phoneappversionids'])) {
  38. $phoneapp_cookie_uniacids = json_decode(htmlspecialchars_decode($_GPC['__phoneappversionids']), true);
  39. }
  40. return $phoneapp_cookie_uniacids;
  41. }
  42. function phoneapp_fetch($uniacid, $version_id = '') {
  43. global $_GPC;
  44. load()->model('extension');
  45. $phoneapp_info = array();
  46. $uniacid = safe_gpc_int($uniacid);
  47. if (empty($uniacid)) {
  48. return $phoneapp_info;
  49. }
  50. if (!empty($version_id)) {
  51. $version_id = safe_gpc_int($version_id);
  52. }
  53. $phonaeapp_table = table('phoneapp');
  54. $phoneapp_info = $phonaeapp_table->searchWithUniacid($uniacid)->phoneappAccountInfo();
  55. if (empty($phoneapp_info)) {
  56. return $phoneapp_info;
  57. }
  58. if (empty($version_id)) {
  59. $phoneapp_cookie_uniacids = array();
  60. if (!empty($_GPC['__phoneappversionids'])) {
  61. $phoneappversionids = json_decode(htmlspecialchars_decode($_GPC['__phoneappversionids']), true);
  62. foreach ($phoneappversionids as $version_val) {
  63. $phoneapp_cookie_uniacids[] = $version_val['uniacid'];
  64. }
  65. }
  66. if (in_array($uniacid, $phoneapp_cookie_uniacids)) {
  67. $phoneapp_version_info = phoneapp_version($phoneappversionids[$uniacid]['version_id']);
  68. }
  69. if (empty($phoneapp_version_info)) {
  70. $phoneapp_version_info = $phonaeapp_table->searchWithUniacid($uniacid)->phoneappVersionInfo();
  71. }
  72. } else {
  73. $phoneapp_version_info = $phonaeapp_table->searchWithId($version_id)->phoneappVersionInfo();
  74. }
  75. if (!empty($phoneapp_version_info) && !empty($phoneapp_version_info['modules'])) {
  76. $phoneapp_version_info['modules'] = iunserializer($phoneapp_version_info['modules']);
  77. }
  78. $phoneapp_info['version'] = $phoneapp_version_info;
  79. $phoneapp_info['version_num'] = explode('.', $phoneapp_version_info['version']);
  80. return $phoneapp_info;
  81. }
  82. function phoneapp_version($version_id) {
  83. $version_info = array();
  84. $version_id = safe_gpc_int($version_id);
  85. if (empty($version_id)) {
  86. return $version_info;
  87. }
  88. $version_table = table('phoneapp');
  89. $version_info = $version_table->searchWithId($version_id)->phoneappVersionInfo();
  90. $version_info['modules'] = iunserializer($version_info['modules']);
  91. return $version_info;
  92. }
  93. function phoneapp_switch($uniacid, $redirect = '') {
  94. global $_W;
  95. phoneapp_save_switch($uniacid);
  96. isetcookie('__uid', $_W['uid'], 7 * 86400);
  97. if (!empty($redirect)) {
  98. header('Location: ' . $redirect);
  99. exit;
  100. }
  101. return true;
  102. }
  103. function phoneapp_save_switch($uniacid) {
  104. global $_GPC;
  105. if (empty($_GPC['__switch'])) {
  106. $_GPC['__switch'] = random(5);
  107. }
  108. $cache_key = cache_system_key(CACHE_KEY_ACCOUNT_SWITCH, $_GPC['__switch']);
  109. $cache_lastaccount = (array) cache_load($cache_key);
  110. if (empty($cache_lastaccount)) {
  111. $cache_lastaccount = array(
  112. 'phoneapp' => $uniacid,
  113. );
  114. } else {
  115. $cache_lastaccount['phoneapp'] = $uniacid;
  116. }
  117. cache_write($cache_key, $cache_lastaccount);
  118. isetcookie('__uniacid', $uniacid, 7 * 86400);
  119. isetcookie('__switch', $_GPC['__switch'], 7 * 86400);
  120. return true;
  121. }
  122. function phoneapp_update_last_use_version($uniacid, $version_id) {
  123. global $_GPC;
  124. $uniacid = safe_gpc_int($uniacid);
  125. $version_id = safe_gpc_int($version_id);
  126. if (empty($uniacid) || empty($version_id)) {
  127. return false;
  128. }
  129. if (!empty($_GPC['__phoneappversionids'])) {
  130. $phoneapp_uniacids = array();
  131. $cookie_val = json_decode(htmlspecialchars_decode($_GPC['__phoneappversionids']), true);
  132. if (!empty($cookie_val)) {
  133. foreach ($cookie_val as &$version) {
  134. $phoneapp_uniacids[] = $version['uniacid'];
  135. if ($version['uniacid'] == $uniacid) {
  136. $version['version_id'] = $version_id;
  137. $phoneapp_uniacids = array();
  138. break;
  139. }
  140. }
  141. unset($version);
  142. }
  143. if (!empty($phoneapp_uniacids) && !in_array($uniacid, $phoneapp_uniacids)) {
  144. $cookie_val[$uniacid] = array('uniacid' => $uniacid, 'version_id' => $version_id);
  145. }
  146. } else {
  147. $cookie_val = array(
  148. $uniacid => array('uniacid' => $uniacid, 'version_id' => $version_id),
  149. );
  150. }
  151. isetcookie('__uniacid', $uniacid, 7 * 86400);
  152. isetcookie('__phoneappversionids', json_encode($cookie_val), 7 * 86400);
  153. return true;
  154. }
  155. function phoneapp_version_all($uniacid) {
  156. load()->model('module');
  157. $phoneapp_versions = array();
  158. $uniacid = safe_gpc_int($uniacid);
  159. if (empty($uniacid)) {
  160. return $phoneapp_versions;
  161. }
  162. $phoneapp_versions = table('phoneapp')->phoneappAllVersion($uniacid);
  163. if (!empty($phoneapp_versions)) {
  164. foreach ($phoneapp_versions as &$version) {
  165. $version = phoneapp_version($version['id']);
  166. }
  167. }
  168. return $phoneapp_versions;
  169. }