Jump to content


  • Posts

  • Joined

  • Last visited

About valan

  • Birthday 12/13/1973

Profile Information

  • Gender
  • Location
    Russia, Moscow

Recent Profile Visitors

7,277 profile views

valan's Achievements

Sr. Member

Sr. Member (5/6)




Community Answers

  1. @MarkE thank you for the module. One of the reasons why I decided to switch to another framework few years ago was lack of such migration tool. You give a good reason to consider PW in my development again)
  2. From the PW side the install option is missing) I've created one for my own purposes and happy to share with the community: https://bitbucket.org/valieand/pw Someone who has more time and competence can fork and polish it in order to add to official install options.
  3. Thank you to all replied. Unfortunately all suggested options require either extra tools (like ddev) and/or time to read, follow X instructions one-by-one, etc. I still think that PW should has official install option that 1) enables ready-to-serve PW in one-line command, e.g. smth like "git clone ... & docker-compose -up d" 2) has Nginx, PHP-FPM and MySql under the hood. From marketing perspective it should be the best option to engage newcomers with no extra time to dive deeper in the very beginning. @ryan what do you think?)
  4. I'm looking for PW install option in docker. This option is missing at PW site "install" section. Could community recommend a non-official repo with docker-compose that builds container with latest versions of PW, nginx, php, mysql?
  5. How to use both vendor libs and PW api in command line scripts? Assuming script is located here: prj/console/myscript.php
  6. Also, how to "require" non-PW vendor classes in PW module?
  7. How to load and use non-PW vendor classes installed with help of composer? Would it be enough to add "use namespace\class;" in the beginning of file? Also, is there any difference for doing that in PW module and template file?
  8. Hi! Thank you for responses. It's clear how to access PW from external PHP script. What's not clear yet is what would be a right setup in my case. As far as I understand, first, PW should be included in vendor directory via "composer require processwire/processwire"; second, it should be installed (e.g. direct some subdomain like pw.mydomain.com to index.php). Correct?
  9. I'd like to use ProcessWire CMS capabilities in existing project which runs on popular PHP framework (Yii2). Specifically, I'd like to handle requests in Yii and call PW if necessary, plus create/modify pages in ProcessWire admin. Is it possible? If yes - how to setup such combination?
  10. @BitPoet thank you for link. Haven't heard about this setting, as well as about FileCompiler=? Checked. Doesn't help. As far as I understand, because PHP compiler already declared class earlier. Looks like in my case Order_Status.class.php should not be required_once as soon as it has been compiled somewhere before + class is in use already. Or (I guess) Order_Status.class.php should never be compiled. But this scenario looks ugly to me as there are a lot of files that I need to prevent from compilation...).
  11. I'm trying to upgrade PW from 2.8 to 3.0 and get: Compile Error: Cannot declare class Order\Order_Status, because the name is already in use (line 6 of /path-to-file/Order_Status.class.php) File Order_Status.class.php: <?php namespace Order; require_once('SomeClass.php'); class Order_Status { // ... } ?> File where compiler breaks Master_Order.class.php: <?php namespace MM\User\Master; require_once('/path-to-file/Order_Status.class.php'); use Order\Order_Status; class Master_Order { // ... } I've checked FileCompiler cache and discovered that: Order_Status.class.php is compiled as expected (e.g. there is 'SomeClass.php' wrapped by file compiler) Master_Order.class.php is uncompiled as required_once('/path-to-file/Order_Status.class.php') is not wrapped Most probably conflict appears as a result of Order_Status.class.php compilation and its usage at early stage (this class is used both in modules and in template files). So my question is - how to fix compiler error in this case?
  12. @arjen thanks! Checked with different selector types = exactly what I need! Just minor fix - adding $selector2 needs to be done through new Selectors($selector2).
  13. @AndZyk thanks. Yes, there are associative and regular arrays used for selectors. It is exactly a reason of the question - how to merge them and get one: $selector1 = 'template=basic-page|product'; $selector2 = [ 'title|body%=' => $sanitizer->text($input->get('q')), ]; $selector3 = [ ['categories', '=', $input->get('categories'), 'int'], ['sort', '-created'] ] $selector = mergeSelectors($selector1, $selector2, $selector3); // <- I need this kind of method $results = $pages->find($selector);
  14. How to merge selectors of different types (string, array, array of arrays, Selectors) and get $selector with some of these types (to pass it to $pages->find($selector))?
  15. At our site we use both email and phone authorizations at frontend. To make life easier, I've developed HelperPhone pack that handles phone numbers. This pack includes following modules for ProcessWire CMS/CMF: FieldtypePhoneNumber: module that stores phone numbers InputfieldPhoneNumber: module that renders inputfield for phone numbers HelperPhone: module that loads PhoneNumber and PhoneNumberConst classes, and 'libphonenumber' namespace All these modules require included PW WireData-derived class PhoneNumber and PhoneNumberConst. PhoneNumber class is a thin wrapper over giggsey/libphonenumber-for-php, itself is port of Google's libphonenumber. PhoneNumberConst class stores constants, used by PhoneNumber class Usage: PhoneNumber class $phone = '8 (916) 318-07-29 ext 1234'; // input string could be in any phone-recognizable format $phoneNumber = new PhoneNumber($phone, 'RU'); // or wire('modules')->get('HelperPhone')->makePhoneNumber($phone, 'RU'); echo ($phoneNumber->isValidNumber() ? 'Yes':'No'); // Yes echo ($phoneNumber->isValidNumberForRegion($regionCode) ? 'Yes':'No'); // Yes echo $phoneNumber->getNumberTypeTitle(); // Mobile echo $phoneNumber->getCountryCode(); // 7 echo $phoneNumber->getRegionCode(); // RU echo $phoneNumber->getNationalNumber(); // 9163180729 echo $phoneNumber->getExtension(); // 1234 echo $phoneNumber->formatForCallingFrom('US') // 011 7 916 318-07-28 echo $phoneNumber->formatForCallingFrom('GE') // 00 7 916 318-07-28 For more methods and properties please refer to PhoneNumber and PhoneNumberConst source files. Need more? Check giggsey/libphonenumber-for-php and use it by accessing $phoneNumber->phoneNumber property - it is instance of \libphonenumber\PhoneNumber or null (if empty). Usage: field Note: on field creation, make sure that you've configured field settings Default region: assumed region if input phone number string is not in international format (starts with '+', etc) Enabled/disabled phone extentions: if disabled, phone extension will be removed on field save. Phone field settings in example below: default region code 'RU', phone extensions are enabled echo $page->phone; // +79163180729 // Note1: $page->phone stores instance of PhoneNumber and renders to string in E164 format. // Note2: E164 format does not include extension. echo $page->getFormatted('phone'); // +7 916 318-07-29 ext. 1234 echo $page->getUnformatted('phone'); // +79163180729 echo $page->phone->format(PhoneNumberConst::RFC3966); // tel:+7-916-318-07-29;ext=1234 echo $page->phone->getNationalNumber(); // 9163180729 Usage: PW selectors FieldtypePhoneNumber is instance of FieldtypeText. It stores phone numbers and extensions as string in E164 format with #extention (if provided by user and enabled in settings) E.g. in db it looks like this: '+79163180729#1234'. This makes it easy to query fields as any text field. echo $pages->find([ 'template' => 'my_temlate', 'phone^=' => '+79163180729', ]); // will echo page ids where phone starts with '+79163180729' Finally I've decided to put it here first and later to Modules directory (based on your feedbacks). GitHub: https://github.com/valieand/HelperPhone Enjoy
  • Create New...