Jump to content

teraßyte

Clients
  • Posts

    33,395
  • Joined

  • Days Won

    47

 Content Type 

Downloads

Release Notes

IPS4 Guides

IPS4 Developer Documentation

Invision Community Blog

Development Blog

Deprecation Tracker

Providers Directory

Forums

Events

Store

Gallery

Posts posted by teraßyte

  1. 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 ] );
    			}
    		}
  2. 3 hours ago, Phil h said:

    Does v4.3.3 support php 8.1  ?

    As mentioned in the post above, it's not supported.

    If you want to upgrade from that version, you need to perform a manual upgrade and change the PHP version right before (or after) the new files are uploaded:

    If you have 3rd party modifications installed, you might also need some extra steps (like disabling them before the upgrade, searching for a new version compatible with PHP 8, etc).

     

    If you're uncomfortable doing it yourself, there's the option of hiring a 3rd party Provider to do it for you, as Marc mentioned.

  3. 2 hours ago, Owdy said:

    Weird, site works for guest. If try to login, "oops Something went wrong. Please try again.

    edit, actually, it doesnt. If open thread, ooopps

    Do you have some kind of caching enabled (for example: Cloudflare)? If so guests might still be getting the cached page (which bypasses the server), while logged-in members get the disk full error since they hit the server.

  4. That version won't be required anytime soon for now. It will be with v5 most likely.

    Anyway, if your host refuses to upgrade MySQL from a version that has already reached its EOL date (31 Oct 2020, extended support ended on 31 Oct 2023), it's probably time to consider a new hosting for the future before your next renewal date. 🙄

  5. 2 minutes ago, Safety1st said:

    This site located on IPS Cloud spams people with unwanted emails. They have 14 hours left until the incident will be reported.

    What kind of emails exactly? I haven't received anything in the past few days at least. 🤨

  6. There isn't any need to make a copy of the database. Unless you made one and then cleaned infected tables/content from there, too?

    The best option is to re-upload a fresh set of files, and then compare the folder to check if there are any extra folders/files. Comparing the database tables to a fresh installation helps find the extra ones there, too. You also need to account for 3rd party applications and plugins, though.

     

    If you'd like, I offer a cleanup service. You can check my site or send me a PM.

  7. Do note also that the message doesn't disappear automatically even if you fix the issue. If you disabled the function after you saw the message in ACP, you need to close it yourself.

    Also, if you want to double-check that the functions are indeed disabled, there is a phpinfo link on the support page. See what it says there rather than testing with an external phpino().

  8. Yes, there are not such big tables based on your screenshot. You could also order them by their size by clicking on the table's header. In any case, it seems like your hosting is calculating wrongly the database size.

    Unless you have more databases on your account other than the forum one?

     

    P.S.: You might also want to switch your board_url to use HTTPS:

     

  9. 31 minutes ago, Ryan Ashbrook said:

    This should be fixed now.

    While the link is now visible, the suggested robots.txt file in the guide is outdated.

    For example:

    • Profiles are not disallowed anymore
    • The tags page is not included
    • The cookie page is not included
    • The embed controller is not included
×
×
  • Create New...