Jump to content

Dennis Spohr

  • Posts

  • Joined

  • Last visited

Everything posted by Dennis Spohr

  1. Ah okay, then it makes sense! I thought that functionality was built in. If anyone needs this: I created the following to detecting the language: (The second one I got from https://stackoverflow.com/a/25749660) function LanguageDetection(array $available_languages) { $session = wire('session'); $page = wire('page'); $user = wire('user'); $config = wire('config'); $languages = wire('languages'); if ($page->id == $config->rootPageID && !$session->languageDetected) { foreach (DetectPreferedLanguages($available_languages) as $language => $prio) { $user->language = $languages->get($language); break; } $session->languageDetected = true; $session->redirect($page->localUrl($user->language)); } $session->languageDetected = true; } function DetectPreferedLanguages(array $available_languages) { $available_languages = array_flip($available_languages); $langs = []; if (!isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) return $langs; preg_match_all('~([\w-]+)(?:[^,\d]+([\d.]+))?~', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), $matches, PREG_SET_ORDER); foreach($matches as $match) { list($a, $b) = explode('-', $match[1]) + array('', ''); $value = isset($match[2]) ? (float) $match[2] : 1.0; if (isset($available_languages[$match[1]])) { $langs[$match[1]] = $value; continue; } if (isset($available_languages[$a])) $langs[$a] = $value - 0.1; } arsort($langs); return $langs; } Now on the load of every page I just called my method like this (in my case at the $config->prependTemplateFile): LanguageDetection(['de']); On my site it seems to work with ProCache as well. I guess it depends on the settings in ProCache?
  2. Hi all, I have a multi-language site with 2 languages: the default one (English) and German. But if I load my root-page, the language of my guest ($user->language) is always the default one (English). My browser (Firefox in this case) is in German - so the $user->language should be set to German in this case, right? Shouldn't I define the German language somewhere with "DE" oder "DE-de"? How does the system knows actually that this is suppose to be the German translations? I already translated the C in wire--modules--languagesupport--languagesupport-module into de_DE.UTF-8 already. Any idea why this is not working? Thanks! Dennis
  3. Sure, just posted it here: https://github.com/processwire/processwire-issues/issues/1297
  4. $pages->parents()->rebuildAll() took around 16 seconds on our dev-server. For now we switched back to pw 3.0.148 and it seems that the error is not happening anymore. Also changing the parent is not as slow anymore. So there's definetely something going on with this new pages_parents table, but we were not able to reproduce the error with $page->find() on purpose. It randomly happened and for sure the pages_parents table was not correct anymore. But somehow fixed after seconds or minutes.
  5. I am running PW 3.0.165, the latest master version. Unfortunately I can’t tell if it was faster before migrating to this version. Sometimes it was kind of slow, but I didn’t look into this in detail before. Today we figured out another problem with parents. When using $page->find() sometimes it doesn’t find an existing page (with $pages->find() it’s there). In this case it has to be something with the has_parent selector. After at least 20 minutes of testing and debugging, it was finally working without us changing anything. Probably the pages_parent table is not working correctly or is created/updated too late. But this doesn’t fix the first issue regarding the performance. Something strange is going on.
  6. Changing the parent is slow in general. In my case $trash is my own custom page, not the trash of ProcessWire. I have other places in my code where I change the parent not using my own trash and there I have the same behaviour.
  7. Hi all, when I update the parent of an existing page, this process takes extremely long (20-30 seconds). $page->of(false); $page->parent = $trash; $page->save(); Sometimes these tested pages doesn't even have a single child-page. Our database is quite large (but with a very fast server): 900.000 entries in the pages table. 90.000 entries in the pages_parents table. Is there any other way to change the parent or does anybody now where this could come from? We have multiple places where this is happening now. Thanks! Dennis
  8. I have cleared the entire browser cache - but still the same problem.
  9. Hi guys, yesterday I did an upgrade from ProcessWire 3.0.148 to 3.0.165. On the front-end part everything went fine. But on the Backend the CKEditor is just not loading anymore. In the console I can see the following errors: Any idea where this comes from? Thanks! Dennis
  10. I have to reopen this thread, because I still have these problems. I am absolutely sure that my user-name is valid and unique. Still, if using $users->add($name) I'm getting a NullPage back, but just sometimes. I couldn't find a way to reproduce this error on our test-server. Our database is huge, we have some traffic and probably sometimes users are created nearly simultaneously (but definitely with unique names) Currently we have more than 150k user-accounts in the system. Do you think that could be a problem? The solution of @Noel Boss is interesting. How will the user-name be generated in this case? Any help is really appreciated! Thank you!
  11. Hi all, I have a custom login-page for my vistors and I want to implement a 2-factor authentication. Looks like the TfaTotp-Module already has this functionality for the login-form of ProcessWire. Can I use this module via the API for my custom login-form? How can I implement it? I couldn't find any documentation. Thanks, Dennis
  12. I created a tool where users can design their individual landingpage. Lately users want to implement their own html- and/or javascript code, for example for loading an iframe or custom tracking codes. If I give them an textarea, where they can paste their custom html or javascript code - is this secure? I would use $sanitizer->text to prevent sql injections. But is this a safe way? I don't (really) know which code they would save (and load). I would like to get an idea and your thoughts. Thanks and greetings from Malta, Dennis
  13. Yes, but it does not work if you have child-pages with a SelectOptions-Field. Thank you very much for all your help and support! I will check with the latest developer-version.
  14. Probably it got fixed already? Because I tested it with ProcessWire 3.0.98.
  15. I just created an issue for this: https://github.com/processwire/processwire-issues/issues/711
  16. Finally I was able to reproduce the problem on the clean install of ProcessWire. It seems to be a problem with a SelectOptions-FIeld, when no value is set. I did the following on the clean install: Create a new SelectOptions-Field with some values in it. Assign the field to a template Create a new Page of this template using the API: $mypage = new Page(); $mypage->template = 'basic-page'; $mypage->parent = $pages->get(1); $mypage->title = 'TEST'; $mypage->save(); print ($mypage->id); Copy the ID of the new page and do the following: $mypage = $pages->get(1042); $pages->clone($mypage); While doing this I get this exception: selectoptions is the name of my SelectOptions-Field. Settings $page->selectoptions = ''; seems to create the same problem (no value set). I don't think this should be the expected behavior?
  17. I was able to solve one of the problems. For a field of type Select Options I was setting a value which was not existing. When I'm doing the page-clone now, I don't get any error anymore. But still, the repeater-fields don't get copied.
  18. There is no page with status = 131073. I'm trying to clone the page in my template.
  19. I removed my ready.php and removed all modules in my site/modules folder. But nothing changed. Is it possible that something is corrupted? Because of this part in the error message:
  20. I have another weird behavior on this. If I use $pages->clone($mypage) I get this error: Looks like somehow something is corrupt. But I don't have any idea why and how to fix it.
  21. I just tried it. On a clean install (3.0.98) it works like it should be. My other installation has the same version. I don't have any idea why it doesn't work there.
  22. Thanks, I will look into this thead - however I don't understand why it's working on the ProcessWire Admin. It seems that it should work and I'm doing something different than the admin. Thanks for mentioning the child()-function ?
  23. Hi all, I have a weird behavior. I'm using the following code to clone one of my pages: $block = $salespage->children("id={$duplicate_id},include=all")->first(); $block->of(false); if ($block && $block->id) { $newone = $pages->clone($block); } Problem: the page itself gets cloned, but on of the fields (a repeater) does not get cloned. It's empty. If I do the same in the ProcessWire-Admin via the PageTree, it works fine. The repeater-field gets cloned there as well. What could be the problem? Thanks, Dennis
  • Create New...