function_manyou.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: function_manyou.php 28663 2012-03-07 05:50:37Z zhangguosheng $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. function manyou_getuserapp($panel = 0) {
  12. global $_G;
  13. $myapps = $panelapp = $_G['my_menu'] = $userapplist = $_G['my_panelapp'] = array();
  14. $showcount = $_G['my_menu_more'] = 0;
  15. if($_G['uid'] && $_G['setting']['my_app_status']) {
  16. space_merge($_G['member'], 'field_home');
  17. if($_G['member']['menunum'] < 3) $_G['member']['menunum'] = 10;
  18. $userapps = C::t('home_userapp')->fetch_all_by_uid_appid($_G['uid'], 0, 'menuorder');
  19. $appids = array();
  20. foreach($userapps as $app) {
  21. $appids[$app['appid']] = $app['appid'];
  22. }
  23. if(!empty($appids)) {
  24. $myapps = C::t('common_myapp')->fetch_all($appids);
  25. }
  26. foreach($userapps as $value) {
  27. $value['iconstatus'] = $myapps[$value['appid']]['iconstatus'];
  28. $value['userpanelarea'] = $myapps[$value['appid']]['userpanelarea'];
  29. $value['appstatus'] = $myapps[$value['appid']]['appstatus'];
  30. $value['icon'] = getmyappiconpath($value['appid'], $value['iconstatus']);
  31. if($value['iconstatus']=='0' && empty($_G['myapp_icon_downloaded'])) {
  32. $_G['myapp_icon_downloaded'] = '1';
  33. downloadmyappicon($value['appid']);
  34. }
  35. if($value['allowsidenav'] && !empty($value['appname'])) {
  36. $_G['my_userapp'][$value['appid']] = $value;
  37. if($panel) {
  38. $userapplist[$value['appid']] = $value;
  39. if($value['userpanelarea'] && $value['userpanelarea'] < 3) {
  40. $panelapp[$value['appid']] = $value;
  41. $_G['my_panelapp'][$value['userpanelarea']][$value['appid']] = $value;
  42. }
  43. } else {
  44. if(!isset($_G['cache']['userapp'][$value['appid']])) {
  45. if($_G['member']['menunum'] > 100 || $showcount < $_G['member']['menunum']) {
  46. $_G['my_menu'][] = $value;
  47. $showcount++;
  48. } else {
  49. $_G['my_menu_more'] = 1;
  50. }
  51. }
  52. }
  53. } elseif (!$value['allowsidenav']) {
  54. if(isset($_G['cache']['userapp'][$value['appid']])) {
  55. unset($_G['cache']['userapp'][$value['appid']]);
  56. }
  57. }
  58. }
  59. if(!empty($userapplist)) {
  60. foreach($panelapp as $appid => $value) {
  61. if(isset($_G['cache']['userapp'][$value['appid']])) {
  62. unset($_G['cache']['userapp'][$appid]);
  63. }
  64. }
  65. foreach($userapplist as $appid => $value) {
  66. if(!isset($_G['cache']['userapp'][$value['appid']]) && !isset($panelapp[$value['appid']])) {
  67. if($_G['member']['menunum'] > 100 || $showcount < $_G['member']['menunum']) {
  68. $_G['my_menu'][] = $value;
  69. $showcount++;
  70. } else {
  71. $_G['my_menu_more'] = 1;
  72. break;
  73. }
  74. }
  75. }
  76. }
  77. }
  78. }
  79. function downloadmyappicon($appid) {
  80. $iconpath = getglobal('setting/attachdir').'./'.'myapp/icon/'.$appid.'.jpg';
  81. if(!is_dir(dirname($iconpath))) {
  82. dmkdir(dirname($iconpath));
  83. }
  84. C::t('common_myapp')->update($appid, array('iconstatus'=>'-1'));
  85. $ctx = stream_context_create(array('http' => array('timeout' => 10)));
  86. $icondata = file_get_contents(getmyappiconpath($appid, 0), false, $ctx);
  87. if($icondata) {
  88. file_put_contents($iconpath, $icondata);
  89. C::t('common_myapp')->update($appid, array('iconstatus'=>'1', 'icondowntime'=>TIMESTAMP));
  90. }
  91. }