Content Type
Downloads
Release Notes
IPS4 Guides
IPS4 Developer Documentation
Invision Community Blog
Development Blog
Deprecation Tracker
Providers Directory
Projects
Release Notes v5
Invision Community 5 Bug Tracker
Forums
Events
Store
Gallery
Everything posted by teraßyte
-
Error when creating CMS record via REST API
teraßyte replied to Alexander Archon's topic in Technical Problems
It's indeed the same issue. I posted a fix here if you can't wait for IPS to fix it in the next (?) version: -
Google Authenticator has stoped working as MFA
teraßyte replied to Multi Theft Auto's topic in Technical Problems
Yes, Google is turning the service on and off constantly to alert people they'll remove it soon. That said, it's hilarious they mention using their new Charts API while it doesn't have a QR code option. 🤷♂️ -
read session data from external page
teraßyte replied to Trude Triahal's topic in Developer Connection
I'm confused. 🤨 You're adding data to $_SESSION, but then you're dumping \IPS\Member::loggedIn() which doesn't contain/read $_SESSION in the other file. What exactly are you trying to do? -
How to merge 2 Invision Self-hosted Communities
teraßyte replied to MediaDiGi's topic in Classic self-hosted technical help
The Converters application allows you to import also data from another Invision Community. Start a new conversion and select Invision Community from the What software are you converting from? dropdown. -
The original image is used to rebuild all other images if you change the max or thumbnail sizes, and also if you add or remove a watermark.
-
In the file /system/File/Amazon.php inside the function deleteContainer() this code is executed when adding a new delete task to delete the files in a bucket folder (container): /* Turn on task */ \IPS\Db::i()->update( 'core_tasks', array( 'enabled' => 1 ), array( '`key`=?', 's3_delete' ) ); The problem is that the task's key is not s3_delete but s3Delete (no space + capitalized). This causes the task to delete the S3 files to not activate correctly. The same issue is also present inside the code of the s3Delete task to disable itself in 2 different locations. Lines 44-50: if ( !( $obj instanceof \IPS\File\Amazon ) ) { /* Class is not Amazon, so just stop here and truncate the table as there's nothing we can really do now. */ \IPS\Db::i()->delete( 'core_s3_deletions' ); \IPS\Db::i()->update( 'core_tasks', array( 'enabled' => 0 ), array( '`key`=?', 's3_delete' ) ); return NULL; } Lines 96-97: /* Nothing to do, so switch off the task */ \IPS\Db::i()->update( 'core_tasks', array( 'enabled' => 0 ), array( '`key`=?', 's3_delete' ) ); Again s3_delete is being used instead of s3Delete.
-
When adding an announcement it's possible to select an ending date before the starting date. When that happens that announcement will never show. Example: Start date: 26 March End date: 7 March (instead of 7 April) When adding/editing an announcement, it should throw an error if the end date comes before the starting one.
-
Moving from Cloud to self-hosted
teraßyte replied to jimkeypro's topic in Classic self-hosted technical help
Member Map is an old modification that's been abandoned. There is a new application for it called Community Map: https://www.invisioneer.org/files/file/376-community-map/ -
Forum total stats rounded up ?
teraßyte replied to AndyF's topic in Classic self-hosted technical help
There was a paid modification from DevFuse for this, but it's not available anymore. The developer has recently gone missing. You'll need someone to make a new modification for you. 🤷♂️ EDIT: I take that back. Looks like Adriano made a new modification for it already: https://www.invisioneer.org/files/file/220-disable-friendly-number-format/ -
Moving from Cloud to self-hosted
teraßyte replied to jimkeypro's topic in Classic self-hosted technical help
What kind of image are you trying to upload? SVG? -
I believe they'll need to click the reset password link on the login screen to set a password if they never set one. Other than that, you should be good.
-
That's what I did more than a year ago already. 😋
-
You have the old license most likely, but it's possible to upgrade to a Classic License from your client area. Check this topic for more info:
-
Invision Community 5: Assign topics to moderators
teraßyte replied to Matt's topic in Invision Community Insider
I don't think normal members will be able to see that someone is assigned to the topic. I might be wrong, though. 🙄 -
Here's a link to the guide:
-
If you disable the guest group from accessing the site, nobody, not even search engines, will see the content. If you also want to control who registers and can see the content, enable the admin validation for new accounts. Or you can disable new registrations, and manually add the accounts for the club if they're only a few. Or only allow certain email domains to register if your club has a specific domain for all members.
-
New member email confirmation not sent/received? [DMARC?]
teraßyte replied to VahnPetit's topic in Technical Problems
I had the same issue recently. I received errors that Gmail rejected my emails because they did not pass DKIM/SPF. Switching from the PHP mail method to SMTP increased my score on https://www.mail-tester.com/ and the emails started being delivered again. -
The data is in the core_follow table. They need to filter by: follow_app=core follow_area=member follow_rel_id=XXX (where XXX is the member ID)
-
It should be possible, but without checking directly, it's hard to say: For example, your host might have automatically upgraded to a newer PHP version (8.0+), and your current Invision Community version is not compatible with it if it's old enough. In this case, downgrading the PHP version on the server, or upgrading to the latest version will get the site working again. Instead, if the database is broken (missing tables/data or corrupt tables), you'd need a working backup to get it working again. In this case, an upgrade won't solve anything. Are you getting a specific error when trying to login into the ACP? It could be anything without more info. 🤷♂️
-
@Clover13 To reproduce the bug, the database must have the Store revisions option enabled. Most likely the test was made on a database with it disabled. I initially thought too the error was coming from saving the record to the database, only after re-checking your last screenshot I noticed it was a revision instead. 😅
-
You upload the new files to the server in the same location as the old ones and then run the upgrade script from /admin/upgrade/ in your browser. In case the site is big, the upgrade script might ask you to run some manual MySQL queries from SSH. For more info look at the Manual Upgrade section of this guide: However, check first if your server has all the requirements to run the latest version: Quick note: the check script will give you the green light also for PHP 8.2+, but only PHP 8.0 and 8.1 are supported. 😋 If you're unsure of how to proceed yourself or just want someone to help, it's possible to hire a 3rd party provider to do the upgrade for you: https://invisioncommunity.com/third-party/providers-directory/ I'm also on that list if you want to send me a PM. EDIT: @Marc Stridgen beat me to it. 😛
-
Looking again at the screenshot, the error is being thrown when a revision for the record is added to the database, not when the record itself is added. If you're adding a new record, it shouldn't store a revision. A revision should be saved only when you edit a record. The problem is in /applications/cms/api/records.php in the _createOrUpdate() function (lines 424-443): /* Store a revision before we change any values */ if ( $item::database()->revisions ) { $revision = new \IPS\cms\Records\Revisions; $revision->database_id = $item::$customDatabaseId; $revision->record_id = $item->_id; $revision->data = $item->fieldValues( TRUE ); if ( $this->member ) { $memberId = $this->member->member_id; } else { $memberId = $item->author()->member_id; } $revision->member_id = $memberId; $revision->save(); } The IF check should also check if you're editing a record because when adding a new one there is no record ID available yet (thus the column NULL error): if ( $type == 'edit' AND $item::database()->revisions )
-
As per the title, the implementation of the extension's EditorLocations::attachmentLookup() method is inconsistent when you don't allow attachments. No matter how I implement it, or which exception I throw, it won't work for all locations. 1) \applications\core\extensions\core\EditorMedia\Attachment.php (lines 140-156): The code checks if the method exists before calling it. The code checks for 2 exceptions being thrown: \LogicException \BadMethodCallException if( method_exists( static::$loadedExtensions[$map['location_key']], 'attachmentLookup')) { try { $url = static::$loadedExtensions[$map['location_key']]->attachmentLookup($map['id1'], $map['id2'], $map['id3']); /* Test url() method to prevent BadMethodCallException from the template below - an attachment may be located within a Node class that doesn't support urls, such as CMS Blocks. */ if ($url instanceof \IPS\Content or $url instanceof \IPS\Node\Model){ $url->url(); } static::$locations[$attachId][] = $url; } catch (\LogicException $e) { } catch (\BadMethodCallException $e) { } } 2) \applications\core\modules\admin\overview\files.php (lines 209-219): The code checks if the method exists before calling it. The code checks for a single exception being thrown: \LogicException if ( isset( $loadedExtensions[ $map['location_key'] ] ) AND method_exists( $loadedExtensions[ $map['location_key'] ], 'attachmentLookup' ) ) { try { if ( $url = $loadedExtensions[ $map['location_key'] ]->attachmentLookup( $map['id1'], $map['id2'], $map['id3'] ) ) { $locations[] = $url; } } catch ( \LogicException $e ) { } } 3) \applications\core\modules\front\system\attachments.php (lines 87-100): The code doesn't check if the method exists before calling it. The code checks for a single exception being thrown: \OutOfRangeException /* Check Permission */ $exploded = explode( '_', $attachment['location_key'] ); try { $extensions = \IPS\Application::load( $exploded[0] )->extensions( 'core', 'EditorLocations' ); if ( isset( $extensions[ $exploded[1] ] ) ) { $attachmentItem = $extensions[ $exploded[1] ]->attachmentLookup( $attachment[ 'id1' ], $attachment[ 'id2' ], $attachment[ 'id3' ] ); } } catch ( \OutOfRangeException $e ) { \IPS\Output::i()->json( array( 'error' => 'no_permission' ) ); } 4) \system\Content\Statistics.php (lines 398-408): The code doesn't check if the method exists before calling it. The code checks for a single exception being thrown: \LogicException \BadMethodCallException if ( isset( static::$loadedExtensions[ $map['location_key'] ] ) ) { try { $url = static::$loadedExtensions[ $map['location_key'] ]->attachmentLookup( $map['id1'], $map['id2'], $map['id3'] ); $return[ $k ]['commentUrl'] = (string) $url->url(); } catch ( \LogicException $e ) { } catch ( \BadMethodCallException $e ){ } } === To make a summary of the implementations: All OK. It should check for the \BadMethodCallException exception. It should check if the method exists before calling it, and both \LogicException and \BadMethodCallException exceptions aren't being checked. Rather, it checks for a \OutOfRangeException exception which is never thrown according to the method's phpDoc. It should check if the method exists before calling it. I could throw a \LogicException, but as it is it would break implementation #3 anyway.
-
500 error code aside, the API should also return a separate code/message about the issue. Have you tried checking that? 2T306/4 INVALID_DATABASE 1T306/5 NO_CATEGORY 1T306/6 NO_AUTHOR 2T306/G NO_PERMISSION 1T306/D TITLE_CONTENT_REQUIRED 1S306/E UPLOAD_FIELD_NOT_OBJECT 1T306/F UPLOAD_FIELD_NO_FILES 1T306/G UPLOAD_FIELD_MULTIPLE_NOT_ALLOWED 1T306/H UPLOAD_FIELD_IMAGE_NOT_SUPPORTED 1T306/I UPLOAD_FIELD_IMAGES_ONLY 1T306/J UPLOAD_FIELD_EXTENSION_NOT_ALLOWED