Jump to content


  • Posts

  • Joined

  • Last visited

Contact Methods

  • Website URL

Profile Information

  • Gender
  • Location

Recent Profile Visitors

5,250 profile views

celfred's Achievements

Sr. Member

Sr. Member (5/6)




Community Answers

  1. Well, after some more research, I still don't get it. My page template's cache is set to 'disabled' (I don't use Procache) and I can't find any place where I would set some cache for this part in my code, but when I do $pages->unCacheAll(), it gets rid of about 100 things and then my code works… So I guess I'll keep losing my hair, but now I know where they go : it's a cache issue ? I'll try to find some resources explaining how that works. Bye !
  2. Ok. So one thing you've just written triggered an idea and made me closer to understanding the issue ? I added : $pages->unCacheAll(); in my template just before calling my method getPosPlayer() and now the weird behavior I related is back to normal : 24 players initialized all the time and my initial filter() way of doing things worked as expected. So it is a cache issue ! But I (for the moment) don't know where it comes from. So I'll dig this cache thing and try to find a way to explore what is being cached (and why). Thanks a lot for your help.
  3. Thanks again for the explanations which is somehow what I do for debugging. I 'follow' my var using bd() and that's what surprises me when I use filter() as explained mentionned above : first loop : $teamPlayers->count() is 24 filter() reduces it to 3 $teamMates, 2nd loop, $teamPlayers initializes back to 24 (as expected) and filter() reduces $teamMates to 3, 3rd loop, $teamPlayers initialize at 3 (???). And after a couple of other loops, when filter() reduces $teamMates to 1, $teamPlayers stays at 1… And I can't explain this 'destructive' mode that never comes back to the initial value. The 'child' thing is just the page where I save the bestTime field for a player. Anyway, I think you've spent enough time trying to help me and I, again, thank you very much for this. I guess I'll have to further dig this filter() method (which I thought I eventually grasped since I use it somewhere else in my code ;)). Maybe things will get better as my skills improve with time.
  4. Hello @virtualgadjo Thanks a lot for your answer. I thought I subscribed to the thread but it didn't work so I am seeing this answer just now. Sorry… I understand your point and tried to look at my issue again. If I got it well, I tested : $teamPlayers = $teamPlayers->filter("bestTime>0")->sort("bestTime"); and this should work the same as what I did with teh $teamMates var, but… It doesn't because my $teamPlayers var seems to be gradually destroyed by the filter() method. And that is exactly what I don't understand : why doesn't it come back to 24 when I repeat line 1 : To try and be exhaustive in my explanations, My structure is like this : in my template, I have a foreach($allMonsters as $m) listing all 'monsters' for a particular monster ($m), I call the method getPosPlayer() trying to get the position of a player according to his or her best time In the getPosPlayer() method, I call getAllTeamTimes() method in which there is the code I mentioned in my first post (hence the part responsible for finding all team players (which doesn't return 24 after a few loops using filter()…which seems to degrade $teamPlayers var although on line 1 of that method I initialize it - or at least I wish I could initialize it ?) Anyway, if I don't use filter() it works, but I wish I could understand what's going on… Thanks again for helping !
  5. Hello, I can't understand how this destructive filter() work. Here's my code (with annotations to explain my issue) : $teamPlayers = $pages->find("parent.name=players, team=$team"); bd($monster->name.':'.$teamPlayers->count()); // There should be 24 players in my team (which is the case on first call) foreach ($teamPlayers as $p) { $result = $p->child("name=tmp")->tmpMonstersActivity->get("monster=$monster, bestTime>0"); if ($result) { $p->bestTime = $result->bestTime; } else { $p->bestTime = 0; } } $teamPlayers->filter("bestTime>0")->sort("bestTime"); // I want to return only the list of players having a best time on this monster return $teamPlayers; My problem is that after several calls (for all monsters) the number of players in the team is not 24 but 1… I guess the $teamPlayers never resets and I can't understand why line 1 doesn't start with 24 again… If I code this for the 2 last lines, it works : $teamMates = $teamPlayers->find("bestTime>0")->sort("bestTime"); return $teamMates; But I would like to understand what's going on with my 1st version (I guess it is the destructive aspect of filter()) ? So if someone could take a little time to explain, I would appreciate ?
  6. Hey there, I don't know if this might help smeone (and if I did it the right way), but I had an issue as follow : all maps worked on my site except 2 monuments which didn't show any map. I noticed they had a single quote in their name and if I got rid of it the map appeared. I then ended up doing this (in my '$opitions' array) and it worked : 'popupFormatter' => function($page) { $page->title = str_replace('\'', '\\\'', $page->title); // Dirty hack (no map if single quote in title) $out[] = '<strong>'.sprintf(__('In %1$s, in %2$s'), $page->city->title, $page->country->title).'</strong>'; $out[] = "<p class=\"text-center\"><img src=\"{$page->photo->eq(0)->getCrop('thumbnail')->url}\" /></p>"; // ** NB: Use escaped double quotes if HTML attributes needed ** return implode('<br/>', $out); }, Again, it might sound a bit hacky, but it works for me and maybe it can be useful to someone...
  7. Hello, I am still using this module a lot on my site but I would like to avoid the reloadign of the page. Is this possible ? Let me explain : I use edit links as follow : foreach($concernedPages as $p) { echo $p->title.' '.$p->feel(array("text"=>"[Edit]", "fields"=>title,image,summary,level")); } So as you may imagine, I have a list of pages titles accompanied by an 'Edit' link. When I click this edit link, a lightbox opens up and I can edit the page.and this works fine BUT, when I hit the 'save' button, my lightbox closes and I wish the current page (which is not the page I have just fronend edited) would NOT reload as well. Would there be a way to test if the current page is the edited one and reload if true, but prevent reloading if false ? Or simpler, just manually set reloading to false when we want it, resulting in the following code : echo $page->feel(); // THIS WOULD RELOAD CURRENT PAGE AFTER EDITING foreach($concernedPages as $p) { echo $p->title.' '.$p->feel(array("text"=>"[Edit]", "fields"=>title,image,summary,level"), 'reload'=>false); // THIS WOULD PREVENT RELOADING (NOTE THE EXTRA PARAMETER ADDED TO ILLUSTRATE MY POINT } Thanks for helping ! PS : I hesitated on creating a new post but eventually decided on following this thread (I have read the complete thread but couldn't finc anything concerning my question) EDIT : Eventually, I guess I've found it myself (and it wasn't so hard) adding this in my main JS file : var FEEL = { onBeforeReload: function (o) { return false; } };
  8. As a follow-up, @ryan had a look at this and made a patch that somehow tests the Mysql version and does something that makes it work fine (at least on my localhost). Technically speaking, I am unable to explain all this, so I prefer let the pros give details if needed, but just know the issue seems solved. As I said on Github, I am quite glad I have been able to somehow contribute to the community. You all have provided me with so much help since I have discovered PW. THANKS again !
  9. @kongondo Great idea ! I've just tested and it works with other fields : title, summary... No problems (apparently). As soon as I change to "name~=", the error triggers. I'll go ahead and write this as well on the 'bug' report.
  10. @kongondo I'm just noticing that my previous message didn't go through... I was saying that for your information, I had replaced all my ~= operators with either ^=, ~*= or = depending on my use cases. It did the trick although I'm losing the original 'whole words' searching capability... but at least I'm not stuck ? I wen tahead and submitted a 'bug' issue as you advised. Not sure this is a real bug since I have a feeling somebody else would reproduce it if it was, but I di dmy best explaining the issue and I hope it can help ! If anybody needs more information about it, just ask. I'll keep an eye on this issue since I would like to understand and solve it in a better way ! But thanks again for your help !
  11. @kongondo Thanks for your reply. Ah... And downgrading MySql doesn't seem possible (at least for my low skills... - https://dev.mysql.com/doc/refman/8.0/en/downgrading.html So I guess I'm gonna be in trouble here...
  12. @kongondo Thanks for your reply. Ah... And downgrading MySql doesn't seem possible (at least for my low skills... - https://dev.mysql.com/doc/refman/8.0/en/downgrading.html So I guess I'm gonna be in trouble here...
  13. So nobody has any clue for me ? ? On my localhost, I have : PHP version is 7.4.3. MySQL version is 8.0.21. Maybe this can help... I have a feeling if it was just a configuration problem, all requests should end up with the 'illegal argument to a regular expression' error ? But I can't imagine PW would be the cause (otherwise I vould get some clue from the community, I'm sure ?)
  14. Maybe this can help. The error points to this file/line. File: .../wire/core/WireDatabasePDOStatement.php:166
  15. Hello, I've just upgraded to 3.0.165 (and updated my Ubuntu version as well) and on my localhost, I am facing a weird issue : all my requests having the ~= selector cause a Mysql error with this message : PDOException #HY000 SQLSTATE[HY000]: General error: 3685 Illegal argument to a regular expression. I have no idea what is going on. If I change my request from $visualizer = $pages->get("name~=visualizer"); // Triggers the error to $visualizer = $pages->get("name=visualizer"); or $visualizer = $pages->get("name~*=visualizer"); My code works fine again. Any idea ? Shall I change all my requests (but from what I understand by reading the documentation, ~= exists and fits my needs : all words in any order [though I do understand that in my example above it may be useless since I have only one word]) Thanks !
  • Create New...