public function run()
 {
     $c = $this->get_controller();
     if (!$c->_prep()) {
         return $c->forward('index', 'index', NULL, array('error' => 'problem loading game'));
     } elseif (!$c->view->target) {
         $params = array('error' => 'Cannot find target');
         return $c->forward('run', NULL, NULL, $params);
     }
     $pid = $c->view->player->identity();
     $gid = $c->view->target->identity();
     $params = array('group_id' => $gid, 'player' => $pid);
     $k = Ultimatum_Model_Ultplayergroupknowledge::getInstance()->findOne($params);
     if ($k->isSaved()) {
         $c->view->scan = $k;
     } else {
         $param = array('error' => 'strange, what group ' . $gid . '?');
         $c->forward('run', NULL, NULL, $param);
     }
 }
 /**
  *
  */
 public function gameviewstoreAction()
 {
     $game_id = $this->_getParam('game');
     $game = Ultimatum_Model_Ultgames::getInstance()->get($game_id);
     $player_ids = $game->player_ids();
     $player_group_ids = array_values(Ultimatum_Model_Ultgamegroups::getInstance()->player_group_ids($player_ids, TRUE));
     $scanned_group_ids = array_keys(Ultimatum_Model_Ultplayergroupknowledge::getInstance()->last_scans_for_player($player_ids, TRUE));
     $group_ids = array_merge($player_group_ids, $scanned_group_ids);
     array_unique($group_ids);
     $find_params = array('id' => array($group_ids, 'in'));
     $groups = Ultimatum_Model_Ultgroups::getInstance()->find($find_params);
     $out = array();
     foreach ($groups as $group) {
         $data = $group->toArray();
         $data['size'] = $group->size_in_game($game_id);
         $data['title'] = $group->get_title();
         $out[] = $data;
     }
     $this->_store('id', $out);
 }