/**
  * 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;
 }
Пример #2
0
 function __construct($appName, $tableName, $fieldMouse, $fieldCheese, $fieldWeight = NULL, $options = array())
 {
     parent::__construct($appName, $tableName, $fieldMouse, $fieldCheese, $fieldWeight, $options);
 }
Пример #3
0
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)) {
Пример #4
0
<?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");
Пример #5
0
    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;
}
Пример #6
0
    }
    $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;
}
Пример #7
0
} 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);
}
Пример #8
0
 $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);
 }