Exemplo n.º 1
0
 /**
  * 获取数据
  * @param $channel
  */
 private function retrieveData($channel = null)
 {
     $ret = array('channel' => $channel, 'time' => $this->timestamp);
     // Load config
     $config = new ConfigModel();
     $ret['config'] = $config->getConfig($this->lang);
     unset($config);
     // Load levels
     $level = new LevelModel();
     $levels = array();
     foreach ($level->getAllLevels() as $level) {
         $levels[$level->level] = array('min' => $level->min_exp, 'max' => $level->max_exp);
     }
     $ret['config']->levels = (object) $levels;
     unset($level, $levels);
     // Load Store Data
     $store = new StoreModel($this->lang);
     $ret['config']->store = $store->getData();
     unset($store);
     $ret['data'] = new stdClass();
     $ret['data']->state = 'ok';
     $ret['data']->call_id = isset($this->input->call_id) ? substr($this->input->call_id, 4) : microtime();
     $ret['data']->data_hash = md5(rand(100, 10000));
     Session::instance()->set('data_hash', $ret['data']->data_hash);
     $ret['data']->swf_version = isset($this->input->swf_version) ? $this->input->swf_version : 85;
     $ret['data']->map = array();
     $ret['data']->storage = array();
     $ret['data']->gifts = array();
     $ret['data']->neighbors = array();
     $ret['data']->all_neighbors = array();
     // Check User wether inited.
     $user = new UserModel();
     $userinfo = $user->getUserById($this->uid);
     if ($userinfo) {
         $diff_time = $this->timestamp - strtotime($userinfo->logintime);
         // 用户每天登陆的奖励
         if ($diff_time > self::EVERY_DAY_LOGIN_DIFF_TIME) {
             // 更新用户的钱
             $this->debugMsg("diff_time=" . $diff_time);
             $userinfo->lottery_coins = self::EVERY_DAY_LOGIN_IN_AWARD;
             $updateData = array('coins' => $userinfo->coins + self::EVERY_DAY_LOGIN_IN_AWARD, 'logintime' => date('Y-m-d H:i:s'));
             $user->updateUser($this->uid, $updateData);
             //更新用户的金币
         } else {
             $updateData = array('logintime' => date('Y-m-d H:i:s'));
             $user->updateUser($this->uid, $updateData);
             //更新用户的logintime
         }
         // Load User Maps
         $ret['data']->map = $this->getUserMaps($this->uid);
         // Load User storage
         $storage = new StorageModel();
         $ret['data']->storage = (object) $storage->getUserStoragesByUid($this->uid);
         unset($storage);
         // Load User Gifts
         $gift = new GiftsModel();
         $gifts_list = $gift->getNewGiftByUidForRetrieve($this->uid);
         $gifts_list_re = array();
         foreach ($gifts_list as $k => $v) {
             $gifts_list_re[$v->itemid] = $v->qty;
         }
         $this->debugMsg($gifts_list);
         $ret['data']->gifts = (object) $gifts_list_re;
         $this->debugMsg($gift->getLastQuery());
         unset($gift);
         // Load User Neighbors
         $ret['data']->all_neighbors[] = $this->syncUserNeighbors($this->input->fids);
         $neighbor = new NeighborsModel();
         $ret['data']->neighbors = $neighbor->getNeighborsByUid($this->uid);
         unset($neighbor);
         $ret['data']->show_tutorial = 1;
         //TODO
         $ret['data']->items = array();
         $ret['data']->coins = $userinfo->coins;
         $ret['data']->level = $userinfo->level;
         $ret['data']->experience = $userinfo->experience;
         $ret['data']->size_x = $userinfo->size_x;
         $ret['data']->size_y = $userinfo->size_x;
         $ret['data']->reward_points = $userinfo->reward_points;
         $ret['data']->op = $userinfo->op;
         $ret['data']->top_map_size = $userinfo->top_map_size;
         $ret['data']->max_work_area_size = $userinfo->max_work_area_size;
         $ret['data']->work_area_size = $userinfo->work_area_size;
         $ret['data']->lottery_coins = $userinfo->lottery_coins;
         $ret['data']->feed_data = false;
         $ret['data']->news = false;
         $ret['data']->show_gifts_page = false;
         $ret['data']->stories = array();
         $ret['data']->items_received = array();
         $ret['data']->ask_for_materials = array();
         $ret['data']->ask_for_help = array();
         $ret['data']->friend_helped = false;
         $ret['data']->gifts_received = array();
     } else {
         $data = array('uid' => $this->uid, 'email' => '', 'level' => 1, 'experience' => 0, 'coins' => self::INIT_COINS, 'op' => 0, 'reward_points' => self::INIT_RC, 'logintime' => date('Y-m-d H:i:s'), 'loginip' => '', 'status' => 1);
         $user->add($data);
         $ret['data']->show_tutorial = 0;
         //TODO
         $ret['data']->coins = self::INIT_COINS;
         $ret['data']->items = array();
         $ret['data']->level = 1;
         $ret['data']->experience = 0;
         $ret['data']->size_x = 60;
         $ret['data']->size_y = 60;
         $ret['data']->reward_points = self::INIT_RC;
         $ret['data']->op = 0;
         $ret['data']->top_map_size = 0;
         $ret['data']->max_work_area_size = 1;
         $ret['data']->work_area_size = 1;
         $ret['data']->lottery_coins = 0;
         $ret['data']->feed_data = false;
         $ret['data']->news = false;
         $ret['data']->show_gifts_page = false;
         $ret['data']->stories = array();
         $ret['data']->items_received = array();
         $ret['data']->ask_for_materials = array();
         $ret['data']->ask_for_help = array();
         $ret['data']->friend_helped = false;
         $ret['data']->gifts_received = array();
         $ret['data']->storage = (object) array(15 => '5', 16 => '5');
         // 将平台好友导入为邻居
         $ret['data']->all_neighbors[] = $this->syncUserNeighbors($this->input->fids, true);
         $neighbor = new NeighborsModel();
         $ret['data']->neighbors = $neighbor->getNeighborsByUid($this->uid);
         unset($neighbor);
         //
         $mapData = $this->initUserMapData();
         $ret['data']->map = $mapData;
     }
     unset($model);
     if ($this->debug) {
         $ret['demsg'] = $this->demsg;
     }
     return $ret;
 }
