| Server IP : 210.245.233.93 / Your IP : 216.73.216.226 Web Server : Apache/2.2.15 (CentOS) System : Linux webserver2.onesolution.com.hk 2.6.32-754.35.1.el6.x86_64 #1 SMP Sat Nov 7 12:42:14 UTC 2020 x86_64 User : apache ( 48) PHP Version : 5.3.3 Disable Function : exec, shell_exec, system, passthru, popen, proc_open, pcntl_exec MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/hkosl.com/imusiccircle/ |
Upload File : |
<?
include('_init.php');
include('JSON.php');
foreach ($_POST as $key => $value) {
$_POST[$key] = _h($value);
}
$data = $_POST;
if ($data['ajax'] == 'coupon') {
$json = new Services_JSON();
$limit_type = $_POST['limit_type'];
$coupon_code = $_POST['coupon'];
$fee = $_POST['fee'];
$sql = "select id,discount_type,number from coupon where coupon_code = ? and status = ? and limit_type = ?";
$parameters = array($coupon_code, 1, $limit_type);
$row_coupon = bind_pdo($sql, $parameters, "selectone");
if($row_coupon['id']){
$jsonReturnArr['status'] = true;
if($row_coupon['discount_type'] == 'rate'){
$jsonReturnArr['total'] = $fee*($row_coupon['number']/100);
}else if($row_coupon['discount_type'] == 'cash'){
$jsonReturnArr['total'] = $fee-$row_coupon['number'];
}
$jsonReturnArr['discount'] = $fee-$jsonReturnArr['total'];
/*
$tmp_order_data['coupon_fee'] = $jsonReturnArr['discount'];
$tmp_order_data['coupon_code'] = $coupon_code;
$sql = mysql_install($tmp_order_data, 'order', 'edit','id');
$tmp_order_data['id'] = $row['id'];
$arraykey = array_keys($tmp_order_data);
unset($parameters);
for ($i = 0; $i < count($arraykey); $i++) {
$parameters[$i] = $tmp_order_data[$arraykey[$i]];
}
//$jsonReturnArr['sql'] = $sql;
bind_pdo($sql, $parameters);
*/
}else{
$jsonReturnArr['status'] = false;
}
echo $json->encode($jsonReturnArr);
}else if ($data['ajax'] == 'checkTel') {
//checkTel
if ($data['type'] == 'tutor') {
if ($data['id']) {
$sql = "SELECT count(*) as count FROM tutor_main WHERE mobno=? AND isphoneverified = 1 AND id != ? AND deleted = 0";
$parameters = array(aes_crypt($data['mobno'], 1), $data['id']);
} else {
$sql = "SELECT count(*) as count FROM tutor_main WHERE mobno=? AND isphoneverified = 1 AND deleted = 0";
$parameters = array(aes_crypt($data['mobno'], 1));
}
$record_mobno = bind_pdo($sql, $parameters, "selectone");
} else if ($data['type'] == 'student') {
if ($data['id']) {
$sql = "SELECT count(*) as count FROM student_main WHERE mobno=? AND isphoneverified = 1 AND id != ? AND deleted = 0";
$parameters = array(aes_crypt($data['mobno'], 1), $data['id']);
} else {
$sql = "SELECT count(*) as count FROM student_main WHERE mobno=? AND isphoneverified = 1 AND deleted = 0";
$parameters = array(aes_crypt($data['mobno'], 1));
}
$record_mobno = bind_pdo($sql, $parameters, "selectone");
}
//
$json = new Services_JSON();
$jsonReturnArr['mobno_status'] = $record_mobno['count'] > 0 ? true : false;
echo $json->encode($jsonReturnArr);
exit();
} elseif ($data['ajax'] == 'checkEmail') {
//checkTel
if ($data['type'] == 'tutor') {
if ($data['id']) {
$sql = "SELECT count(*) as count FROM tutor_main WHERE mobno=? AND isphoneverified = 1 AND id != ? AND deleted = 0";
$parameters = array(aes_crypt($data['mobno'], 1), $data['id']);
} else {
$sql = "SELECT count(*) as count FROM tutor_main WHERE mobno=? AND isphoneverified = 1 AND deleted = 0";
$parameters = array(aes_crypt($data['mobno'], 1));
}
$record_mobno = bind_pdo($sql, $parameters, "selectone");
} else if ($data['type'] == 'student') {
if ($data['id']) {
$sql = "SELECT count(*) as count FROM student_main WHERE mobno=? AND isphoneverified = 1 AND id != ? AND deleted = 0";
$parameters = array(aes_crypt($data['mobno'], 1), $data['id']);
} else {
$sql = "SELECT count(*) as count FROM student_main WHERE mobno=? AND isphoneverified = 1 AND deleted = 0";
$parameters = array(aes_crypt($data['mobno'], 1));
}
$record_mobno = bind_pdo($sql, $parameters, "selectone");
}
//checkUsername
$sql = "SELECT count(*) as count FROM tutor_main WHERE email=? AND deleted = 0";
$parameters = array(aes_crypt($data['email'], 1));
$record_email = bind_pdo($sql, $parameters, "selectone");
$sql = "SELECT count(*) as count FROM student_main WHERE email=? AND deleted = 0";
$parameters = array(aes_crypt($data['email'], 1));
$record_email2 = bind_pdo($sql, $parameters, "selectone");
//checkUsername
$sql = "SELECT count(*) as count FROM sys_cms_login WHERE cmsloginname=? AND deleted = 0";
$parameters = array($data['email']);
$record_user = bind_pdo($sql, $parameters, "selectone");
//
include('webadmin/function_auth.php');
$password = Password::strength($data['password']);
//
$json = new Services_JSON();
$jsonReturnArr['mobno_status'] = $record_mobno['count'] > 0 ? true : false;
$jsonReturnArr['email_status'] = ($record_email['count'] + $record_email2['count']) > 0 ? true : false;
$jsonReturnArr['user_status'] = $record_user['count'] > 0 ? true : false;
$jsonReturnArr['password_status'] = $password;
echo $json->encode($jsonReturnArr);
exit();
} else if ($data['ajax'] == 'confirmSMSCode') {
if ($data['type'] == 'tutor') {
$id = intval($_SESSION['member_login']);
} else if ($data['type'] == 'student') {
$id = intval($_SESSION['student_login']);
}
$sql = "select sms_code from " . $data['type'] . "_main where id = ? and deleted = ?";
$parameters = array($id, 0);
$result = bind_pdo($sql, $parameters, "selectone");
$json = new Services_JSON();
if ($result['sms_code'] == $data['code']) {
$jsonReturnArr['status'] = true;
$sql = "update " . $data['type'] . "_main set isphoneverified = ? where id = ?";
$parameters = array(1, $id);
bind_pdo($sql, $parameters);
} else {
$jsonReturnArr['status'] = false;
}
echo $json->encode($jsonReturnArr);
exit();
} else if ($data['ajax'] == 'sendSMS') {
if ($data['type'] == 'tutor') {
$id = intval($_SESSION['member_login']);
} else if ($data['type'] == 'student') {
$id = intval($_SESSION['student_login']);
}
$sql = "select mobno from " . $data['type'] . "_main where id = ? and deleted = ?";
$parameters = array($id, 0);
$result = bind_pdo($sql, $parameters, "selectone");
if ($data['type'] == 'tutor') {
$sql = "SELECT count(*) as count FROM tutor_main WHERE mobno=? AND isphoneverified = 1 AND id != ? AND deleted = 0";
$parameters = array(aes_crypt($result['mobno'],2), $id);
$record_mobno = bind_pdo($sql, $parameters, "selectone");
$sql = "SELECT lastupdate FROM sms_log WHERE tel = ? AND type = ? AND t_or_s_id = ? order by lastupdate desc LIMIT 1";
$parameters = array(aes_crypt($result['mobno'],2),'tutor', $id);
$record_sms_log = bind_pdo($sql, $parameters, "selectone");
} else if ($data['type'] == 'student') {
$sql = "SELECT count(*) as count FROM student_main WHERE mobno=? AND isphoneverified = 1 AND id != ? AND deleted = 0";
$parameters = array(aes_crypt($result['mobno'],2), $id);
$record_mobno = bind_pdo($sql, $parameters, "selectone");
$sql = "SELECT lastupdate FROM sms_log WHERE tel = ? AND type = ? AND t_or_s_id = ? order by lastupdate desc LIMIT 1";
$parameters = array(aes_crypt($result['mobno'],2),'student', $id);
$record_sms_log = bind_pdo($sql, $parameters, "selectone");
}
$json = new Services_JSON();
//$jsonReturnArr['time'] = time()-strtotime($record_sms_log['lastupdate']);
if(time()-strtotime($record_sms_log['lastupdate']) > 60){
if ((!$record_mobno['count'] > 0) && $result['mobno']) {
date_default_timezone_set('Asia/Hong_Kong');
ini_set("max_execution_time", "10");
$code = pass_gen(6, 'number');
$msg = urlencode("iMusicCircle檢証碼:" . $code . "\n查詢: cs@musiccircle.hk \n" . date('Y-m-d H:i:s'));
$phone = '852' . aes_crypt($result['mobno'], 2); // 852 (dial code), 61231231(user phone number)
$accountno = "11029458";
$pwd = "31081158";
file_put_contents("/var/www/html/log/sendSMS.log", "start send SMS to phone: $phone\n");
$handle = fopen("http://api.accessyou.com/sms/sendsms-utf8.php?msg=$msg&phone=$phone&pwd=$pwd&accountno=$accountno", "r");
$contents = trim(fread($handle, 8192));
file_put_contents("/var/www/html/log/sendSMS.log", "send SMS to phone: $phone done\n");
if (!is_numeric($contents)) {
$jsonReturnArr['sms_status'] = 'false';
} else {
$jsonReturnArr['sms_status'] = 'true';
}
$jsonReturnArr['tel'] = aes_crypt($result['mobno'], 2);
$sql = "update " . $data['type'] . "_main set sms_code = ? where id = ?";
$parameters = array($code, $id);
bind_pdo($sql, $parameters);
//
$sql = "INSERT into `sms_log` (type,t_or_s_id,tel,code,lastupdate) value (?,?,?,?,?)";
$parameters = array($data['type'], $id, $jsonReturnArr['tel'], $code, date("Y-m-d H:i:s"));
bind_pdo($sql, $parameters);
} else {
$jsonReturnArr['sms_status'] = 'same';
}
}else{
$jsonReturnArr['sms_status'] = 'time';
}
//
echo $json->encode($jsonReturnArr);
exit();
} else if ($data['ajax'] == 'checkverifyCode') {
if ($data['type'] == 'tutor') {
$id = intval($_SESSION['member_login']);
} else if ($data['type'] == 'student') {
$id = intval($_SESSION['student_login']);
}
$sql = "select isphoneverified from " . $data['type'] . "_main where id = ? and deleted = ?";
$parameters = array($id, 0);
$result = bind_pdo($sql, $parameters, "selectone");
$json = new Services_JSON();
if ($result['isphoneverified'] == 1) {
$jsonReturnArr['smsstatus'] = true;
} else {
$jsonReturnArr['smsstatus'] = false;
}
if ($_SESSION["verification__session"] == $data['verifyCode']) {
$jsonReturnArr['status'] = true;
} else {
$jsonReturnArr['status'] = false;
}
echo $json->encode($jsonReturnArr);
exit();
} else if ($data['ajax'] == 'filter_course') {
/*
var_dump($_POST);
exit;*/
//filter tutor
$inner_sql = "";
$where_clause = "";
$parameters = array(0, "fee", 4, 0, 1);
$_SESSION["category_page"]["quick_search"] = $_POST["quick_search"];
if (!empty($_POST["quick_search"])) {
$where_clause .= " and (tutor_main.nickname LIKE ? or tutor_main.tutor_no LIKE ?)";
$parameters[] = "%" . trim($_POST["quick_search"]) . "%";
$parameters[] = "%" . trim($_POST["quick_search"]) . "%";
}
$_SESSION["category_page"]["category_id"] = $_POST["category_id"];
$category_id = $_POST["category_id"];
if ($_POST["category_id"] != "ANY") {
$where_clause .= " and tutor_charge.mas_instrument = ?";
$parameters[] = $category_id;
} else {
$category_id = null;
}
$_SESSION["category_page"]["level_of_grade"] = $_POST["level_of_grade"];
if (!empty($_POST["level_of_grade"])) {
if ($_POST["level_of_grade"] != "ANY") {
$where_clause .= " and tutor_expectcharge.grade=?";
$parameters[] = $_POST["level_of_grade"];
}
}
$location_array = json_decode(html_entity_decode($_POST["location"]));
$_SESSION["category_page"]["location"] = $location_array;
if (is_array($location_array)) {
$any_location = false;
foreach ($location_array as $row) {
if ($row == "ANY") {
$any_location = true;
}
}
if (!$any_location) {
$location_clause = " and (";
foreach ($location_array as $row) {
$location_clause .= "tutor_teachareacode.mas_teachareacode=? or ";
$parameters[] = $row;
}
$location_clause = substr_replace($location_clause, "", -3) . ")";
$where_clause .= $location_clause;
$inner_sql .= " INNER JOIN tutor_teachareacode ON tutor_teachareacode.tutormain_id = tutor_main.id";
}
}
//$_SESSION["category_page"]["score"] = $_POST["recommend"];
if (!empty($_POST["recommend"])) {
$where_clause .= " and tutor_main.recommend = ?";
$parameters[] = 1;
}
if (!isset($_POST["start"])) {
$start = 0;
$_SESSION["category_page"]["start"] = $start;
} else {
$start = (int)$_POST["start"];
}
$_SESSION["category_page"]["start"] = $_POST["start"];
$_SESSION["category_page"]["min_hourly_rate"] = $_POST["min_hourly_rate"];
$_SESSION["category_page"]["max_hourly_rate"] = $_POST["max_hourly_rate"];
$_SESSION["category_page"]["sort_by"] = $_POST["sort_by"];
$limit = 9;
if ($_SESSION["is_student"] == 1) {
$sql = "select profile_id,(select id from `tutor_main` where cmsloginid = tb.user_id LIMIT 1) as id
from `profile_user` as tb where user_id = ? and deleted = ? LIMIT 1";
$parameters = array($_SESSION['cmsloginid'],0);
$row_profile = bind_pdo($sql, $parameters, "selectone");
}
$sql = "select *,
(select count(*) from `order` where job_id = tb.id and (status = 'process' or status = 'paid') and deleted = 0) as count,
(select count(*) from `order` where job_id = tb.id and (status = 'process' or status = 'paid') and studentmain_id = '".$row_profile['id']."' and deleted = 0) as studentcount
from tutor_postjob as tb where deleted = ? and approved = ? and status = ? and (NOW() between start_date and end_date)".$exsql;
$parameters = array(0,1,1);
$rows = bind_pdo($sql, $parameters, "selectall");
if (empty($rows)) {
echo " " . _lang("沒有適合的課堂");
} else {
foreach ($rows as $key => $row) {
if (!empty($row["id"])) {
$sql = "select nickname,tutor_no
from tutor_main where id = ? and deleted = ? LIMIT 1";
$parameters = array($row["tutormain_id"],0);
$row_tutor = bind_pdo($sql, $parameters, "selectone");
$sql = "select name_cn as name
from master_type_code where id = ? and typeid = ? and deleted = ? LIMIT 1";
$parameters = array($row["mas_instrument"],'INSTRUMENT',0);
$row_instrument = bind_pdo($sql, $parameters, "selectone");
$sql = "select * from master_type_code where typeid = ? and id = ? and deleted = ?";
$parameters = array('RESIDENCE_POSITIONCODE',$row['classlocation'],0);
$row_position = bind_pdo($sql, $parameters, "selectone");
$sql = "SELECT date FROM tutor_postjob_date WHERE postjob_refid = ? order by date asc";
$parameters99 = array(intval($row['id']));
$row_postjob_mindate= bind_pdo($sql, $parameters99, "selectone");
$sql = "SELECT date FROM tutor_postjob_date WHERE postjob_refid = ? order by date desc";
$parameters99 = array(intval($row['id']));
$row_postjob_maxdate= bind_pdo($sql, $parameters99, "selectone");
$sql = "SELECT refid FROM tutor_postjob_date WHERE postjob_refid = ?";
$parameters99 = array(intval($row['id']));
$rows_postjob_date = bind_pdo($sql, $parameters99, "selectall");
$weekTitle_array = array('日','一','二','三','四','五','六');
$array = explode(',',$row['week']);
unset($week_array);
for($i=0;$i<count($array);$i++){
$week_array[] =$weekTitle_array[$array[$i]];
}
$week_array = implode('、',$week_array);
if (!empty($_POST["sort_by"])) {
if ($_POST["sort_by"] == "LOW_HIGH") {
//$where_clause .= " order by tutor_expectcharge.charge_30min ASC";
uasort($tutors, 'low2high');
} else if ($_POST["sort_by"] == "HIGH_LOW") {
//$where_clause .= " order by tutor_expectcharge.charge_30min DESC";
uasort($tutors, 'high2low');
}
}
if ($count_tutor >= $start && $count_tutor < ($start + $limit)) {
?>
<div class="col-lg-12 col-md-6">
<div class="Tutor">
<div style="float:left; width:250px; padding:10px;"> <img src="file/teacherpostjob/<?=$row["upload_photo1"]?>" alt=""/> </div>
<div style="float:left; margin-top:10px; width:320px;">
<div>
<div style="float:left; line-height:50px; font-size:40px; margin-right:10px;">
<?= $row_instrument["name"].$row["people_count"]."人班" ?>
</div>
<div style="float:left;">
<div style="font-size:16px;">級別 :
<?
if($row['level'] == 1){
echo '初級';
}else if($row['level'] == 3){
echo '三級';
}?>
</div>
<div style="font-size:12px;"><b>課堂人數 :
<?=$row["people_count"]?>
人(尚餘<span style="color:#F00;">
<?=($row["people_count"]-($row["reserved_people_count"]+$row['count']))?>
個</span>名額)</b></div>
</div>
<div style="clear:both;"></div>
</div>
<div class="TutorInfo"> <span style="font-size: 18px;">
導師 : <?=$row_tutor['nickname']?><span style="font-size:12px;">(導師編號 : <?=$row_tutor['tutor_no']?>)</span>
</span><br>
<div style="font-size: 12px;">
<div style="float:left;">
<?=_lang("Teaching District")?> :
</div>
<div style="float:left; margin-left:3px;">
<?=$row_position["name_cn"]?>
</div>
<div style="clear:both;"></div>
</div>
<div style="font-size: 12px;">
<div style="float:left;"><?= _lang("上課時間")?> :</div>
<div style="float:left; margin-left:3px;">
<div><?=date('Y年m月d日',strtotime($row_postjob_mindate["date"]))?> 至 <?=date('Y年m月d日',strtotime($row_postjob_maxdate["date"]))?></div>
<div>逢<?=$week_array?>,<?=date('h:i',strtotime('0000-00-00 '.$row['time_h'].':'.$row['time_m']))?> 至 <?=date('h:i',strtotime('0000-00-00 '.$row['time_h'].':'.$row['time_m'])+($row['course_hours']*60))?> (共<?=count($rows_postjob_date)?>場)</div>
</div>
<div style="clear:both;"></div>
</div>
<div style="font-size: 25px; margin-top:15px;">
<?= " HK$" . (float)$row["fee"] ?>
</div>
</div>
</div>
<div style="float:left; margin-left:80px; margin-top:10px; text-align:right; padding-right:10px; width:190px;">
<div style="font-size:12px;">課堂編號 : <?=$row["postjob_no"]?></div>
<a href="course_detail.php?id=<?=$row['id']?>" class="btn btn-default" style="width:100%;">課堂詳情</a>
<? if ($_SESSION["is_student"] == 1) { ?>
<? if($row['studentcount'] == 0 && (($row["reserved_people_count"]+$row['count']) < $row["people_count"])){?>
<form action="course_search_process.php" method="post">
<input type="hidden" name="id" value="<?=$row['id']?>"/>
<button type="submit" onclick="return confirm('你確認參加?');" class="btn btn-block btn-success" style="width:100%; margin-top:10px;">立即付款報名</button>
</form>
<? }else{?>
<button type="button" class="btn btn-block" style="width:100%; margin-top:10px; color:#333;">你已報名參加</button>
<? }?>
<? }?>
<div style="font-size:12px; margin-top:10px;">截止報名日期<br /><?=$row["end_date"]?></div>
</div>
<div style="clear:both;"></div>
</div>
</div>
<?php
}
$count_tutor++;
}
}
$_end = $start+$limit;
if($_end > $count_tutor)
$_end = $count_tutor;
$_start = $start+1;
if($_end==0)
$_start = 0;
if($_SESSION["langcode"] == "en"){
echo '<div id="displaying_text_temp" style="display: none;">Displaying '.($_start).' - '.($_end).' of '.$count_tutor.' results</div>';
}else if($_SESSION["langcode"] == "cn"){
echo '<div id="displaying_text_temp" style="display: none;">顯示 '.($_start).' - '.($_end).' 共'.$count_tutor.'結果</div>';
}
$count = $count_tutor;
$numpage = $count / $limit;
echo '<div class="col-lg-12">';
if ($numpage > 1) {
pagenav();
}
echo '</div>';
}
exit;
} else if ($data['ajax'] == 'filter_tutor') {
/*
var_dump($_POST);
exit;*/
//filter tutor
$inner_sql = "";
$where_clause = "";
$parameters = array(0, "fee", 4, 0, 1);
$_SESSION["category_page"]["quick_search"] = $_POST["quick_search"];
if (!empty($_POST["quick_search"])) {
$where_clause .= " and (tutor_main.nickname LIKE ? or tutor_main.tutor_no LIKE ?)";
$parameters[] = "%" . trim($_POST["quick_search"]) . "%";
$parameters[] = "%" . trim($_POST["quick_search"]) . "%";
}
$_SESSION["category_page"]["category_id"] = $_POST["category_id"];
$category_id = $_POST["category_id"];
if ($_POST["category_id"] != "ANY") {
$where_clause .= " and tutor_charge.mas_instrument = ?";
$parameters[] = $category_id;
} else {
$category_id = null;
}
$_SESSION["category_page"]["level_of_grade"] = $_POST["level_of_grade"];
if (!empty($_POST["level_of_grade"])) {
if ($_POST["level_of_grade"] != "ANY") {
$where_clause .= " and tutor_expectcharge.grade=?";
$parameters[] = $_POST["level_of_grade"];
}
}
$location_array = json_decode(html_entity_decode($_POST["location"]));
$_SESSION["category_page"]["location"] = $location_array;
if (is_array($location_array)) {
$any_location = false;
foreach ($location_array as $row) {
if ($row == "ANY") {
$any_location = true;
}
}
if (!$any_location) {
$location_clause = " and (";
foreach ($location_array as $row) {
$location_clause .= "tutor_teachareacode.mas_teachareacode=? or ";
$parameters[] = $row;
}
$location_clause = substr_replace($location_clause, "", -3) . ")";
$where_clause .= $location_clause;
$inner_sql .= " INNER JOIN tutor_teachareacode ON tutor_teachareacode.tutormain_id = tutor_main.id";
}
}
$teach_array = json_decode(html_entity_decode($_POST["teach_venue"]));
$_SESSION["category_page"]["teach_venue"] = $teach_array;
if (is_array($teach_array)) {
$any_teach_venue = false;
foreach ($teach_array as $row) {
if ($row == "ANY") {
$any_teach_venue = true;
}
}
if (!$any_teach_venue) {
$teach_venue_clause = " and (";
foreach ($teach_array as $row) {
$teach_venue_clause .= "tutor_teachvenus.mas_teachvenus=? || ";
$parameters[] = $row;
}
$teach_venue_clause = substr_replace($teach_venue_clause, "", -3) . ")";
$where_clause .= $teach_venue_clause;
$inner_sql .= " INNER JOIN tutor_teachvenus ON tutor_teachvenus.tutormain_id = tutor_main.id";
}
}
$gender = array();
if (!empty($_POST["gender_f"]) && !empty($_POST["gender_m"])) {
$where_clause .= " and tutor_main.gender in ('m','f')";
} elseif (!empty($_POST["gender_f"])) {
$where_clause .= " and tutor_main.gender=?";
$parameters[] = $_POST["gender_f"];
} elseif (!empty($_POST["gender_m"])) {
$where_clause .= " and tutor_main.gender=?";
$parameters[] = $_POST["gender_m"];
}
if (!empty($_POST["gender_f"])) {
$gender[] = $_POST["gender_f"];
}
if (!empty($_POST["gender_m"])) {
$gender[] = $_POST["gender_m"];
}
$_SESSION["category_page"]["gender"] = $gender;
/*$_SESSION["category_page"]["accumulate_tutorial_hours"] = $_POST["accumulate_tutorial_hours"];
if (!empty($_POST["accumulate_tutorial_hours"])) {
/*$where_clause .= " and tutor_expectcharge.grade=?";
$parameters[] = $_POST["level_of_grade"];
}*/
$_SESSION["category_page"]["last_login"] = $_POST["last_login"];
if (!empty($_POST["last_login"]) && $_POST["last_login"] != "ANY") {
$where_clause .= " and sys_cms_login.last_login_date <= ? and sys_cms_login.last_login_date >= ?";
$date = new DateTime();
$parameters[] = $date->format('Y-m-d H:i:s');
$date2 = $date->modify('-' . (int)$_POST["last_login"] . ' day');
$parameters[] = $date2->format('Y-m-d H:i:s');
$inner_sql .= " INNER JOIN sys_cms_login ON sys_cms_login.cmsloginid = tutor_main.cmsloginid";
}
/*$_SESSION["category_page"]["score"] = $_POST["score"];
if (!empty($_POST["score"])) {
$where_clause .= " and tutor_expectcharge.grade=?";
$parameters[] = $_POST["level_of_grade"];
}*/
//$_SESSION["category_page"]["score"] = $_POST["recommend"];
if (!empty($_POST["recommend"])) {
$where_clause .= " and tutor_main.recommend = ?";
$parameters[] = 1;
}
/*if(isset($_SESSION["category_page"]["start"])){
$start = $_SESSION["category_page"]["start"];
}else{
if (!isset($_POST["start"])) {
$start = 0;
} else {
$start = (int)$_POST["start"];
}
}*/
if (!isset($_POST["start"])) {
$start = 0;
$_SESSION["category_page"]["start"] = $start;
} else {
$start = (int)$_POST["start"];
}
$_SESSION["category_page"]["start"] = $_POST["start"];
$_SESSION["category_page"]["min_hourly_rate"] = $_POST["min_hourly_rate"];
$_SESSION["category_page"]["max_hourly_rate"] = $_POST["max_hourly_rate"];
$_SESSION["category_page"]["sort_by"] = $_POST["sort_by"];
$limit = 9;
$sql = "select tutor_main.nickname, tutor_main.recommend, tutor_main.profilephoto_path, tutor_main.self_describemyself, tutor_main.cmsloginid, tutor_charge.tutormain_id, tutor_expectcharge.grade, stars from tutor_main
INNER JOIN tutor_charge ON tutor_main.id = tutor_charge.tutormain_id
INNER JOIN tutor_expectcharge ON tutor_charge.id = tutor_expectcharge.charge_id
{$inner_sql}
where tutor_charge.deleted = ? and tutor_expectcharge.type = ? and tutor_main.status = ? and tutor_main.deleted = ? and tutor_main.approved = ? {$where_clause}
group by tutor_main.id
order by tutor_main.recommend DESC, tutor_main.createdate ASC";
debug_log("tutor sql", dump_sql($sql, $parameters));
$all_tutors = bind_pdo($sql, $parameters, "selectall");
$grade_info = get_master_type_code("LEVEL_OF_GRADE");
//debug_log("all tutor sql", dump_sql($sql, $parameters));
/*$sql = "select * from tutor_main
INNER JOIN tutor_charge ON tutor_main.id = tutor_charge.tutormain_id
INNER JOIN tutor_expectcharge ON tutor_charge.id = tutor_expectcharge.charge_id
INNER JOIN tutor_teachareacode ON tutor_teachareacode.tutormain_id = tutor_main.id
INNER JOIN tutor_teachvenus ON tutor_teachvenus.tutormain_id = tutor_main.id
INNER JOIN sys_cms_login ON sys_cms_login.cmsloginid = tutor_main.cmsloginid
where tutor_charge.deleted = ? and tutor_expectcharge.type = ? and tutor_main.status = ? and tutor_main.deleted = ? and tutor_main.approved = ? {$where_clause}
group by tutor_main.id
order by tutor_main.recommend DESC, tutor_main.createdate ASC
limit " . $start . ", " . $limit;
$tutors = bind_pdo($sql, $parameters, "selectall");*/
$tutors = $all_tutors;
//debug_log("123 tutor sql", $_POST);
if (empty($tutors)) {
echo " " . _lang("No tutors.");
} else {
foreach ($tutors as $key => $tutor) {
if (!empty($tutor["tutormain_id"])) {
//$teaching_experience = get_master_type_code_by_id($tutor["mas_teachexp"]);
$tutor_expectcharge = get_tutor_expectcharge($tutor["tutormain_id"], $category_id, "fee");
//$tutors[$key]["teaching_experience"] = $teaching_experience["name_" . $langcode];
$tutors[$key]["min_fee"] = $tutor_expectcharge[0]["min_fee"];
$tutors[$key]["min_minutes"] = $tutor_expectcharge[0]["min_minutes"];
$tutors[$key]["min_instrument_name"] = $tutor_expectcharge[0]["min_instrument_name"];
$tutors[$key]["min_instrument_grade"] = $tutor_expectcharge[0]["min_instrument_grade"];
$tutors[$key]["min_category_id"] = $tutor_expectcharge[0]["min_category_id"];
}
}
if (!empty($_POST["sort_by"])) {
if ($_POST["sort_by"] == "MOST_POPULAR") {
//$where_clause .= " order by tutor_expectcharge.charge_30min ";
} else if ($_POST["sort_by"] == "LOW_HIGH") {
//$where_clause .= " order by tutor_expectcharge.charge_30min ASC";
uasort($tutors, 'low2high');
} else if ($_POST["sort_by"] == "HIGH_LOW") {
//$where_clause .= " order by tutor_expectcharge.charge_30min DESC";
uasort($tutors, 'high2low');
} else if ($_POST["sort_by"] == "ACCUMULATE_HOUR_LOW_HIGH") {
//$where_clause .= " order by stars ASC";
uasort($tutors, 'accumulate_hour_low2high');
} else if ($_POST["sort_by"] == "ACCUMULATE_HOUR_HIGH_LOW") {
//$where_clause .= " order by stars DESC";
uasort($tutors, 'accumulate_hour_high2low');
}
}
$count_tutor = 0; //start from 0
foreach ($tutors as $tutor) {
if (!empty($tutor["tutormain_id"])) {
if ($tutor["min_fee"] < $_POST["min_hourly_rate"] || $tutor["min_fee"] > $_POST["max_hourly_rate"]) {
continue;
}
if ($count_tutor >= $start && $count_tutor < ($start + $limit)) {
$sql = "select DISTINCT(master_type_code.extra1) from tutor_teachareacode INNER JOIN master_type_code ON tutor_teachareacode.mas_teachareacode = master_type_code.id where tutor_teachareacode.tutormain_id =? and tutor_teachareacode.deleted = ?";
$parameters = array($tutor['tutormain_id'], 0);
$rows = bind_pdo($sql, $parameters, "selectall");
$area_array = array();
foreach ($rows as $row) {
$sql = "select name_en,name_cn from master_type_code where typeid = 'TEACH_AREACODE' and code = ? and deleted = ?";
$parameters = array($row['extra1'], 0);
$row_teachareacode = bind_pdo($sql, $parameters, "selectone");
$area_array[] = $row_teachareacode['name_' . $langcode];
}
?>
<div class="col-lg-4 col-md-6">
<div class="Tutor" <?= ($tutor["recommend"] == 1 ? "style='position:relative;'" : "") ?>> <a href="profile.php?id=<?= $tutor["tutormain_id"] ?>&category_id=<?=$tutor["min_category_id"]?>">
<?php
if ($tutor["recommend"] == 1) {
echo "<div style='position:absolute; top:0; left: 0'><img src='img/recommend.png' style='width: 40%;'> </div>";
}
?>
<?php if (!empty($tutor["profilephoto_path"])) { ?>
<div class="tutor_img_container pointer">
<div class="tutor_img" style="background: url(file/teacher/<?= $tutor["profilephoto_path"] ?>) center center no-repeat; background-size: cover; width: inherit; height: inherit"></div>
<img class="tutor_img2" src="file/teacher/<?= $tutor["profilephoto_path"] ?>"> </div>
<?php } ?>
</a>
<div class="CategoryTutorName" <?= ($tutor["recommend"] == 1 ? "style=' background-color: #D70000; font-weight: bold;'" : "") ?>>
<?= $tutor["nickname"] ?>
</div>
<div class="TutorInfo"> <span style="font-size: 18px;">
<?= $tutor["min_instrument_name"] ?>
</span><br>
<span style="font-size: 12px; font-weight: bold; text-decoration: underline;">
<?= _lang("Expected Tutorial Fee") ?>
:</span><br>
<? if($_SESSION["category_page"]["level_of_grade"] && $_SESSION["category_page"]["level_of_grade"] != "ANY"){?>
<?
if($tutor["charge_30min"]){
$tutor["min_fee"] = $tutor["charge_30min"];
$tutor["min_minutes"] = 30;
}else if($tutor["charge_45min"]){
$tutor["min_fee"] = $tutor["charge_45min"];
$tutor["min_minutes"] = 45;
}else if($tutor["charge_60min"]){
$tutor["min_fee"] = $tutor["charge_60min"];
$tutor["min_minutes"] = 60;
}
foreach ($grade_info as $grade){
if($grade["code"] == $tutor["grade"]){
$grade_name = $grade["name_".$langcode];
break;
}
}
?>
<span style="font-size: 18px;">
<?=_lang("Level").": ".$grade_name." HK$". (float)$tutor["min_fee"] ?>
<?= _lang("per " . $tutor["min_minutes"] . " mins") ?>
</span><br>
<? }else{?>
<span style="font-size: 18px;">
<?=_lang("Level").": ".$tutor["min_instrument_grade"]." HK$". (float)$tutor["min_fee"] ?>
<?= _lang("per " . $tutor["min_minutes"] . " mins") ?>
</span><br>
<? }?>
<span style="font-size: 12px; font-weight: bold; text-decoration: underline;">
<?= _lang("Teaching District") . ":<br> " ?>
</span> <span style="font-size: 18px;">
<?= implode(',', $area_array) ?>
</span><br>
<div class="TutorDescription">
<?php
echo "<p class='self_describemyself' style='height: 33px;'>" . nl2br($tutor["self_describemyself"]) . "</p>";
echo "<p><a class='fancybox1' href='#accumulate_tutorial_hours' style='text-decoration: none; color: inherit;'>" . _lang("Accumulate Tutorial Hours") . " <span class='glyphicon glyphicon-question-sign' aria-hidden='true'></span></a>: <span class='stars'>".$tutor["stars"]."</span></p>";
?>
</div>
<hr>
<div class=""> <?php echo _lang("LAST LOGIN") . ": " . get_last_login_date($tutor["cmsloginid"]); ?>
<!--<span class="glyphicon glyphicon-paperclip"></span><font color="#ff0000"> <?/*= $tutor["teaching_experience"] */ ?><?/*= _lang("years experience") */ ?></font>-->
</div>
</div>
</div>
</div>
<?php
}
$count_tutor++;
}
}
$_end = $start+$limit;
if($_end > $count_tutor)
$_end = $count_tutor;
$_start = $start+1;
if($_end==0)
$_start = 0;
if($_SESSION["langcode"] == "en"){
echo '<div id="displaying_text_temp" style="display: none;">Displaying '.($_start).' - '.($_end).' of '.$count_tutor.' results</div>';
}else if($_SESSION["langcode"] == "cn"){
echo '<div id="displaying_text_temp" style="display: none;">顯示 '.($_start).' - '.($_end).' 共'.$count_tutor.'結果</div>';
}
$count = $count_tutor;
$numpage = $count / $limit;
echo '<div class="col-lg-12">';
if ($numpage > 1) {
pagenav();
}
echo '</div>';
}
exit;
} else if ($data["ajax"] == "facebook_login_checking") {
$sql = "select count(*) as count from student_main where facebook_id = ?;";
$parameters = array($_POST["userID"]);
$record = bind_pdo($sql, $parameters, "selectone");
$sql = "select count(*) as count from tutor_main where facebook_id = ?;";
$parameters = array($_POST["userID"]);
$record2 = bind_pdo($sql, $parameters, "selectone");
if (($record['count'] + $record2['count']) > 0) {
echo 'false';
} else {
if (intval($_SESSION['student_login'])) {
$id = intval($_SESSION['student_login']);
$data['type'] = 'student';
} else if (intval($_SESSION['member_login'])) {
$id = intval($_SESSION['member_login']);
$data['type'] = 'tutor';
}
if ($data['type'] == 'student' || $data['type'] == 'tutor') {
$sql = "update " . $data['type'] . "_main set facebook_id = ? where id = ?";
$parameters = array($_POST["userID"], $id);
bind_pdo($sql, $parameters);
}
echo 'true';
}
exit();
/*
$json = new Services_JSON();
$url = "https://graph.facebook.com/me?fields=id,name&access_token=".$_POST["accessToken"]."&id=".$_POST["userID"];
$result = file_get_contents($url);
$result = json_decode($result, true);
if(!empty($result["id"]) && !empty($result["name"])){
$_SESSION["user_facebook_id"] = $result["id"];
echo $result["id"];
echo 'a';
}else{
//echo "FAIL";
}
*/
} else if ($data["ajax"] == "subscribe_email") {
global $dbh;
//check email format
$email = $_POST["email"];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo _lang("Invalid email format.");
} else {
$sql = "select * from subscribe where email = ? and deleted = ?";
$parameters = array($email, 0);
$result = bind_pdo($sql, $parameters, "selectone");
if (!empty($result)) {
echo _lang("We have recorded your email. Thank you for subscription.");
} else {
$sql = "insert into subscribe (email, createdate, lastupdate) value (?, ?, ?)";
$parameters = array($_POST["email"], date("Y-m-d H:i:s"), date("Y-m-d H:i:s"));
bind_pdo($sql, $parameters);
if ($dbh->lastInsertId() > 0) {
echo _lang("We have recorded your email. Thank you for subscription.");
} else {
echo _lang("We cannot record your email. Please refresh page and try again.");
}
}
}
} else if ($data["ajax"] == "contact_student_submit") {
global $dbh;
if (empty($_POST["job_id"]) || (int)$_POST["job_id"] <= 0) {
echo _lang("Cannot find job id.");
} else {
$studentpostjob_id = (int)$_POST["job_id"];
//checking
if (isset($_SESSION["cmsloginid"]) && isset($_SESSION["is_tutor"]) && $_SESSION["is_tutor"] == 1) {
//TODO:: check if any valid order between student and tutor, if valid, unlock pm,
$sql = "select *,student_postjob.id as student_postjob_id from student_postjob
INNER JOIN student_main ON student_main.id = student_postjob.studentmain_id
where student_postjob.status = ? and student_postjob.deleted = ? and student_postjob.approved = ? and student_main.status = ? and student_main.deleted = ? and student_main.approved = ? and student_postjob.id = ?
order by student_postjob.approved_date";
$parameters = array(1, 0, 1, 4, 0, 1, $studentpostjob_id);
$job = bind_pdo($sql, $parameters, "selectone");
if (!empty($job)) {
//check pm number and unlock or not
if (!empty($job["tutormain_id"])) {
//matched and unlock pm
} else {
//not matched, need to count times of pm
$sql = "select count(*) as tutor2student_pm_count, chat_limit from chat where from_id = ? and from_role = ? and to_id = ? and to_role = ? and deleted = ? and studentpostjob_id = ?";
$parameters = array($_SESSION["member_login"], "TUTOR", $job["studentmain_id"], "STUDENT", 0, $studentpostjob_id);
$result = bind_pdo($sql, $parameters, "selectone");
if ($result["tutor2student_pm_count"] >= $result["chat_limit"] && $result["tutor2student_pm_count"] > 0) {
//not allow pm
echo _lang("You have reached the personal message limit. You do not allow to send message. if you have any questions, you can contact us through whatsapp (94460817) or call 34604105 by phone.");
} else {
//allow pm
//check if first chat
$job_info = get_studentpostjob2($studentpostjob_id);
//$sql = "select count(*) as chat_count, chat_limit, max(id) as max_id, first_chat_id from chat where ( ((from_id = ? and from_role = ?) or (to_id = ? and to_role = ?)) and ((from_id = ? and from_role = ?) or (to_id = ? and to_role = ?)) ) and deleted = ? and studentpostjob_id = ?";
$sql = "select count(*) as chat_count, chat_limit, max(id) as max_id, first_chat_id from chat where ( ((from_id = ? and from_role = ?) and (to_id = ? and to_role = ?)) or ((from_id = ? and from_role = ?) and (to_id = ? and to_role = ?)) ) and deleted = ? and studentpostjob_id = ?";
$parameters = array($_SESSION["member_login"], "TUTOR", $job_info["studentmain_id"], "STUDENT", $job_info["studentmain_id"], "STUDENT", $_SESSION["member_login"], "TUTOR", 0, $studentpostjob_id);
$result2 = bind_pdo($sql, $parameters, "selectone");
if ($result2["chat_count"] == 0) {
$first_chat = 1;
$chat_limit = $site_info["chat_limit"];
$sql = "select max(id) as max_id from chat";
$parameters = array();
$result3 = bind_pdo($sql, $parameters, "selectone");
$first_chat_id = $result3["max_id"]+1;
} else {
$first_chat = 0;
$chat_limit = $result2["chat_limit"];
$first_chat_id = $result2["first_chat_id"];
}
$sql = "insert into chat (studentpostjob_id, from_id, from_role, to_id, to_role, content, first_chat, sent_date, chat_limit, first_chat_id) values (?,?,?,?,?,?,?,?,?,?)";
$parameters = array($studentpostjob_id, $_SESSION["member_login"], "TUTOR", $job["studentmain_id"], "STUDENT", $_POST["content"], $first_chat, date("Y-m-d H:i:s"), $chat_limit, $first_chat_id);
bind_pdo($sql, $parameters);
if ($dbh->lastInsertId() > 0) {
insert_approval_list("CHAT", "chat", $dbh->lastInsertId());
echo _lang("Your message has sent.");
} else {
echo _lang("Your message cannot send. Please refresh page and try again.");
}
}
}
} else {
echo _lang("Jobs or tutors are not valid.");
}
} else {
echo _lang("Access Denied!");
}
}
} else if ($data["ajax"] == "contact_tutor_submit") {
global $dbh;
if (empty($_POST["job_id"]) || (int)$_POST["job_id"] <= 0) {
echo _lang("Cannot find job id.");
} else if (empty($_POST["tutor_id"]) || (int)$_POST["tutor_id"] <= 0) {
echo _lang("Cannot find tutor id.");
} else {
$studentpostjob_id = (int)$_POST["job_id"];
$tutor_id = (int)$_POST["tutor_id"];
//checking
if (isset($_SESSION["cmsloginid"]) && isset($_SESSION["is_student"]) && $_SESSION["is_student"] == 1) {
//TODO:: check if any valid order between student and tutor, if valid, unlock pm,
$sql = "select *,student_postjob.id as student_postjob_id from student_postjob
INNER JOIN student_main ON student_main.id = student_postjob.studentmain_id
where student_postjob.status = ? and student_postjob.deleted = ? and student_postjob.approved = ? and student_main.status = ? and student_main.deleted = ? and student_main.approved = ? and student_postjob.id = ?
order by student_postjob.approved_date";
$parameters = array(1, 0, 1, 4, 0, 1, $studentpostjob_id);
//debug_log(123, dump_sql($sql, $parameters));
$job = bind_pdo($sql, $parameters, "selectone");
//check tutor status
$sql = "select * from tutor_main where id = ? and status = ? and deleted = ? and approved = ?";
$parameters = array($tutor_id, 4, 0, 1);
$tutor_info = bind_pdo($sql, $parameters, "selectone");
if (!empty($job) && !empty($tutor_info)) {
//check pm number and unlock or not
if (!empty($job["tutormain_id"])) {
//matched and unlock pm
} else {
//not matched, need to count times of pm
$sql = "select count(*) as student2tutor_pm_count, chat_limit from chat where from_id = ? and from_role = ? and to_id = ? and to_role = ? and deleted = ? and studentpostjob_id = ?";
$parameters = array($_SESSION["student_login"], "STUDENT", $tutor_id, "TUTOR", 0, $studentpostjob_id);
$result = bind_pdo($sql, $parameters, "selectone");
if ($result["student2tutor_pm_count"] >= $result["chat_limit"] && $result["student2tutor_pm_count"] > 0) {
//not allow pm
echo _lang("You have reached the personal message limit. You do not allow to send message. if you have any questions, you can contact us through whatsapp (94460817) or call 34604105 by phone.");
} else {
//allow pm
//check if first chat
//$sql = "select count(*) as chat_count, chat_limit, max(id) as max_id, first_chat_id from chat where ( (from_id = ? and from_role = ?) or (to_id = ? and to_role = ?) ) and deleted = ? and studentpostjob_id = ?";
$sql = "select count(*) as chat_count, chat_limit, max(id) as max_id, first_chat_id from chat where ( ((from_id = ? and from_role = ?) and (to_id = ? and to_role = ?)) or ((from_id = ? and from_role = ?) and (to_id = ? and to_role = ?)) ) and deleted = ? and studentpostjob_id = ?";
$parameters = array($_SESSION["student_login"], "STUDENT", $tutor_id, "TUTOR", $tutor_id, "TUTOR", $_SESSION["student_login"], "STUDENT", 0, $studentpostjob_id);
$result2 = bind_pdo($sql, $parameters, "selectone");
if ($result2["chat_count"] == 0) {
$first_chat = 1;
$chat_limit = $site_info["chat_limit"];
$sql = "select max(id) as max_id from chat";
$parameters = array();
$result3 = bind_pdo($sql, $parameters, "selectone");
$first_chat_id = $result3["max_id"]+1;
} else {
$first_chat = 0;
$chat_limit = $result2["chat_limit"];
$first_chat_id = $result2["first_chat_id"];
}
$sql = "insert into chat (studentpostjob_id, from_id, from_role, to_id, to_role, content, first_chat, sent_date, chat_limit, first_chat_id) values (?,?,?,?,?,?,?,?,?,?)";
$parameters = array($studentpostjob_id, $_SESSION["student_login"], "STUDENT", $tutor_id, "TUTOR", $_POST["content"], $first_chat, date("Y-m-d H:i:s"), $chat_limit, $first_chat_id);
bind_pdo($sql, $parameters);
if ($dbh->lastInsertId() > 0) {
insert_approval_list("CHAT", "chat", $dbh->lastInsertId());
echo _lang("Your message has sent.");
} else {
echo _lang("Your message cannot send. Please refresh page and try again.");
}
}
}
} else {
echo _lang("Jobs or tutors are not valid.");
}
} else {
echo _lang("Access Denied!");
}
}
}else if ($data["ajax"] == "check_contact") {
if(empty($_POST["job_id"]) || empty($_POST["tutor_id"])){
//error
$result = array("error" => 1);
echo json_encode($result);
}else{
//check musical instrument
$job_id = (int)$_POST["job_id"];
$tutor_id = (int)$_POST["tutor_id"];
$matched_musical_instrument = compare_job_and_tutor($job_id, $tutor_id);
$job_info = get_studentpostjob2($job_id);
//$sql = "select count(*) as count_chat, first_chat_id from chat where studentpostjob_id = ? and ((from_id = ? and from_role = ?) or (to_id = ? and to_role = ?)) and deleted = ?";
$sql = "select count(*) as chat_count, chat_limit, max(id) as max_id, first_chat_id from chat where studentpostjob_id = ? and ( ((from_id = ? and from_role = ?) and (to_id = ? and to_role = ?)) or ((from_id = ? and from_role = ?) and (to_id = ? and to_role = ?)) ) and deleted = ? and approved = ?";
$parameters = array($job_id, $tutor_id, "TUTOR", $job_info["studentmain_id"], "STUDENT", $job_info["studentmain_id"], "STUDENT", $tutor_id, "TUTOR", 0, 1);
$chat_info = bind_pdo($sql, $parameters, "selectone");
$result = array("error" => 0, "matched_musical_instrument" => $matched_musical_instrument, "count_chat" => $chat_info["count_chat"], "first_chat_id" => $chat_info["first_chat_id"]);
echo json_encode($result);
}
}else if ($data["ajax"] == "check_student_contact_tutor") {
}