pic.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. <?php
  2. if(!defined('IN_T')){
  3. die('hacking attempt');
  4. }
  5. $act = Common::sfilter($_REQUEST['act']);
  6. $input=null;
  7. if (empty($act)) {
  8. $input = $Json->decode(file_get_contents("php://input"));
  9. if (!empty($input)) {
  10. $act = $input['act'];
  11. }
  12. }
  13. if($act =="update_init"){
  14. //查询项目 worksmain
  15. $pid =intval($input['pid']);
  16. $worksmain = $Db->query("SELECT * FROM ".$Base->table('worksmain')." WHERE pk_works_main = ".$pid." AND pk_user_main = ".$user['pk_user_main'],'Row');
  17. if (empty($worksmain)) {
  18. die("未找到相关项目");
  19. }
  20. //查询图片 imagesmain
  21. $imgsmain = $Db->query("SELECT i.* FROM ".$Base->table('imgsmain')."i LEFT JOIN ".$Base->table('imgs_works')." iw ON i.pk_img_main = iw.pk_img_main WHERE iw.pk_works_main =".$pid);
  22. //查询配置 panoconfig
  23. $panoconfig = $Db->query("SELECT * FROM ".$Base->table('pano_config')." WHERE pk_works_main = ".$pid,"Row");
  24. // if (!empty($panoconfig['hotspot']['imgtext'])) {
  25. // $panoconfig['hotspot']['imgtext'] = base64_decode($panoconfig['hotspot']['imgtext'])
  26. // }
  27. $panoconfig = Transaction::decode_str2arr($panoconfig);
  28. $hotspots = &$panoconfig['hotspot'];
  29. foreach ($hotspots as &$v) {
  30. $imgtext = &$v['imgtext'];
  31. if (!empty($imgtext)) {
  32. foreach ($imgtext as &$v2) {
  33. if ($v2['imgtext_wordContent']) {
  34. $v2['imgtext_wordContent'] = base64_decode($v2['imgtext_wordContent']);
  35. }else if ($v2['wordContent']){
  36. $v2['imgtext_wordContent'] = base64_decode($v2['wordContent']);
  37. unset($v2['wordContent']);
  38. }
  39. }
  40. }
  41. }
  42. //查询对应分类
  43. $atlasmain = $Db->query("SELECT name FROM ".$Base->table('atlasmain')." WHERE pk_atlas_main = ".$worksmain['pk_atlas_main'],'Row');
  44. $worksmain['name'] = $worksmain['name']." ";
  45. //查询项目对应标签
  46. $tags = $Db->query("SELECT * FROM ".$Base->table('tag_works')." WHERE works_id = $pid");
  47. $tag_list = $Db->query("SELECT * FROM ".$Base->table('tag')." WHERE type = 1");
  48. $result = array('worksmain' => $worksmain,'imgsmain'=>$imgsmain,'panoConfig'=>$panoconfig,'userInfo'=>$user,"atlasmain"=>$atlasmain,"tags"=>$tags,"tag_list"=>$tag_list);
  49. echo $Json->encode($result);
  50. exit;
  51. }else if($act == "save_panosetting"){
  52. $result['flag'] =0;
  53. // $hotspots = &$input['hotspot'];
  54. //对图文进行base64
  55. // foreach ($hotspots as &$v) {
  56. // $imgtext = &$v['imgtext'];
  57. // if (!empty($imgtext)) {
  58. // foreach ($imgtext as &$v2) {
  59. // $v2['wordContent'] = base64_encode($v2['wordContent']);
  60. // }
  61. // }
  62. // }
  63. filter_array($input);
  64. $pk_works_main = intval($input['pk_works_main']);
  65. if ($Db->getCount($Base->table('worksmain'),"pk_works_main",array("pk_works_main"=>$pk_works_main ,"pk_user_main"=>$user['pk_user_main']))<=0) {
  66. $result['msg'] ="非法操作";
  67. }else{
  68. $params = array(
  69. 'angle_of_view' =>$Json->encode($input['angle_of_view']),
  70. 'special_effects'=>$Json->encode($input['special_effects']),
  71. 'hotspot'=>$Json->encode_unescaped_unicode($input['hotspot']),
  72. 'sand_table'=>$Json->encode_unescaped_unicode($input['sand_table']),
  73. 'tour_guide'=>$Json->encode($input['tour_guide']),
  74. 'scene_group'=>$Json->encode_unescaped_unicode($input['scene_group']),
  75. );
  76. $Db->update($Base->table('pano_config'),$params,array("pk_works_main"=>$pk_works_main));
  77. $result['flag'] = 1;
  78. }
  79. echo $Json->encode($result,JSON_NUMERIC_CHECK);
  80. exit;
  81. }else if($act == 'update_works'){
  82. $result['flag'] =0;
  83. $works = $input['works'];
  84. $panoconfig = $input['panoConfig'];
  85. $tags = $works['tags'];
  86. $imgs = $input['imgs'];
  87. $name = Common::sfilter($works['name']);
  88. if (empty($works)||empty($panoconfig)) {
  89. //没传项目数据直接返回
  90. $result['msg'] = '未接受到数据';
  91. }else if(empty($name)||mb_strlen($name)>30){
  92. $result['msg'] = "请输入1到30个字符的项目名称";
  93. }else if(empty($tags)){
  94. //没有选择标签
  95. $result['msg'] ="请选择分类标签";
  96. }else if(empty($imgs)){
  97. //没有图片
  98. $result['msg'] ="不能删除所有图片";
  99. }else if ($Db->getCount($Base->table('worksmain'),"pk_works_main",array("pk_works_main"=>$works['pk_works_main'],"pk_user_main"=>$user['pk_user_main']))<=0){
  100. //用户id和项目不对应
  101. $result['msg'] = '非法操作';
  102. }else{
  103. //是否设置项目密码
  104. $privacy_password = Common::sfilter($works['privacy_password']);
  105. if (!empty($privacy_password)&&(mb_strlen($privacy_password)<3||mb_strlen($privacy_password)>20||!preg_match('/^[A-Za-z0-9]+$/',$privacy_password))) {
  106. $result['msg'] = '请输入3到20位英文或数字密码';
  107. echo $Json->encode($result,JSON_NUMERIC_CHECK);
  108. exit;
  109. }
  110. filter_array($works);
  111. filter_array($imgs);
  112. filter_array($panoconfig);
  113. $Db->beginTransaction();
  114. try{
  115. //修改worksmain的标签
  116. //删除原来的标签
  117. $Db->delete($Base->table("tag_works"),array("works_id"=>$works['pk_works_main']));
  118. //插入标签
  119. foreach ($tags as $tid) {
  120. if ($Db->getCount($Base->table("tag"),"id",array("id"=>$tid))) {
  121. $Db->insert($Base->table("tag_works"),array("tag_id"=>$tid,"works_id"=>$works['pk_works_main']));
  122. }
  123. }
  124. //查询数据库原来的图片
  125. $imgsmain = $Db->query("SELECT i.*,iw.pk_works_main FROM ".$Base->table('imgsmain')."i LEFT JOIN ".$Base->table('imgs_works')." iw ON i.pk_img_main = iw.pk_img_main WHERE iw.pk_works_main =".$works['pk_works_main']);
  126. //删除图片
  127. foreach ($imgsmain as $d_v) {
  128. $flag = true;
  129. foreach ($imgs as $n_v) {
  130. if ($d_v['pk_img_main']==$n_v['pk_img_main']) {
  131. $flag = false;
  132. break;
  133. }
  134. }
  135. if ($flag) {
  136. //找到要删除的文件
  137. $Db ->delete($Base->table('imgs_works'),array('pk_works_main'=>$d_v['pk_works_main'],'pk_img_main'=>$d_v['pk_img_main']));
  138. }
  139. }
  140. //添加图片
  141. foreach ($imgs as $n_v){
  142. $flag = true;
  143. foreach ($imgsmain as $d_v) {
  144. if ($d_v['pk_img_main']==$n_v['pk_img_main']) {
  145. $flag = false;
  146. break;
  147. }
  148. }
  149. if ($flag) {
  150. //添加图片
  151. $Db->insert($Base->table('imgs_works'),array('pk_img_main' =>$n_v['pk_img_main'] ,'pk_works_main'=>$n_v['pk_works_main'] ));
  152. }
  153. }
  154. //修改worksmain
  155. $worksmain_params = array(
  156. 'name' => $name,
  157. 'profile' => Common::sfilter($works['profile']),
  158. 'flag_publish' => intval($works['flag_publish']),
  159. 'privacy_password' => empty($privacy_password)?"":$privacy_password,
  160. 'hideuser_flag' => intval($works['hideuser_flag']),
  161. 'hidelogo_flag' => intval($works['hidelogo_flag']),
  162. 'hideviewnum_flag'=>intval($works['hideviewnum_flag']),
  163. 'flag_allowed_recomm'=>intval($works['flag_allowed_recomm']),
  164. 'hidevrglasses_flag'=>intval($works['hidevrglasses_flag']),
  165. 'hideprofile_flag'=>intval($works['hideprofile_flag']),
  166. 'hidepraise_flag'=>intval($works['hidepraise_flag']),
  167. 'hideshare_flag'=>intval($works['hideshare_flag'])
  168. );
  169. $Db->update($Base->table('worksmain'),$worksmain_params,array('pk_works_main'=>$works['pk_works_main']));
  170. $panoconfig_params = array(
  171. 'footmark' => empty($panoconfig['footmark'])?0:intval($panoconfig['footmark']),
  172. 'littleplanet'=>empty($panoconfig['littleplanet'])?0:intval($panoconfig['littleplanet']),
  173. 'gyro' => empty($panoconfig['gyro'])?0:intval($panoconfig['gyro']),
  174. 'comment' => empty($panoconfig['comment'])?0:intval($panoconfig['comment']),
  175. 'scenechoose' => empty($panoconfig['scenechoose'])?0:intval($panoconfig['scenechoose']),
  176. 'autorotate' => empty($panoconfig['autorotate'])?0:intval($panoconfig['autorotate']),
  177. 'open_alert' => $Json->encode_unescaped_unicode($panoconfig['open_alert']),
  178. 'sky_land_shade' => $Json->encode_unescaped_unicode($panoconfig['sky_land_shade']),
  179. 'url_phone_nvg' => $Json->encode_unescaped_unicode($panoconfig['url_phone_nvg']),
  180. 'bg_music' => $Json->encode_unescaped_unicode($panoconfig['bg_music']),
  181. 'speech_explain' => $Json->encode_unescaped_unicode($panoconfig['speech_explain']),
  182. 'custom_logo' => $Json->encode_unescaped_unicode($panoconfig['custom_logo']),
  183. 'scene_group' => $Json->encode_unescaped_unicode($panoconfig['scene_group']),
  184. 'custom_right_button' => $Json->encode_unescaped_unicode($panoconfig['custom_right_button']),
  185. );
  186. $Db->update($Base->table('pano_config'),$panoconfig_params,
  187. array('pk_works_main'=>$works['pk_works_main']));
  188. $Db->commit();
  189. $result['flag'] = 1;
  190. }catch(Exception $e){
  191. $Db->rollback();
  192. $result['msg'] = '操作失败!';
  193. }
  194. }
  195. echo $Json->encode($result,JSON_NUMERIC_CHECK);
  196. exit;
  197. }else if($act == "renameImg"){
  198. //重命名图片
  199. $pk_img_main = intval($input['pk_img_main']);
  200. $filename = Common::sfilter($input['filename']);
  201. $resutl['flag'] = 0;
  202. if (empty($filename)||mb_strlen($filename,'utf-8')>30) {
  203. $result['msg'] = "文件名必须在1到30个字符之间";
  204. }else if($Db->getCount($Base->table('imgsmain'),'pk_img_main',
  205. array('pk_img_main'=>$pk_img_main,'pk_user_main'=>$user['pk_user_main']))<=0){
  206. $result['msg'] = "非法操作";
  207. }else{
  208. $Db->update($Base->table('imgsmain'),array('filename'=>$filename),array('pk_img_main'=>$pk_img_main) );
  209. $result['flag'] = 1;
  210. }
  211. echo $Json->encode($result,JSON_NUMERIC_CHECK);
  212. exit;
  213. }else if($act =="replaceWorkCover"){
  214. //修改封面
  215. $pk_works_main = intval($input['pk_works_main']);
  216. $thumbpath = Common::sfilter($input['thumb_path']);
  217. $result['flag'] = 0;
  218. if (empty($thumbpath)) {
  219. $result['msg'] = "没有图片";
  220. }else if ($Db->getCount($Base->table('worksmain'),"pk_works_main",array("pk_works_main"=>$pk_works_main,"pk_user_main"=>$user['pk_user_main']))<=0){
  221. //用户id和项目不对应
  222. $result['msg'] = '非法操作';
  223. }else{
  224. $Db->update($Base->table("worksmain"),array('thumb_path'=>$_lang['cdn_host'].$thumbpath),array('pk_works_main'=>$pk_works_main));
  225. $result['absolutelocation'] = $_lang['cdn_host'].$thumbpath;
  226. $result['flag'] = 1;
  227. }
  228. echo $Json->encode($result,JSON_NUMERIC_CHECK);
  229. exit;
  230. }
  231. //设置项目访问密码
  232. else if($act == 'setPrivacyWord'){
  233. $privacyWord = Common::sfilter($_REQUEST['privacyWord']);
  234. $pid = intval($_REQUEST['pid']);
  235. $re['status'] = 0 ;
  236. if (empty($privacyWord)||mb_strlen($privacyWord)<3||mb_strlen($privacyWord)>20||!preg_match('/^[A-Za-z0-9]+$/',$privacyWord)) {
  237. $re['msg'] = '请输入3到20位英文或数字密码';
  238. }else{
  239. $Db->update($Base->table('worksmain'),array('privacy_password'=>$privacy_password),array('pk_works_main'=>$pid,'pk_user_main'=>$user['pk_user_main']));
  240. $re['status']= 1;
  241. }
  242. echo $Json->encode($re);
  243. }
  244. else{
  245. //跳转编辑项目页面
  246. $pid = intval($_REQUEST['pid']);
  247. if ($pid<=0||$Db->getCount($Base->table('worksmain'),"pk_works_main",array("pk_works_main"=>$pid ,"pk_user_main"=>$user['pk_user_main']))<=0) {
  248. die("查询不到该项目");
  249. }
  250. //获取plugin
  251. require_once ROOT_PATH.'plugin/plugin_init_function.php';
  252. plugin_get_plugins("edit");
  253. //获取上传地址
  254. $tp->assign('up_url',$_lang['up_url']);
  255. }
  256. function filter_array(&$arr){
  257. foreach($arr as $k => &$v){
  258. if(is_array($v)){
  259. filter_array($v);
  260. }else{
  261. if ($k=='imgtext_wordContent') {
  262. $v=base64_encode($v);
  263. }else{
  264. $v=Common::sfilter($v);
  265. }
  266. }
  267. }
  268. }
  269. ?>