semesterId}'"; $magicWordModel = new SEnglishMagicWord(); $resultList = $magicWordModel->getMagicWord($newCondition,array('er.create_time desc','er.mw_id desc'),9); $printList = array(); if($resultList["rs"]){ foreach ($resultList['rs'] as $k=>$v) { $printList[$k]=$v; } } if (empty($grade)) { $grade = 'ALL'; } $header=array('X-Basic-V:2',"schoolId:{$this->schoolId}"); $cgi=Yii::app()->params['cgi']; $postParam=array(); $username=$cgi['username']; $password=$cgi['password']; $url = $cgi['domain'].'teacher/paper/word-group/can-use-new';//是否可以创建新版词汇组 $rs = $this->CrmApiPost($url,$postParam,$username,$password,'POST',$header); //是否可以试用 生成词汇宝(新) $isTrial=false; if(isset($rs->errCode) && $rs->errCode =='00' && isset($rs->data) && $rs->data) { $isTrial=true; } $classes = $this->schoolManager->getClasses($grade); $data['pages'] = $resultList['pager']; $data['page_total'] = $resultList['pager']->rowsCount; $data['printList'] = $printList; $data["printName"] = $printName; $data["classes"] = $classes; $data["classId"] = $classId; $data["grade"] = $grade; $data['printType'] = 'mw'; $data['isTrial']=$isTrial; // debug($printList); $this->render('index',$data); } /** * 词汇宝选择学生 */ public function actionStu(){ $data = array(); $sname = (string)Req::get("sname"); //学生名字 $mw_id = (string)Req::get("mw_id"); if(!$mw_id){ Yii::app()->jump->error('参数错误!'); } //获取班级名称以及周后推送名称 $sql = "select er.name,c.class_name,er.grade,er.class_id,er.create_time,er.semester_id from english_magic_word er join class c on er.class_id = c.class_id where er.mw_id = '{$mw_id}'"; $names = $this->sConn->createCommand($sql)->queryRow(); if(!$names){ $names = array(); $names['name'] = ''; $names['class_name'] = ''; $names['grade'] = 0; }else{ $data['name'] = isset($names['name']) && isset($names['class_name'])?$names['class_name'].$names['name']:''; } $sql = "select student_id,is_week_pdf,is_card_pdf from english_magic_word_student where mw_id = '{$mw_id}'"; $relateStudent = $this->sConn->createCommand($sql)->queryAll(); $studentIds = array(); $stuIsPdf = array(); $cardPdf = array(); if($relateStudent){ foreach ($relateStudent as $studentInfo) { $studentIds[] = (string)$studentInfo['student_id']; $stuIsPdf[(string)$studentInfo['student_id']] = $studentInfo['is_week_pdf']; $cardPdf[(string)$studentInfo['student_id']] = $studentInfo['is_card_pdf']; } } if($studentIds){ $studentNames = SStudentInfo::model()->getStudentNames($studentIds); //求学生名字 $markingStudents = SEnglishMagicWordMarking::model()->getStuMarkingStatus($studentIds,$mw_id); if($studentNames){ if($sname){ $i = 1; foreach($studentNames as $k=>$v){ if(strpos($v,$sname) !== false){ $data['list'][$i]['stu_id'] = (string)$k; $data['list'][$i]['stu_name'] = $v; $data['list'][$i]['name'] = $names['class_name'].$v.$names['name']; $data['list'][$i]['is_pdf'] = isset($stuIsPdf[(string)$k])?$stuIsPdf[(string)$k]:0; $data['list'][$i]['is_card_pdf'] = isset($cardPdf[(string)$k])?$cardPdf[(string)$k]:0; $data['list'][$i]['is_marking'] = isset($markingStudents[(string)$k])?$markingStudents[(string)$k]:0; $i++; } } }else{ $i = 1; foreach($studentNames as $k=>$v){ $data['list'][$i]['stu_id'] = (string)$k; $data['list'][$i]['stu_name'] = $v; $data['list'][$i]['name'] = $names['class_name'].$v.$names['name']; $data['list'][$i]['is_pdf'] = isset($stuIsPdf[(string)$k])?$stuIsPdf[(string)$k]:0; $data['list'][$i]['is_card_pdf'] = isset($cardPdf[(string)$k])?$cardPdf[(string)$k]:0; $data['list'][$i]['is_marking'] = isset($markingStudents[(string)$k])?$markingStudents[(string)$k]:0; $i++; } } } } $Sem=new SSemester(); $code= $Sem->conn->createQuery() ->from('semester') ->where("semester_id = '".$names['semester_id']."'") ->limit(1) ->query() ->read(); $intarr=array( "schoolId"=>$this->schoolId, "clazzId"=>$names['class_id'], "semester"=>$code['refer_code'], "grade"=>$names['grade'], "students"=>$studentIds, "examTime"=>$names['create_time'], "classify"=>11, "subject"=>8 ); $basic = imsBasicAuth($this->schoolId.'_'.Yii::app()->session['coachInfo']['coach_name'],Yii::app()->params["zsy_api_key"]); $rs = json_decode(Curl::http_post_Basic_json(Yii::app()->params["get_limit_url"], json_encode($intarr),$basic)); if(!$rs){ Yii::app()->jump->error("接口错误"); } if($rs->errCode!="00"){ Yii::app()->jump->error($rs->errMsg); } if(!empty($rs->data)){ $data['limitstu']=$rs->data; } $data['mw_id'] = $mw_id; $data['sname'] = $sname; $data['printType'] = 'magic_word'; $this->render('stu',$data); } /** * 英语词汇宝设置 */ public function actionSetting(){ $data = array(); //新老版本 1-旧版本 2-新版本 $type=(int)Req::get('type')?(int)Req::get('type'):1; $data['year'] = $year = date("Y"); $data['month'] = $month = (int)date("m"); $data['week'] = $week = date("W", time()) - date("W", strtotime(date("Y-m-01", time()))) + 1; $textboookTree = new MongodbEnglishTree(); $criteria = new EMongoCriteria(); if($type==1) { $textbookData = $textboookTree->find($criteria, array()); if ($textbookData) { foreach ($textbookData as $doc) { foreach ($doc->attributes as $key => $value) { if ($key !== '_id') { if (isset($value['textbook_id']) && isset($value['name'])) { $data['textbookNames'][$value['textbook_id']] = $value['name']; if (!isset($textbookId)) { $textbookId = $value['textbook_id']; } if ($textbookId == $value['textbook_id']) { if (isset($value['module']) && $value['module']) { foreach ($value['module'] as $kk => $vv) { $data['moduleNames'][$vv['textbook_module_id']] = $vv['name']; if (!isset($moduleId)) { $moduleId = $vv['textbook_module_id']; } if ($moduleId == $vv['textbook_module_id']) { if (isset($vv['unit']) && $vv['unit']) { foreach ($vv['unit'] as $kkk => $vvv) { $data['unitNames'][$vvv['textbook_unit_id']] = $vvv['name']; } } } } } } } } } } } $data['groupList'] = $this->getDbConnection()->createCommand("select g.word_group_id,g.`name`,g.create_time,COUNT(w.word_id)as word_count from word_group_word w INNER JOIN word_group g on w.word_group_id=g.word_group_id where g.is_new=0 and g.effective=1 GROUP BY g.word_group_id ORDER BY g.create_time DESC;")->queryAll(); }else{ //$textbookResult=$this->apiPost('all_textbook/textbook',array('subject_id'=>8,'query_type'=>2)); $textbookResult=$this->apiPost('all_textbook/vocabularyTextbook',array('subject_id'=>8,'query_type'=>2)); $textbookResult=json_decode(json_encode($textbookResult),true); $textbooks=$modules=$units=$chapters=array(); if(isset($textbookResult['status']) && $textbookResult['status'] && isset($textbookResult['data']) && $textbookResult['data']){ $textbookResult=$textbookResult['data']; foreach($textbookResult as $textbookKey=>$textbookItem){ $textbooks[]=array('textbook_id'=>$textbookItem['textbook_id'],'textbook_name'=>$textbookItem['textbook_name']); if($textbookKey==0 && isset($textbookItem['child']) && $textbookItem['child']){ foreach($textbookItem['child'] as $moduleKey=>$moduleItem){ $modules[]=array('textbook_id'=>$moduleItem['textbook_id'],'textbook_name'=>$moduleItem['textbook_name']); if($moduleKey==0 && isset($moduleItem['child']) && $moduleItem['child']){ foreach($moduleItem['child'] as $unitKey=>$unitItem){ $units[]=array('textbook_id'=>$unitItem['textbook_id'],'textbook_name'=>$unitItem['textbook_name']); if( $unitKey==0 && isset($unitItem['child']) && $unitItem['child']){ foreach($unitItem['child'] as $chapterItem){ $chapters[]=array('textbook_id'=>$chapterItem['textbook_id'],'textbook_name'=>$chapterItem['textbook_name']); } } } } } } } } $data['textbooks']=$textbooks;//版本 $data['modules']=$modules;//模块 $data['units']=$units;//单元 $data['chapters']=$chapters;//节 $data['groupList'] = $this->getDbConnection()->createCommand("select g.word_group_id,g.`name`,g.create_time,COUNT(w.word_id)as word_count from word_group_word w INNER JOIN word_group g on w.word_group_id=g.word_group_id where g.is_new=1 and g.effective=1 GROUP BY g.word_group_id ORDER BY g.create_time DESC;")->queryAll(); } //最近一次设置选项 $data['setting'] = $this->getDbConnection()->createCommand("select * from english_magic_word_setting order by create_time desc")->queryRow(); $data['printType'] = 'setting'; $http = http('order/goods-type/open-time/'.$this->schoolId, 'GET', $this->authUsername); $response = formatResponse($http); $data['isWhole'] = isset($response['data']) && !empty($response['data']) ? (strtotime($response['data'])<1653926400 ? true : false) : false; if($type==1) { $this->render('setting', $data); }else{ $this->render('setting2', $data); } } /** * 设置英语词汇宝 */ public function actionAjaxSaveSetting(){ $error = array(); if (! Yii::app()->request->isAjaxRequest OR ! Yii::app()->request->isPostRequest){ $error[] = '错误的来源!'; }else{ $grade=(int)Req::post('grade'); $unitIds = (array)Req::post('unitIds'); $translateType = (int)Req::post('translateType'); $practiceType = (int)Req::post('practiceType'); $wordCount = (int)Req::post('wordCount'); $cardWordCount = (int)Req::post('cardWord_count'); $isClassCommon = (int)Req::post('isClassCommon'); $classIds = Req::post('selectClassIds'); $isAnswerSeparate = (int)Req::post('isAnswerSeparate'); $cardWordSource = (int)Req::post('cardWordSource'); $wordGroupId = (string)Req::post('wordGroupId'); $scanType = (int)Req::post('scanType'); $isNewVersion = (int)Req::post('is_new_version')?(int)Req::post('is_new_version'):0; $correctingModel = (int)Req::post('correcting_model')?(int)Req::post('correcting_model'):1; $cardChineseRange = (int)Req::post('card_chinese_range')?(int)Req::post('card_chinese_range'):1; $cardCountJson=Req::post('card_count_json'); $cardCountJson = str_replace('"', '"', $cardCountJson); $deriveJson = Req::post('derive_json'); $deriveJson = str_replace('"', '"', $deriveJson); $cardCount = $derive = array(); if ($cardWordSource==1 && $isNewVersion) { $cardCount=json_decode($cardCountJson, true); if(!$cardCount){ $error[] = '请检查检测卡词语数量结构'; }else{ $reg="/^[0-9]*$/"; if(!isset($cardCount['word']) || !isset($cardCount['word_chinese_english']) || !isset($cardCount['word_english_chinese']) || !isset($cardCount['phrase'])|| !isset($cardCount['phrase_chinese_english'])|| !isset($cardCount['phrase_english_chinese'])){ $error[] = '检测卡词语数量结构不全'; } elseif(!preg_match($reg, $cardCount['word']) || !preg_match($reg, $cardCount['word_chinese_english']) || !preg_match($reg, $cardCount['word_english_chinese']) || !preg_match($reg, $cardCount['phrase']) || !preg_match($reg, $cardCount['phrase_chinese_english']) || !preg_match($reg, $cardCount['phrase_english_chinese'])){ $error[] = '检测卡词语数量只能为大于等于0的整数'; }else { $word=intval($cardCount['word']); $word_chinese_english=intval($cardCount['word_chinese_english']); $word_english_chinese=intval($cardCount['word_english_chinese']); $phrase=intval($cardCount['phrase']); $phrase_chinese_english=intval($cardCount['phrase_chinese_english']); $phrase_english_chinese=intval($cardCount['phrase_english_chinese']); if($word_chinese_english+$word_english_chinese>$word){ $error[] = '单词汉译英和英译汉数量超过单词数量总数'; } if($phrase_chinese_english+$phrase_english_chinese>$phrase){ $error[] = '单词汉译英和英译汉数量超过短语数量总数'; } $cardTotal=$word_chinese_english+$word_english_chinese+$phrase_chinese_english+$phrase_english_chinese; if($cardTotal<10 || $cardTotal>400){ $error[] = '词汇检测卡词语数量最多400个最少10个'; } } } } if($isNewVersion) { $unitIdData=array(); $chapterIds=$unitIds; if($chapterIds){ foreach($chapterIds as $chapterId){ $unitId=substr($chapterId,0,strrpos($chapterId,"_")); $unitIdData[$unitId][]=$chapterId; } } if(in_array($grade,array(1,2))){ if(empty($chapterIds)){$error[] = '请选择小节';} if(count($unitIdData)>1){$error[] = '已选单元超出限制';} } if($grade == 3){ if(empty($chapterIds)){$error[] = '请选择小节';} if(count($unitIdData)>3){$error[] = '已选单元超出限制';} } $derive=json_decode($deriveJson, true); if (!$derive) { $error[] = '请检查派生结构'; } else { if (!isset($derive['word_english_chinese']) || !isset($derive['word_chinese_english'])) { $error[] = '派生结构不全'; } } }else{ if(in_array($grade,array(1,2))){ if(empty($unitIds)){$error[] = '请选择单元';} if(count($unitIds)>1){$error[] = '已选单元超出限制';} } if($grade == 3){ if(empty($unitIds)){$error[] = '请选择单元';} if(count($unitIds)>3){$error[] = '已选单元超出限制';} } } if($cardWordSource == 1 && $cardWordCount<=0 && !$isNewVersion){ $error[] = '请填写检测卡词语数量'; } if($cardWordSource == 2 && empty($wordGroupId)){ $error[] = '请选择教师端词汇组'; } if(!$grade){ $error[] = '请选择年级'; } if(!$classIds){ $error[] = '请选择班级'; } if($practiceType == 2){ foreach ($classIds as $classId){ $class = ClassModel::model()->findByPk($classId); $sql = "select c.class_name from exam e inner join student_paper_relation r on e.exam_id=r.exam_id inner join class c on c.class_id=e.class_id where e.subject_id=8 and e.semester_id='{$this->semesterId}' and e.class_id = '{$classId}' and e.status = 1 and r.is_complete=1"; $rs = $this->sConn->createCommand($sql)->queryRow(); if(empty($rs)){ $error[] = $class->class_name.'请先录入考试成绩'; } } } } if(!$error){ $time = time(); $week = date("W"); $year = date("Y"); $strModel = new SStudentClassRelation(); $transaction = $this->sConn->beginTransaction(); try{ $groupId = getUniqueId($this->schoolId); //新版本为1,旧版本默认为0 $isAllHtml=$isNewVersion?1:0; $mwIds=array(); if ($grade == 3) { $productName = '高三' . date('Y') . '年第' . date('W') . '周词汇宝'; }elseif($grade == 2){ $productName = '高二' . date('Y') . '年第' . date('W') . '周词汇宝'; }else{ $productName = '高一' . date('Y') . '年第' . date('W') . '周词汇宝'; } $this->sConn->createCommand()->insert('english_magic_word_setting',array( 'mw_group_id'=>$groupId, 'grade' => $grade, 'semester_id' => $this->semesterId, 'node_ids' => implode(',',$unitIds), 'words_count' => $wordCount, 'practice_type' => $practiceType, 'translate_type' => $translateType, 'is_class_common' => $isClassCommon, 'card_word_count' => $cardWordCount, 'create_time' => $time, 'is_answer_separate'=>$isAnswerSeparate, 'card_word_source' => $cardWordSource, 'word_group_id' => $cardWordSource == 1 ? 0 : $wordGroupId, 'scan_type' => $scanType, 'is_new_version'=>$isNewVersion, 'card_count_json'=>empty($cardCount)?'':json_encode($cardCount), 'correcting_model'=>$correctingModel, 'card_chinese_range'=>$cardChineseRange, 'derive' => empty($derive) ? '' : json_encode($derive), )); foreach($classIds as $k=>$v){ $weekId = getUniqueId($this->schoolId); $mwIds[]=$weekId; $this->sConn->createCommand()->insert('english_magic_word',array( 'mw_group_id' => $groupId, 'mw_id' => $weekId, 'name' => $productName, 'class_id' => $v, 'grade' => $grade, 'semester_id' => $this->semesterId, 'year_num' => $year, 'week_num' => $week, 'create_time' => $time, 'is_all_html' => $isAllHtml, )); //获取班级学生 $stuData = $strModel->getRelationsByClassId_Status_0($v); if($stuData){ foreach($stuData as $kk=>$vv){ $this->sConn->createCommand()->insert('english_magic_word_student',array( 'mw_id' => $weekId, 'student_id' => $vv['student_id'], )); } } } $transaction->commit(); }catch(Exception $e){ $transaction->rollBack(); if (YII_ENV == 'production') { $error[] = '系统错误[SQL]'; } else { $error[] = $e->getMessage(); } } } if($error){ echo json_encode(array('status'=>0,'error'=>$error));exit; }else{ if($isNewVersion){ $kafkaData=array( 'school_id'=>$this->schoolId, 'msg_type'=>1,//90:重置 1:新设置 'grade'=>$grade, 'subject_id'=>8, 'send_type'=>'english_magic_word', 'product_type'=>array(1), 'gp_group_id'=>$groupId, 'gp_ids'=>array_unique($mwIds), ); sendDataToKafka("php-product-english-magic-word-html",$kafkaData); } echo json_encode(array('status'=>1));exit; } } //获取词汇宝产品班级 public function actionAjaxGetClasses(){ $result = array(); $grade=(int)Req::post('grade'); $year = date("Y"); $month = (int)date("m"); $week = date("W"); //获取班级 $hasSettingClassIds = array(); $sql = "select class_id,count(*) count from english_magic_word emw left join english_magic_word_setting emws on emws.mw_group_id=emw.mw_group_id where emws.product_type=33 and year_num = {$year} and week_num = {$week} group by class_id"; $data = $this->sConn->createCommand($sql)->queryAll(); if($data){ foreach($data as $k=>$v){ if($v['count'] > 0){ $hasSettingClassIds[$v['class_id']] = $v['count']; } } } $classIds = array(); $setting = $this->getDbConnection()->createCommand("select * from english_magic_word_setting order by create_time desc")->queryRow(); if($setting) { $classIds = $this->sConn->createCommand("select class_id from english_magic_word where mw_group_id={$setting['mw_group_id']}")->queryColumn(); } if($grade){ $sql = "select class_id,class_name from class where semester_id = '{$this->semesterId}' and grade = {$grade} and class_type = 1 and is_hide=0"; $data = $this->sConn->createCommand($sql)->queryAll(); if($data){ $i = 0; foreach($data as $k => $v){ $sql = "select count(student_id) count from student_class_relation where class_id = '{$v['class_id']}' and status = 0"; $class_student = $this->sConn->createCommand($sql)->queryRow(); if($class_student && $class_student['count']>0){ $result[$i]['class_id'] = $v['class_id']; $result[$i]['class_name'] = $v['class_name']; $result[$i]['status'] = isset($hasSettingClassIds[$v['class_id']])&&$hasSettingClassIds[$v['class_id']]>=5?1:0; $result[$i]['count'] = isset($hasSettingClassIds[$v['class_id']])?$hasSettingClassIds[$v['class_id']]:0; $result[$i]['selected'] = in_array($v['class_id'], $classIds) ? true : false; $i++; } } } } echo json_encode($result);exit; } //单元的短语和词汇数量 public function actionAjaxWordCount() { $unitId = Req::post('ids'); $grade = Req::post('grade'); if(empty($unitId) || empty($grade)){ echo json_encode(array('status'=>0,'message'=>'参数错误'));exit; } $sql = "select single_word,phrase from en_unit_single_phrase where id='{$unitId}'"; $rs = Yii::app()->enStuffDb->createCommand($sql)->queryRow(); $wordCount = 0; if($rs){ $words = isset($rs['single_word']) && !empty($rs['single_word']) ? json_decode($rs['single_word'],true) : array(); } if(isset($words) && !empty($words)){ $wordsStr = implode(',',$words); $wordSql = "select count(*) from en_single_word WHERE single_word_id in ($wordsStr)"; $wordCount = Yii::app()->enStuffDb->createCommand($wordSql)->queryScalar(); } $data = array('wordCount'=>(int)$wordCount); echo json_encode(array('status'=>1,'data'=>$data)); exit; } //全学科题库里的单元的短语和词汇数量 public function actionAjaxNewWordCount() { $unitIds = Req::post('ids'); if(empty($unitIds) || !is_array($unitIds)){ echo json_encode(array('status'=>0,'message'=>'参数错误'));exit; } foreach($unitIds as $item){ $itemArr=explode('_',$item); $textbooks[]=$itemArr[count($itemArr) -1]; } $textbooks=array_unique($textbooks); $countResult=$this->apiPost('all_library/getWordCouByUnit',array('textbook'=>$textbooks,'is_unit'=>false)); $countResult=json_decode(json_encode($countResult),true); $wordCou=$phraseCou=0; if(isset($countResult['status']) && $countResult['status'] && isset($countResult['data']) && $countResult['data']){ $wordCou=isset($countResult['data']['word_cou'])?$countResult['data']['word_cou']:0; $phraseCou=isset($countResult['data']['phrase_cou'])?$countResult['data']['phrase_cou']:0; } $data=array( 'wordCount'=>$wordCou, 'phraseCount'=>$phraseCou, ); exit(json_encode(array('status'=>1,'data'=>$data))); } //确认完成检测卡上传 public function actionConfirmUpload() { $mw_id = (string)Req::get("mw_id"); $mw_group_id = (string)Req::get("mw_group_id"); if(empty($mw_id) || empty($mw_group_id)){ echo json_encode(array('status'=>0,'message'=>'参数错误'));exit; } $sql = "select count(distinct student_id) as count from english_magic_word_marking where mw_id={$mw_id};"; $rs = $this->sConn->createCommand($sql)->queryRow(); $markCount= isset($rs['count']) ? $rs['count'] : 0; $scoreSql = "select count(distinct student_id) as count from english_magic_word_score where mw_id={$mw_id};"; $scoreRs = $this->sConn->createCommand($scoreSql)->queryRow(); $scoreCount = isset($scoreRs['count']) ? $scoreRs['count'] : 0; if($scoreCount!=$markCount){ echo json_encode(array('status'=>0,'message'=>'部分学生未批改完成!'));exit; } $result=$this->sConn->createCommand()->update("english_magic_word", array("marking_status" => 1), "mw_id = '{$mw_id}'"); if($result){ $sql = "select mw_group_id,is_new_version,grade from english_magic_word_setting where mw_group_id={$mw_group_id};"; $rs = $this->sConn->createCommand($sql)->queryRow(); $isNewVersion= isset($rs['is_new_version']) ? $rs['is_new_version'] : 0; if($isNewVersion){ $grade= isset($rs['grade']) ? $rs['grade'] : 0; $kafkaData=array( 'school_id'=>$this->schoolId, 'msg_type'=>1,//90:重置 1:新设置 'grade'=>$grade, 'subject_id'=>8, 'send_type'=>'english_magic_word', 'product_type'=>array(2), 'gp_group_id'=>$mw_group_id, 'gp_ids'=>array($mw_id) ); sendDataToKafka("php-product-english-magic-word-html",$kafkaData); } } echo json_encode(array('status'=>1));exit; } //恢复上传 public function actionResumeUpload() { $mw_id = (string)Req::get("mw_id"); if(empty($mw_id)){ echo json_encode(array('status'=>0,'message'=>'参数错误'));exit; } $transaction = $this->sConn->beginTransaction(); try { $this->sConn->createCommand()->update("english_magic_word", array("marking_status" => 0, "is_marking_all_html" => 0), "mw_id = '{$mw_id}'"); $this->sConn->createCommand()->update("english_magic_word_student", array("is_card_html" => 0,"card_html_path"=>'',"card_pdf_path"=>'', "is_card_pdf"=>0), "mw_id = '{$mw_id}'"); $transaction->commit(); }catch (\Exception $e){ $transaction->rollBack(); echo json_encode(array('status'=>0,'message'=>$e->getMessage()));exit; } echo json_encode(array('status'=>1));exit; } /** * 英语词汇宝教师版下载 * @throws CException */ public function actionTeacherWeek(){ set_time_limit(0); $mwId = safe_replace(Yii::app()->request->getQuery('mwId')); $isPrint=safe_replace(Yii::app()->request->getQuery('isPrint')); $sql = "select * from teacher_magic_word where mw_id = '{$mwId}'"; $week_info = $this->sConn->createCommand($sql)->queryAll(); $teacher_extend_arr = array(); foreach($week_info as $info) { $content = $info['content']; $content = json_decode($content,true); $teacher_extend_arr[$info['type']] = $content; } $sql = "select grade,mw_group_id,teacher_general_pdf_path,class_id,semester_id from english_magic_word where mw_id = '{$mwId}'"; $week_info = $this->sConn->createCommand($sql)->queryRow(); $sql = "select words_count,practice_type,translate_type,is_class_common,card_word_count,card_word_source,is_new_version from english_magic_word_setting where mw_group_id='{$week_info['mw_group_id']}'"; $week_setting_info = $this->sConn->createCommand($sql)->queryRow(); if($week_setting_info && $week_setting_info['practice_type'] == 2){ //1共性 2个性 Yii::app()->jump->error('学生个性化词汇宝无教师版!'); } $sql = "select ps_id from product_class_relation where class_id={$week_info['class_id']} and semester_id={$week_info['semester_id']} and set_type=8 order by ps_id desc limit 1"; $arr = $this->sConn->createCommand($sql)->queryRow(); $sql = $arr ? "select custom_config from product_setting where ps_id={$arr['ps_id']}" : "select custom_config from product_setting where product_type=8"; $product_setting = $this->sConn->createCommand($sql)->queryRow(); $product_setting = $product_setting ? $product_setting['custom_config'] : ''; $setting = array( 'moduleName'=>'词汇宝', 'moduleType'=>'english_5', 'setting'=>array( 'training' => array( //a-词汇集训 'wordReview' => 1, //词汇回顾 'wordExplain' => 1, // 词汇精讲 'practiceExact' => array( // 精准训练 'translate' => 1, //英汉互译 'wordApply' => 1, //词汇运用 'discourse' => 1, //语篇训练 ) // ), 'checkCard' => 1, //词汇集训检测卡 'wrongPractice' => 1, //错词再练 'wrongPracticeTimes' => 3, //第几次推送错词再练 ) ); $product_setting = $product_setting ? json_decode($product_setting, true) : $setting; $sql = "select * from english_magic_word_student where mw_id = '{$mwId}'"; $h5_generate_time = $this->sConn->createCommand($sql)->queryRow(); $h5_generate_time = $h5_generate_time ? explode('-',date('Y-m-d',$h5_generate_time['week_html_time'])) : ''; $h5_year = $h5_generate_time ? $h5_generate_time[0] : 0; $h5_month = $h5_generate_time ? $h5_generate_time[1] : 0; $h5_day = $h5_generate_time ? $h5_generate_time[2] : 0; // if(YII_ENV != 'production'){ // $h5_url = 'http://zsyapi.testing.xueping.com/uploads/magic_word/html/'.$this->schoolId.'/'.$h5_year.'/'.$h5_month.'/'.$h5_day.'/'.$mwId.'/h5/0.html'; // }else{ // $h5_url = Yii::app()->params['static_url'][$this->schoolGroupId].'/magic_word/html/'.$this->schoolId.'/'.$h5_year.'/'.$h5_month.'/'.$h5_day.'/'.$mwId.'/h5/0.html'; // } if(!$week_setting_info['is_new_version']){ $h5_url = Yii::app()->params['static_url'][$this->schoolGroupId].'/magic_word/html/'.$this->schoolId.'/'.$h5_year.'/'.$h5_month.'/'.$h5_day.'/'.$mwId.'/0_h5.html'; }else{ $h5_url = Yii::app()->params['static_url'][$this->schoolGroupId].'/zxhx_exam_html/english/english_magic_word/'. date('Y-m-d') .'/'.$mwId.'/0_h5.html'; } $h5_img = $this->qrcode64($h5_url); $topic_type_ids = $topic_type_k_v = array(); if($week_setting_info['is_new_version']){ if(YII_ENV != 'production'){ //语篇训练 $topic_type_k_v = array('choice_cloze'=>41,'reading_comprehension'=>42,'sentence_cloze'=>44,'grammar_gap_filling'=>278); $topic_type_ids = array(41=>'Choice Cloze (完形填空)', 42=>'Reading Comprehension (阅读理解)', 44=>'Sentence Cloze (七选五)', 278=>'Grammar Gap Filling (语法填空)'); }else{ //语篇训练 $topic_type_k_v = array('choice_cloze'=>41,'reading_comprehension'=>42,'sentence_cloze'=>44,'grammar_gap_filling'=>278); $topic_type_ids = array(41=>'Choice Cloze (完形填空)', 42=>'Reading Comprehension (阅读理解)', 44=>'Sentence Cloze (七选五)', 278=>'Grammar Gap Filling (语法填空)'); } //新版检测卡根据word_type归类 $check_card = array(); $check_card_detail = isset($teacher_extend_arr[8]) ? $teacher_extend_arr[8] : array(); if($check_card_detail){ $card_word_source = $week_setting_info['card_word_source']; //检测卡根据word_type归类 foreach ($check_card_detail as $val){ $check_card[$val['word_type']][] = $val; } if(isset($check_card[1])){ if($card_word_source == 1){ //学管端设置 $arr = array(); foreach($check_card[1] as $key => $val){ if(isset($val['derive']) || $val['is_derivative']){ $arr[] = $val; unset($check_card[1][$key]); } } $c = array_merge($check_card[1], $arr); $check_card[1] = $this->sort($c); }else{ //教师端设置 $check_card[1] = $this->sort($check_card[1]); } } if(isset($check_card[2])){ if($card_word_source == 1){ //学管端设置 $arr = array(); foreach($check_card[2] as $key => $val){ if(isset($val['derive']) || $val['is_derivative']){ $arr[] = $val; unset($check_card[2][$key]); } } $c = array_merge($check_card[2], $arr); $check_card[2] = $this->sort($c); }else{ //教师端设置 $check_card[2] = $this->sort($check_card[2]); } } } }else{ $check_card = isset($teacher_extend_arr[8]) ? $teacher_extend_arr[8] : array(); } $html_data = array( 'cur_grade' => $week_info['grade'], 'title' => isset($teacher_extend_arr[0]) ? $teacher_extend_arr[0] : array(), 'word_review' => isset($teacher_extend_arr[1]) ? $teacher_extend_arr[1] : array(), 'word_phase' => isset($teacher_extend_arr[2]) ? $teacher_extend_arr[2] : array(), 'translates' => isset($teacher_extend_arr[3]) ? $teacher_extend_arr[3] : array(), 'word_apply_ids' => isset($teacher_extend_arr[4]) ? $teacher_extend_arr[4] : array(), 'word_apply_content'=> isset($teacher_extend_arr[5]) ? $teacher_extend_arr[5] : array(), 'card_topic_ids' => isset($teacher_extend_arr[6]) ? current($teacher_extend_arr[6]) : array(), 'card_topic_content' => isset($teacher_extend_arr[7]) ? $teacher_extend_arr[7] : array(), 'check_card' => $check_card, 'card_title' => isset($teacher_extend_arr[9]) ? $teacher_extend_arr[9] : (isset($teacher_extend_arr[0]) ? $teacher_extend_arr[0] : array()), 'product_setting' => $product_setting['setting'], 'setting' => $week_setting_info, 'h5_image' =>$h5_img, 'topic_type_ids' => $topic_type_ids, 'topic_type_k_v' => $topic_type_k_v ); //debug($check_card); if($week_setting_info['is_new_version']){ $cardPage = 0; }else{ $cardPage = isset($teacher_extend_arr[8]) ? 2 : 0; } // //检测卡根据word_type归类 // $check_card = $answer_check_card = []; // foreach ($html_data_arr['marking_words'] as $val){ // $check_card[$val['word_type']][] = $val; // } // foreach ($html_data_arr['check_card'] as $val){ // $answer_check_card[$val['word_type']][] = $val; // } // if(isset($check_card[1])){ // $_marking_word = []; // foreach ($check_card[1] as $val){ // $_marking_word[$val['single_word_id']][] = $val; // } // $check_card[1] = $_marking_word; // foreach($check_card[1] as $single_word=>$val){ // for($i=0;$i$val){ // for($i=0;$isConn->createCommand($sql)->queryAll(); if (empty($topic_info)) { Yii::app()->jump->error('词汇宝教师版尚未生成'); } else { if(!$week_setting_info['is_new_version']){ $html_name = 'english_magic_word_teacher'; }else{ $html_name = 'english_magic_word_teacher_new'; } // $this->render("{$html_name}", $html_data);exit; $html = $this->renderPartial("{$html_name}", $html_data,true); unset($html_data); $htmlpath = str_replace("protected", "", Yii::app()->basePath) . '/upload/tmpDir/reading/'; //存放生成的HTML路径 $pdfpath = str_replace("protected", "", Yii::app()->basePath) . '/upload/tmpDir/reading/' . $this->schoolId . "/"; //存放生成的PDF路径 $pdfurl = '/upload/tmpDir/reading/' . $this->schoolId . "/"; if (!is_dir($htmlpath)) { if (!mkdir($htmlpath, 0777, true)) { exit('Create directory fail: ' . $htmlpath); } } if (!is_dir($pdfpath)) { if (!mkdir($pdfpath, 0777, true)) { exit('Create directory fail1: ' . $pdfpath); } } $gradeRel = array(1=>"高一",2=>"高二",3=>"高三"); $grade = isset($gradeRel[$week_info['grade']]) ? $gradeRel[$week_info['grade']] : ''; $classId = $week_info['class_id']; $sql = "select class_name from class where class_id = '{$classId}'"; $classInfo = $this->sConn->createCommand($sql)->queryRow(); $className = $classInfo ? $classInfo['class_name'] : ''; $htmlpath .= $mwId . ".html"; $f = fopen($htmlpath, "w"); fwrite($f, $html); fclose($f); $htmlurl = '/upload/tmpDir/reading/' . $mwId . ".html"; //访问HTML的路径 $locale='en_US.UTF-8'; setlocale(LC_ALL,$locale); putenv('LC_ALL='.$locale); if (Yii::app()->basePath == 'D:\xampp\htdocs\zsy-as2-php\protected') {//本地的basePath $htmlurl = " http://192.168.1.48:8077/upload/tmpDir/reading" . '/' . $mwId . '.html'; $pdffname = $mwId . ".pdf"; $pdfpath = $pdfpath . $pdffname; $pdfurl = $pdfurl . $pdffname; $commond = Yii::app()->params['phantomjs'] . " " . Yii::app()->params['html2_card_pdf'] . " " . " {$htmlurl}" . " {$pdfpath}" . ' 176mm*250mm "'.$grade.'|||'.date('Y-m-d',time()).'"'; } else { $htmlurl = "http://" . $_SERVER['SERVER_NAME'] . $htmlurl; $pdffname = $mwId . ".pdf"; $pdfpath = $pdfpath . $pdffname; $pdfurl = $pdfurl . $pdffname; $commond = Yii::app()->params['phantomjs_server'] . " " . Yii::app()->basePath . '/../js/html2pdf_enCard.js' . " " . " {$htmlurl}" . " {$pdfpath}" // . ' 176mm*250mm "'.date('Y-m-d',time()).'|||123456|||'.$grade.' '.$className.'|||'.$cardPage.'"'; . ' 176mm*250mm "'.$grade.'|||词汇宝|||'.date('Y-m-d',time()).'|||'.$grade.' '.$className.'|||'.$cardPage.'"'; } // $stu_name . "|||" . (subtext($week_name, 30)) . "|||" .$product_name."|||". Params::$params['cur_subject_id']."|||".$card_page, exec($commond, $res, $code); if(isset($res[0])){ $isBool = false; foreach ($res as $msg) { if (strpos($msg, 'succeed') !== false) { $isBool = true; } } if ($isBool) {//命令返回成功 if (file_exists($pdfpath) && file_exists($htmlpath)) { // $pdfurl=iconv("GBK", "UTF-8",$pdfurl); $repdf = $mwId . ".pdf"; $rename = 'zsyas2/reading/' . $this->schoolId . '/' . date('Y') . '/' . date('m') . '/' . date('d') . '/' . uniqid() . '.' . $repdf; $rehtml = $mwId . ".html"; $reHtmlName = 'zsyas2/reading/' . $this->schoolId . '/' . date('Y') . '/' . date('m') . '/' . date('d') . '/' . uniqid() . '.' . $rehtml; $ucloud = new Qcloud(); $uploadInfo = $ucloud->putFile($rename, $pdfpath); $uploadHtmlInfo = $ucloud->putFile($reHtmlName, $htmlpath); if ($uploadInfo['status'] == 0 && $uploadHtmlInfo['status'] == 0) { $pdfurl = "http://" . $_SERVER['SERVER_NAME'] . $pdfurl; $htmlurl = "http://" . $_SERVER['SERVER_NAME'] . $htmlurl; //echo $pdfurl; $this->sConn->createCommand()->update("english_magic_word", array("teacher_general_pdf_path" => $pdfurl,"teacher_general_html_path" => $htmlurl), "mw_id = '{$mwId}'"); $week_info['teacher_general_pdf_path'] = $pdfurl; }else{ $pdfurl = $uploadInfo['url']; $htmlurl = $uploadHtmlInfo['url']; //echo $pdfurl; $this->sConn->createCommand()->update("english_magic_word", array("teacher_general_pdf_path" => $pdfurl,"teacher_general_html_path" => $htmlurl), "mw_id = '{$mwId}'"); $week_info['teacher_general_pdf_path'] = $pdfurl; @unlink($pdfpath); } @unlink($htmlpath); } else { @unlink($htmlpath); echo json_encode(array("status" => 1, "error" => "PDF文件未找到!")); exit; } } else { @unlink($htmlpath); echo json_encode(array("status" => 1, "error" => "PDF创建失败!", 'exec_rs' => json_encode($res))); exit; } } else { echo json_encode(array("status" => 1, "error" => "PDF创建失败!")); exit; } } } if($week_info['teacher_general_pdf_path']){ $url = $week_info['teacher_general_pdf_path']; if($isPrint){ $printData['typeId'] = 18; $printData['productType']=20011; $printData['params'] = array( 'classIds' => array($week_info['class_id']), 'url' => $url, 'name' => '词汇宝教师版', 'subjectId' => $this->subjectId, 'examGroupId' => $mwId, ); echo json_encode(array("success" => 1, "message" => "success","data"=>$printData));exit(); }else{ header('Content-Description: File Transfer'); header('Content-Type: application/vnd.android.package-archive'); header('Content-Disposition: attachment; filename=' . $this->filter_file_name('词汇宝教师版') . ".pdf"); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $buffer) { echo $buffer; return strlen($buffer); }); curl_exec($ch); curl_close($ch); } }else{ Yii::app()->jump->error('尚未生成PDF'); } } public function filter_file_name($filename){ return str_replace(array(',','.','/','?','!','@','#','$','%','^','&','*','(',')','-','+','{','}','[',']',':',';','"','`','~'), array(',','。',' ','?','!',' ',' ',' ',' ','·',' ',' ','(',')','-','+','【','】','【','】',':',';','“',' ',' ') , $filename); } public function qrcode64($code_str, $level = 'L', $size = 10, $margin = 1){ $QRcode = new \QRcode(); ob_start();//开启缓冲区 $QRcode::pngNoHeader($code_str, false, 'L', 10, 1);//生成二维码 $img = ob_get_contents();//获取缓冲区内容 ob_end_clean();//清除缓冲区内容 $imgInfo = 'data:png;base64,' . chunk_split(base64_encode($img));//转base64 //ob_flush(); return $imgInfo; } //词汇宝班级重置页面 public function actionClasses(){ $mwGroupId = Req::get('mw_group_id'); $mwName = Req::get('mw_name'); if(empty($mwGroupId) || empty($mwName)){ Yii::app()->jump->error('参数异常'); } $newCondition[] = 'er.mw_group_id='.$mwGroupId; $magicWordModel = new SEnglishMagicWord(); $rs = $magicWordModel->getMagicWord($newCondition,array('er.create_time desc'),100); if(!isset($rs['rs'])){ Yii::app()->jump->error('获取班级数据失败'); } $data['resultList'] = $rs['rs']; $data['resetCount'] = 0; $data['mwName'] = $mwName; $data['currentWeek'] = date('W'); $data['mw_group_id'] = $mwGroupId; $this->render('reset', $data); } //重置操作 public function actionReset(){ $mwIds = Req::post('classExam'); $mwGroupId = Req::post('mwGroupId'); if(!$mwIds || !is_array($mwIds) || !$mwGroupId){ echo json_encode(array("status" => 0, "message" => "参数错误!"));exit; } $transaction = $this->sConn->beginTransaction(); try { $sql = "select is_new_version,grade from english_magic_word_setting where mw_group_id='{$mwGroupId}'"; $magicWordSetting= $this->sConn->createCommand($sql)->queryRow(); if(empty($magicWordSetting)){ throw new \Exception('词汇宝设置数据不存在'); } $isNewVersion=$magicWordSetting['is_new_version']; $grade=$magicWordSetting['grade']; foreach ($mwIds as $mwId) { if($isNewVersion){ $this->sConn->createCommand()->update("english_magic_word", array( 'reset_times' => new CDbExpression('reset_times+1')), "mw_id = '{$mwId}'"); }else { $this->sConn->createCommand()->update("english_magic_word", array("is_all_html" => 0, 'reset_times' => new CDbExpression('reset_times+1')), "mw_id = '{$mwId}'"); } $this->sConn->createCommand()->update("english_magic_word_student", array("is_week_html" => 0,"is_week_pdf"=>0), "mw_id = '{$mwId}'"); } $transaction->commit(); }catch (\Exception $e){ $transaction->rollBack(); echo json_encode(array('status'=>0,'message'=>$e->getMessage()));exit; } if($isNewVersion){ $kafkaData=array( 'school_id'=>$this->schoolId, 'msg_type'=>90,//90:重置 1:新设置 'grade'=>$grade, 'subject_id'=>8, 'send_type'=>'english_magic_word', 'product_type'=>array(1), 'gp_group_id'=>$mwGroupId, 'gp_ids'=>array_unique($mwIds), ); sendDataToKafka("php-product-english-magic-word-html",$kafkaData); } echo json_encode(array('status'=>1));exit; } //统计excel下载 public function actionDownExcel() { $mwId = Req::get('mwId'); $classId = Req::get('classId'); if(!$mwId || !$classId){ Yii::app()->jump->error('参数错误'); } $wordArr = array( array('right_rate'=>'正确率', 'right_count'=>'正确人数', 'no'=>'题号', 'right_answer'=>'答案', 'wrong_list'=>'错误学生和OCR识别结果'), ); $className = SClass::model()->getClassName($classId); $magicList = SEnglishMagicWordMarking::model()->getWordList($mwId); $wordArr = array_merge($wordArr,$magicList); $obpe = new PHPExcel(); $obpe->setactivesheetindex(0); $obpe->getActiveSheet()->setTitle('每词统计'); $obpe->getDefaultStyle()->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); $obpe->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); foreach($wordArr as $k=>$v){ $k = $k+1; /* @func 设置列 */ $obpe->getactivesheet()->setcellvalue('A'.$k, $v['right_rate']); $obpe->getactivesheet()->setcellvalue('B'.$k, !empty($v['right_count'])?$v['right_count']:0); $obpe->getactivesheet()->setcellvalue('C'.$k, $v['no']); $obpe->getactivesheet()->setcellvalue('D'.$k, $v['right_answer']); $obpe->getactivesheet()->setcellvalue('E'.$k, $v['wrong_list']); } //创建一个新sheet $obpe->createSheet(); $obpe->setactivesheetindex(1); $obpe->getActiveSheet()->setTitle('每个学生统计'); $studentArr = array( array('right_rate'=>'正确率','student_name'=>'学生','no'=>'学生序号','wrong_count'=>'错误空数', 'rate_change'=>'相较上次') ); $studentList = SEnglishMagicWordMarking::model()->getStudentRateList($mwId,$classId); $studentArr = array_merge($studentArr, $studentList); foreach($studentArr as $k=>$v){ $k = $k+1; /* @func 设置列 */ $obpe->getactivesheet()->setcellvalue('A'.$k, $v['right_rate']); $obpe->getactivesheet()->setcellvalue('B'.$k, $v['student_name']); $obpe->getactivesheet()->setcellvalue('C'.$k, $v['no']); $obpe->getactivesheet()->setcellvalue('D'.$k, $v['wrong_count']); $obpe->getactivesheet()->setcellvalue('E'.$k, $v['rate_change']); } //写入类容 $obwrite = PHPExcel_IOFactory::createWriter($obpe, 'Excel5'); ob_end_clean(); //保存文件 //$obwrite->save('mulit_sheet.xls'); //直接在浏览器输出 header("Accept-Ranges:bytes"); header('Content-Type:application/vnd.ms-excel'); header("Content-type:application/vnd.ms-excel;charset=UTF-8"); header("Content-Disposition:attachment;filename={$className}统计结果.xls"); header('Cache-Control:max-age=0'); $obwrite->save('php://output'); } public function CrmApiPost($url, $arr, $username,$password,$type='POST',$header=array()) { $ch = @curl_init(); $result = FALSE; if ($ch) { $data = json_encode($arr); $headerArr=array( 'Content-Type: application/json', 'Content-Length: '. strlen($data), 'Connection: false', 'Expect:' ); if($header){ $headerArr=array_merge($headerArr,$header); } if($type=='POST'){ // Digest认证 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, $username .':'. $password); // 不输出头部 curl_setopt($ch, CURLOPT_HEADER, 0); // curl_exec 获取到的内容不直接输出, 而是返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT,120); curl_setopt($ch, CURLOPT_NOSIGNAL,1); curl_setopt($ch, CURLOPT_TIMEOUT_MS,120000); // 请求重启路由器的地址 传参 进行重启 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, 'Api Client/1.0.0 (chengfei@liancaitech.com)'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr); if( !curl_errno($ch)) { $result = json_decode(curl_exec($ch)); } // 释放资源 curl_close($ch); }elseif($type=='PUT'){ $data = json_encode($arr); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, $username .':'. $password); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr); $result = json_decode(curl_exec($ch)); curl_close($ch); } } return $result; } /** * 英语词汇宝单词排序(含派生) * @param $marking_word * @return array */ protected function sort($marking_word) { if(!$marking_word) return array(); $_marking_word = array(); foreach ($marking_word as $val){ $_marking_word[$val['single_word_id']][] = $val; } $arr = array(); $xyz = 0; foreach($_marking_word as $k=>$v){ foreach($v as $key=>$val){ $cou = isset($arr[$xyz]) ? count($arr[$xyz]) : 0; if((isset($arr[$xyz][0]) && (isset($val['derive']) && $val['derive'])) || (isset($arr[$xyz][0]) && (isset($arr[$xyz][0]['is_derivative']) && $arr[$xyz][0]['is_derivative']) && (isset($val['is_derivative']) && !$val['is_derivative']))){ $cou = 2; } if($cou < 2){ $arr[$xyz][] = $val; }else{ $xyz++; $arr[$xyz][] = $val; } } } return $arr; } }