Exemplo n.º 2
0
 public function dodo()
 {
     $file = 'data/retrieve_data.retrieve.1279381815334.response';
     $content = file_get_contents($file);
     $data = unserialize($content);
     unset($content);
     echo '<pre>';
     $store = new StoreModel();
     $tmp = $store->getData();
     foreach ($tmp as &$row) {
         // 单个产品为 数字,多个产品为 数组
         $row->raw_material = trim($row->raw_material) && !is_numeric($row->raw_material) ? unserialize($row->raw_material) : '';
         $row->product = trim($row->product) && !is_numeric($row->product) ? unserialize($row->product) : '';
         $row->materials = trim($row->materials) && !is_numeric($row->materials) ? unserialize($row->materials) : '';
         $row->upgrade_levels = trim($row->upgrade_levels) && !is_numeric($row->upgrade_levels) ? unserialize($row->upgrade_levels) : '';
         foreach ($row as $key => $val) {
             if (is_string($val) && trim($val) == '' || is_null($val)) {
                 unset($row->{$key});
             }
             unset($row->status, $row->addtime);
         }
     }
     foreach ($data->config->store as $row) {
         //echo $row->id . "\t" . count((array)$row) . "\t" . count((array)$tmp[($row->id - 1)]) . "\n";
         echo $row->id;
         print_r(array_diff((array) $row, (array) $tmp[$row->id - 1]));
     }
     unset($data->config);
     //echo var_export($data, true);
     echo '</pre>';
 }