Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

97 Excellent

About titanium

  • Rank
    Sr. Member

Recent Profile Visitors

4,109 profile views
  1. I would love to see a more up to date implementation of Swift Mailer in ProcessWire, as I have had very good experiences with Swift Mailer standalone. Is anyone interested in developing it further?
  2. I'm only at the beginning of my tests, but this module basically works with PHP 8. Thanks for that! I have one question: there is a setting "XMailer". The help text reads: "Options: An empty string for PHPMailer default, whitespace for none, or a string to use." How is entering the "whitespace for none" supposed to work? If you enter a space, ProcessWire removes it when saving....
  3. PHP 8 was released a few months ago. I can't get WireMailSMTP to work with PHP 8. The error message is: "Error in hnsmtp::send : cannot connect to smtp-server!" With PHP 7.4, on the other hand, it works fine. Was anyone already successful with PHP 8? Thanks in advance.
  4. I have the same issue and no solution yet, but hopefully I can add some more aspects to it. I think it's more accurate to say that SeoMaestro brings the issue to the surface. The whole call stack of the issue is in my case: ErrorException: chdir(): open_basedir restriction in effect. File(/var/www/php-fcgi-scripts) is not within the allowed path(s): (/var/www/web:/var/www/tmp:/usr/share/php:/tmp) in /var/www/web/wire/core/TemplateFile.php:305 Stack trace: #0 [internal function]: Tracy\Bar->Tracy\{closure}() #1 /var/www/web/wire/core/TemplateFile.php(305): chdir() #2 /var/www/web/wire/core/Wire.php(380): ProcessWire\TemplateFile->___render() #3 /var/www/web/wire/core/WireHooks.php(823): ProcessWire\Wire->_callMethod() #4 /var/www/web/wire/core/Wire.php(450): ProcessWire\WireHooks->runHooks() #5 /var/www/web/site/modules/SeoMaestro/src/StructuredData/BreadcrumbStructuredData.php(55): ProcessWire\Wire->__call() #6 /var/www/web/site/modules/SeoMaestro/src/StructuredDataSeoData.php(55): SeoMaestro\StructuredData\BreadcrumbStructuredData->render() #7 /var/www/web/site/modules/SeoMaestro/src/SeoDataBase.php(116): SeoMaestro\StructuredDataSeoData->renderMetatags() #8 /var/www/web/site/modules/SeoMaestro/src/PageFieldValue.php(97): SeoMaestro\SeoDataBase->render() #9 [internal function]: SeoMaestro\PageFieldValue->SeoMaestro\{closure}() #10 /var/www/web/site/modules/SeoMaestro/src/PageFieldValue.php(98): array_map() #11 /var/www/web/site/modules/SeoMaestro/src/PageFieldValue.php(119): SeoMaestro\PageFieldValue->render() #12 /var/www/web/wire/core/Sanitizer.php(2929): SeoMaestro\PageFieldValue->__toString() #13 /var/www/web/wire/core/Sanitizer.php(2058): ProcessWire\Sanitizer->string() #14 /var/www/web/site/assets/cache/FileCompiler/site/modules/TracyDebugger/panels/RequestInfoPanel.php(814): ProcessWire\Sanitizer->entities1() #15 /var/www/web/site/assets/cache/FileCompiler/site/modules/TracyDebugger/panels/RequestInfoPanel.php(670): RequestInfoPanel->generateOutput() #16 /var/www/web/site/assets/cache/FileCompiler/site/modules/TracyDebugger/tracy-2.7.x/src/Tracy/Bar/Bar.php(150): RequestInfoPanel->getPanel() #17 /var/www/web/site/assets/cache/FileCompiler/site/modules/TracyDebugger/tracy-2.7.x/src/Tracy/Bar/Bar.php(122): Tracy\Bar->renderPanels() #18 /var/www/web/site/assets/cache/FileCompiler/site/modules/TracyDebugger/tracy-2.7.x/src/Tracy/Bar/Bar.php(98): Tracy\Bar->renderHtml() #19 /var/www/web/site/assets/cache/FileCompiler/site/modules/TracyDebugger/tracy-2.7.x/src/Tracy/Debugger/Debugger.php(293): Tracy\Bar->render() #20 [internal function]: Tracy\Debugger::shutdownHandler() #21 {main} As we can see in #2, SeoMaestro calls the class ProcessWire\TemplateFile (file is: /wire/core/TemplateFile.php). In line 305 we find: if($this->savedDir) chdir($this->savedDir); $this->savedDir is set in line 259: $this->savedDir = getcwd(); And that's the problem. In my case, getcwd() returns '/var/www/php-fcgi-scripts' – but just sometimes. I have not found what exactly the conditions are when this happens. Maybe SeoMaestro's maintainer @Wanze can shed some light to this.
  5. titanium


    No solution, but I guess there is definitely something broken. I'm getting error messages like the following on multiple servers of mine: Fatal error: Method SeoMaestro\PageFieldValue::__toString() must not throw an exception, caught ErrorException: chdir(): open_basedir restriction in effect. File(/var/www/php-fcgi-scripts/web366) is not within the allowed path(s) Somebody mentioned that earlier in this thread, but no solution was proposed (the error went away automagically in that case).
  6. Do you have to deal with animated image file formats that much? Google's WebP file size is on average25%-34% smaller compared to JPEG, see https://developers.google.com/speed/webp/docs/webp_study. But that doesn't mean it's always the format of choice. If GIF or APNG works better in some cases, nobody forces us to use WebP.
  7. Nice find! But I think it just cures the syndrome and to be honest, it's kind of dependency nightmare to create a generic css-file which patch problems of a certain module. The real pain is: ImageExtra does not pay attention to the new UIkit classes completely. I suggest the following: replace the $out in the method renderLinkItemField with: $out = '<div class="InputfieldImageEdit__additional--' . $name . '">' . '<label class="uk-form-label detail" for="' . $fieldName . '">' . $field->label . '</label>' . '<div class="InputfieldContent uk-form-controls" style="padding:0;">' . $field->render() . ' </div>' . '</div>'; Overall I think ImageExtra from @justb3a is still a great module, but it is somewhat dated and needs some love.
  8. This issue is solved, because the PR I submitted has now been accepted by @justb3a.
  9. I tried the latest version of this wonderful module today: I activated the module's config setting "Restrict from search results". After that, I logged in with a user who is restricted to a certain branch and tried to find some pages outside the restricted branch. I used the search box in the upper right corner of the PW admin and was surprised to see that results are found outside the restricted branch. The quoted sentence above is related to a search by Lister, I guess?
  10. Oh, I see, I wasn't precise enough. Sorry, I didn't think of that. I meant "Tracy with Force superusers into DEVELOPMENT mode activated instead of just "Tracy enabled". It's Tracy right out of the box (fresh install) with just "Force superusers into DEVELOPMENT mode" setting activated. The slowdown is more or less noticeable on all admin pages, "modules" was just a concrete example. But I do have to say I have some custom modules included in this project, so I will report back after I have done a vanilla install elsewhere and tested again. Thank you.
  11. I've written that already - with "Force superusers into DEVELOPMENT mode" activated, it takes nearly 6x times longer to load the modules page than without Tracy.
  12. Is it just me or has Tracy (current version) become very sloooow recently with the "Force superusers into DEVELOPMENT mode" setting activated? Benchmark - loading of the "modules" page: Tracy enabled: Loed 6.9 s Tracy disabled: Load 1.2 s Measured with Google Chrome Dev Tools. I don't remember noticing that before... 🤔
  13. @Zeka, thanks for the hint. I gave it a shot some minutes ago and it does not work either. I dived deeper now. /wire/core/Page.php contains a method $page->set($key, $value): case 'parent': case 'parent_id': if(is_object($value) && $value instanceof Page) { // ok $this->setParent($value); } else if($value && !$this->_parent && ($key == 'parent_id' || is_int($value) || (is_string($value) && ctype_digit("$value")))) { // store only parent ID so that parent is lazy loaded, // but only if parent hasn't already been previously loaded $this->_parent_id = (int) $value; } else if($value && (is_string($value) || is_int($value))) { $value = $this->_pages('get', $value); $this->setParent($value); } break; So there is definitely support for $page->set('parent', $id) here. Proof: the following works: $page->set('parent', 3); $page->save(); In the head of /wire/core/Page.php is a definition of $settings: /** * Page-specific settings which are either saved in pages table, or generated at runtime. * * @var array * */ protected $settings = array( 'id' => 0, 'name' => '', 'status' => 1, 'numChildren' => 0, 'sort' => -1, 'sortfield' => 'sort', 'modified_users_id' => 0, 'created_users_id' => 0, 'created' => 0, 'modified' => 0, 'published' => 0, ); I think 'parent' is missing here. I added it and tried again - now this works: $page->setAndSave('parent', 3); So I guess it's a bug.
  14. Thanks, @adrian. I always did what you described, but recently I wondered why $page->setAndSave('sort', 3); works, but $page->setAndSave('parent', 3); does not - both are native properties of the page. This seems somewhat equivalent to me, so they should behave the same, shouldn't they? But I'm not sure if I fully understand it. What I originally tried to achieve was to save the page with a maximum of performance, because I have to deal with a cron job which imports/changes thousands of pages. I guess I have to experiment with $page->save(['noFields' => true]). Any hints for optimized performance of page manipulation are welcome.
  • Create New...