/** * Converts the response in JSON format to the value object i.e Recommender * * @param json * - response in JSON format * * @return Recommender object filled with json data * */ public function buildResponse($json) { $recommenderObj = new Recommender(); $recommendedItemList = array(); $recommenderObj->setRecommendedItemList($recommendedItemList); $recommenderObj->setStrResponse($json); $jsonObj = new JSONObject($json); $jsonObjApp42 = $jsonObj->__get("app42"); $jsonObjResponse = $jsonObjApp42->__get("response"); $recommenderObj->setResponseSuccess($jsonObjResponse->__get("success")); $jsonObjRecommender = $jsonObjResponse->__get("recommender"); $this->buildObjectFromJSONTree($recommenderObj, $jsonObjRecommender); if (!$jsonObjRecommender->has("recommended")) { return $recommenderObj; } if ($jsonObjRecommender->__get("recommended") instanceof JSONObject) { // Only One attribute is there $jsonObjRecommended = $jsonObjRecommender->__get("recommended"); $recomItem = new RecommendedItem($recommenderObj); $this->buildObjectFromJSONTree($recomItem, $jsonObjRecommended); } else { // There is an Array of attribute $jsonObjRecommenderArray = $jsonObjRecommender->getJSONArray("recommended"); for ($i = 0; $i < count($jsonObjRecommenderArray); $i++) { // Get Individual Attribute Node and set it into Object //$jsonObjRecommended = new JSONObject($jsonObjRecommenderArray[$i]); $jsonObjRecommended = $jsonObjRecommenderArray[$i]; $recomItem = new RecommendedItem($recommenderObj); $jsonObjRecommended = new JSONObject($jsonObjRecommended); $this->buildObjectFromJSONTree($recomItem, $jsonObjRecommended); } } return $recommenderObj; }
function __construct($appName, $tableName, $fieldMouse, $fieldCheese, $fieldWeight = NULL, $options = array()) { parent::__construct($appName, $tableName, $fieldMouse, $fieldCheese, $fieldWeight, $options); }
if ($_POST['action'] == 'add_to_privileged') { $recommender_industries_adding_error = false; $default_contact_adding_error = false; $mysqli = Database::connect(); $joined_on = today(); // get the buffer record $query = "SELECT * FROM users_contributed_resumes WHERE \n job_id = " . $_POST['job_id'] . " AND \n candidate_email_addr = '" . $_POST['candidate_email'] . "' AND \n referrer_email_addr = '" . $_POST['recommender_email'] . "' LIMIT 1"; $result = $mysqli->query($query); if (empty($result[0]) || is_null($result[0])) { echo '-1'; // cannot find buffer record exit; } $buffer = $result[0]; // create recommender $recommender = new Recommender($_POST['recommender_email']); $query = "SELECT COUNT(*) AS id_used FROM recommenders WHERE email_addr = '" . $_POST['recommender_email'] . "'"; $result = $mysqli->query($query); if ($result[0]['id_used'] == '0') { $recommender_data = array(); $recommender_data['firstname'] = $buffer['referrer_firstname']; $recommender_data['lastname'] = $buffer['referrer_lastname']; $recommender_data['phone_num'] = $buffer['referrer_phone_num']; $recommender_data['remarks'] = sanitize($_POST['recommender_remarks']); $recommender_data['region'] = sanitize($_POST['recommender_region']); $recommender_data['added_by'] = $_POST['id']; $recommender_data['added_on'] = $joined_on; if ($recommender->create($recommender_data)) { $industries = explode(',', $_POST['recommender_industries']); if (!empty($industries)) { if (!$recommender->add_to_industries($industries)) {
<?php assert_options(ASSERT_WARNING, 0); function fail($file, $line, $z) { echo "<div style='background-color:red; padding:3px;'>Test Failed. File='{$file}' Line='{$line}'</div>"; } function ok($msg) { echo "<div style='background-color:lime; padding:3px;'>{$msg}</div>"; } assert_options(ASSERT_CALLBACK, 'fail'); require_once '../Recommend.php'; $as = new Recommender("a", "v"); assert(strpos($as->view("itemid_example", "itemdesc_example", "itemurl_example"), "<error") == false) and ok("view test passed");
exit; } if ($_POST['action'] == 'get_testimony_from_buffer') { $employee = new Employee($_POST['id']); $branch = $employee->get_branch(); $member = 'team.' . strtolower($branch[0]['country_code']) . '@yellowelevator.com'; $query = "SELECT testimony FROM privileged_referral_buffers WHERE \n member = '" . $member . "' AND \n referee = '" . $_POST['referee'] . "' AND \n job = " . $_POST['job']; $mysqli = Database::connect(); if ($result = $mysqli->query($query)) { header('Content-type: text/xml'); echo $xml_dom->get_xml_from_array(array('testimony' => htmlspecialchars_decode(desanitize($result[0]['testimony'])))); exit; } echo "ko"; exit; } if ($_POST['action'] == 'get_recommender_name') { $recommender = new Recommender($_POST['id']); echo htmlspecialchars_decode(stripslashes(desanitize($recommender->get_name()))); exit; } if ($_POST['action'] == 'present_token') { $mysqli = Database::connect(); $query = "INSERT INTO recommender_tokens SET \n `referral` = " . $_POST['referral'] . ", \n `recommender` = '" . $_POST['id'] . "', \n `presented_on` = '" . $_POST['date'] . "', \n `token` = '" . $_POST['token'] . "'"; if (!$mysqli->execute($query)) { echo 'ko'; } else { echo 'ok'; } exit; }
} $industries = array(); foreach ($result as $row) { $industries[] = array($row['industry']); } header('Content-type: text/xml'); echo $xml_dom->get_xml_from_array(array('industries' => array('industry' => $industries))); exit; } if ($_POST['action'] == 'send_email_to_list') { $message = sanitize($_POST['message']); $subject = sanitize($_POST['subject']); $recommender_email_addrs = explode(',', $_POST['emails']); $mysqli = Database::connect(); $query = "SELECT email_addr, CONCAT(firstname, ' ', lastname) AS employee \n FROM employees WHERE id = " . $_POST['id'] . " LIMIT 1"; $result = $mysqli->query($query); $headers = 'From: ' . $result[0]['employee'] . ' <' . $result[0]['email_addr'] . '>' . "\n"; foreach ($recommender_email_addrs as $recommender_email_addr) { $recommender = new Recommender($recommender_email_addr); $message = str_replace('%recommender%', htmlspecialchars_decode(desanitize($recommender->get_name())), $message); $message = str_replace('%recommender_email_address%', $recommender->id(), $message); mail($recommender->id(), $subject, $message, $headers); // $handle = fopen('/tmp/email_to_'. $recommender->id(). '.txt', 'w'); // fwrite($handle, 'Subject: '. $subject. "\n\n"); // fwrite($handle, 'Header: '. $headers. "\n\n"); // fwrite($handle, $message); // fclose($handle); } echo '0'; exit; }
} catch (Exception $ex) { // When validation fails or other local issues } // see if we have a session if (isset($session)) { // graph api request for user data $request = new FacebookRequest($session, 'GET', '/me'); $response = $request->execute(); // get response $graphObject = $response->getGraphObject(); $fbid = $graphObject->getProperty('id'); // To Get Facebook ID $fbfullname = $graphObject->getProperty('name'); // To Get Facebook full name $femail = $graphObject->getProperty('email'); // To Get Facebook email ID $id = $fbId; $sports = array('cricket', 'football'); $electronics = array('phone', 'laptop'); $recommender = new Recommender(); $recommender->getRelevantOLXadsAction($id, array('sports' => $sports, 'electronics' => $electronics)); /* ---- Session Variables -----*/ $_SESSION['FBID'] = $fbid; $_SESSION['FULLNAME'] = $fbfullname; $_SESSION['EMAIL'] = $femail; /* ---- header location after session ----*/ header("Location: index.php"); } else { $loginUrl = $helper->getLoginUrl(); header("Location: " . $loginUrl); }
$employee = new Employee($_POST['id']); $branch_data = $employee->get_branch(); $branch = 'team.' . strtolower($branch_data[0]['country_code']) . '@yellowelevator.com'; // 2. check whether is this branch already in the recommenders' table $query = "SELECT COUNT(*) AS id_used FROM recommenders WHERE email_addr = '" . $branch . "'"; $result = $mysqli->query($query); if ($result[0]['id_used'] == '0') { // create it since not added $recommender_data = array(); $recommender_data['firstname'] = 'Yellow'; $recommender_data['lastname'] = 'Elevator'; $recommender_data['phone_num'] = '0'; $recommender_data['region'] = $branch_data[0]['country']; $recommender_data['added_by'] = $employee->id(); $recommender_data['added_on'] = $joined_on; $recommender = new Recommender($branch); if ($recommender->create($recommender_data) === false) { echo '-1'; // failed to create new recommender exit; } } // 3. make the member privileged // 3.1 check whether is the member active? // if not, reset the password to the email and set flag to send email, and make member active. // 3.2 make the recommender field to use the $branch $send_password_reset_email = false; $member_data = array(); $member_data['recommender'] = $branch; $member_data['added_by'] = $employee->id(); $member = new Member($_POST['member']);
public static function sort($user_info_arr, $spec_info_origin_arr) { //when search result is empty, then spec array is NULL and instanceKeys is 0 => NULL if ($spec_info_origin_arr == NULL) { $isK_null = array("0" => "NULL"); return array($spec_info_origin_arr, $isK_null); } //get origin spec id for the case when don't use predict interface foreach ($spec_info_origin_arr as $k => $v) { $sid[$k] = $spec_info_origin_arr[$k]['spec_id']; } $re = NULL; $s = NULL; //get a recommender, 如果接口失效,注释掉 $re = new Recommender('sina-miaoche'); //implement a statistics request, 如果接口失效,注释掉 $s = new Statistics('sina-miaoche'); //如果接口失效 if ($re == NULL || $s == NULL) { $instKeys = array_fill(0, count($spec_info_origin_arr), 'NULL'); for ($i = 0; $i < count($sid); $i++) { $indexchanged_instKeys[$sid[$i]] = $instKeys[$i]; } return array($sid, $indexchanged_instKeys); } $request = Yaf_Dispatcher::getInstance()->getRequest(); $params = $request->getQuery() + $request->getPost() + $request->getParams(); ksort($params); foreach ($params as $k => $v) { if ($v === '') { unset($params[$k]); continue; } $params[$k] = trim($v); } $sort_url = isset($params["sort"]) ? $params["sort"] : "NULL"; $asc_url = isset($params["asc"]) ? $params["asc"] : "NULL"; if ($sort_url == "NULL" && $asc_url == "NULL") { $sortRule = "price+1"; } else { if ($sort_url == "price") { if ($asc_url == "NULL") { $asc_url = "1"; } $sortRule = $sort_url . "+" . $asc_url; } else { if ($sort_url != "price") { if ($asc_url == "NULL") { $asc_url = "1"; } $sortRule = $sort_url . "+" . $asc_url; } else { $sortRule = $sort_url . "+" . $asc_url; } } } $p_url = isset($params["p"]) ? $params["p"] : "1"; $featuresForPredict = array("min_price", "weight", "brand_id", "series_id", "spec_id", "deal_record", "discount", "msrp", "name"); $da = array(); $specid_arr = array(); //save spec id used as index when sort $sorted_auto_array = array(); //save spec information after sort $sorted_auto_id = array(); //save spec id after sort $spec_info_arr = $spec_info_origin_arr; $instanceKeys = $re->getInstanceKeys(count($spec_info_arr)); //change the index of instanceKeys for case not use predict interface and return sid $indexchanged_instanceKeys = array(); for ($i = 0; $i < count($sid); $i++) { $indexchanged_instanceKeys[$sid[$i]] = $instanceKeys[$i]; } //add items foreach ($spec_info_arr as $k => $v) { // construct a recommend feature object $ri = new RecommendFeature(); $chajia = $spec_info_arr[$k]['msrp'] - $spec_info_arr[$k]['min_price']; $ri->addFeature("price_difference", (string) $chajia); $ri->addFeature("rank", "0"); $ri->addFeature("page", (string) $p_url); $ri->addFeature("brand_name", (string) $spec_info_arr[$k]['brand_name']['name']); $ri->addFeature("series_name", (string) $spec_info_arr[$k]['series_name']['name']); //add features to a spec instance //and add customInformation foreach ($v as $kk => $vv) { if (in_array($kk, $featuresForPredict)) { $ri->addFeature((string) $kk, (string) $vv); //add feature } } //add an instance with defined features into recommender array_push($specid_arr, $spec_info_arr[$k]['spec_id']); $re->addInstance((string) $instanceKeys[$k], $ri); } //construct request features //add user $ri = new RecommendFeature(); foreach ($user_info_arr as $k => $v) { if ($k == 'ip') { $ip_4 = explode('.', $v); $ip_3 = $ip_4[0] . '.' . $ip_4[1] . '.' . $ip_4[2]; $ri->addFeature((string) $k, (string) $ip_3); } else { if ($k == 'ua') { $ua = self::getBrowser($v); $ri->addFeature("Browser", (string) $ua['name']); $ri->addFeature("BrowserVersion", (string) $ua['version']); $ri->addFeature("platform", (string) $ua['platform']); } else { $ri->addFeature((string) $k, $v); } } } $ri->addFeature("sort_rule", $sortRule); $ri->addFeature("flowType", "pc_000"); $re->setReqFeature($ri); //assign action type to be predicted $actionList = [0]; //predict the instances $status = $re->predict($actionList); if ($status->getErrorCode() == ServiceCallStatus::ERR_OK || $status->getErrorCode() == ServiceCallStatus::ERR_PARTIAL_ERROR) { //fetch the result of each instance for ($i = 0; $i < count($instanceKeys); $i++) { // if status is ok // fetch the result of 'instance_1' // or throw exception if instanceKey not found try { $rr = $re->getResult($instanceKeys[$i]); //get prediction of action type 0 $rp = $rr->getPrediction(0); $status = $rp[0]; $value = $rp[1]; //save spec id as key, prediction result as value $array_save[$specid_arr[$i]] = $value; $array_instanceKeys_tosort[$specid_arr[$i]] = $instanceKeys[$i]; $array_spec_info[$specid_arr[$i]] = $spec_info_arr[$i]; } catch (Exception $e) { return array($sid, $indexchanged_instanceKeys); //如果失败,返回原spec_id } } } else { return array($sid, $indexchanged_instanceKeys); //如果失败,返回原spec_id } //stable sort $temp = array(); $i = 0; foreach ($array_save as $key => $value) { $temp[] = array($i, $key, $value); $i++; } uasort($temp, function ($a, $b) { return $a[2] == $b[2] ? $a[0] > $b[0] : ($a[2] < $b[2] ? 1 : -1); }); $array_save = array(); foreach ($temp as $val) { $array_save[$val[1]] = $val[2]; } //get the spec id after sorted. $sorted_auto_id = array_keys($array_save); //get the instanceKeys after sorted. $sorted_instanceKeys = array(); $sorted_spec_info_arr = array(); foreach ($sorted_auto_id as $k => $v) { $sorted_instanceKeys[$v] = $array_instanceKeys_tosort[$v]; $sorted_spec_info_arr[$k] = $array_spec_info[$v]; } //show foreach ($sorted_spec_info_arr as $k => $v) { // construct a display info object $d = new DisplayInfo(); //set instanceKey $d->setInstanceKey((string) $sorted_instanceKeys[$sorted_spec_info_arr[$k]['spec_id']]); $d->addCustomInfo("rank", (string) $k); // make statistics display request array_push($da, $d); } $s->statDisplay($da); //return specid return array($sorted_auto_id, $sorted_instanceKeys); }