pic.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. //添加图片项目
  3. if(!defined('IN_T')){
  4. die('hacking attempt');
  5. }
  6. $act = Common::sfilter($_REQUEST['act']);
  7. $input=null;
  8. if(empty($act)){
  9. $input = $Json->decode(file_get_contents("php://input"));
  10. if (!empty($input)) {
  11. $act = $input['act'];
  12. }
  13. }
  14. if ($act =="doAdd") {
  15. //设置该次请求超时时长,1800s
  16. @ini_set("max_execution_time", "1800");
  17. //兼容php-fpm设置超时
  18. @ini_set("request_terminate_timeout", "1800");
  19. $re['flag'] = 0;
  20. $params = $Json->decode(stripslashes($_REQUEST['params']));
  21. $atlas_id = intval($params['atlas_id']);
  22. $pname = Common::sfilter($params['pname']);
  23. // if ($atlas_id<=0) {
  24. // $re['msg'] = "分类有误";
  25. // }else if(mb_strlen($pname)<=0||mb_strlen($pname)>100){
  26. // $re['msg'] = "项目名称在1到100个字符之间";
  27. // }else if(empty($params['pic_tags'])||sizeof($params['pic_tags'])>3){
  28. // $re['msg'] = "请选择1到3个标签";
  29. // }else{
  30. if(!function_exists('exec')){
  31. $re['msg'] = '系统当前不支持exec方法,无法发布!';
  32. }
  33. else if(!Transaction::get_user_projects_limit($user['pk_user_main'])){
  34. $re['msg'] = "你可发布的作品数量已达上限,无法再发布!";
  35. }
  36. else if(mb_strlen($pname)<=0||mb_strlen($pname)>100){
  37. $re['msg'] = "项目名称在1到100个字符之间";
  38. }
  39. else{
  40. require_once __DIR__.'/../../source/krpano/cls_common_operation.php';
  41. $imgsmain = KrOperation::slice($user['pk_user_main'],$params['imgs'],$user['pk_user_main']."/works/");
  42. //执行切图失败
  43. if(empty($imgsmain)) {
  44. $re['msg'] = '切图失败';
  45. }
  46. //切图成功
  47. else{
  48. try{
  49. $Db->beginTransaction();
  50. if($atlas_id<=0||$Db->getCount($Base->table('atlasmain'),'pk_atlas_main',array('pk_atlas_main'=>$atlas_id,'pk_user_main'=>$user['pk_user_main']) )<=0 ){
  51. //没有提交图册分类
  52. $atlas_id = $Db->query('SELECT pk_atlas_main FROM '.$Base->table('atlasmain').' WHERE pk_user_main = '.$user['pk_user_main'].' AND atlas_type = 0','One');
  53. if(empty($atlas_id)){
  54. $atlas = array("pk_user_main"=>$user['pk_user_main'],"name"=>"默认图册","atlas_type"=>0,"create_time"=>date('Y-m-d H:i:s',Common::gmtime()));
  55. //初始化用户图册信息
  56. $atlas_id = $Db->insert($Base->table("atlasmain"),$atlas);
  57. }
  58. }
  59. //存储数据
  60. $worksmain['pk_user_main']=$user['pk_user_main'];
  61. $worksmain['pk_atlas_main']=$atlas_id;
  62. $worksmain['name'] =$pname ;
  63. $worksmain['thumb_path']= $imgsmain[0]['thumb_path'];
  64. $worksmain['view_uuid']=Common::guid(16);
  65. $worksmain['photo_date']=date("Y-m-d H:i:s",Common::gmtime());
  66. $worksmain['create_time']=date("Y-m-d H:i:s",Common::gmtime());
  67. $worksmain['flag_allowed_recomm']=intval($params['allow_recomm']);
  68. $worksmain['flag_publish']=1;
  69. $worksmain['cdn_host'] = $_lang['cdn_host'];
  70. init_data($worksmain,'worksmain');
  71. $wid = $Db->insert($Base->table('worksmain'),$worksmain);
  72. foreach ($imgsmain as $value) {
  73. $value['pk_atlas_main']=0;
  74. $value['pk_user_main']=$user['pk_user_main'];
  75. $value['create_time']=date("Y-m-d H:i:s",Common::gmtime());
  76. $img_id = $Db->insert($Base->table('imgsmain'),$value);
  77. $Db->insert($Base->table('imgs_works'),array('pk_img_main' =>$img_id ,'pk_works_main'=>$wid ));
  78. }
  79. $panoconfig['pk_works_main']=$wid;
  80. $panoconfig['open_alert']='{}';
  81. $panoconfig['bg_music']='{"useMusic": false,"isWhole": true}';
  82. $panoconfig['sky_land_shade']='{ "useShade": false,"isWhole": true}';
  83. $panoconfig['tour_guide']='{"useStartImg": false,"useEndImg": false,"points": []}';
  84. $panoconfig['url_phone_nvg']='{}';
  85. $panoconfig['speech_explain']='{"isWhole": true,"useSpeech": false}';
  86. $panoconfig['angle_of_view']='{"viewSettings": []}';
  87. $panoconfig['special_effects']='{}';
  88. $panoconfig['sand_table']='{"sandTables": [],"isOpen": false}';
  89. $panoconfig['custom_logo']='{"logoImgPath": "","useCustomLogo": false}';
  90. $panoconfig['scene_group']='{"sceneGroups": []}';
  91. $panoconfig['hotspot']='{}';
  92. $panoconfig['loading_img']='{}';
  93. $panoconfig['custom_right_button']='{}';
  94. init_data($panoconfig,'pano_config');
  95. $Db->insert($Base->table('pano_config'),$panoconfig);
  96. foreach ($params['pic_tags'] as $tid) {
  97. if ($Db->getCount($Base->table("tag"),"id",array("id"=>$tid,"type"=>1))) {
  98. $Db->insert($Base->table("tag_works"),array("tag_id"=>$tid,"works_id"=>$wid));
  99. }
  100. }
  101. $Db->commit();
  102. $re['flag'] = 1;
  103. $re['pid'] = $wid;
  104. $re['view_uuid'] = $worksmain['view_uuid'];
  105. $re['thumb_path'] = $worksmain['thumb_path'];
  106. }catch(Exception $e){
  107. $Db->rollback();
  108. $re['msg'] = '服务器异常';
  109. }
  110. }
  111. }
  112. echo $Json->encode($re);
  113. exit;
  114. }
  115. else if($act =='keep_alive'){
  116. //前端循环请求该方法 ,避免切图时造成session丢失
  117. echo "";
  118. exit;
  119. }else{
  120. $atlas_list = $Db->query("SELECT * FROM ".$Base->table("atlasmain")." WHERE pk_user_main = ".$user['pk_user_main']);
  121. if(empty($atlas_list)){
  122. $atlas = array("pk_user_main"=>$user['pk_user_main'],"name"=>"默认图册","atlas_type"=>0,"create_time"=>date('Y-m-d H:i:s',Common::gmtime()));
  123. //初始化用户图册信息
  124. $atlas['pk_atlas_main'] = $Db->insert($Base->table("atlasmain"),$atlas);
  125. $atlas_list[] = $atlas;
  126. }
  127. //显示添加页面
  128. $tp->assign("atlas",$atlas_list);
  129. $tp->assign("tags",$Db->query("SELECT * FROM ".$Base->table('tag')));
  130. $tp->assign('title','发布全景');
  131. $tp->assign('up_url',$_lang['up_url']);
  132. $tp->assign('img_store_type',$_lang['global_storage']);
  133. }
  134. function init_data(&$arr,$type){
  135. $config = $_SESSION['edit'];
  136. foreach($config as $v){
  137. if ($v['table']==$type&&isset($v['default'])) {
  138. $arr[$v['column']] = $v['default'];
  139. }
  140. }
  141. }
  142. ?>