OnlineController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <?php
  2. /**
  3. * 家校考试管理控制器类
  4. * @author li
  5. * @date 2019-04-17 10:50:00
  6. * @company 上海风车教育有限公司.
  7. */
  8. class OnlineController extends Controller{
  9. // 首页
  10. public function actionIndex(){
  11. Url::clean();
  12. $exam_group_id=Req::get('exam_group_id');
  13. $data['exam_group_id']=$exam_group_id;
  14. $findInfo = SExamGroup::model()->find('exam_group_id=:eg_id',array('eg_id'=>$exam_group_id));
  15. //获取考试ID
  16. $criteria = new CDbCriteria();
  17. $criteria->select = 'exam_id,exam_group_id';
  18. $criteria->addCondition("exam_group_id='".$exam_group_id."'");
  19. $exam_data = Exam::model()->findAll($criteria);
  20. unset($criteria);
  21. if($exam_data) {
  22. foreach ($exam_data as $v) {
  23. $exam_ids[$v->exam_id] = $v->exam_id;
  24. }
  25. }
  26. $data['schoolId']=$this->schoolId;
  27. $data['examIds']=$exam_ids;
  28. $data['examStatus']=$findInfo->status;
  29. $this->renderPartial('index',$data);
  30. }
  31. // 第三方创建答题卡
  32. public function actionThird(){
  33. $subjectId=Yii::app()->session['session_duoxueke_subject_id'];
  34. $this->renderPartial('third',array('subjectId'=>$subjectId));
  35. }
  36. // 第三方创建答题卡
  37. public function actionAnswersheet(){
  38. $subjectId=Yii::app()->session['session_duoxueke_subject_id'];
  39. $this->renderPartial('answersheet',array('subjectId'=>$subjectId));
  40. }
  41. // 答题卡列表页
  42. public function actionAnswersheetList(){
  43. $subjectId=Yii::app()->session['session_duoxueke_subject_id'];
  44. $this->renderPartial('answersheet_list',array('subjectId'=>$subjectId));
  45. }
  46. //上传文件返回文件地址
  47. public function actionUploadFile(){
  48. $error['success']=0;
  49. $uCloudUrl='';
  50. $config = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", $this->config_json()), true);
  51. $action=Req::get('action');
  52. if($action=='config'){
  53. $result = json_encode($config);
  54. $result=json_decode($result,true);
  55. if(isset($result['url']) && !empty($result['url'])){
  56. $result['url']=Yii::app()->params['WebUrl'].$result['url'];
  57. }
  58. $result=json_encode($result);
  59. /* 输出结果 */
  60. if (isset($_GET["callback"])) {
  61. if (preg_match("/^[\w_]+$/", $_GET["callback"])) {
  62. echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
  63. } else {
  64. echo json_encode(array(
  65. 'state'=> 'callback参数不合法'
  66. ));
  67. }
  68. } else {
  69. echo $result;
  70. }
  71. exit;
  72. }
  73. if (empty($_FILES)) {
  74. $error['message'] = '未找到上传文件!';
  75. echo json_encode($error);exit();
  76. }else{
  77. // 保存上传文件至服务器
  78. $pathName = dirname(dirname(dirname(__FILE__))).'/upload/tmpDir/ThirdSheet/'. date('Y') .'/'. date('m') . '/';
  79. if (!file_exists($pathName)) {
  80. mkdir($pathName, 0777, true);
  81. }
  82. $filesName=array();
  83. if(isset($_FILES['editor_file'])){
  84. $filesName=$_FILES['editor_file'];
  85. }elseif(isset($_FILES['upfile'])){
  86. $filesName=$_FILES['upfile'];
  87. }
  88. $extName = substr($filesName['name'],strrpos($filesName['name'],'.'));
  89. $fileName = uniqid() . $extName;
  90. if (!move_uploaded_file($filesName['tmp_name'], $pathName.$fileName)) {
  91. $error['message'] = '上传文件失败!';
  92. echo json_encode($error);exit();
  93. }
  94. $fileSrc = $pathName.$fileName;
  95. $rename = 'zsyas2/cardonline/'.$this->schoolId.'/'. date('Y') . '/' . date('m') . '/' . date('d').'/'. $fileName;
  96. $ucloud = new Qcloud();
  97. $uploadInfo = $ucloud->putFile($rename, $fileSrc);
  98. if ($uploadInfo['status'] == 0) {
  99. $error['message'] = '上传文件失败!';
  100. @unlink($fileSrc);
  101. echo json_encode($error);exit();
  102. }else{
  103. @unlink($fileSrc);
  104. if(isset($_FILES['upfile'])){
  105. $error=array(
  106. "state" => 'SUCCESS',
  107. "url" => $uploadInfo['url'],
  108. "title" => $fileName,
  109. "original" => $filesName['name'],
  110. "type" => $extName,
  111. "size" => ''
  112. );
  113. echo json_encode($error);exit();
  114. }
  115. $error['success']=1;
  116. $uCloudUrl=$uploadInfo['url'];
  117. }
  118. $error['data']=$uCloudUrl;
  119. echo json_encode($error);exit();
  120. }
  121. }
  122. private function config_json(){
  123. $json='
  124. /* 前后端通信相关的配置,注释只允许使用多行方式 */
  125. {
  126. /* 上传图片配置项 */
  127. "imageActionName": "uploadimage", /* 执行上传图片的action名称 */
  128. "imageFieldName": "upfile", /* 提交的图片表单名称 */
  129. "imageMaxSize": 2048000, /* 上传大小限制,单位B */
  130. "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
  131. "imageCompressEnable": true, /* 是否压缩图片,默认是true */
  132. "imageCompressBorder": 1600, /* 图片压缩最长边限制 */
  133. "imageInsertAlign": "none", /* 插入的图片浮动方式 */
  134. "imageUrlPrefix": "", /* 图片访问路径前缀 */
  135. "imagePathFormat": "/upload/editor/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  136. /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
  137. /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
  138. /* {time} 会替换成时间戳 */
  139. /* {yyyy} 会替换成四位年份 */
  140. /* {yy} 会替换成两位年份 */
  141. /* {mm} 会替换成两位月份 */
  142. /* {dd} 会替换成两位日期 */
  143. /* {hh} 会替换成两位小时 */
  144. /* {ii} 会替换成两位分钟 */
  145. /* {ss} 会替换成两位秒 */
  146. /* 非法字符 \ : * ? " < > | */
  147. /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */
  148. /* 涂鸦图片上传配置项 */
  149. "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
  150. "scrawlFieldName": "upfile", /* 提交的图片表单名称 */
  151. "scrawlPathFormat": "/upload/editor/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  152. "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
  153. "scrawlUrlPrefix": "", /* 图片访问路径前缀 */
  154. "scrawlInsertAlign": "none",
  155. /* 截图工具上传 */
  156. "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
  157. "snapscreenPathFormat": "/upload/editor/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  158. "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */
  159. "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */
  160. /* 抓取远程图片配置 */
  161. "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
  162. "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
  163. "catcherFieldName": "source", /* 提交的图片列表表单名称 */
  164. "catcherPathFormat": "/upload/editor/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  165. "catcherUrlPrefix": "", /* 图片访问路径前缀 */
  166. "catcherMaxSize": 2048000, /* 上传大小限制,单位B */
  167. "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */
  168. /* 上传视频配置 */
  169. "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
  170. "videoFieldName": "upfile", /* 提交的视频表单名称 */
  171. "videoPathFormat": "/upload/editor/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  172. "videoUrlPrefix": "", /* 视频访问路径前缀 */
  173. "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
  174. "videoAllowFiles": [
  175. ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
  176. ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */
  177. /* 上传文件配置 */
  178. "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
  179. "fileFieldName": "upfile", /* 提交的文件表单名称 */
  180. "filePathFormat": "/upload/editot/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  181. "fileUrlPrefix": "", /* 文件访问路径前缀 */
  182. "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
  183. "fileAllowFiles": [
  184. ".png", ".jpg", ".jpeg", ".gif", ".bmp",
  185. ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
  186. ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
  187. ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
  188. ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
  189. ], /* 上传文件格式显示 */
  190. /* 列出指定目录下的图片 */
  191. "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
  192. "imageManagerListPath": "/upload/editor/image/", /* 指定要列出图片的目录 */
  193. "imageManagerListSize": 20, /* 每次列出文件数量 */
  194. "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */
  195. "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
  196. "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */
  197. /* 列出指定目录下的文件 */
  198. "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
  199. "fileManagerListPath": "/upload/editor/file/", /* 指定要列出文件的目录 */
  200. "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */
  201. "fileManagerListSize": 20, /* 每次列出文件数量 */
  202. "fileManagerAllowFiles": [
  203. ".png", ".jpg", ".jpeg", ".gif", ".bmp",
  204. ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
  205. ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
  206. ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
  207. ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
  208. ] /* 列出的文件类型 */
  209. }';
  210. return $json;
  211. }
  212. }