Error: Programmer used an unknown userfield agreed

If you are runnig Joomla 3.x and Virtuemart 3.x please post to this forum your questions or support tickets about One Page Checkout

Error: Programmer used an unknown userfield agreed

Postby caniza@.....com » Thu Nov 12, 2015 3:32 pm

this error appears after updated VM 3.0.11.4

Error: Programmer used an unknown userfield agreed

Does anyone know what can it be?

Joomla 3.4.5
VM 3.0.11.4
OPC 2.0.301.231015

Thanks!
caniza@.....com
 
Posts: 4
Joined: Thu Nov 12, 2015 3:30 pm

Re: Error: Programmer used an unknown userfield agreed

Postby admin » Thu Nov 12, 2015 6:30 pm

hello, this is a known bug on vm3.0.11 dev version.

pls update your VM to the latest build at this moment which fixes this problem:

http://www.rupostel.com/svn3/com_virtuemart.3.0.12.zip
http://www.rupostel.com/svn3/com_virtue ... xt_aio.zip

it's a version from this monday (9.11.2015)

best regards, stan
admin
Site Admin
 
Posts: 2708
Joined: Wed Jan 06, 2010 11:43 pm

Re: Error: Programmer used an unknown userfield agreed

Postby joomla@.....de » Tue Nov 17, 2015 6:11 pm

Have install your download version 3.0.12 vm+aio. The error is still displayed.

VM 3.0.12
OPC 2.0.302
J! 3.4.5
joomla@.....de
 
Posts: 40
Joined: Thu Jan 31, 2013 8:02 pm

Re: Error: Programmer used an unknown userfield agreed

Postby joomla@.....de » Wed Nov 18, 2015 9:42 am

Why you say it is a bug in vm?
There is a method getIfRequired() in administrator/components/com_virtuemart/models/userfields.php. This method generate this error in case of can't find "agreed"-userfield. VM itself dont call this function never, but opc in components/com_onepage/helpers/tos.php and components/com_onepage/overrides/cart_override.php. I understand the reasons of use not complete, but i know "agreed" is not a normal userfield and has not a real existing record in table virtuemart_userfields. The db-query search for it must generate an error.
joomla@.....de
 
Posts: 40
Joined: Thu Jan 31, 2013 8:02 pm

Re: Error: Programmer used an unknown userfield agreed

Postby admin » Wed Nov 18, 2015 1:19 pm

hello, my vm3.0.12 says this:

Code: Select all
   function getIfRequired($fieldname) {

      $q = 'SELECT `required` FROM #__virtuemart_userfields WHERE `name` = "'.$fieldname.'" ';
      $db = JFactory::getDBO();
      $db->setQuery($q);
      $result = $db->loadResult();
      if(!isset($result)){
         vmError('userfields getIfRequired '.$q,'Programmer used an unknown userfield '.$fieldname);
      }

      return $result;

   }




Code: Select all
i think a better solution would be for this case:

   function getIfRequired($fieldname) {

      $q = 'SELECT `required` FROM #__virtuemart_userfields WHERE `name` = "'.$fieldname.'" ';
      $db = JFactory::getDBO();
      $db->setQuery($q);
      $result = $db->loadResult();
      if(!isset($result)){
         return false;
      }

      return $result;

   }




i had included the function in opc override now so it does not give the VM error if tos is not marked as enabled or is not included in the core fields.

the fix in future 303 opc version includes:
1. add fucntion to
\components\com_onepage\helpers\userfields.php
Code: Select all
public static function getIfRequired($fieldname) {

      
      $db = JFactory::getDBO();
      $q = "SELECT `required` FROM #__virtuemart_userfields WHERE `name` = '".$db->escape($fieldname)."' ";
      $db->setQuery($q);
      $result = $db->loadResult();
      if(empty($result)){
         return false;
      }

      return true;

   }


2. update:
\components\com_onepage\helpers\tos.php
Code: Select all
require_once(JPATH_ROOT.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_onepage'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'userfields.php');
         if(OPCUserFields::getIfRequired('agreed'))
         {
            if(!class_exists('VmHtml'))require(JPATH_VM_ADMINISTRATOR.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'html.php');
            $tos_required = true;
         }
         else $tos_required = false;



3. \components\com_onepage\overrides\cart_override.php
Code: Select all
require_once(JPATH_ROOT.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_onepage'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'userfields.php');
         $required = OPCUserFields::getIfRequired('agreed');
         if(!empty($required)){


best regards, stan
admin
Site Admin
 
Posts: 2708
Joined: Wed Jan 06, 2010 11:43 pm

Re: Error: Programmer used an unknown userfield agreed

Postby joomla@.....de » Wed Nov 18, 2015 2:29 pm

thx Stan,

btw: you get next days a new customer for opc "bedia".
joomla@.....de
 
Posts: 40
Joined: Thu Jan 31, 2013 8:02 pm

Re: Error: Programmer used an unknown userfield agreed

Postby admin » Wed Nov 18, 2015 8:41 pm

thank you, best regards, stan
admin
Site Admin
 
Posts: 2708
Joined: Wed Jan 06, 2010 11:43 pm


Return to One Page Checkout for Virtuemart 3 on Joomla 3.x