| Server IP : 64.202.187.69 / Your IP : 216.73.217.74 Web Server : Apache System : Linux 69.187.202.64.host.secureserver.net 3.10.0-1160.144.1.el7.tuxcare.els6.x86_64 #1 SMP Fri May 29 16:22:24 UTC 2026 x86_64 User : transmarket ( 1001) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/transmarket/translator/controllers/ |
Upload File : |
<?php
require_once('class.db.php');
class Winning_Suggestion_Voting_Credits extends DB
{
//Get all success suggestion ids by sentence id
public function getSuccessSuggestionIdsBySentenceId( $sentence_id ) {
$sqlSuccessSuggestions = 'SELECT * FROM `sentence_suggestion_map` WHERE sentence_id = ' . $sentence_id . ' AND is_locked = 1 AND is_success = 1';
$resultSuccessSuggestions = $this->con->query($sqlSuccessSuggestions);
if ($resultSuccessSuggestions->num_rows > 0) {
while ($row_success_suggestions = $resultSuccessSuggestions->fetch_object()) {
$success_suggestion_id_arr[]=$row_success_suggestions->id;
}
}
return $success_suggestion_id_arr;
}
//get success suggestion id and it's vote count by suggestion Id
public function getSuccessSuggestionIdAndVoteCountBySuggestionId( $suggestion_id ) {
$sqlU = 'SELECT * FROM `sentence_suggestion_voting_map` WHERE voted_translation_id = ' . $suggestion_id. ' AND is_success = 1' ;
$resultU = $this->con->query($sqlU);
$total_votes = $resultU->num_rows;
$suggestion_id_and_count_arr = array();
//suggestion id and it's count
$suggestion_id_and_count_arr[$suggestion_id] = $total_votes;
return $suggestion_id_and_count_arr;
}
//Get winning sentence suggestion id by passing suggestion ids and it's counts array
public function getWinningSuggestionId( $suggestion_id_and_count_arr ) {
//highest votes suggestion id
$winning_suggestion_id = array_search( max($suggestion_id_and_count_arr), $suggestion_id_and_count_arr );
return $winning_suggestion_id;
}
//Get winning suggestion's user id by winning sentence id
public function getWinningSuggestionUserId( $winning_suggestion_id ) {
$sqlWinningSuggestion = 'SELECT * FROM `sentence_suggestion_map` WHERE id = ' . $winning_suggestion_id . ' AND is_locked = 1 AND is_success = 1';
$resultWinningSuggestion = $this->con->query($sqlWinningSuggestion);
while ($row_winning_suggestion = $resultWinningSuggestion->fetch_object()) {
$winning_suggestion_user_id = $row_winning_suggestion->user_id;
}
return $winning_suggestion_user_id;
}
//Get winning suggestion's voted user's ids by winning suggestion id
public function getWinningSuggestionVotedUserIds( $winning_suggestion_id ) {
$sqlU = 'SELECT * FROM `sentence_suggestion_voting_map` WHERE voted_translation_id = ' . $winning_suggestion_id. ' AND is_success = 1' ;
$resultU = $this->con->query($sqlU);
$total_votes = $resultU->num_rows;
$voted_user_ids_and_suggestion_ids_arr = array();
while ($row_vote = $resultU->fetch_object()) {
$voted_user_ids_and_suggestion_ids_arr[] = $row_vote->user_id;
}
return $voted_user_ids_and_suggestion_ids_arr;
}
//get Winning Suggestion Id By Sentence Id
public function getWinningSuggestionIdBySentneceId( $sentence_id ) {
$success_suggestion_id_arr = $this->getSuccessSuggestionIdsBySentenceId( $sentence_id );
if( $success_suggestion_id_arr ) {
foreach( $success_suggestion_id_arr as $success_suggestion_id ) {
$suggestion_id_and_count_arr = $this->getSuccessSuggestionIdAndVoteCountBySuggestionId( $success_suggestion_id );
foreach( $suggestion_id_and_count_arr as $key_suggestion_id => $votes_count ) {
$all_suggestion_ids_and_counts_arr[$key_suggestion_id] = $votes_count;
}
}
//echo "success suggestion ids and count: ";
//print_r( $all_suggestion_ids_and_counts_arr );
$winning_suggestion_id = $this->getWinningSuggestionId( $all_suggestion_ids_and_counts_arr );
}
return $winning_suggestion_id;
}
//Get settings row for default winning credit tmn values
public function getSettingsRow() {
$sqlSettings = 'SELECT * FROM `settings` ';
$resultSettings = $this->con->query($sqlSettings);
$rowSettings = $resultSettings->fetch_assoc();
return $rowSettings;
}
//Insert into winning suggestion user credits
public function insertIntoWinningSuggestionUserCredits($sentence_id,$winning_suggestion_id,$winning_suggetion_user_id,$winning_suggestion_tmn) {
$sql_insert = "INSERT INTO `winning_suggestion_voting_credits` (sentence_id,suggestion_id,user_id,winning_credits,credit_purpose) VALUES ({$sentence_id},{$winning_suggestion_id},{$winning_suggetion_user_id},{$winning_suggestion_tmn},1) ";
$result_insert = $this->con->query($sql_insert);
$last_inserted_id = $this->con->insert_id;
return $last_inserted_id;
}
//Insert into winning suggestion voted user credits
public function insertIntoWinningSuggestionVotedUserCredits($sentence_id,$suggestion_id,$user_id,$winning_credits) {
$sql_insert = "INSERT INTO `winning_suggestion_voting_credits` (sentence_id,suggestion_id,user_id,winning_credits,credit_purpose) VALUES ({$sentence_id},{$suggestion_id},{$user_id},{$winning_credits},2) ";
$result_insert = $this->con->query($sql_insert);
$last_inserted_id = $this->con->insert_id;
return $last_inserted_id;
}
//get winning suggestion voting credits num of rows
public function getWinningSuggestionVotingCreditsBySentenceId( $sentence_id ) {
$sqlSentenceWin = 'SELECT sentence_id FROM `winning_suggestion_voting_credits` WHERE sentence_id = ' . $sentence_id . ' LIMIT 1';
$resultSentenceWin = $this->con->query($sqlSentenceWin);
$sentence_win_rows = $resultSentenceWin->num_rows;
return $sentence_win_rows;
}
//Process winning suggestion user credits and winning suggestion voted user id credits by sentence id
public function processWinningSuggestionVotingCreditsBySentenceId( $sentence_id ) {
//check if sentence has already been win record
$sentence_win_rows = $this->getWinningSuggestionVotingCreditsBySentenceId( $sentence_id );
//get self assessment test sentences language id by sentence id
$language_id = $this->getLanguageIdBySentenceId( $sentence_id );
if( $sentence_win_rows == 0 ) {
//Get settings row for default winning credit tmn values
//$settings_row = $this->getSettingsRow();
//Get tmn values by language wise for winning suggestion & voting credit tmn
$tmn_row = $this->getLanguageTmnRow( $language_id );
$winning_suggestion_tmn = $tmn_row['winning_suggestion_tmn'];
$voting_suggestion_tmn = $tmn_row['voting_suggestion_tmn'];
//get winning suggestion id (suggestion id which has highest votes) by sentence Id
$winning_suggestion_id = $this->getWinningSuggestionIdBySentneceId($sentence_id);
//Get winning suggestion's user id by winning suggestion id
$winning_suggetion_user_id = $this->getWinningSuggestionUserId( $winning_suggestion_id );
//Give credit to winning suggestion user
if( $winning_suggetion_user_id ) {
$winning_suggestion_tbl_id = $this->insertIntoWinningSuggestionUserCredits($sentence_id,$winning_suggestion_id,$winning_suggetion_user_id,$winning_suggestion_tmn);
//add entry into the tmn transactions & update translator tmn balance
$this->insertIntoTranslatorTmnTransactionsCreditEntry( $winning_suggetion_user_id, "Reputation Winning Suggestion", $winning_suggestion_tbl_id , "winning_suggestion_voting_credits", $winning_suggestion_tmn );
}
//Get winning suggestion's voted user's ids by winning suggestion id
$winning_suggestion_voted_user_ids_arr = $this->getWinningSuggestionVotedUserIds( $winning_suggestion_id );
if (count($winning_suggestion_voted_user_ids_arr) > 0) {
//Calculate per user tmn credits
$tmn_per_user = round((float) $voting_suggestion_tmn / count($winning_suggestion_voted_user_ids_arr), 3);
//Give credit to winning suggestion voted users
foreach($winning_suggestion_voted_user_ids_arr as $winning_suggestion_voted_user_id) {
$winning_voted_on_suggestion_tbl_id = $this->insertIntoWinningSuggestionVotedUserCredits($sentence_id,$winning_suggestion_id,$winning_suggestion_voted_user_id,$tmn_per_user);
//add entry into the tmn transactions & update translator tmn balance
$this->insertIntoTranslatorTmnTransactionsCreditEntry( $winning_suggestion_voted_user_id, "Reputation Voted on Winning Suggestion", $winning_voted_on_suggestion_tbl_id , "winning_suggestion_voting_credits", $tmn_per_user );
}
}
}
}
//Get sentence ids to decide/process winning suggestion, voting and credits
public function getSentenceIdsToDoWinningProcess() {
$sql_get_sentence_ids = 'SELECT id FROM `tbl_sentence` WHERE voting_closed_at IS NOT NULL AND id NOT IN( SELECT sentence_id FROM `winning_suggestion_voting_credits` ) order by id' ;
$result_get_sentence_ids = $this->con->query($sql_get_sentence_ids);
$sentence_ids_arr = array();
while ($row = $result_get_sentence_ids->fetch_object()) {
$sentence_ids_arr[] = $row->id;
}
return $sentence_ids_arr;
}
//get sentence language id by sentence id
public function getLanguageIdBySentenceId( $sentence_id ) {
$sql_get_sentence_language_id = "SELECT category_id FROM `tbl_sentence` WHERE id = " . $sentence_id;
$result_sentence_language_id = $this->con->query( $sql_get_sentence_language_id );
while ($row_sentence_language_id = $result_sentence_language_id->fetch_object()) {
$language_id = $row_sentence_language_id->category_id;
}
return $language_id;
}
//Get settings row for default winning credit tmn values
public function getLanguageTmnRow( $language_id ) {
$sql_get_tmn = 'SELECT * FROM `languages` WHERE id = ' . $language_id;
$result_tmn = $this->con->query($sql_get_tmn);
$row_tmn = $result_tmn->fetch_assoc();
return $row_tmn;
}
//get Translator tmn balance by user id
public function getTranslatorTmnBalance( $user_id ) {
$tmn_balance = 0;
$sql_tmn_balance = "SELECT tmn_balance FROM translator_tmn_transactions WHERE user_id = " . $user_id . " ORDER BY id DESC LIMIT 1";
$result_tmn_balance = $this->con->query( $sql_tmn_balance );
if( $result_tmn_balance->num_rows > 0 ) {
while( $row_tmn_balance = $result_tmn_balance->fetch_object() ) {
$tmn_balance = $row_tmn_balance->tmn_balance;
}
}
return $tmn_balance;
}
//credit entry & update balance
public function insertIntoTranslatorTmnTransactionsCreditEntry( $user_id, $trans_description, $reference_tableid, $reference_tablename, $winning_tmn_to_credit ) {
$current_tmn_balance = $this->getTranslatorTmnBalance( $user_id );
$updated_tmn_balance = $current_tmn_balance + $winning_tmn_to_credit;
$sqlInsert = 'INSERT INTO `translator_tmn_transactions`(`user_id`, `trans_description`, `reference_tableid`, `reference_tablename`, `tmn_credit`, `tmn_balance`) VALUES '
. '(' . $user_id . ', "' . $trans_description . '",' . $reference_tableid . ', "' . $reference_tablename . '", ' . $winning_tmn_to_credit . ',' . $updated_tmn_balance . ' )';
$resultInsert = $this->con->query($sqlInsert);
}
}
?>