Jump to content

Re-index after find


celfred
 Share

Recommended Posts

Hello,

Still in my 'teaching game'. Here's my problem : I 'find' all players with a request like

	$allPlayers = $pages->find("template=player");
	[/code
	Then, I limit to players belonging to the team of the logged in player with
	[code]
	$teamPlayers = $allPlayers->find("team=$loggedPlayer->team");
	

No problem so far. But my scoreboards rely on either :

$allPlayers->getItemKey($loggedPlayer);

or

$teamPlayers->getItemKey($loggedPlayer);

to find the logged player's position in the charts.

On the 'global' newboard with scoreboards based upon $allPlayers, everything works as expected.

BUT on my 'team' newsboard, even though I'm using $teamPlayers, the returned indexes are based upon $allPlayers. Am I clear ? In other words, I have a total of 125 players, and my logged player is 61 out of 125 regarding the number of places he freed. But in his particular team of 25 players, he sould be 15 whereas he's still 61 :(

I'd like to reset my indexes (and start back from 0), but I can't find my way out of this...

If someone has a hint to help, I'd appreciate.

I have a second part in my worry : I had a way around it by simply making another 'raw' request :

$teamPlayers = $pages->find("team=$loggedPlayer->team");

Then my team indexes were right, but I faced another issue : Reordering my wirearray according to the scoreboard I want usually worked fine (simple sort() based upon an integer field, for example, player's coins, player's karma...) and indexes were updated BUT resorting with places.count ('places' field is a pageArray) doesn't update the indexes returned by getItemKey and my logged player is always at the position he was when I first did my initial $pages->find() query :( 

So my way around found its limit and that's why I'm posting here, after struggling with this for a couple of hours...

Thanks in advance for the help. 

Link to comment
Share on other sites

4 hours ago, celfred said:

I'd like to reset my indexes (and start back from 0), but I can't find my way out of this...

You could use WireArray::getValues() to get a regular array (with a zero-based index) of your team players:

$teamPlayersArray = $teamPlayers->getValues();

 

Edit: another possibility that keeps the team players as a PageArray:

$teamPlayersReindexed = new PageArray();
$teamPlayersReindexed->import($teamPlayers);

 

  • Thanks 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...