teraßyte Posted February 16 Share Posted February 16 (edited) I created a new type of Commerce package for a client, and when trying to clone it an error is thrown. Here's the stacktrace: Error thrown with message "Access to undeclared static property IPS\premium\Package\Premium::$packageDatabaseColumns" Stacktrace: #6 Error in \applications\nexus\sources\Package\Package.php:264 #5 IPS\nexus\_Package:__clone in \system\Node\Controller.php:915 #4 IPS\Node\_Controller:copy in \system\Dispatcher\Controller.php:107 #3 IPS\Dispatcher\_Controller:execute in \system\Node\Controller.php:69 #2 IPS\Node\_Controller:execute in \applications\nexus\modules\admin\store\packages.php:46 #1 IPS\nexus\modules\admin\store\_packages:execute in \system\Dispatcher\Dispatcher.php:153 #0 IPS\_Dispatcher:run in \init.php:934 The issue is caused by the __clone() method in applications/nexus/sources/Package/Package.php which is missing the isset() check: foreach ( $this->_data as $k => $v ) { if ( !\in_array( $k, array( 'id', 'reviews', 'unapproved_reviews', 'hidden_reviews' ) ) ) { if ( \in_array( "p_{$k}", static::$packageDatabaseColumns ) ) { $secondaryTable[ "p_{$k}" ] = $v; } else { $primaryTable[ "p_{$k}" ] = $v; } } } Every other method properly checks if the variable is set before using it, but the __clone() method doesn't. Here's an example from the save() method where the isset() check is properly implemented: foreach ( $this->changed as $k => $v ) { if ( isset( static::$packageDatabaseColumns ) and \in_array( "p_{$k}", static::$packageDatabaseColumns ) ) { $secondaryTable[ "p_{$k}" ] = $v; unset( $this->changed[ $k ] ); } elseif ( !\in_array( "p_{$k}", array( [...] ) ) ) { unset( $this->changed[ $k ] ); } } Edited February 16 by teraßyte SeNioR- and sulervo 2 Link to comment Share on other sites More sharing options...
Marc Posted February 19 Share Posted February 19 Thank you for bringing this issue to our attention! I can confirm this should be further reviewed and I have logged an internal bug report for our development team to investigate and address as necessary, in a future maintenance release. Link to comment Share on other sites More sharing options...
Solution Marc Posted March 14 Solution Share Posted March 14 This has now been resolved in the 4.7.16 release. Please update if you are seeing this issue. If you are then still seeing the issue, please let us know. teraßyte 1 Link to comment Share on other sites More sharing options...
Recommended Posts