miniapp.mod.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. function miniapp_create($account) {
  8. global $_W;
  9. load()->model('account');
  10. load()->model('user');
  11. load()->model('permission');
  12. $account_type_info = uni_account_type($account['type']);
  13. if (empty($account['type']) || empty($account_type_info['support_version'])) {
  14. return error(1, '账号类型错误!');
  15. }
  16. $uni_account_data = array(
  17. 'name' => $account['name'],
  18. 'description' => $account['description'],
  19. 'title_initial' => get_first_pinyin($account['name']),
  20. 'groupid' => 0,
  21. 'createtime' => TIMESTAMP,
  22. 'create_uid' => intval($_W['uid']),
  23. 'logo' => $account['headimg'],
  24. 'qrcode' => $account['qrcode'],
  25. );
  26. if (!pdo_insert('uni_account', $uni_account_data)) {
  27. return error(1, '添加失败');
  28. }
  29. $uniacid = pdo_insertid();
  30. $account_data = array(
  31. 'uniacid' => $uniacid,
  32. 'type' => $account['type'],
  33. 'hash' => random(8),
  34. );
  35. if (!$_W['isadmin'] && $_W['user']['endtime'] > USER_ENDTIME_GROUP_UNLIMIT_TYPE) {
  36. $account_data['endtime'] = $_W['user']['endtime'];
  37. }
  38. pdo_insert('account', $account_data);
  39. $acid = pdo_insertid();
  40. pdo_update('uni_account', array('default_acid' => $acid), array('uniacid' => $uniacid));
  41. if (in_array($account['type'], array(ACCOUNT_TYPE_APP_NORMAL, ACCOUNT_TYPE_APP_AUTH))) {
  42. $data = array(
  43. 'acid' => $acid,
  44. 'token' => isset($account['token']) ? $account['token'] : random(32),
  45. 'encodingaeskey' => isset($account['encodingaeskey']) ? $account['encodingaeskey'] : random(43),
  46. 'auth_refresh_token' => isset($account['auth_refresh_token']) ? $account['auth_refresh_token'] : '',
  47. 'uniacid' => $uniacid,
  48. 'name' => empty($account['name']) ? '' : $account['name'],
  49. 'original' => empty($account['original']) ? '' : $account['original'],
  50. 'level' => empty($account['level']) ? '' : $account['level'],
  51. 'key' => empty($account['key']) ? '' : $account['key'],
  52. 'secret' => empty($account['secret']) ? '' : $account['secret'],
  53. );
  54. } else {
  55. $data = array(
  56. 'acid' => $acid,
  57. 'uniacid' => $uniacid,
  58. 'name' => $account['name'],
  59. 'description' => $account['description'],
  60. );
  61. if (isset($account['secret']) && !empty($account['secret'])) {
  62. $data['secret'] = $account['secret'];
  63. }
  64. if (isset($account['key']) && !empty($account['key'])) {
  65. $data['key'] = $account['key'];
  66. }
  67. if (isset($account['appid']) && !empty($account['appid'])) {
  68. $data['appid'] = $account['appid'];
  69. }
  70. if (isset($account['level']) && !empty($account['level'])) {
  71. $data['level'] = $account['level'];
  72. }
  73. }
  74. pdo_insert($account_type_info['table_name'], $data);
  75. if (empty($_W['isfounder'])) {
  76. uni_account_user_role_insert($uniacid, $_W['uid'], ACCOUNT_MANAGE_NAME_OWNER);
  77. }
  78. if (user_is_vice_founder()) {
  79. uni_account_user_role_insert($uniacid, $_W['uid'], ACCOUNT_MANAGE_NAME_VICE_FOUNDER);
  80. }
  81. if (!empty($_W['user']['owner_uid'])) {
  82. uni_account_user_role_insert($uniacid, $_W['user']['owner_uid'], ACCOUNT_MANAGE_NAME_VICE_FOUNDER);
  83. }
  84. $unisettings['creditnames'] = array('credit1' => array('title' => '积分', 'enabled' => 1), 'credit2' => array('title' => '余额', 'enabled' => 1));
  85. $unisettings['creditnames'] = iserializer($unisettings['creditnames']);
  86. $unisettings['creditbehaviors'] = array('activity' => 'credit1', 'currency' => 'credit2');
  87. $unisettings['creditbehaviors'] = iserializer($unisettings['creditbehaviors']);
  88. $unisettings['uniacid'] = $uniacid;
  89. pdo_insert('uni_settings', $unisettings);
  90. return $uniacid;
  91. }
  92. function miniapp_add_register_version($data) {
  93. $status = $data['status'] == WXAPP_REGISTER_VERSION_STATUS_DEVELOP ? WXAPP_REGISTER_VERSION_STATUS_DEVELOP : WXAPP_REGISTER_VERSION_STATUS_CHECKING;
  94. table('wxapp_register_version')->where('uniacid', $data['uniacid'])->where('status', $status)->delete();
  95. $result = table('wxapp_register_version')->fill($data)->save();
  96. return $result ? true : false;
  97. }
  98. function miniapp_change_register_version_status($auditid, $status, $reason = '') {
  99. global $_W;
  100. $register_info = table('wxapp_register_version')->getByUniacidAndAuditid($_W['uniacid'], $auditid);
  101. if (empty($register_info) || !in_array($status, array(WXAPP_REGISTER_VERSION_STATUS_CHECKFAIL, WXAPP_REGISTER_VERSION_STATUS_RETRACT, WXAPP_REGISTER_VERSION_STATUS_CHECKSUCCESS))) {
  102. return false;
  103. }
  104. $data = array('status' => $status);
  105. if (!empty($reason)) {
  106. $data['reason'] = iserializer($reason);
  107. }
  108. $result = table('wxapp_register_version')->where('id', $register_info['id'])->fill($data)->save();
  109. return $result ? true : false;
  110. }
  111. function miniapp_create_submit_audit($version_id, $auditid) {
  112. global $_W;
  113. $register_info = table('wxapp_register_version')->getByUniacidAndVersionidAndStatus($_W['uniacid'], $version_id, WXAPP_REGISTER_VERSION_STATUS_DEVELOP);
  114. if (empty($register_info)) {
  115. return false;
  116. }
  117. $delete_data = array(
  118. 'uniacid' => $_W['uniacid'],
  119. 'status' => array(WXAPP_REGISTER_VERSION_STATUS_CHECKFAIL, WXAPP_REGISTER_VERSION_STATUS_CHECKING, WXAPP_REGISTER_VERSION_STATUS_CHECKSUCCESS)
  120. );
  121. table('wxapp_register_version')->where($delete_data)->delete();
  122. $audit_info = array(
  123. 'version' => $register_info['version'],
  124. 'description' => $register_info['description'],
  125. 'developer' => $register_info['developer'],
  126. 'upload_time' => TIMESTAMP
  127. );
  128. $data = array(
  129. 'uniacid' => $_W['uniacid'],
  130. 'version_id' => $version_id,
  131. 'version' => $register_info['version'],
  132. 'description' => $register_info['description'],
  133. 'developer' => $register_info['developer'],
  134. 'upload_time' => TIMESTAMP,
  135. 'status' => WXAPP_REGISTER_VERSION_STATUS_CHECKING,
  136. 'audit_info' => iserializer($audit_info),
  137. 'auditid' => $auditid,
  138. );
  139. $result = table('wxapp_register_version')->fill($data)->save();
  140. return $result ? true : false;
  141. }
  142. function miniapp_create_release($version_id) {
  143. global $_W;
  144. $audit_success_info = table('wxapp_register_version')->getByUniacidAndVersionidAndStatus($_W['uniacid'], $version_id, WXAPP_REGISTER_VERSION_STATUS_CHECKSUCCESS);
  145. if (empty($audit_success_info)) {
  146. return false;
  147. }
  148. $delete_data = array(
  149. 'uniacid' => $_W['uniacid'],
  150. 'status' => array(WXAPP_REGISTER_VERSION_STATUS_RELEASE, WXAPP_REGISTER_VERSION_STATUS_CHECKSUCCESS),
  151. );
  152. table('wxapp_register_version')->where($delete_data)->delete();
  153. $submit_info = array(
  154. 'version' => $audit_success_info['version'],
  155. 'description' => $audit_success_info['description'],
  156. 'upload_time' => TIMESTAMP
  157. );
  158. $data = array(
  159. 'uniacid' => $_W['uniacid'],
  160. 'version_id' => $version_id,
  161. 'version' => $audit_success_info['version'],
  162. 'description' => $audit_success_info['description'],
  163. 'developer' => $audit_success_info['developer'],
  164. 'upload_time' => TIMESTAMP,
  165. 'status' => WXAPP_REGISTER_VERSION_STATUS_RELEASE,
  166. 'submit_info' => iserializer($submit_info)
  167. );
  168. $result = table('wxapp_register_version')->fill($data)->save();
  169. return $result ? true : false;
  170. }
  171. function miniapp_support_wxapp_modules($uniacid = 0) {
  172. global $_W;
  173. $uniacid = empty($uniacid) ? $_W['uniacid'] : intval($uniacid);
  174. $modules = uni_modules_by_uniacid($uniacid);
  175. if (empty($modules)) {
  176. return array();
  177. }
  178. $wxapp_modules = array();
  179. foreach ($modules as $module) {
  180. if ($module['wxapp_support'] == MODULE_SUPPORT_WXAPP) {
  181. $wxapp_modules[$module['name']] = $module;
  182. }
  183. }
  184. if (empty($wxapp_modules)) {
  185. return array();
  186. }
  187. $bindings = pdo_getall('modules_bindings', array('module' => array_keys($wxapp_modules), 'entry' => 'page'));
  188. if (!empty($bindings)) {
  189. foreach ($bindings as $bind) {
  190. $wxapp_modules[$bind['module']]['bindings'][] = array('title' => $bind['title'], 'do' => $bind['do']);
  191. }
  192. }
  193. return $wxapp_modules;
  194. }
  195. function miniapp_delete_audit($version_id, $status) {
  196. global $_W;
  197. if (!in_array($status, array(WXAPP_REGISTER_VERSION_STATUS_CHECKFAIL, WXAPP_REGISTER_VERSION_STATUS_CHECKING))) {
  198. return false;
  199. }
  200. $wxapp_register_version = table('wxapp_register_version');
  201. $condition = array('uniacid' => $_W['uniacid'], 'version_id' => $version_id, 'status' => $status);
  202. $result = $wxapp_register_version->where($condition)->delete();
  203. if ($result) {
  204. return true;
  205. } else {
  206. return false;
  207. }
  208. }
  209. function miniapp_support_uniacid_modules($uniacid) {
  210. $uni_modules = uni_modules_by_uniacid($uniacid);
  211. if (!empty($uni_modules)) {
  212. foreach ($uni_modules as $module_name => $module_info) {
  213. if ($module_info['issystem'] == 1) {
  214. unset($uni_modules[$module_name]);
  215. }
  216. }
  217. }
  218. return $uni_modules;
  219. }
  220. function miniapp_fetch($uniacid, $version_id = '') {
  221. global $_GPC;
  222. load()->model('extension');
  223. $miniapp_info = array();
  224. $version_id = max(0, intval($version_id));
  225. $account_extra_info = uni_account_extra_info($uniacid);
  226. if (empty($account_extra_info)) {
  227. return $miniapp_info;
  228. }
  229. $miniapp_info = pdo_get($account_extra_info['table_name'], array('uniacid' => $uniacid));
  230. if (empty($miniapp_info)) {
  231. return $miniapp_info;
  232. }
  233. if (empty($version_id)) {
  234. $miniapp_cookie_uniacids = array();
  235. if (!empty($_GPC['__miniappversionids' . $uniacid])) {
  236. $miniappversionids = json_decode(htmlspecialchars_decode($_GPC['__miniappversionids' . $uniacid]), true);
  237. foreach ($miniappversionids as $version_val) {
  238. $miniapp_cookie_uniacids[] = $version_val['uniacid'];
  239. }
  240. }
  241. if (in_array($uniacid, $miniapp_cookie_uniacids)) {
  242. $miniapp_version_info = miniapp_version($miniappversionids[$uniacid]['version_id']);
  243. }
  244. if (empty($miniapp_version_info)) {
  245. $sql = 'SELECT * FROM ' . tablename($account_extra_info['version_tablename']) . ' WHERE `uniacid`=:uniacid ORDER BY `id` DESC';
  246. $miniapp_version_info = pdo_fetch($sql, array(':uniacid' => $uniacid));
  247. }
  248. } else {
  249. $miniapp_version_info = pdo_get($account_extra_info['version_tablename'], array('id' => $version_id, 'uniacid' => $uniacid));
  250. }
  251. if (!empty($miniapp_version_info) && !empty($miniapp_version_info['modules'])) {
  252. $miniapp_version_info['modules'] = iunserializer($miniapp_version_info['modules']);
  253. if ($miniapp_version_info['design_method'] == WXAPP_MODULE) {
  254. $module = current($miniapp_version_info['modules']);
  255. $manifest = ext_module_manifest($module['name']);
  256. if (!empty($manifest)) {
  257. $miniapp_version_info['modules'][$module['name']]['version'] = $manifest['application']['version'];
  258. } else {
  259. $last_install_module = module_fetch($module['name']);
  260. $miniapp_version_info['modules'][$module['name']]['version'] = $last_install_module['version'];
  261. }
  262. }
  263. }
  264. $miniapp_info['version'] = $miniapp_version_info;
  265. $miniapp_info['version_num'] = empty($miniapp_version_info['version']) ? array() : explode('.', $miniapp_version_info['version']);
  266. return $miniapp_info;
  267. }
  268. function miniapp_version_all($uniacid) {
  269. global $_W;
  270. load()->model('module');
  271. $miniapp_versions = array();
  272. $uniacid = intval($uniacid);
  273. if (empty($uniacid)) {
  274. return $miniapp_versions;
  275. }
  276. $miniapp_versions = table('wxapp_versions')->getAllByUniacid($uniacid);
  277. if (!empty($miniapp_versions)) {
  278. $user_modules = array();
  279. if (in_array($_W['role'], array(ACCOUNT_MANAGE_NAME_MANAGER, ACCOUNT_MANAGE_NAME_OPERATOR))) {
  280. $user_modules = pdo_getall('users_permission', array('uniacid' => $_W['uniacid'], 'uid' => $_W['uid']), array(), 'type');
  281. $user_modules = empty($user_modules) ? array() : array_keys($user_modules);
  282. }
  283. foreach ($miniapp_versions as $key => &$version) {
  284. $version = miniapp_version($version['id']);
  285. if (!isset($user_modules['modules']['permission']) && !empty($user_modules) && array_diff(array_keys($version['modules']), $user_modules)) {
  286. unset($miniapp_versions[$key]);
  287. }
  288. }
  289. unset($version);
  290. }
  291. return $miniapp_versions;
  292. }
  293. function miniapp_get_some_lastversions($uniacid) {
  294. $version_lasts = array();
  295. $uniacid = intval($uniacid);
  296. if (empty($uniacid)) {
  297. return $version_lasts;
  298. }
  299. $version_lasts = table('wxapp_versions')->latestVersion($uniacid);
  300. $last_switch_version = miniapp_last_switch_version($uniacid);
  301. if (!empty($last_switch_version[$uniacid]) && !empty($version_lasts[$last_switch_version[$uniacid]['version_id']])) {
  302. $version_lasts[$last_switch_version[$uniacid]['version_id']]['current'] = true;
  303. } else {
  304. reset($version_lasts);
  305. $firstkey = key($version_lasts);
  306. $version_lasts[$firstkey]['current'] = true;
  307. }
  308. return $version_lasts;
  309. }
  310. function miniapp_last_switch_version($uniacid) {
  311. global $_GPC;
  312. static $miniapp_cookie_uniacids;
  313. if (empty($miniapp_cookie_uniacids) && !empty($_GPC['__miniappversionids' . $uniacid])) {
  314. $miniapp_cookie_uniacids = json_decode(htmlspecialchars_decode($_GPC['__miniappversionids' . $uniacid]), true);
  315. }
  316. return $miniapp_cookie_uniacids;
  317. }
  318. function miniapp_update_last_use_version($uniacid, $version_id) {
  319. global $_GPC;
  320. $uniacid = intval($uniacid);
  321. $version_id = intval($version_id);
  322. if (empty($uniacid) || empty($version_id)) {
  323. return false;
  324. }
  325. $cookie_val = array();
  326. if (!empty($_GPC['__miniappversionids' . $uniacid])) {
  327. $miniapp_uniacids = array();
  328. $cookie_val = json_decode(htmlspecialchars_decode($_GPC['__miniappversionids' . $uniacid]), true);
  329. if (!empty($cookie_val)) {
  330. foreach ($cookie_val as &$version) {
  331. $miniapp_uniacids[] = $version['uniacid'];
  332. if ($version['uniacid'] == $uniacid) {
  333. $version['version_id'] = $version_id;
  334. $miniapp_uniacids = array();
  335. break;
  336. }
  337. }
  338. unset($version);
  339. }
  340. if (!empty($miniapp_uniacids) && !in_array($uniacid, $miniapp_uniacids)) {
  341. $cookie_val[$uniacid] = array('uniacid' => $uniacid, 'version_id' => $version_id);
  342. }
  343. } else {
  344. $cookie_val = array(
  345. $uniacid => array('uniacid' => $uniacid, 'version_id' => $version_id),
  346. );
  347. }
  348. isetcookie('__uniacid', $uniacid, 7 * 86400);
  349. isetcookie('__miniappversionids' . $uniacid, json_encode($cookie_val), 7 * 86400);
  350. return true;
  351. }
  352. function miniapp_version($version_id) {
  353. $version_info = array();
  354. $version_id = intval($version_id);
  355. if (empty($version_id)) {
  356. return $version_info;
  357. }
  358. load()->classs('wxapp.account');
  359. $cachekey = cache_system_key('miniapp_version', array('version_id' => $version_id));
  360. $cache = cache_load($cachekey);
  361. if (!empty($cache)) {
  362. return $cache;
  363. }
  364. $version_info = table('wxapp_versions')->getById($version_id);
  365. $version_info = table('wxapp_versions')->dataunserializer($version_info);
  366. $version_info = miniapp_version_detail_info($version_info);
  367. cache_write($cachekey, $version_info);
  368. return $version_info;
  369. }
  370. function miniapp_version_detail_info($version_info) {
  371. if (empty($version_info) || empty($version_info['uniacid']) || empty($version_info['modules'])) {
  372. return $version_info;
  373. }
  374. $uni_modules = uni_modules_by_uniacid($version_info['uniacid']);
  375. $uni_modules = array_keys($uni_modules);
  376. $account = pdo_get('account', array('uniacid' => $version_info['uniacid']));
  377. if (in_array($account['type'], array(ACCOUNT_TYPE_APP_NORMAL, ACCOUNT_TYPE_APP_AUTH))) {
  378. if (!empty($version_info['modules'])) {
  379. foreach ($version_info['modules'] as $i => $module) {
  380. $module_info = module_fetch($module['name']);
  381. $module_info['version'] = $module['version'];
  382. $module['uniacid'] = table('uni_link_uniacid')->getMainUniacid($version_info['uniacid'], $module['name'], $version_info['id']);
  383. if (!empty($module['uniacid'])) {
  384. $module_info['uniacid'] = $module['uniacid'];
  385. $link_account = uni_fetch($module['uniacid']);
  386. $module_info['account'] = $link_account->account;
  387. $module_info['account']['logo'] = $link_account->logo;
  388. }
  389. $module_info['cover_entrys'] = module_entries($module['name'], array('cover'));
  390. $module_info['defaultentry'] = empty($module['defaultentry']) ? '' : $module['defaultentry'];
  391. $module_info['newicon'] = empty($module['newicon']) ? '' : $module['newicon'];
  392. $version_info['modules'][$i] = $module_info;
  393. }
  394. }
  395. if (count($version_info['modules']) > 0) {
  396. $version_module = current($version_info['modules']);
  397. $version_info['cover_entrys'] = !empty($version_module['cover_entrys']['cover']) ? $version_module['cover_entrys']['cover'] : array();
  398. }
  399. $version_info['support_live'] = strpos($version_info['default_appjson'], 'wx2b03c6e691cd7370') !== false ? 1 : 0;
  400. } else {
  401. foreach ($version_info['modules'] as $i => $module) {
  402. if (!in_array($module['name'], $uni_modules)) {
  403. unset($version_info['modules'][$i]);
  404. continue;
  405. }
  406. $module_info = module_fetch($module['name']);
  407. $module_info['version'] = $module['version'];
  408. $module['uniacid'] = table('uni_link_uniacid')->getMainUniacid($version_info['uniacid'], $module['name'], $version_info['id']);
  409. if (!empty($module['uniacid'])) {
  410. $module_info['uniacid'] = $module['uniacid'];
  411. $link_account = uni_fetch($module['uniacid']);
  412. $module_info['account'] = $link_account->account;
  413. $module_info['account']['logo'] = $link_account->logo;
  414. }
  415. $version_info['modules'][$i] = $module_info;
  416. }
  417. }
  418. return $version_info;
  419. }
  420. function miniapp_version_by_version($version) {
  421. global $_W;
  422. $version_info = array();
  423. $version = trim($version);
  424. if (empty($version)) {
  425. return $version_info;
  426. }
  427. $version_info = table('wxapp_versions')->getByUniacidAndVersion($_W['uniacid'], $version);
  428. $version_info = miniapp_version_detail_info($version_info);
  429. return $version_info;
  430. }
  431. function miniapp_site_info($multiid) {
  432. $site_info = array();
  433. $multiid = intval($multiid);
  434. if (empty($multiid)) {
  435. return array();
  436. }
  437. $site_info['slide'] = pdo_getall('site_slide', array('multiid' => $multiid));
  438. $site_info['nav'] = pdo_getall('site_nav', array('multiid' => $multiid));
  439. if (!empty($site_info['nav'])) {
  440. foreach ($site_info['nav'] as &$nav) {
  441. $nav['css'] = iunserializer($nav['css']);
  442. }
  443. unset($nav);
  444. }
  445. $recommend_sql = 'SELECT a.name, b.* FROM ' . tablename('site_category') . ' AS a LEFT JOIN ' . tablename('site_article') . ' AS b ON a.id = b.pcate WHERE a.parentid = 0 AND a.multiid = :multiid';
  446. $site_info['recommend'] = pdo_fetchall($recommend_sql, array(':multiid' => $multiid));
  447. return $site_info;
  448. }
  449. function miniapp_update_daily_visittrend() {
  450. global $_W;
  451. $yesterday = date('Ymd', strtotime('-1 days'));
  452. $trend = pdo_get('wxapp_general_analysis', array('uniacid' => $_W['uniacid'], 'type' => WXAPP_STATISTICS_DAILYVISITTREND, 'ref_date' => $yesterday));
  453. if (!empty($trend)) {
  454. return true;
  455. }
  456. return miniapp_insert_date_visit_trend($yesterday);
  457. }
  458. function miniapp_insert_date_visit_trend($date) {
  459. global $_W;
  460. $account_api = WeAccount::createByUniacid();
  461. $wxapp_stat = $account_api->getDailyVisitTrend($date);
  462. if (is_error($wxapp_stat) || empty($wxapp_stat)) {
  463. return error(-1, '调用微信接口错误');
  464. } else {
  465. $insert_stat = array(
  466. 'uniacid' => $_W['uniacid'],
  467. 'session_cnt' => $wxapp_stat['session_cnt'],
  468. 'visit_pv' => $wxapp_stat['visit_pv'],
  469. 'visit_uv' => $wxapp_stat['visit_uv'],
  470. 'visit_uv_new' => $wxapp_stat['visit_uv_new'],
  471. 'type' => WXAPP_STATISTICS_DAILYVISITTREND,
  472. 'stay_time_uv' => $wxapp_stat['stay_time_uv'],
  473. 'stay_time_session' => $wxapp_stat['stay_time_session'],
  474. 'visit_depth' => $wxapp_stat['visit_depth'],
  475. 'ref_date' => $wxapp_stat['ref_date'],
  476. );
  477. pdo_insert('wxapp_general_analysis', $insert_stat);
  478. }
  479. return $insert_stat;
  480. }
  481. function miniapp_update_entry($version_id, $entry_id) {
  482. $result = pdo_update('wxapp_versions', array('entry_id' => $entry_id), array('id' => $version_id));
  483. cache_delete(cache_system_key('miniapp_version', array('version_id' => $version_id)));
  484. return $result;
  485. }
  486. function miniapp_code_current_appjson($version_id) {
  487. $version_info = miniapp_version($version_id);
  488. if (!$version_info['use_default'] && isset($version_info['appjson'])) {
  489. return iunserializer($version_info['appjson']);
  490. }
  491. if ($version_info['use_default']) {
  492. $appjson = $version_info['default_appjson'];
  493. if ($appjson) {
  494. return iunserializer($appjson);
  495. }
  496. $account_wxapp_info = miniapp_fetch($version_info['uniacid'], $version_id);
  497. $params = array(
  498. 'module' => array_shift($account_wxapp_info['version']['modules'])
  499. );
  500. $cloud_appjson = cloud_wxapp_info($params);
  501. if (is_error($cloud_appjson)) {
  502. return null;
  503. }
  504. $appjson = array(
  505. 'window' => $cloud_appjson['window'],
  506. 'tabBar' => $cloud_appjson['tab_bar'],
  507. );
  508. pdo_update('wxapp_versions', array('default_appjson' => serialize($appjson)), array('id' => $version_id));
  509. cache_delete(cache_system_key('miniapp_version', array('version_id' => $version_id)));
  510. return $appjson;
  511. }
  512. return null;
  513. }
  514. function miniapp_code_custom_appjson_tobase64($version_id) {
  515. load()->classs('image');
  516. $version_info = miniapp_version($version_id);
  517. $appjson = iunserializer($version_info['appjson']);
  518. if (!$appjson) {
  519. return false;
  520. }
  521. if (isset($appjson['tabBar']) && isset($appjson['tabBar']['list'])) {
  522. $tablist = &$appjson['tabBar']['list'];
  523. foreach ($tablist as &$item) {
  524. if (isset($item['iconPath']) && !starts_with($item['iconPath'], 'data:image')) {
  525. $item['iconPath'] = Image::create($item['iconPath'])->resize(81, 81)->toBase64();
  526. }
  527. if (isset($item['selectedIconPath']) && !starts_with($item['selectedIconPath'], 'data:image')) {
  528. $item['selectedIconPath'] = Image::create($item['selectedIconPath'])->resize(81, 81)->toBase64();
  529. }
  530. }
  531. }
  532. return $appjson;
  533. }
  534. function miniapp_code_path_convert($attachment_id) {
  535. load()->classs('image');
  536. load()->func('file');
  537. $attchid = intval($attachment_id);
  538. global $_W;
  539. $attachment = table('core_attachment')->getById($attchid);
  540. if ($attachment) {
  541. $attach_path = $attachment['attachment'];
  542. $ext = pathinfo($attach_path, PATHINFO_EXTENSION);
  543. $url = tomedia($attach_path);
  544. $uniacid = intval($_W['uniacid']);
  545. $path = "images/{$uniacid}/" . date('Y/m/');
  546. mkdirs($path);
  547. $filename = file_random_name(ATTACHMENT_ROOT . '/' . $path, $ext);
  548. Image::create($url)->resize(81, 81)->saveTo(ATTACHMENT_ROOT . $path . $filename);
  549. $attachdir = $_W['config']['upload']['attachdir'];
  550. return $_W['siteroot'] . $attachdir . '/' . $path . $filename;
  551. }
  552. return null;
  553. }
  554. function miniapp_code_save_appjson($version_id, $json) {
  555. $result = pdo_update('wxapp_versions', array('appjson' => serialize($json), 'use_default' => 0), array('id' => $version_id));
  556. cache_delete(cache_system_key('miniapp_version', array('version_id' => $version_id)));
  557. return $result;
  558. }
  559. function miniapp_code_set_default_appjson($version_id) {
  560. $result = pdo_update('wxapp_versions', array('appjson' => '', 'use_default' => 1), array('id' => $version_id));
  561. cache_delete(cache_system_key('miniapp_version', array('version_id' => $version_id)));
  562. return $result;
  563. }
  564. function miniapp_version_update($version_id, $data) {
  565. $result = table('wxapp_versions')->fill($data)->where('id', $version_id)->save();
  566. cache_delete(cache_system_key('miniapp_version', array('version_id' => $version_id)));
  567. return $result;
  568. }