// Useful to when you want to save the EziFBIncomingRequest Object in CCArray or CCDictionary. CCObject* EziFBIncomingRequest::copyWithZone(CCZone *pZone) { CCZone* pNewZone = NULL; EziFBIncomingRequest* pCopy = NULL; if(pZone && pZone->m_pCopyObject) { //in case of being called at sub class pCopy = (EziFBIncomingRequest*)(pZone->m_pCopyObject); } else { pCopy = new EziFBIncomingRequest(); pNewZone = new CCZone(pCopy); } pCopy->setReceiverID(getReceiverID()); pCopy->setSender(getSender()); pCopy->setRequestID(getRequestID()); pCopy->setMessage(getMessage()); pCopy->setConsumed(isConsumed()); pCopy->setDataDictionary(getDataDictionary()); CC_SAFE_DELETE(pNewZone); return pCopy; }
EziFBIncomingRequest* EziFBIncomingRequest::createForRequestID(std::string requestID) { EziFBIncomingRequest* fbRequest = EziFBIncomingRequest::create(); if (fbRequest) { fbRequest->setRequestID(requestID); // Build the items from CCUserDefaults std::string key = FB_INCOMING_REQUEST_DATA_; key.append(requestID); std::string dataKey = DATA_DICTIONARY_; dataKey.append(requestID); std::string statusKey = REQUEST_CONSUMED_STATUS_; statusKey.append(requestID); std::string requestData = CCUserDefault::sharedUserDefault()->getStringForKey(key.c_str()); std::string dictionaryString = CCUserDefault::sharedUserDefault()->getStringForKey(dataKey.c_str()); bool toConsumed = CCUserDefault::sharedUserDefault()->getBoolForKey(statusKey.c_str()); // Mark it as consumed or not. fbRequest->setConsumed(toConsumed); // We need to break Request Data String and Data Dictionary String std::vector< std::string > requestDataVector = EziSocialObject::tokenizeStr(requestData.c_str(), ";"); std::vector< std::string > dataDictionaryVector = EziSocialObject::tokenizeStr(dictionaryString.c_str(), ";"); if (requestData.size()==0) { // Data is not fetched from the Facebook. fbRequest->setDataFetchedFromFacebook(false); } else { fbRequest->setDataFetchedFromFacebook(true); } // Save the Request Data for (int i=0; i<requestDataVector.size(); i += 2) { fbRequest->setData(requestDataVector[i], requestDataVector[i+1]); } // Build the Data Dictionary if (dataDictionaryVector.size()%2 == 0 && dataDictionaryVector.size() > 0) // It should be of even size. { CCDictionary *dataDictionary = CCDictionary::create(); for (int j=0; j<dataDictionaryVector.size(); j += 2) { dataDictionary->setObject(CCString::create(dataDictionaryVector[j+1]), dataDictionaryVector[j]); } fbRequest->setDataDictionary(dataDictionary); } } return fbRequest; }