404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.223.3.50: ~ $
<?php
use Google\Cloud\Samples\Speech\TranscribeCommand;
include "BayaImage.php";
class QuizMaker {
	private $TranslateService;
	private $mainChannel;
	function __construct(TranslateService $TranslateService){
		$this->TranslateService = $TranslateService;
		$this->mainChannel = "@razazmoon";
// 		$this->mainChannel = "@testbot2000";
	}
	function getTS(): TranslateService {
		return $this->TranslateService;
	}
	public function sendSticker(){
	
		$this->TranslateService->apiRequest ( "sendSticker", array (
				'chat_id' => $this->mainChannel,
				'sticker' => 'CAADBAADqVkAAj8SMwV0_OccQRxVGwI'
		
		) );
	}
	public function createAndPostTranslateTest(){
		$quizID = $this->createTranslateTest();
		$this->postTest($quizID);
	}
	public function createAndPostArtikelTest(){
		echo $quizID = $this->createArticleTest();
		$this->postTest($quizID);
	}
	public function createAndPostImageTest(){
		echo $quizID = $this->createImageTest();
		$this->postTest($quizID);
	}
	public function createImageTest(){
		$userId = $this->TranslateService->user['id'];
		$channelName = $this->TranslateService->message['text'];
		if(empty($userId) ||empty($channelName)  ){
			$userId = 0000;
			$channelName = $this->mainChannel;
		}
		$quizDb = new QuizDatabaseHandler();
		$quizName = $this->generateRandomName();
		$quizID = $quizDb->insertQuiz($quizName,$userId,$channelName );
		$wordArray = $quizDb->getSomeWords(15);
		$questionID = $this->insertImageQuestionsAndAnswers($wordArray, $quizID);
		return $quizID;
	
	}
	public function createArticleTest(){
		$userId = $this->TranslateService->user['id'];
		$channelName = $this->TranslateService->message['text'];
		if(empty($userId) ||empty($channelName)  ){
			$userId = 0000;
			$channelName = $this->mainChannel;
		}
		$quizDb = new QuizDatabaseHandler();
		$quizName = $this->generateRandomName();
		$quizID = $quizDb->insertQuiz($quizName,$userId,$channelName );
		$nounArray = $quizDb->getSomeNouns();
		$questionID = $this->insertQuestionsAndAnswers($nounArray, $quizID);
		return $quizID;

	}
	public function createTranslateTest(){
		$userId = $this->TranslateService->user['id'];
		$channelName = $this->TranslateService->message['text'];
		if(empty($userId) ||empty($channelName)  ){
			$userId = 0000;
			$channelName = $this->mainChannel;
		}
		$quizDb = new QuizDatabaseHandler();
		$quizName = $this->generateRandomName();
		$quizID = $quizDb->insertQuiz($quizName,$userId,$channelName );
		$wordArray = $quizDb->getSomeWords();
		$questionID = $this->insertTranslationQuestionsAndAnswers($wordArray, $quizID);
		return $quizID;

	}
	public function quizProcess($TranslateService, $userStep){
// 		$TranslateService = new TranslateService($botUsername, $botToken, $webhookUrl, $sign);
		if($userStep== EnumAdmins::ADMIN_WRITES_QUIZ_NAME){
			$dictionary = new DictionaryDatabaseHandler($this->getTS());
// 			$memberStatus = $this->getChannelStatus($TranslateService, $TranslateService->message['text'],$TranslateService->user['id'] );
			$memberStatus = $this->getChannelStatus($this->TranslateService, $TranslateService->message['text'],$TranslateService->user['id'] );
			if($memberStatus){
				$dictionary->setUserStep($TranslateService->chat_id, "");
				$this->createArticleTest();
				$answerArray [] = ['text'=>"لیست آزمون ها", 'id'=>"quiz:home"];
				$questionText = "آزمون به لیست اضافه شد";
				$TranslateService->askMultipleChoiceQuestion($questionText, $answerArray);
			}
			else
				$TranslateService->sendMessage("لطفا آدی ربات را به عنوان ادمین کانال خود اضافه کنید @TranslateGerman_bot");
		}
		else
			$this->quizWizard($TranslateService);
		
	}
	public function getChannelStatus($channelName, $userid){
		$memberObject = $this->TranslateService->apiRequest ( "getChatMember", array (
				'chat_id' => $channelName,
				'user_id' => $userid
		) );
		return $memberObject;
	}
	public function quizListener($TranslateService, $callBackData, $update){
// 		$TranslateService = new TranslateService($botUsername, $botToken, $webhookUrl, $sign);
		$userId = $update['callback_query']['from']['id'];
		$quizDb = new QuizDatabaseHandler();
		if($callBackData[2]=="id"){
			$quizId = $callBackData[3];
			$answerArray [] = ['text'=>"ارسال شود", 'id'=>"quiz:post:".$quizId];
			$TranslateService->askMultipleChoiceQuestion("این تست آماده قرارگرفتن روی کانال می باشد", $answerArray);
		}
		if($callBackData[2]=="home"){
			$this->quizWizard($TranslateService);
		}
		if($callBackData[2]=="result"){
			
			$quizId = $callBackData[3];
			
			$score = $quizDb->getScore($userId, $quizId );
			$particpantsNumber = $quizDb->getParticipants($quizId );
// 			$participants = $quizDb->getParticipants($quizId);
			$resultBtnText = "مشاهده نتیجه";

			
			$scoreArray [] = ['text'=>$resultBtnText, 'id'=>"quiz:result:$quizId"];
			$referenceText = "برای مشاهده امتیازتون توی این آزمون روی دکمه زیر کلیک کنید";
			$referenceText .= PHP_EOL;
			$referenceText .= "تهیه شده توسط لغتنامه آلمانی  ";
			$referenceText .= PHP_EOL;
			$referenceText .= "@TranslateGerman_bot";
			$referenceText .= PHP_EOL.PHP_EOL;
			$referenceText .= " تعداد شرکت کنندگان ";
			$referenceText .= $particpantsNumber;
			$referenceText .= " نفر تا این لحظه ";
			$this->TranslateService->editAskMultipleChoiceQuestion($referenceText,$scoreArray);
				
			if(!$score)
				$score = 0;
			$notification = " امتیاز شما در این آزمون ";
			$notification .= $score;
			$notification .= " می باشد  ";
// 			$notification .= "$particpantsNumber شرکت کنندگان   ";
// 			$notification .= " تعداد شرکت کنندگان تا این لحظه  ";
// 			$notification .= $particpants;

// 			$memberStatus = $this->getChannelStatus($this->mainChannel, userId);
			
			return $notification;
		}
		if($callBackData[2]=="ans"){
			$answerId = $callBackData[3];
		
			$questionId = $quizDb->getQuestionId($answerId);
			$quizDb->isAnsweredByUser($userId,$questionId['questionID']);
			
			if($quizDb->isAnsweredByUser($userId,$questionId['questionID'])){
				$answer = $quizDb->getAnswerById($answerId);
				
				if($answer['isRight'] == 1){
					$notification =" ✔ صحیح ";
				}
				else
					$notification =" ✘ غلط ";
					
				$notification .= "به این سوال قبلا جواب داده اید";
			}
			else {
				$quizDb->insertQuizUser($userId, $userName, $name, $lastname);
				$quizId = $quizDb->getQuizId($answerId);
				$answer = $quizDb->getAnswerById($answerId);
				$quizDb->insertUserAnswer($userId,$questionId['questionID'], $answerId);
				if($answer['isRight'] == 1){
					$quizDb->incScore($quizId['quizID'], $userId);
					$rightNotification []= "آفرین، جواب درست بود";
					$rightNotification []= "هوررا درست بود";
					$rightNotification []= "خیلی خوبه، درست بود";
					$rightNotification []= "ماشالا ماشالا درسته";
					$rightNotification []= "عالی بود جواب درسته";
					$rand_keys = array_rand($rightNotification, 1);
					$notification= $rightNotification[$rand_keys];
				}
				else {
					$wrongNotification []= "جواب غلط بود";
					$wrongNotification []= "اوه متاسفم، اشتباه جواب دادی";
					$wrongNotification []= "باید بیشتر تمرین کنی، اشتباه بود";
					$wrongNotification []= "خب اگه به نظر لغت سختی بود، انتخابت درست نبود";
					$wrongNotification []= "وای اشتباه جواب دادی";
					$rand_keys = array_rand($wrongNotification, 1);
					$notification= $wrongNotification[$rand_keys];
				}
				
				
				
			}
			return $notification;
		}
		if($callBackData[2]=="post"){
			$quizId = $callBackData[3];
			$this->postTest($quizId);
		}
		if($callBackData[2]=="make"){
			$dictionary = new DictionaryDatabaseHandler($this->getTS());
			$dictionary->setUserStep($TranslateService->chat_id,EnumAdmins::ADMIN_WRITES_QUIZ_NAME);
			$answerArray [] = ['text'=>"بازگشت", 'id'=>"quiz:home"];
			$questionText = "لطفا آی دی کانالی که برای آن آزمون را می سازید وارد کنید";
			$TranslateService->askMultipleChoiceQuestion($questionText, $answerArray);
		}
			
			
	}
	public function postTest($quizId){
		$this->sendSticker();
		$quizDb = new QuizDatabaseHandler("main_Quiz");
		$destId = $quizDb->getQuizChannel($quizId);
		$questions = $quizDb->getQuestions($quizId);
		foreach ($questions as $question){
			unset($answerArray);
			$answerArray = array();
			if(empty($question))
				continue;
			$answers = $quizDb->getAnswers($question['id']);
			foreach ($answers as $answer){
				$answerId = $answer['id'];
				if(!empty($answer))
					$answerArray [] = ['text'=>$answer['answer'], 'id'=>"quiz:ans:".$answerId];
			}
			$this->postQuestion($question, $answerArray, $destId);
		}
		$scoreArray [] = ['text'=>"مشاهده نتیجه", 'id'=>"quiz:result:$quizId"];
		$referenceText = "برای مشاهده امتیازتون توی این آزمون روی دکمه زیر کلیک کنید";
		$referenceText .= PHP_EOL;
		$referenceText .= "تهیه شده توسط لغتنامه آلمانی  ";
		$referenceText .= PHP_EOL;
		$referenceText .= "@TranslateGerman_bot";
		$this->TranslateService->askMultipleChoiceQuestion($referenceText,$scoreArray, $destId );
		
		
	}
	public function postQuestion($question, $answerArray, $destId){
		if(empty($question['imageUrl']))
			$this->TranslateService->askMultipleChoiceQuestion($question['question'], $answerArray, $destId);
		else 
			$this->TranslateService->askMultipleChoiceImageQuestion($question['question'], $answerArray, $destId,$question['imageUrl']);
				
	}
	public function quizWizard($TranslateService){
// 		$TranslateService = new TranslateService($botUsername, $botToken, $webhookUrl, $sign);
		$dictionary= new DictionaryDatabaseHandler($this->getTS());
		$dictionary->setUserStep($userId, '');
		$quizDb = new QuizDatabaseHandler();
		$quizzes = $quizDb->getMyQuizzes($TranslateService->chat_id);
		foreach ($quizzes as $quiz){
			$quizID = $quiz['id'];
			if(!empty($quiz))
				$answerArray [] = ['text'=>$quiz['name'], 'id'=>"quiz:id:".$quizID];
		}
		$questionText = "کدام آزمون را انتخاب می کنید؟";
// 		$TranslateService->askMultipleChoiceQuestion($questionText, $answerArray);
		$answerArray [] = ['text'=>"ایجاد آزمون جدید", 'id'=>"quiz:make"];
		$TranslateService->askMultipleChoiceQuestion($questionText, $answerArray);
	}
	public function insertQuestionsAndAnswers($nounArray, $quizID){
		
		$quizDb = new QuizDatabaseHandler();
		$iRowCounter = 0;
		foreach ($nounArray as $noun){
			$iRowCounter++;
			if(!empty($noun)){
				$qText = $iRowCounter. " - ";
				$qText .= "کدام یک آرتیکل صحیح لغت  ";
				$qText .= $noun['word']." ";
				$qText .= " : ";
				$qText .= $noun['translation']." ";
				$qText .= "می باشد";
				$questionID = $quizDb->insertQuestion($qText, $quizID);
				$artikelArray = $this->createArtikelArray($noun);
				
				foreach ($artikelArray as $artikel){
// 					if(!empty($artikel['isRight']))
						$quizDb->insertAnswer( $questionID, $artikel['name'], $artikel['isRight']);
				}
			}
			
				
		}
	
	}
	public function insertTranslationQuestionsAndAnswers($wordArray, $quizID){
		$quizDb = new QuizDatabaseHandler();
		$iRowCounter = 0;
		foreach ($wordArray as $word){
			$iRowCounter++;
			if(!empty($word)){
				$qText = $iRowCounter. " - ";
				$qText .= "کدام یک معنی صحیح لغت  ";
				$qText .= $word['word']." ";
				$qText .= "می باشد";
				$questionID = $quizDb->insertQuestion($qText, $quizID);
				$rightAnswer = $word['translation'];
				$wrongAnswers = $quizDb->getSomeWrongTranslations($word);
				$answerArray = $this->createAnswerArray($word,$rightAnswer,$wrongAnswers);
				foreach ($answerArray as $answer){
						$quizDb->insertAnswer( $questionID, $answer['answer'], $answer['isRight']);
				}
			}
		}
	}
	public function insertImageQuestionsAndAnswers($wordArray, $quizID){
		$quizDb = new QuizDatabaseHandler();
		$iRowCounter = 0;
		$createdQuestionsNumber = 0;
		foreach ($wordArray as $word){
			if(!empty($word)){
				$relatedImages = $this->getRelatedImages($word['word'], 6);
				if(is_array($relatedImages) && createdQuestionsNumber < 6){
					$createdQuestionsNumber++;
					$qText = $createdQuestionsNumber. " - ";
					$qText .= "کدام لغت با تصاویر بالا ارتباط بیشتری دارد  ";
					$bayaImage = new BayaImage();
					$collageImageName = $bayaImage->createCollage($relatedImages);
					$collageImageUrl = "https://www.towist.com/autopost/classes/quiz/images/".$collageImageName;
	 				$questionID = $quizDb->insertQuestion($qText, $quizID, $collageImageUrl);
					$rightAnswer = $word['word'];
					$wrongAnswers = $quizDb->getSomeWrongWords($word);
					$answerArray = $this->createImageAnswerArray($word,$rightAnswer,$wrongAnswers);
					foreach ($answerArray as $answer){
							$quizDb->insertAnswer( $questionID, $answer['answer'], $answer['isRight']);
					}
				}
			}
		}
	}
	public function getRelatedImages($word, $imageNumbers){
		$encodedWord = urlencode($word);
		echo $apiUrl = "https://pixabay.com/api/?key=5036581-ebd149dc8e0a90596c0baec76&q=$encodedWord&lang=de&image_type=photo&pretty=false";
		$jsonImageResult = json_decode(file_get_contents($apiUrl), TRUE);
		if(sizeof($jsonImageResult['hits']) < $imageNumbers )
			return false;
		for($i= 0; $i<$imageNumbers ; $i++ ){
			$relatedImages[] = $jsonImageResult['hits'][$i]['webformatURL'];	
		}
		return $relatedImages;
	}
	public function createArtikelArray($noun){
		switch($noun['artikel']){
			case "n":
				$artikel['name'] = "Das";
				$artikel['isRight'] = 1;
				$artikelArray [] = $artikel;
				$artikel['name'] = "Der";
				$artikel['isRight'] = 0;
				$artikelArray [] = $artikel;
				$artikel['name'] = "Die";
				$artikel['isRight'] = 0;
				$artikelArray [] = $artikel;
				break;
			case "m":
				$artikel['name'] = "Das";
				$artikel['isRight'] = 0;
				$artikelArray [] = $artikel;
				$artikel['name'] = "Der";
				$artikel['isRight'] = 1;
				$artikelArray [] = $artikel;
				$artikel['name'] = "Die";
				$artikel['isRight'] = 0;
				$artikelArray [] = $artikel;
				break;
			case "f":
				$artikel['name'] = "Das";
				$artikel['isRight'] = 0;
				$artikelArray [] = $artikel;
				$artikel['name'] = "Der";
				$artikel['isRight'] = 0;
				$artikelArray [] = $artikel;
				$artikel['name'] = "Die";
				$artikel['isRight'] = 1;
				$artikelArray [] = $artikel;
				break;
		}
	
		// 		shuffle($artikelArray);
		return $artikelArray;
	}
	public function createAnswerArray($word, $rightAnswer,$worngAnswers){
		$randAnswerPosition = rand(1,3);
		if($randAnswerPosition == 1 ){
			$word['answer'] = $worngAnswers[0]['translation'];
			$word['isRight']= 0;
			$answerArray[] = $word;
			
			$word['answer']= $rightAnswer;
			$word['isRight']= 1;
			$answerArray[] = $word;
			
			$word['answer'] = $worngAnswers[1]['translation'];
			$word['isRight']= 0;
			$answerArray[] = $word;
			

		}
		else if($randAnswerPosition == 2 ){
			$word['answer'] = $worngAnswers[0]['translation'];
			$word['isRight']= 0;
			$answerArray[] = $word;
			

			$word['answer']= $rightAnswer;
			$word['isRight']= 1;
			$answerArray[] = $word;
			
			$word['answer'] = $worngAnswers[1]['translation'];
			$word['isRight']= 0;
			$answerArray[] = $word;

		}
		else if($randAnswerPosition == 3 ){
			$word['answer'] = $worngAnswers[0]['translation'];
			$word['isRight']= 0;
			$answerArray[] = $word;
		
			$word['answer'] = $worngAnswers[1]['translation'];
			$word['isRight']= 0;
			$answerArray[] = $word;
		
			$word['answer']= $rightAnswer;
			$word['isRight']= 1;
			$answerArray[] = $word;
		}
// 		shuffle($answerArray);
		return $answerArray;
	}
	public function createImageAnswerArray($word, $rightAnswer,$worngAnswers){
// print_r($worngAnswers[0]);
		$randAnswerPosition = rand(1,3);
		if($randAnswerPosition == 1 ){

			$word['answer']= $rightAnswer;
			$word['isRight']= 1;
			$answerArray[] = $word;
			
			$word['answer'] = $worngAnswers[0]['word'];
			$word['isRight']= 0;
			$answerArray[] = $word;

			
			$word['answer'] = $worngAnswers[1]['word'];
			$word['isRight']= 0;
			$answerArray[] = $word;
		}
		else if($randAnswerPosition == 2){
			$word['answer'] = $worngAnswers[0]['word'];
			$word['isRight']= 0;
			$answerArray[] = $word;
				
			$word['answer']= $rightAnswer;
			$word['isRight']= 1;
			$answerArray[] = $word;
				
			$word['answer'] = $worngAnswers[1]['word'];
			$word['isRight']= 0;
			$answerArray[] = $word;
			
		}
		else if($randAnswerPosition == 3){
			$word['answer'] = $worngAnswers[0]['word'];
			$word['isRight']= 0;
			$answerArray[] = $word;
				
			$word['answer'] = $worngAnswers[1]['word'];
			$word['isRight']= 0;
			$answerArray[] = $word;
			
			$word['answer']= $rightAnswer;
			$word['isRight']= 1;
			$answerArray[] = $word;
			
		}

		
// 		shuffle($answerArray);
		return $answerArray;
	}

	public function generateRandomName($length = 10) {
   		return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,$length);
	}

	
}

Filemanager

Name Type Size Permission Actions
BayaImage.php File 1.48 KB 0755
QuizDatabaseHandler.php File 24.55 KB 0755
QuizMaker.php File 17.53 KB 0755
first.jpg File 95.66 KB 0755
frame - Kopie.png File 559.68 KB 0755
frame.png File 559.68 KB 0755