コード例 #1
0
    /// <summery>
    /// get all notification which this user has received.
    ///
    /// <typeparam name=""></typeparam> mixed userID
    /// <typeparam name=""></typeparam> mixed limit
    /// <returns></returns> array
    /// </summery>
    function getReceivedMessages(userID, type = null, isNew = 1, limit = 5)
    {
        global db;

        whereCond = "";
        if (type == null)
        {
            whereCond = sprintf(" WHERE act.userID=%d AND act.isNew=%d AND act.objectType=" % s " ORDER BY act.createdDate DESC ", userID, isNew, this.objectType);
        }
        else
        {
            whereCond = sprintf(" WHERE act.userID=%d AND act.isNew=%d AND act.activityType=" % s " AND act.objectType=" % s " ORDER BY act.createdDate DESC ", userID, isNew, type, this.objectType);
        }

        if (is_numeric(limit) && limit > 0)
        {
            whereCond += " LIMIT " + limit;
        }

        query = sprintf("
                SELECT act.objectID AS senderID, act.activityType, act.createdDate, act.actionID, feedback.comment, user.firstName, user.lastName   
                    FROM %s AS act 
                    LEFT JOIN %s AS feedback ON feedback.feedbackID = act.actionID AND act.activityType=" % s " 
                    LEFT JOIN %s AS USER ON USER.userID = act.objectID
                %s 
            ", TABLE_MAIN_ACTIVITIES, TABLE_FEEDBACK, TradeNotification.ACTION_TYPE_FEEDBACK, TABLE_USERS, whereCond);

        messageList    = db.getResultsArray(query);
        newMessageList = [];
コード例 #2
0
    /// <summery>
    /// Create Wallet Address
    ///
    /// <typeparam name=""></typeparam> Int userID
    /// <returns></returns> array|bool
    /// </summery>
    public static function createWallet(userID, userEmail)
    {
        global db;

        password = generate_random_string(10);

        ch = curl_init();
        curl_setopt(ch, CURLOPT_URL, "https://blockchain.info/api/v2/create_wallet?api_code=" + BLOCKCHAIN_INFO_API_KEY + "&password="******"There was an error to create bitcoin account: " + return , "error");

            return(false);
        }

        data = ["userID" => userID, "bitcoin_guid" => returnData.guid, "bitcoin_address" => returnData.address, "bitcoin_link" => returnData.link, "bitcoin_password" => encrypt(password)];
コード例 #3
0
    /// <summery>
    /// Add pages
    /// 
    /// <typeparam name=""></typeparam> Array data
    /// <returns></returns> int
    /// </summery>
    public function addPage(userID, data){
        global db;

        if(!is_numeric(userID) || data["pageName"] == "")
            return; // failed

        //Create Links
        links = [];
コード例 #4
0
    /// <summery>
    /// Remove User Token
    ///
    /// <typeparam name=""></typeparam> Int    userID
    /// <typeparam name=""></typeparam> String tokenType = password, ...
    /// </summery>
    public static function removeUserToken(userID, tokenType)
    {
        global db;

        query = db.prepare("DELETE FROM " + TABLE_USERS_TOKEN + " WHERE userID=%s AND tokenType=%s", userID, tokenType);
        db.query(query);

        return;
    }
コード例 #5
0
    /// <summery>
    /// <typeparam name=""></typeparam>      userID
    /// <typeparam name=""></typeparam>      tokenType
    /// <typeparam name=""></typeparam> null token
    /// <returns></returns> null|string
    /// </summery>
    public static function createNewToken(userID, tokenType, token = null)
    {
        global db;

        info = User.getUserData(userID);

        if (!token)
        {
            token = md5(mt_rand(0, 99999) + time() + mt_rand(0, 99999) + info["email"] + mt_rand(0, 99999));
        }

        newID = db.insertFromArray(TABLE_USERS_TOKEN, ["userID" => userID, "userToken" => token, "tokenDate" => time(), "tokenType" => tokenType]);
コード例 #6
0
 /// <summery>
 /// <typeparam name="userID"></typeparam>     
 /// <typeparam name="limit">int</typeparam>  
 /// <returns>Indexed</returns> 
 /// </summery>
 public static function getActivities(userID, limit = 15){    
     global db;
     
     query = db.prepare("SELECT a.*,p.*, pc.content as comment_content FROM " + TABLE_MAIN_ACTIVITIES + " AS a "+
                 "INNER JOIN " + TABLE_FRIENDS + " as f ON a.userID=f.userFriendID  AND f.userID=%d AND f.status=1 "+
                 "LEFT JOIN " + TABLE_POSTS + " as p ON a.objectID=p.postID "+
                 "LEFT JOIN " + TABLE_POSTS_COMMENTS + " as pc ON a.activityType="comment" AND pc.commentID=a.actionID "+
                 "WHERE a.userID != %d AND p.poster != %d ORDER BY a.createdDate desc LIMIT %d", userID, userID, userID, limit);
     
     rows = db.getResultsArray(query);
     
     return rows;
 }
コード例 #7
0
    /// <summery>
    /// Save User Basic Information
    ///
    /// <typeparam name=""></typeparam> Int userID
    /// <typeparam name=""></typeparam> Array data
    /// <returns></returns> bool|null
    /// </summery>
    public static function saveUserBasicInfo(userID, data)
    {
        global db;

        if (data["birthdate_month"] == "" || data["birthdate_year"] == "" || data["birthdate_day"] == "")
        {
            birthdate = "0000-00-00";
        }
        else
        {
            birthdate = date("Y-m-d", strtotime(data["birthdate_year"] + "-" + data["birthdate_month"] + "-" + data["birthdate_day"]));
        }

        rs = db.updateFromArray(TABLE_USERS, ["firstName" => trim(data["firstName"]), "lastName" => trim(data["lastName"]), "gender" => data["gender"], "gender_visibility" => data["gender_visibility"], "birthdate" => birthdate, "birthdate_visibility" => data["birthdate_visibility"], "relationship_status" => data["relationship_status"], "relationship_status_visibility" => data["relationship_status_visibility"], "religion" => data["religion"], "religion_visibility" => data["religion_visibility"], "political_views" => data["political_views"], "political_views_visibility" => data["political_views_visibility"], "birthplace" => data["birthplace"], "birthplace_visibility" => data["birthplace_visibility"], "current_city" => data["current_city"], "current_city_visibility" => data["current_city_visibility"], "timezone" => data["timezone"], "timezone_visibility" => 0         //data["timezone_visibility"]
コード例 #8
0
    const STATUS_SOLD     = 2;  // Has been sold

    /// <summery>
    /// Check if the user has credits or BTC to list the product
    ///
    /// <typeparam name=""></typeparam> mixed userID
    /// <typeparam name=""></typeparam> mixed paymentType
    /// <returns></returns> boolean
    /// </summery>
    public function hasMoneyToListProduct(userID, paymentType = ShopProduct.LIST_FEE_PAYMENT_TYPE_BTC)
    {
        if (paymentType == ShopProduct.LIST_FEE_PAYMENT_TYPE_CREDIT)
        {
            tradeUserIns = new TradeUser();
            return(tradeUserIns.hasCredits(userID, SHOP_PRODUCT_LISTING_FEE_IN_CREDIT));
        }
        else if (paymentType == ShopProduct.LIST_FEE_PAYMENT_TYPE_BTC)
        {
            balance = Bitcoin.getUserWalletBalance(userID);
            return(balance >= SHOP_PRODUCT_LISTING_FEE_IN_BTC);
        }
        else
        {
            return(false);
        }
    }
コード例 #9
0
    /// <summery>
    /// get Number of new notification
    ///
    /// <typeparam name=""></typeparam> mixed userID
    /// <typeparam name=""></typeparam>       string type
    /// <returns></returns> one
    /// </summery>
    function getNumOfNewMessages(userID, type = null, isNew = 1)
    {
        global db;

        if (type == null)
        {
            query = db.prepare("SELECT count(*) FROM " + TABLE_MAIN_ACTIVITIES + " WHERE userID=%d AND isNew=%d AND objectType=%s", userID, isNew, this.objectType);
        }
        else
        {
            query = db.prepare("SELECT count(*) FROM " + TABLE_MAIN_ACTIVITIES + " WHERE userID=%d AND isNew=%d AND activityType=%s AND objectType=%s", userID, isNew, type, this.objectType);
        }

        num = db.getVar(query);

        return(num);
    }
コード例 #10
0
 /// <summery>
 /// Check if you have money or credits
 ///
 /// <typeparam name=""></typeparam> mixed userID
 /// <typeparam name=""></typeparam> mixed paymentType
 /// <returns></returns> bool
 /// </summery>
 public function hasMoneyToListTradeItem(userID, paymentType = TradeItem.LIST_FEE_PAYMENT_TYPE_BTC)
 {
     if (paymentType == TradeItem.LIST_FEE_PAYMENT_TYPE_CREDIT)
     {
         tradeUserIns = new TradeUser();
         return(tradeUserIns.hasCredits(userID, TRADE_ITEM_LISTING_FEE_IN_CREDIT));
     }
     else if (paymentType == TradeItem.LIST_FEE_PAYMENT_TYPE_BTC)
     {
         balance = Bitcoin.getUserWalletBalance(userID);
         return(balance >= TRADE_ITEM_LISTING_FEE_IN_BTC);
     }
     else
     {
         return(false);
     }
 }
コード例 #11
0
 public static function addForumActivity(userID, objectID, objectType, activityType, actionID = 0)
 {
     global db;
     
     activityID = db.insertFromArray(TABLE_FORUM_ACTIVITIES, array(
         "userID" => userID,
         "objectID" => objectID,
         "objectType" => objectType,
         "activityType" => activityType,            
         "createdDate" => date("Y-m-d H:i:s"),            
         "isNew" => 1,            
         "activityStatus" => 1,            
         "actionID" => actionID           
     ));
     
     return activityID;
     
 }
コード例 #12
0
    /// <summery>
    /// It will create Notification on Activities table
    ///
    /// <typeparam name=""></typeparam> integer userID
    /// <typeparam name=""></typeparam> integer senderID   (the man who creates this alert)
    /// <typeparam name=""></typeparam> string  actionType : one of action types (const defined for this class)
    /// <typeparam name=""></typeparam> integer actionID   : related trade offer,  feedback ID
    /// </summery>
    function createNotification(userID, senderID, actionType, actionID)
    {
        //Check if this user will get this notification. (it will be set by Notification setting page)
        tradeUserIns = new TradeUser();
        userData     = tradeUserIns.getUserByID(userID);

        flagEnabled = 0; // user checked that he didn"t want to have this notification

        switch (actionType)
        {
        case Activity.ACTION_TYPE_OFFER_ACCEPTED:
            notificationType = Activity.NOTIFICATION_TYPE_OFFER_ACCEPTED;
            flagEnabled      = userData["optOfferAccepted"];
            break;

        case Activity.ACTION_TYPE_OFFER_RECEIVED:
            notificationType = Activity.NOTIFICATION_TYPE_OFFER_RECEIVED;
            flagEnabled      = userData["optOfferReceived"];
            break;

        case Activity.ACTION_TYPE_OFFER_DECLINED:
            notificationType = Activity.NOTIFICATION_TYPE_OFFER_DECLINED;
            flagEnabled      = userData["optOfferDeclined"];
            break;

        case Activity.ACTION_TYPE_FEEDBACK:
            notificationType = Activity.NOTIFICATION_TYPE_OFFER_FEEDBACK;
            flagEnabled      = userData["optFeedbackReceived"];
            break;
        }

        if (flagEnabled == 1)
        {
            //Create Notification.
            activityIns = new Activity();
            activityId  = activityIns.addActivity(userID, senderID, this.objectType, actionType, actionID);

            activityIns.addNotification(userID, activityId, notificationType);
        }
    }
コード例 #13
0
    /// <summery>
    /// <typeparam name=""></typeparam> userID
    /// <typeparam name=""></typeparam> type
    /// <returns></returns> bool
    /// </summery>
    public static function checkUserDailyLimit(userID, type)
    {
        global db;

        date = date("Y-m-d");

        //Delete Old Data
        db.query(db.prepare("DELETE FROM " + TABLE_USERS_DAILY_ACTIVITIES + " WHERE userID=%d AND `date` < %s", userID, date));

        if (check_user_acl(USER_ACL_MODERATOR, userID) || check_user_acl(USER_ACL_ADMINISTRATOR, userID))
        {
            return(true);
        }

        //Get Activities
        query = db.prepare("SELECT * FROM " + TABLE_USERS_DAILY_ACTIVITIES + " WHERE userID=%d AND `date` = %s", userID, date);
        row   = db.getRow(query);

        if (!row)
        {
            return(true);
        }

        switch (type)
        {
        case "posts":
            return(row["posts"] < USER_DAILY_LIMIT_POSTS);

        case "likes":
            return(row["likes"] < USER_DAILY_LIMIT_LIKES);

        case "comments":
            return(row["comments"] < USER_DAILY_LIMIT_COMMENTS);

        case "friendRequests":
            return(row["friendRequests"] < USER_DAILY_LIMIT_FRIEND_REQUESTS);
        }

        return(false);
    }
コード例 #14
0
    /// <summery>
    /// It will create Notification on Activities table
    ///
    /// <typeparam name=""></typeparam> integer userID
    /// <typeparam name=""></typeparam> integer senderID   (the man who creates this alert)
    /// <typeparam name=""></typeparam> string  actionType : one of action types (const defined for this class)
    /// <typeparam name=""></typeparam> integer actionID   : related shop order ID
    /// </summery>
    function createNotification(userID, senderID, actionType, actionID)
    {
        //Check if this user will get this notification. (it will be set by Notification setting page)
        userIns  = new TradeUser();
        userData = userIns.getUserByID(userID);

        flagEnabled = 0; // user checked that he didn"t want to have this notification

        switch (actionType)
        {
        case Activity.ACTION_TYPE_PRODUCT_SOLD:
            flagEnabled = userData["optProductSoldOnShop"];
            break;
        }

        if (flagEnabled == 1)
        {
            //Create Notification.
            activityIns = new Activity();
            activityId  = activityIns.addActivity(userID, senderID, this.objectType, actionType, actionID);

            activityIns.addNotification(userID, activityId, Activity.NOTIFICATION_TYPE_PRODUCT_SOLD);
        }
    }
コード例 #15
0
 /// <summery>
 /// Pay to list products
 ///
 /// <typeparam name=""></typeparam> mixed userID
 /// <typeparam name=""></typeparam> mixed paymentType
 /// <returns></returns> bool|int|null|string|void
 /// </summery>
 public function payListingFee(userID, prodID, paymentType = ShopProduct.LIST_FEE_PAYMENT_TYPE_BTC)
コード例 #16
0
    /// <summery>
    /// Create New Album
    ///
    /// <typeparam name=""></typeparam> Int    userID
    /// <typeparam name=""></typeparam> String title
    /// <returns></returns> bool|int|null|string
    /// </summery>
    public static function createAlbum(userID, title, visibility)
    {
        global db;

        now   = date("Y-m-d H:i:s");
        newId = db.insertFromArray(TABLE_ALBUMS, ["owner" => userID, "name" => title, "created_date" => now, "visibility" => visibility]);
コード例 #17
0
 public static function addNotification(userID, activityID, notificationType, isNew = 1)
 {
     global db;
     
     db.insertFromArray(TABLE_MAIN_NOTIFICATIONS, array("userID" => userID, "activityID" => activityID, "notificationType" => notificationType, "isNew" => isNew, "createdDate" => time())); 
 }    
コード例 #18
0
 /// <summery>
 /// Add Trade user
 ///
 /// <typeparam name=""></typeparam> integer userID
 /// <typeparam name=""></typeparam> array   data
 /// <returns></returns> int|null|string|void
 /// </summery>
 public function addUser(userID, data = [])
コード例 #19
0
 /// <summery>
 /// Make payment for listing trade items.
 ///
 /// <typeparam name=""></typeparam> mixed userID
 /// <typeparam name=""></typeparam> mixed itemID
 /// <typeparam name=""></typeparam> mixed paymentType
 /// <returns></returns> bool|int|null|string|void
 /// </summery>
 public function payListingFee(userID, itemID, paymentType = TradeItem.LIST_FEE_PAYMENT_TYPE_BTC)