Jump to content
Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble

NickTheGreek

Administrators
  • Content Count

    452
  • Joined

  • Last visited

  • Days Won

    76
  • Feedback

    N/A

Posts posted by NickTheGreek


  1. we decided to automate the whole process so we did this:

    CHECK
    =====
    find /opt/cpanel/* -name zzzzzzz-pecl.ini -exec grep -Hn  "imag" {} \;

    find /opt/cpanel/* -name imagick.ini -exec grep -Hn  "imag" {} \;

    FIX
    =====
    find /opt/cpanel/* -name imagick.ini -exec sed -i 's/extension=imagick.so/;extension=imagick.so/' {} \;


    /scripts/restartsrv_httpd
    /scripts/restartsrv_apache_php_fpm


  2. I found a nice clean guide for imagick PHP through SSH here:

     

    https://help.bigscoots.com/en/articles/730428-cpanel-easyapache-4-installing-imagemagick-and-imagick-php-extension

     

    cPanel EasyApache 4 Installing Imagemagick and imagick PHP extension

    This is a quick guide on how to install both the imagick PHP extension as well as the application via SSH.
     
    Written by Justin Catello
    Updated over a week ago

    This is fairly simple, just copy and paste the following into SSH.

    1. Installing imagemagick:

    yum -y install ImageMagick-devel ImageMagick-c++-devel ImageMagick-perl

    2. Installing the imagemagick PHP extensions for all installed PHP versions.

    for phpver in $(whmapi1 php_get_installed_versions|grep -oE '\bea-php.*') ; do
    printf "\autodetect" | /opt/cpanel/$phpver/root/usr/bin/pecl install imagick
    echo 'extension=imagick.so' >> /opt/cpanel/$phpver/root/etc/php.d/imagick.ini
    done
    /scripts/restartsrv_httpd
    /scripts/restartsrv_apache_php_fpm

    3.  Test to make sure imagemagick is installed:

    /usr/bin/convert --version

    4. Test to make sure the PHP extensions loaded:

    for phpver in $(whmapi1 php_get_installed_versions|grep -oE '\bea-php.*') ; do
    echo "PHP $phpver" ; /opt/cpanel/$phpver/root/usr/bin/php -m |grep imagick
    done
    PHP 54
    imagick
    PHP 55
    imagick
    PHP 56
    imagick
    PHP 70
    imagick
    PHP 71
    imagick

     

     

    Problem with this guide is this command:

     

    echo 'extension=imagick.so' >> /opt/cpanel/$phpver/root/etc/php.d/imagick.ini
    done

     

    We noticed with our colleagues in angellight.com it causes duplicate SO entries in:

    php.d/zzzzzzz-pecl.ini:extension="imagick.so"
    php.d/imagick.ini:extension=imagick.so

    as it shows here:

    https://support.cpanel.net/hc/en-us/articles/360052373474-Severity-Core-Warning-Module-imagick-already-loaded-Unknown-0

     

    Symptoms

     

     You see these errors appearing in PHP's log files: 
     

    ERROR - 17/08/2020 18:48:48 --> Severity: Core Warning --> Module 'imagick' already loaded Unknown 0
    ERROR - 17/08/2020 18:48:48 --> Severity: Core Warning --> Module 'imagick' already loaded Unknown 0
    ERROR - 17/08/2020 18:48:49 --> Severity: Core Warning --> Module 'imagick' already loaded Unknown 0
    ERROR - 17/08/2020 18:48:49 --> Severity: Core Warning --> Module 'imagick' already loaded Unknown 0
    ERROR - 17/08/2020 18:48:49 --> Severity: Core Warning --> Module 'imagick' already loaded Unknown 0

     

    Description

     

    This usually means that the module has been loaded more than one time i.e. there are at least two instances of the directive that loads the module in PHP's configuration files. This can occur when the module has been installed multiple times using different utilities (yum, pecl, etc). In our case the directive looks like this: 

     

    extension="imagick.so"

     

    Workaround

     

    First, we need to identify what PHP version the domain (AKA VHost) is using. You can run this command to confirm the PHP version the domain is assigned to:  

     

    uapi --user=$USER LangPHP php_get_vhost_versions | egrep -i domain -A 1
    
    


    Here $USER must be replaced with the name of the user the domain belongs to. The output looks like this: 

     

    uapi --user=cptest LangPHP php_get_vhost_versions | egrep -i domain -A 1
    
     domain: foo.testing.com
     version: ea-php72
    --
     domain: sub.cptest.net
     version: ea-php72
    --
     domain: foo1.bar1.com
     version: ea-php72

     

    You will see the PHP version each domain is using listed underneath the domain name. Now you need to go to this location:

     

    cd /opt/cpanel/ea-php##/root/etc

     

    Don't forget to change the PHP version (ea-php##) in the above path with the domain's PHP. And now if you recursively search for the module-loading directive from above, you should see more than one line showing up: 

     

    grep -ir imagi *
    
    php.d/zzzzzzz-pecl.ini:extension="imagick.so"
    php.d/imagick.ini:extension=imagick.so

     

    You need to edit one of these files and comment out the line where the directive appears and then restart the PHP-FPM service from the WHM > Restart Services > PHP-FPM service for Apache interface. The error messages should now disappear.  

     

     

     

     

     


  3. so we were excited to start using Windows 11

    203019149_4005881279498173_1440142851378

     

     

     

    and the issue when using VmWare workstation was only one - no network

     

    So i tried updating using tethered mobile connection, then used hardware ID to find another driver as Vmware tools did not solve this

    202530686_4005311279555173_7941098035554

     

    PCI\VEN_8086&DEV_10D3&SUBSYS_07D015AD&REV_00\000C29FFFFF58EFB00

     

    and nothing

     

    Worse is, i installed on KVM and all worked flawlessly ...

     

    so the problem was easy to solve in the end:

     

    edit VMX add the following:

     

    ethernet0.addressType = "generated"
    ethernet0.virtualDev = "vmxnet3"

    ethernet0.present = "TRUE"

     

    voila

    No photo description available.

     

     


  4. wherever i visited it was made quite clear upgrading CentOS 6 to CentOS 7 is not a realistically viable option
    photo_2021-03-29_16-20-38.jpg
    and OVZ6 or otherwise OpenVZ aka Virtuozzo containers lack their kernel so migrating was between hard to not possible.
    photo_2021-04-03_13-13-04.jpg
     
    Well, we are happy to disagree since we managed to do the Virtualization equivalent of Magellan Circumnavigation after a week of hard work: we started with OVZ container running CentOS 6.10 and cPanel / WHM 11.86 with an upgrade blocker due to COS6 being EOL since November 2020. Managed by trial and error to migrate this container to a KVM clone running same CentOS 6.10 and all files cloned 1-1 with rsync. Then we run the magnificent yet underrrated Red Hat upgrade tool in the KVM virtual machine to upgrade to CentOS 7.0.1406 and had to recreate the missing grub2 entries since grub is no more on COS7. From that point onwards we managed to properly yum update to 7.9 and finally to fix cPanel RPM issues and run a full WHM upgrade to 11.94.
     
    In short : OVZ COS6 WHM 11.86 -> KVM COS6 WHM 11.86 -> KVM COS7 WHM 1186 -> KVM COS7 WHM 11.94 and are are running now at latest version with functionality surprisingly high if not almost full identical
     
    www.forumsandmore.com
    • Like 1

  5. nano  /etc/yum.repos.d/CentOS-Base.repo

     

    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://vault.centos.org/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://vault.centos.org/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://vault.centos.org/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
    baseurl=http://vault.centos.org/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


  6. When moving a KVM image to another server, it’s a pretty simple process. If you’re using SolusVM or Virtualizor, it makes it even easier. However, if you have a VM node which hosts openVZ containers and need to move them to a new node with different virtualization, QEMU/KVM in this case, it makes things a little more difficult.

    The main different between KVM and openVZ is the level of virtualization. OpenVZ is an OS level virtualization which means the hosts’ kernel is shared with guest containers inside it, you can’t use your own kernel.

    KVM is very different. It’s a full virtualization. The whole OS and its kernel is virtualized so you can even install an OS with its own kernel in it, like installing Windows VM inside a linux host.

    So let’s get on with this tutorial now that we have a little background. Please proceed at your own risk!

    – Converting OpenVZ to KVM box
    Let’s start the moving process.
    1. The first step before start moving the box is installing a KVM box with the exact same OS as the openVZ container, preferably same point revision too (You will want to run yum update on both VM’s to make sure)
    2. SSH into both VMs.
    3. In the KVM box, or openVZ box, install mingetty. I’m using CentOS 6.2 so I use yum to install mingetty
    yum install mingetty
    4. Edit /etc/inittab in the VM installed with mingetty
    vi /etc/inittab
    and add these lines
    # Run gettys in standard run levels
    1:2345:respawn:/sbin/mingetty tty1
    2:2345:respawn:/sbin/mingetty tty2
    3:2345:respawn:/sbin/mingetty tty3
    4:2345:respawn:/sbin/mingetty tty4
    5:2345:respawn:/sbin/mingetty tty5
    6:2345:respawn:/sbin/mingetty tty6
    This will enable the machine to actually get a logon prompt.
    5. Install rsync on both VMs
    yum install rsync
    6. From the openVZ box, make a text file containing files to exclude. This will preserve settings in KVM box to make sure the VM is bootable.
    nano /root/exclude.txt
    add these lines to exclude.txt, you may customize it to your needs
    /boot
    /proc
    /sys
    /tmp
    /dev
    /var/lock
    /etc/fstab
    /etc/mtab
    /etc/resolv.conf
    /etc/conf.d/net
    /etc/network/interfaces
    /etc/networks
    /etc/sysconfig/network*
    /etc/sysconfig/hwconf
    /etc/sysconfig/ip6tables-config
    /etc/sysconfig/kernel
    /etc/hostname
    /etc/HOSTNAME
    /etc/hosts
    /etc/modprobe*
    /etc/modules
    /net
    /lib/modules
    /etc/rc.conf
    /usr/share/nova-agent*
    /usr/sbin/nova-agent*
    /etc/init.d/nova-agent*
    /etc/ips
    /etc/ipaddrpool
    /etc/ips.dnsmaster
    /etc/resolv.conf
    /etc/sysconfig/network-scripts/ifcfg-eth0
    7. Now we can start to sync the OpenVZ box to the KVM box. In the openVZ box, type:
    rsync –exclude-from=”/root/exclude.txt” –delete –numeric-ids -avpogtStlHz -e “ssh -p ” / root@:/
    That’s all, to make sure everything’s working, reboot the KVM box when the rsync process has completed. Once your new KVM box is up, you will have to go in there and make the IP changes to cPAnel/WHM, shoutcast, zPanel, or whichever other control panel you’re using.

     

    https://blog.webhostpython.com/2015/11/25/how-to-convertmigrate-openvz-vps-to-xenkvm/

    • Like 1

  7. IPS Community Suite 4.5.2

    Released 09/09/2020


    Key Changes

    We are pleased to announce that Invision Community 4.5 is now available and packed with new features, enhancements, and even a new look! 

    Major New Features / Enhancements

    New Front-End Design
    AdminCP Dark Mode
    Site StatisticsSearch Insights, and Club Statistics
    Marketplace now built into the AdminCP
    Mobile App for iOS and Android (Beta)
    Zapier Integration for Invision Cloud Communities

    In addition to these new enhancements, there are countless other additions and improvements. Check out our product blog to see what we have been up to.

    Before Upgrading
    Before proceeding with your upgrade, please note that all third party resources are disabled during the upgrade process. We strongly recommend ensuring that all of your installed applications, plugins and themes have Invision Community 4.5 compatible updates available to allow continued use. 

    Please see the full release notes for other important changes, feature removals and deprecations.

     

    Additional Information

    Deprecations

    The following items have been marked as deprecated in Invision Community 4.5. This means that while they currently work, they will be removed in a future version and will no longer receive bug reports.

    Commerce:

    • Authorize.net Payment Gateway.
    • Web Hosting & Domain support.

    Core:

    • BBCode parsing support - upgrading users will be asked during upgrade if they wish to retain BBCode parsing support, while new installations will have the option off by default.
    • APC, Memcache, Wincache and Xcache caching engines , we recommend using Redis instead

    Feature Removal

    The following features have been removed in Invision Community 4.5.

     Core:

    • We will no longer address any issues specific to Internet Explorer 11 and below and will not ensure compatibility with those versions.
    • ImageProxy has been removed. On upgrade, there is an option to restore the original remote image links, or direct links to the cached image which will be retained.

    Downloads:

    • REST API 'files' response in REST API, see /downloads/files/{id}/download instead.

     

    Security

    • Improved password strength checks to detect password values set identically to the account username or email address and to consider them weak.
    • Improved method of encrypting certain text.
    • Improved AdminCP session handling, removing the session ID from URLs and introducing alternate CSRF protections.
    • Improved email change process to invalidate any pending password reset requests.
    • Fixed user not being prompted for two-factor authentication when signing in from a new device.
    • Fixed an issue where it was possible to bypass the messenger recipient count limit.
    • Fixed a niche issue where it was possible in certain configurations to view others profile field attachments on the registration page.
    • Fixed a race condition issue where it was possible to artificially inflate or reduce a user's reputation score.
    • Limited password inputs to 72 characters max to reduce the chance of a malicious user forcing unnecessary computationally expensive operations on the server.
    • Fixed an issue where AdminCP sessions may be usable longer than expected if a community receives little activity.

    Core

    • Added beta of Zapier integration for Invision Cloud communities.
    • Added new activity feed and twitter feed widgets
    • Added new view modes, enhanced existing and added more functionality to topic view.
    • Added an initial onboarding screen in the AdminCP for new installations.
    • Added the ability to filter members in the AdminCP by rank.
    • Added the ability to mark a post as the solution without needing the full QA mode.
    • Added the ability to ony show a preview of new private message / new content email notifications to stimulate re-engagement back to the community.
    • Added the ability to have TikTok links become embeddable in an editor.
    • Added the ability to select from stock photos when uploading images.
    • Added the ability to disable advertisements on non-content pages and error pages.
    • Added support for chunked uploading to Amazon S3 which allows for larger file sizes to be uploaded.
    • Added support for PHP 7.4.
    • Added support for Sign in with Apple.
    • Added support for version 4 of the bit.ly link shortening API.
    • Added new options to prune follows, known IP addresses, known devices, and item markers, and default options for some existing prune options have been updated.
    • Added the ability for Club Owners and Leaders to create and manage static pages within their clubs.
    • Added the ability to show content messages only to staff members (moderators).
    • Added a list of members who reacted to content in the tooltip when hovering on the reaction icon.
    • Added overview statistics pages in the AdminCP.
    • Added the plugin version to the ACP plugin list.
    • Added a type-ahead search option when selecting tags from a closed tag input field that contains more than 20 tags.
    • Added support for non-English searches in Giphy when the site is using a language Giphy supports.
    • Added additional static-type links to the sitemap file.
    • Added the ability to filter by custom profile fields in bulk mail, group promotions and exporting member lists.
    • Added the ability to create custom phrases within the language system.
    • Added the Invision Community Marketplace to the AdminCP.
    • Statistics can now be downloaded as CSV files.
    • Added the ability for Club Owners and Leaders to manage the visibility of the members page.
    • Improved referrals tracking and introduced a global community invite feature.
    • Improved the live meta tag editor.
    • Improved performance of several areas of the software.
    • Improved in-AdminCP upgrader to be able to handle more types of upgrades and improve reliability.
    • Improved "Allowed characters in display names" setting to give pre-defined options.
    • Improved performance of thumbnail generation.
    • Added a setting that determines which comment you see first when opening an item.
    • Added the ability for administrators to force users to reset their passwords.
    • Added pending club invites to the club directory sidebar.
    • Added a setting to disable automatic language detection.
    • Added the ability for members to cancel club join requests.
    • Added the ability to include club content to widgets.
    • Added the ability to include/exclude widgets in clubs.
    • Added an AdminCP statistics page for Clubs.
    • Added search term tracking and a statistics page to monitor search term usage.
    • Added a clarification notice to the edit log on the front end when edit logs are pruned.
    • Added a friendlier error message when uploads fail due to a server problem.
    • Added current percentage completed to progress bars.
    • Added ability to filter reputation given and received statistics in the AdminCP by date.
    • Added a check for the PHP file_uploads configuration directive to the support tool.
    • Added theme settings to set maximum logo width at each device size.
    • Changing the default application will be logged to the ACP Admin Log.
    • Added ability for club leaders to specify rules for a club, and force members to acknowledge them.
    • Added the database name and username to database queries to identify slow queries between multiple installations on a single database server.
    • Removed the separation by app in the block manager.
    • Removed the ability to import profile photos from a remote URL to improve security.
    • Removed the image proxy feature to improve security.
    • Removed Digg and Delicious share links.
    • Removed the "What's New" link from the user menu in the AdminCP if the administrator is restricted and cannot reach the page.
    • Removed the newsletter widget from showing in the sidebar by default on new installations.
    • Improved display name availability check when name contains multiple concurrent spaces.
    • Improved memory usage when uploading large images by handling resizing and rotation in the user's browser, rather than by the server.
    • Improved GeoIP lookup caches to store for longer periods of time.
    • Improved randomization for widgets that order by "random".
    • Improved logging of curl-related errors to include the URL that curl attempted to connect to.
    • Improved host detection for guest page caching.
    • Minor styling updates for embeds.
    • Logging in anonymously is now more reliably tracked across multiple devices.
    • Long quotes will now automatically truncate with a "Read more" link to expand the quote to improve usability when long quotes are used.
    • Updates search compatibility for Elastic Search 7.
    • Upgraded CKEditor to 4.14.1.
    • Flagging a member as a spammer will now remove any profile cover photo they may have uploaded.
    • The clubs map now centers around available clubs rather than showing a whole world view.
    • Changed the redirect targets from clubs, to redirect to a club feature after the feature creation and when a member joines a club.
    • Changed the "Maintenance Tasks Not Running" admin notification to check for two or more tasks that have not ran to reduce false positive notifications in the event a feature is enabled which enables a task which has not ran in a long time.
    • Restored the ability to view a list of members through the advanced search without appending unnecessary extra parameters to the URL.
    • Adjusted certain code to remove reliance on MySQL functionality deprecated as of version 8.0.17.
    • Changed the parser to allow <picture> HTML tags through to prevent errors with RSS imports that may use them.
    • Changed the content deletion process so that reports related to the content are no longer deleted.
    • Added logging out as a controller that can bypass forced account completion when a login handler cannot prepopulate a username or an email address.
    • Added rel="nofollow" to certain links in order to instruct search engines not to follow them.
    • Added the ability to export member reputation points when downloading a member list from the AdminCP.
    • Added a confirmation dialog to the "Restore default streams" button in the AdminCP.
    • Improved Google Maps setup page in AdminCP.
    • The Report Center now properly handles content pending deletion.
    • Updated Google Charts to use the latest API (v47).
    • Improved editing a members secondary group by automatically switching between Checkboxes and a Select menu depending on how many groups are present.
    • Improved the way how traffic run tasks are called.
    • Updated the email failure AdminCP notification to run on login instead of email send.
    • Updated the recommended PHP version to 7.3.
    • Search result snippets are now truncated on the server before being served to the browser to increase efficiency.
    • Tags are now shown in search results/streams on mobile devices.
    • Updated the URL used for Twitter oEmbed requests.
    • Added support for converting words to links as well as acronyms in posting settings.
    • Adjusted Easy Mode theme editor to remove support for gradients and simplify the user interface. Added support for 'invert' to easily create dark themes.
    • Fixed an issue where some nodes may not be available in various areas of the software (for instance, forums not being available to move subforums to when deleting a parent forum, and custom Pages blocks not being available to select in the widget manager).
    • Fixed attachments not being claimed when added to Club Editor custom fields.
    • Fixed an issue where admin-validated post-before-register accounts would not trigger follow notifications to be sent.
    • Fixed an issue where bulk mail content count filters caused an error.
    • Fixed an issue where editing a comment and using a word filter entry configured to hold the content for moderator approval may not actually do so.
    • Fixed an issue where stream filters were not updating when the time period was changed.
    • Fixed an issue where items in the main menu "more" overflow can appear in the wrong order.
    • Fixed public club content not showing in streams and searches for guests.
    • Fixed an issue where anonymous users may be displayed in the "Who's Online" widget.
    • Fixed an issue where the files overview member link targeted the wrong location.
    • Fixed an issue where admin control panel failed mail notifications could show a template error.
    • Fixed an issue where predefined tags would not show in category settings when using a closed system.
    • Fixed an issue where searching PMs would only show 25 results.
    • Fixed an issue where incomplete members may not be cleared out of the database.
    • Fixed an issue where Mapbox geolocation could return invalid location data in some circumstances.
    • Fixed an issue where mass moving/pruning members could return no results.
    • Fixed an issue where choosing to move club content while deleting a club resulted in that content being deleted instead of being moved.
    • Fixed an issue where 'and' could be duplicated in lists of followers.
    • Fixed an issue where the selected security questions during registration may reset if the form reloads with an error.
    • Fixed an issue calculating member's age in some locations.
    • Fixed an issue where groups could not be configured to allow reporting of personal conversations.
    • Fixed an issue where HTML advertisements could be saved without any HTML code, resulting in a PHP notice being triggered when previewing the ad.
    • Fixed an issue where dates can show in the wrong format in some configurations.
    • Fixed an issue where uninstalling an application may leave behind attachments for that application.
    • Fixed an error that can prevent inline notifications from showing up.
    • Fixed an issue where the stream condensed/expanded toggles did not work when visiting the URLs directly.
    • Fixed an issue where multimoderaction actions on ony page would redirect to the first page.
    • Fixed a conflict that can occur when two or more external databases are set up for login handling.
    • Fixed an issue where it was possible to bypass profanity filters when using quick title edit.
    • Fixed an issue where the requirement checker may not highlight issues with a storage configuration if only one exists.
    • Fixed an issue where the wrong file size may be shown in upload errors.
    • Fixed an issue where content types that are not searchable may be shown as filter options in streams.
    • Fixed an issue where the support tool would not clear guest page caches.
    • Fixed an issue where personal conversation replies cause a member's "last post" date to be reset incorrectly.
    • Fixed an issue where it was not possible to comment on a reported status update.
    • Fixed some issues with status update/profile comment submissions that fail due to being too large.
    • Fixed an issue where the default module may not be correctly set when installing a new application.
    • Fixed an issue where meta tags could be added to pages they were not intended for.
    • Fixed an issue where group promotion rules for date joined, last posted and last visited may not match correctly.
    • Fixed an issue where disabling clubs in the settings would still leave the "Allow club moderators" setting visible.
    • Fixed an issue where RSS exports may not show all available areas.
    • Fixed some issues tracking and resetting limits when a per-post attachment limit is applied to a group.
    • Fixed an issue where giphy thumbnails may show distorted if your "Maximum image dimensions to display" setting is set very low.
    • Fixed an issue where guest cache may throw an error if a database issue is encountered.
    • Fixed a potential issue that can occur when upgrading with InnoDB tables when MySQL is set to use MyISAM by default.
    • Fixed an issue where unnecessary profile sitemap files may be processed.
    • Fixed a javascript error that can occur due to lazy loading in some cases.
    • Fixed an issue where the drag handles may not show up correctly when attempting to adjust the tab order on the club nav bar.
    • Fixed an issue where certain URLs may not be fetched as expected.
    • Fixed an issue where members that can hide their own content may not people to hide items when creating them.
    • Fixed an issue where blog entries do not update club last activity time.
    • Fixed an issue where it was not possible to move club content to other clubs when deleting sections.
    • Fixed an issue with certain embeds (such as Spotify) in certain environments.
    • Fixed an issue where the "Flagged as spammer" email notification would be missing the details about who was flagged as a spammer.
    • Fixed Unsubscribe Links not working in some cases when Email Link Tracking is in use.
    • Fixed an issue where resorting hidden content in the Moderator CP redirects you to the report center.
    • Fixed an error viewing reports of content items queued for deletion.
    • Fixed signature images not displaying in the AdminCP when image lazy loading is enabled.
    • Fixed an issue where editing content meta messages will not show existing attachments on the edit form.
    • Updated HTMLPurifier to 4.12.0.
    • Removed the ability for an administrator to override a user's time zone.
    • Centralised RSS importing and added support for image enclosures on export and import.
    • Fixed an issue where multiple YouTube embeds in an editor could lead to the editor wrapper overflowing its bounds.
    • Fixed default country when entering an address being incorrectly detected for some users.
    • Fixed an issue where restoring certain default menu items resulted in missing language strings.
    • Fixed an issue where two moderator groups applying to a single user may allow the user to revoke warnings even if they do not have permission.
    • Fixed an issue where carousel widgets would not be scrollable in certain configurations.
    • Fixed certain content links such as links to direct posts not always taking you to the correct page in a multipage topic.
    • Fixed an issue where setting a limit for the maximum items on a sitemap would include the oldest instead of the newest content.
    • Fixed an issue where a 'flash of unstyled content' may appear in Firefox when lazy-loading embedded content.
    • Fixed an issue in the AdminCP where a tooltip would appear off the edge of the screen where a member had no display name set.
    • Fixed an issue where deleting a reaction would not redirect back to the reputation settings tab.
    • Fixed an issue where terms and tags can be removed from search queries in some circumstances.
    • Fixed an issue where some addresses could be saved with a location unintentionally.
    • Fixed a styling issue with the 'Back Button' in the Menu Manager.
    • Fixed potentially being sent to a random page when splitting comments from one content item to another content item.
    • Fixed an issue where deleting reactions would leave the images on the file system.
    • Fixed some structured markup validation concerns.
    • Fixed an error that can occur for guests who have chosen to use a theme which is subsequently deleted.
    • Fixed an SQL error during certain (intentionally invalid) AdminCP login attempts.
    • Fixed an issue where a database can occur if the login form is submitted with no credentials supplied in specific scenarios.
    • Fixed an issue where clubs may reflect an incorrect last activity date.
    • Fixed an issue where signature options would still show when ignoring users even with signatures disabled.
    • Fixed an issue where the member last visit time may not be set for new members.
    • Fixed an issue where checkbox set custom fields could not be set as searchable.
    • Fixed an issue where an administrator who could manage member moderators or group moderators (but not both) will not see the correct options when adding moderators.
    • Fixed extraneous spaces/newlines displaying on some forms.
    • Fixed an issue where partially uploaded files can be orphaned on disk.
    • Fixed an issue where topic links were not correctly using the user unread/first/last post preference.
    • Fixed an issue where members could be informed they were on mod queue because of a warning that had already expired.
    • Fixed an issue where already pending post before register content is not processed if the feature is disabled.
    • Fixed an error that can occur when a cron-based request results in content being parsed, such as when running tasks via cron following an upgrade from 3.x.
    • Fixed an issue where saving group display name changes with blank values caused an error.
    • Fixed a potential SQL error that can occur when upgrading from IP.Board 3.4.9.
    • Fixed an issue paginating in tables when certain special characters were included in the URL.
    • Fixed a potential error that can occur when uninstalling some third party applications.
    • Fixed an issue with language pack list formats when first adding a new language pack.
    • Fixed an issue where when lazy-loading is enabled, a lightbox would not be available for images that had not yet loaded into the browser.
    • Fixed an issue where the REST API would return an error while fetching a clubs data.
    • Fixed an issue where clicking Back in a browser after navigating to a new page of a table would not load the correct content.
    • Fixed an issue where dropdown menus in the main navigation bar may disappear when moving the mouse cursor.
    • Fixed a styling inconsistency in the AdminCP with the clubs page when clubs are disabled.
    • Fixed an EX0 error that can occur with widgets in specific configurations.
    • Fixed an issue where deleting a comment or review may incorrect update the count on the respective tab or remove the tab altogether.
    • Fixed clicking a tag not working when Friendly URL's were disabled.
    • Fixed an issue where certain columns would not be automatically detected when importing members from a CSV.
    • Fixed an error viewing clubs on PHP 7.4.
    • Fixed an issue where anonymous users may show online to administrators when they are not online.
    • Fixed Twitch embeds broken following an update on Twitch.tv.
    • Fixed an error using advanced table searches on PHP 7.4.
    • Fixed excess whitespace being included in the editor when certain text is used in an editor for a promoted item.
    • Fixed an issue using the "insert existing attachment" feature in the AdminCP in some cases.
    • Fixed some outdated phrasing when unsubscribing from emails.
    • Fixed an issue where the "Keep aspect ratio" option when editing image dimensions in the editor may not default correctly.
    • Fixed an incorrect message showing when banning an account in the AdminCP.
    • Fixed an issue where links in plain text emails could break with click tracking enabled.
    • Fixed editor buttons not replacing multiple instances of a {content} variable.
    • Fixed an inability to edit a post containing a badly embedded quote.
    • Fixed an issue where emoji may still replace in the editor even if the setting is disabled.
    • Fixed background task progress bar reporting incorrectly in some cases.
    • Fixed quicksearch menu closing on the front end when clicking on certain rows instead of the labels directly.
    • Fixed some javascript errors that can occur when the page is updated via AJAX.
    • Fixed an SQL error that can occur during upgrades in some cases.
    • Fixed page title reflecting "undefined" when editing permissions for certain editor buttons in the AdminCP.
    • Fixed some buttons in the AdminCP moving into the page header out of the tab the button belongs to when reloading the page.
    • Fixed the "note for member" field when warning a member being wiped when the reason for the warning is changed.
    • Fixed an issue where the REST API can output other members 'last activity' times regardless of anonymous setting.
    • The "Mobile Nav Background" theme setting has correctly been renamed to "Main Nav Background".
    • Fixed a broken page layout on the Username History page.
    • Attachment titles are no longer excessively cropped vertically.
    • The Reconfirm Terms page has been wrapped in .ipsBox to improve contrast in certain themes.
    • Notifications to the author are no longer sent for linked content inside quotes.
    • Fixed an issue where "Posting" and "Profiles" AdminCP menu items may not show even if the restricted administrator has access to parts of them.
    • Fixed an issue where validating members showed in search results.
    • Fixed an error with Windows that can cause certain date and language string values to be broken.
    • Fixed template disk cache files not being made writable in some environments.
    • Fixed an issue where invalid SMTP email credentials could cause content to be posted twice in some cases.
    • Fixed performance issue sending usage report.
    • Fixed an issue viewing all reactions for individual comments.
    • Removed certain logging when using OAuth2 which was unnecessary and could consume a lot of database space.
    • Fixed an issue where the front session handler may be unintentionally started when using \IPS\Output::i()->sendOutput().
    • Removed the Delete and Flag As Spammer buttons from member rows when filtering on groups.
    • Fixed an issue where the front session handler may be unintentionally started when using \IPS\Output::i()->sendOutput().
    • Fixed an issue where uploading a new emoticon with IN_DEV being enabled would result in an exception with PHP 7.4.
    • Fixed an issue where a previous bug could cause the remote image proxy task to error.
    • Fixed an issue sorting personal conversation IP address lookup results by date in the AdminCP.
    • Fixed birthdays sometimes not showing on profiles.
    • Fixed an issue where profiles of users that have followers disabled would show an error with PHP 7.3.
    • Fixed an issue where newly created club icons do not show when editing.
    • Fixed mobile Twitter links not automatically embedding.
    • Fixed a rare error that can occur when deleting a block using the block manager.
    • Fixed an issue where copying a node (such as a forum) that had content pending moderator approval can result in the new node indicating there is content to approve when it is empty.
    • Fixed an error preventing certain image uploads pasted into the editor from uploading correctly.
    • Fixed an issue where it may not be possible to save the 'exclude groups from leaderboard' setting.
    • Fixed an issue displaying colored emoji in some environments.
    • Fixed an issue where the live meta tag editor wouldn't save the form if only the site title was set without having any further tags.
    • Fixed autocomplete fields not initially expanding to show all text when a value is pasted into the field.
    • Fixed deleting a category, while also deleting children, not deleting child categories further than the first child level.
    • Fixed an issue where new comment notifications could show guests in the commenter list when using post before register.
    • Fixed an issue where club filter options would show in activity streams when no clubs were available.
    • Fixed an issue where it was not possible to complete a password reset if the community was offline and email click tracking was enabled.
    • Fixes an invalid “Thank you for vote” message when voting validation fails.
    • Fixed an issue where deleted comments in certain applications may still show inline to moderators with approval to view them.
    • Fixed an issue where setting up 2FA Security questions would result in an error with PHP 7.4.
    • Fixed an issue where coverphotos set to bottom-align on desktop would show gapping on mobile.
    • Fixed an issue where large images in emails may not behave responsively on all devices.
    • Fixed page title duplicating in the Twitter share box when clicking the Twitter share link.
    • Fixed an undefined variable in an upgrader HTML template.
    • Fixed an issue with carousels not advancing to the next image in some edge cases.
    • Fixed an issue where paginating in a comment feed (e.g. a topic) wouldn't work reliably if an anchor (e.g. #comment) was present in the URL.
    • Fixed an issue where users may be incorrectly prompted about new replies in a topic when navigating to a different page via the "back" button.
    • Fixed an issue in the mobile hamburger menu where sub-items may appear to be 'missing' because the menu is actually scrolled down too far.
    • Fixed issues with submenus sometimes opening off-screen when on small devices or when using an RTL language.
    • Fixed an issue where in certain situations, autocomplete results would be incorrectly positioned on mobile devices.
    • Fixed an issue where hovercards may sometimes display partially off-screen.
    • Fixed an issue where the progress bar can exceed 100% when enabling designer's mode.
    • Fixed an issue where new-style Twitter embeds may appear narrow in some browsers.
    • Fixed an issue where the filesystem datastore directory configuration option may still show if selecting to use Redis for caching.
    • Fixed a minor SEO concern reported by the latest version of Lighthouse.
    • Fixed an issue where files may not be deleted when using S3.
    • Fixed dialog window titles clipping out of view if paginating a table within a dialog.
    • Fixed an error with the UTF8 converter that can occur in certain cases.
    • Fixed # anchor being added to the URL in the address bar when closing the drawer element on mobile.
    • Fixed the members/notifications REST API endpoint returning notifications in the wrong order.
    • Fixed a potential syntax error when performing a MySQL search.
    • Changed upgrades to write current upgrade step data to the database instead of to a temporary file on disk.
    • Changed the support tool to only run database checks against enabled applications.
    • Changed the auto-upgrader to only run database checks against enabled IPS applications.
    • Removed custom theme CSS from AdminCP pages.
    • Removed unnecessary down caret from submenus on the primary navigation bar in some cases.
    • Removed the obscure hash from CSS and JS files to prevent duplicate files that are not always cleaned up.

    Calendar

    • Improved performance for specific (common) recurring event patterns.
    • Changed the "Upcoming Events" widget to honor the configured widget cache period (previously we forced the widget to cache for 12 hours).
    • Fixed an issue where event reminders would still send for the original date if an event is edited.
    • Fixed an issue where the "repeat until" end date, if specified, may not reflect the correct date after saving the event.
    • Fixed an issue where creating a recurring even could fail.
    • Fixed an issue where reminders could be sent for events no longer viewable.
    • Fixed an issue with some events showing up incorrectly on the day after they occur, in addition to the correct date.
    • Fixed importing iCal files failing in some cases.

    Pages

    • Added page builder widgets to create visually interesting pages.
    • Added support for moving comments on records between the Forums and Pages applications.
    • Added Open Graph tags for non-database pages where appropriate.
    • Tags for Manual HTML pages and Blocks now include custom phrases from the language system, with the ability to add new ones directly from the form.
    • Editor type blocks created in the AdminCP under Pages > Blocks are now translatable for communities with multiple languages.
    • Improved performance of large Pages databases.
    • Improved template management.
    • Added lazyload for YouTube, SoundCloud & Spotify fields.
    • Removed a deprecated option to use a special gateway or index for Pages.
    • Removed a hardcoded limit of 5MB for files uploaded to the media manager.
    • Changed the "Show that the message has been edited" setting to be disabled by default, to keep it consistent with the rest of the suite.
    • Fixed an issue where comment and record attachments could become incorrectly associated, or become editable by other users submitting comments or records.
    • Fixed an issue where hidden records or comments contained a wrong hide reason.
    • Fixed an issue with JSON+LD structured data which can cause Google Webmaster Tools to flag structured data for Pages database entries as invalid.
    • Fixed a potential overflow concern on the database record submission form for smaller devices.
    • Fixed an issue where records may not redirect properly when the wrong casing is used in a static friendly URL.
    • Fixed an issue where records will not redirect properly after being moved when a static friendly URL value is used.
    • Fixed an issue where externally embedded blocks do not work if "Allow community to be embedded in an iframe" is not set to "Anywhere".
    • Fixed an issue where it wasn't possible to use pagination on non-database pages.
    • Fixed an issue where it wasn't possible to set the future publish moderator permission on individual databases.
    • Fixed an issue where the task to remove unneeded sidebar blocks could become frozen.
    • Fixed an issue where the database categories block would show without a border when displayed horizontally.
    • Fixed an issue where block templates would not be set correctly.
    • Fixed an error deleting a database category that contained a subcategory with records.
    • Fixed an issue where duplicate block keys may occur when a specific block key is not supplied.
    • Fixed an issue where menu titles would not correctly use database titles when set as an override.
    • Fixed an issue where ratings may not display correctly if reviews are disabled.
    • Fixed an issue where the sitemap lastMod value may incorrectly be set.
    • Fixed a database error that can occur when upgrading IP.Content from prior to Invision Community 4.x.
    • Fixed an issue where title and content fields would not be presented in the "quick update" form when viewing a Pages record if they were configured to do so.
    • Fixed an issue saving Pages templates when comparing the modified template to the default.
    • Fixed an error when attempting to delete a review response in a Pages database.
    • Fixed Mention notification not sending when updating custom fields for a record while viewing the record.
    • Fixed a bug where the width/height attributes for Youtube fields in databases may not be honored.
    • Fixed an issue where number fields would reflect a value of 0 when no value is supplied.
    • Fixed an issue where a Pages database record may incorrectly appear as authored by the administrator editing the record.
    • Fixed an issue where a select field set as the title field for a database would not require the user to select a non-blank option.
    • Fixed an issue where the sitemap rebuild task could break while trying to build the sitemap for a not existing database.
    • Fixed an issue where creating and editing Page Templates would redirect to a wrong template after saving the recently created template.
    • Fixed an error that can occur in Pages databases when the page the database is on has a custom non-default theme applied.
    • Fixed an issue where the insert into post icon would show for record images even though this is not functional.
    • Removed the ability to edit topics automatically created by a Pages database record.

    Commerce

    • Added ability to have trial periods for Packages and Subscription Plans, and take card details upfront if it is a free trial.
    • Added ability to define different tax rates for consumers, businesses and EU VAT-registered businesses.
    • Added ability to mass upgrade/downgrade or cancel purchases of a given product.
    • Added option to update existing purchases when changing tax rate for a product which renews.
    • Improved add address link in client area to load form in a modal.
    • Improved product list in AdminCP to include counts of current purchases and better indicate if the product can be purchased (including its stock level, if applicable) and/or upgraded/downgraded.
    • Improved UI in storefront for products which have renewal terms to make it clearer what the real cost is.
    • Improved UI in storefront when viewing products that has the "Allow users to purchase more than one?" setting disabled that the user has already purchased.
    • Improved how expired subscriptions are handled, prompting user to renew rather than start a new subscription. This also fixes an issue where a user may abuse initial term pricing if it is cheaper than renewals. Users can no longer completely cancel an existing subscription (but can still stop renewals).
    • Improved warning page when deleting a product to clarify the steps which should be taken to retire a product.
    • Improved default invoice timeline settings (by default renewal invoices now sent 12 hours before expiry).
    • Improved the error messages shown when a user attempts to visit an invoice in order to pay it but is not logged in, or is logged in to a different account.
    • Updated PayPal gateway to use new Subscriptions API.
    • Updated Stripe gateway for latest supported currencies and card types.
    • Added a missing language in the Administrator logs for enabling subscriptions.
    • Fixed expiration date of subscription sometimes being lost when upgrading/downgrading plan.
    • Fixed renewal invoices being regenerated if cancelled.
    • Fixed an issue where Stripe payment gateways could only be saved if the webhook created had all available events configured to be sent, instead of just the events we need.
    • Fixed wrong package price being used when generating an invoice in the AdminCP and using a non-default currency.
    • Fixed Stripe webhooks potentially reporting an error.
    • Fixed an issue checking out using Braintree combined with coupons.
    • Fixed support request emails containing not displaying non-latin characters correctly if "Outgoing Email Format" is set to "Normal email".
    • Fixed attachments not being claimed in Editor custom fields for Purchases, Support Requests and Customers.
    • Fixed PayPal Billing Agreements mis-charging for purchases manually renewed early.
    • Fixed customers being able to cancel orders while payment is under review.
    • Fixed an issue where copying product physical settings would cause all values to be reset.
    • Fixed an issue where the estimated tax for a product may be inaccurate, particularly when logging in and out with multiple accounts to test.
    • Fixed an issue where deleting a payment method can cause errors to throw when viewing a transaction made through that method.
    • Fixed an issue where updating a product could fail because of a not existing license or license type.
    • Fixed an issue where referrals may not be counted during guest checkout.
    • Fixed issues saving the Easy Post settings form.
    • Fixed incorrect sorting of product filters in Commerce categories.
    • Fixed an inability to choose any product groups to mass-move products to from within the AdminCP.
    • Fixed an issue where recurring payments through Stripe may not succeed for specific customers who purchased in the past.
    • Fixed an issue where checking out using Stripe may not correctly show the payment completed screen.
    • Fixed an issue where non billing contacts were shown a link to pay invoices.
    • Fixed an issue where required upload custom fields in support requests could be skipped.
    • Fixed an issue where support custom fields could display incorrectly.
    • Fixed an issue where member groups would not be restored when users immediately cancel a subscription if they were manually added to the subscription package.
    • Fixed an error checking out when purchasing a paid file from Downloads with a title length longer than 128 characters.
    • Fixed an issue where copying the product filters field value to other products failed. Copy possibility was removed now.
    • Fixed inconsistent use of "Gift Voucher" vs "Gift Card".
    • Fixed an error that can occur when processing incoming support requests if attachments are linked in them.
    • Fixed a problem formatting currencies in some environments.
    • Fixed an error editing Commerce packages on PHP 7.4.
    • Fixed an issue where the wrong tax rate may be applied to an invoice when manually generating a renewal invoice.
    • Fixed an issue with the Admin Notification for shipments where associated invoices would not be shown.
    • Fixed an untranslated language string when managing addresses during a checkout.
    • Fixed an untranslated date when printing invoices.
    • Fixed an unnecessary API call being made for regular PayPal purchases and refunds.
    • Fixed an issue where it may not be possible to give permission to edit email copy settings to restricted admins.
    • Fixed cancelling/refunding a purchase for a product also deleting child purchases, which would also cause an error when viewing the invoice for the child purchases.
    • Fixed a typo.
    • Fixed an issue where purchases from disabled applications would break the purchases list and the purchase details pages in the ACP and frontend.
    • Removed “Update payment details” button from invoice notifications, which was causing confusion as payment wouldn't actually be reattempted.
    • Subscription package cover photos will not be shown if none of the packages have images.
    • Fixed an issue where the "My Details" menu item shows to guests.
    • Fixed an issue where coupon expiry dates may not save or display correctly when editing.
    • Fixed guests being able to submit responses to reviews on products.
    • Fixed possible uncaught exception if an error occurs when upgrading/downgrading subscription plans.
    • Fixed minor UI issue when trying to mass change / cancel purchases of a product which doesn't have any other products in the same group.
    • Removed the "Associate Purchase" button from support requests in the AdminCP if the administrator is restricted and cannot reach the page.

    Converters

    • Added support for converting Blog & Blog Entry categories.
    • Added support for converting vB3/4 Avatar Gallery avatars.
    • Added support for converter Club Pages.
    • Added support for new edit name/date/reason functionality in Calendar, Blog & Downloads.
    • Added support for converting WoltLab Suite Core (3.1) and WoltLab Suite Forum (5.1)
    • Added URL redirect support for two very old vBulletin formats: showthread.php?postid=x and showthread.php?threadid=x.
    • Added a new redirect for Photopost showphoto.php URLs.
    • Added the ability to auto detect the PhpBB avatar salt/hash.
    • Improved performance for XenForo & vBulletin conversions.
    • Updated RSS import conversion methods to support new functionality.
    • Fixed an issue where converting SVG sprites from XenForo would cause the conversion to halt.
    • Fixed a missing language string when converting blog attachments.
    • Fixed current status showing HTML code.
    • Fixed an issue where you may not be prompted for a path when converting Club icons.
    • Fixed an issue where orphaned (without valid category) articles are not converted from vB CMS.
    • Fixed an issue where certain Youtube video embeds may not convert properly from vBulletin.
    • Fixed a potential issue converting inline attachments in vBulletin/XenForo where the inline position may be lost.
    • Fixed attachments and editor autosave behaviour not working correctly when using the bulk submission process.
    • Fixed an edge-case scenario where a conversion would not convert any data.
    • Fixed an error that could occur when rebuilding posts following a conversion.
    • Fixed album descriptions not being parsed following a conversion.
    • Fixed an issue where resuming a conversion that had been interrupted during private message reply conversion, would start from the first reply.
    • Fixed an issue reconverting steps using the converter developer mode.
    • Removed a duplicate language string.

    Forums

    • Added ability for Forums created within Clubs to be set so that users can only see the topics they posted (e.g. for a support forum).
    • Added the dateModified property to the structured data that is produced for search engines.
    • Added support for accessing RSS feeds even when guests cannot access the forum.
    • Added an option to mark an individual topic to require moderation for new posts.
    • Exposed some additional configuration options for redirect forums.
    • Improved configuration of topic and post feed widgets to disable forums that cannot be selected.
    • Fixed an issue where deleting a user may leave topics they've posted in forums with "Can view other user's topics" disabled incorrectly showing up in activity streams.
    • Fixed an issue where topics in forums with "Users can view other user's topics" disabled may still see those topics in feed blocks from the forum.
    • Fixed an issue where moved topics may result in the original forum showing as unread indefinitely if a link is left to the new location.
    • Fixed an issue where the ACP - "Popular Now" forum settings couldn't be saved.
    • Fixed an issue where splitting and merging posts may not update popular topic info correctly.
    • Fixed an issue where reputation information may become unassociated with posts when upgrading from 3.4.x.
    • Fixed an issue redirecting certain legacy (3.4.x) topic links following an upgrade to 4.x.
    • Fixed an issue where mass-moving topics from one forum to another from the AdminCP ignores the "last comment" filter option.
    • Fixed some structured data errors, particularly when forums allow ratings to be issued on topics.
    • Fixed an issue where merging links could cause an infinite redirect.
    • Fixed an error message that may display if "Post Before Registering" is disabled and a user attempts to sign in by clicking the button that shows below a topic.
    • Fixed "Start new topic" button not displaying on the index page on mobile for guests when post before registering was enabled.
    • Fixed an issue where an error could be shown when viewing very old topics or the placeholder topic on new installs.
    • Fixed an issue where the pagination wouldn't link to the comments area with disabled JS.
    • Fixed deleting a member not appropriately referencing remote archive databases.
    • Removed a duplicate language string ( 'any_time' ) which can prevent translating this string.

    Gallery

    • Added support for accessing RSS feeds even when guests cannot access the Gallery.
    • Added a link to the group settings page and clarifying text for the "Albums" category-level setting.
    • Fixed videos not playing inline when embedded in content.
    • Fixed follow notifications being sent when a member being followed submits images to Gallery despite no notification method being set for following a member.
    • Fixed an issue with editing tags on multiple images consecutively in the lightbox.
    • Fixed EXIF metadata not being read for images in some cases.
    • Fixed a broken AdminCP livesearch keyword pointing to a setting that no longer exists.
    • Fixed an issue toggling the setting on the "show map" form for images in Gallery.
    • Fixed an issue on the ACP - Bandwidth Stats site which would result in an uncaught exception.
    • Fixed a language string clash when both Gallery and Pages are installed which may result in being unable to translate a specific language string.
    • Fixed an issue where editing tags for an image and then immediately attempting to edit the image details would cause the tag field not to load correctly.
    • Removed ability to attach files in image descriptions.

    Downloads

    • Added support for accessing RSS feeds even when guests cannot access the Downloads area.
    • Added new 'popular' sort option to REST API for files.
    • Added new /downloads/files/{id}/download endpoint for file downloads.
    • Added new /downloads/files/{id}/buy endpoint for generating invoices.
    • Added multiple items to REST API file response.
    • Added new category setting to determine if a file can have more than one file uploaded at once.
    • Added new 'minimum cost' setting for paid files.
    • Added new 'maximum filesize' per-group setting as an upper cap on submission sizes for the group.
    • Added ability to define where the download disclaimer shows (before purchase, before download or both).
    • Added ability for custom fields to only appear to purchasers of a file.
    • Improved the 'new version' file approval process, versions can now be moderated without hiding the existing version.
    • File topics now get marked read (for the file author) when they are created.
    • Separated new version update notifications from follows.
    • Fixed an issue where Downloads files inserted into editors using "Insert other media" would display "Unavailable" below the filename, instead of the size and download count.
    • Fixed a potential layout issue when editing a file that has screenshots.
    • Fixed attachments not being claimed in Editor custom fields for Files.
    • Fixed an issue where unapproved files could show in latest file info.
    • Fixed an issue where the "Similar Content" widget may not show as many results as configured if you disable a Downloads category.
    • Fixed an issue where moderators would not be notified of new versions requiring approval.
    • Fixed an error saving a category in the AdminCP if the option to post a topic to the forums is enabled but no forum is selected.
    • Fixed an issue where files which have a topic_id associated to it but where the topic doesn't exist anymore, would break the REST API.
    • Fixed an issue rebuilding topics for Downloads categories when using cron-based tasks.
    • Hid certain paid file settings in the AdminCP when accepting paid files is turned off in Downloads.

    Blog

    • Added the ability to categorize Blogs and Blog Entries.
    • Added support for accessing RSS feeds even when guests cannot access the blog.
    • Fixed an issue where flagging a member as a spammer would hide/delete entries but not blogs.
    • Fixed an issue where members browsing private blogs could appear in the online user list.
    • Fixed an issue where club blogs could show with the wrong title when embedded elsewhere.
    • Fixed an issue where blog entries would return a wrong dateModified jsonLd date.
    • Fixed an issue where an error can occur on long comments on Blog entries when rebuilding from an upgrade from 3.x.
    • Fixed an issue where blog attachments could break the 'My Attachments' Page.

    REST, GraphQL & OAuth

    • Added a GraphQL API to power the Invision Community native apps
    • Added support for Proof Key for Code Exchange by OAuth Public Clients.
    • Added ability to order content items by last updated.
    • Added parentId to node REST API endpoint responses.
    • Added ability to send an X-Authorization header for communities running on a server with PHP in CGI mode, which may not make the Authorization header available. Previously the only alternative was to send the API key in the URL query string, which is undesirable for security.
    • Added parentId to node REST API endpoint responses.
    • Fixed several issues editing, updating and deleting clubs and club members via the REST API.
    • Fixed issue where REST API reference may not show client or member only notices.
    • Fixed Pages REST API create record endpoint not properly refreshing cached information at the category level.
    • Fixed Pages REST API create record endpoint allowing creation of records without a title and body, which results in a broken record to be saved.
    • Fixed the REST API documentation missing some properties which are included in the response when calling a database record.
    • Fixed Forums REST API create forum endpoint ignoring several parameters.

    Upgrader

    Third-Party / Developer / Designer Mode

    • All automatically created plugin directories contain now an index.html file.
    • Automatically generated hook code contains now the return type and nullable parameters from the parent method.
    • Added a new extension type OverviewStatistics which allows you to add blocks to the Stats > Activity > Overview and Stats > Users > Overview pages in the AdminCP.
    • Added new public method mapUrl() to the Google and Mapbox mapping classes, allowing you to fetch the map URL without the template wrapper.
    • Added ability to pass an instance of \IPS\Db to \IPS\Helpers\Table\Db constructors (and/or override the property after construction) to create tables that query against remote databases.
    • Added support in converter libraries to pass last_vote as an instance of \IPS\DateTime for consistency with other timestamp parameters.
    • Added support to pass a second parameter to contentImages() to ignore permission checks which is useful in places like widgets when "Honor permissions" is disabled.
    • Added support to pass $tab and $after in the following form helper methods: addHeader(), addSeparator(), addMessage(), addHtml(), addMatrix(), and addDummy().
    • Added a minimize method and minimizeAfterReset option to editor JS widget to enable editors to be minimized programatically.
    • Added a showAllNodes option to \IPS\Helpers\Form\Node to force all nodes to display even on the front end.
    • Added a returnFullQuery() method to \IPS\Db\Select which will automatically replace binds so you can see the query that would execute easier.
    • Added option to REST API to include club nodes in the returned list (affects Downloads/Forums/Calendar), defaults to not include club nodes.
    • Added a preSave() method for the ModeratorPermissions extension which can be used to adjust submitted moderator permissions before they are saved.
    • Added events ips.editorMenuOpen and ips.editorMenuClosed to be fired when a mention or emoticon event starts and stops while typing into an editor.
    • Added update checking and author information for language packs.
    • Changed method \IPS\Helpers\Form\FormAbstract::utf8mb4Check() from protected to public.
    • Improved error reporting for SEO_TEMPLATE_IS_NOT_VALID_FOR_URL exceptions to return the query string and seo template that caused the error.
    • Changed the \IPS\File\Amazon::generateTemporaryDownloadUrl() method so that it can be defined by any file storage handler engine and used automatically.
    • Fixed an issue creating multi-column indexes that spanned both textual and date-type columns.
    • Fixed an error that can occur with IN_DEV enabled when importing calendar events from ical file or feed.
    • Fixed an issue where content item implementations that do not implement \IPS\Content\Searchable were still shown as filter options in streams.
    • Fixed an issue with IN_DEV database schema synchronization for custom databases in Pages.
    • Fixed an issue using the \IPS\Helpers\Table\Db table helper with excluded columns in some cases.
    • Fixed IPS\Helpers\Form\WidthHeight instances only working in the AdminCP by moving the template to the global template location.
    • Fixed an issue where select boxes with numeric values may not retain their selections properly if a form reloads due to an error.
    • Fixed a potential undefined index issue throughout the Suite in the language system.
    • Fixed a potential error calling \IPS\Member\Group::groups from certain contexts, such as cron.
    • Fixed an undefined index in Pages when submitting a new record in some configurations.
    • Fixed ratings for content from an application not being deleted when the application is uninstalled.
    • Fixed default scrollScope for the infScroll javascript UI widget not working.
    • Fixed an error attempting to call parent in a hook when using the hook editor within the AdminCP.
    • Fixed undefined variable $form in \IPS\core\modules\front\system\register being passed to profile step formatFormValues() method calls.
    • Fixed an issue where profile completion extensions could not be created without sub steps.
    • Fixed an issue where the title of an advertisement wasn't deleted while the advertisement deletion.
    • Fixed a pagination issue when the content item does not use an SEO slug component in the URL.
    • Removed an unused mobile class property in IPS\Http\Useragent.
    • Removed database schema functionality deprecated in MySQL 8.0.17, including specifying binary on a column, specifying lengths and zerofill for numeric column types, and specifying decimal places for float/double column types.
    • AdminCP menu entries now support two new parameters: menu_checks allows you to define additional input key => value mappings in an array which will also be checked to determine if you are viewing the menu entry page in question, and menu_controller allows you to override the controller check when generating the menu key. This is used by Pages, for instance, to support highlighting the dynamically generated menu entries.
    • AdminCP menu entries now support multiple keys in the restriction parameter, separated by commas. If any key matches, the administrator will see the menu item. Useful for tabbed screens where an administrator may not be able to access some tabs but does have access to others.
    • Application.php files for individual applications can now define a sitemapLinks() method to return additional links to add to the sitemap without having to generate an entire sitemap extension. This should only be used to return a small handful of static links, and sitemap extensions should be used to add a dynamic number of links.
    • Applications can now define a global.css which will automatically be loaded in streams and in searches to ensure you have the ability to apply custom styles to search results.
    • An unnecessary profile field validation check in the registration controller was removed.
    • Uninstalling an application will now remove attachment maps belonging to the application, allowing the attachments to be cleaned up if they are otherwise not being used.

    Changes affecting third-party developers and designers

    • jQuery has been updated to version 3.5, which has some breaking changes. However, we are also including jQuery Migrate which re-implements some older APIs while functionality is updated. Check the browser console while developing your applications and aim to resolve any JQMIGRATE messages that your app in particular generates. Migration messages generated by Invision Community and its dependencies will be fixed over time. See https://github.com/jquery/jquery-migrate/blob/master/warnings.md for more information.
    • All AdminCP controllers now require CSRF-protection as on the front-end.
    • File storage handlers must now handle chunked uploading differently. See \IPS\File\FileSystem::chunkInit(), \IPS\File\FileSystem::chunkProcess() and \IPS\File\FileSystem::chunkFinish() - these 3 need to be implemented, replacing the previous chunkAppend() method.
    • Building applications will now store a flag for which module is set as the default, and that module will be set as the default module when users install your application (or upgrade your application, if no other module is already set as the default). The default module will not be reset or changed during upgrades automatically. If you must change a default module during the upgrade, you may do so manually with a database query, however be mindful that administrators may legitimately wish to adjust which module is the default in any given application.
    • Pages comment and review loading now enforce that the comment or review belongs to the specified database. You cannot use \IPS\cms\Records\Comment::load() to load a comment or \IPS\cms\Records\Review::load() to load a review, but must ensure the comment or review ID you are loading belongs to the class it is loaded through (e.g. if loading comment ID 1 and it belongs to database ID 1, you must now use \IPS\cms\Records\Comment1::load()).
    • Dynamic Charts now support the ability to download the generated data as CSV. Details here:
    • BBCode parsing is now considered deprecated, and may be enabled or disabled. If you must rely upon BBCode parsing occurring, you may need to parse content through \IPS\Text\LegacyParser instead of the general \IPS\Text\Parser class.
    • The ability to use SQLCALCFOUND_ROWS has been removed globally because it has been deprecated as of MySQL 8.0.17. If you relied on this functionality to fetch a total row count (i.e. for pagination purposes), you will need to update your code to explicitly run a count query to fetch the total row count separately.
    • Added a new parameter to \IPS\Content\Item::markRead() to force an update even if the content already appears to be read.
    • The postComplete() method for a Queue background task (if defined) was not previously called when preQueueData() returned NULL, which has changed. The postComplete() method will now be called, and a new parameter $processed can be checked to determine if the queue task did anything or not. If you define the postComplete() method for any Queue background tasks, you should add a second parameter $processed which defaults to TRUE.
    • A new variable was introduced in \IPS\Dispatcher\Controller to allow you to set specific controllers and controller actions as "non-content specific", so that google ads & co aren't served on this pages. Please keep this in mind for your custom controllers.
    • The \IPS\Helpers\Form\Node class was incorrectly relying on "view" permissions in some cases to determine if a node should be included in the form helper select box (even in areas like the AdminCP where the nodes should be available even if you cannot view them). This should not pose any issue for third parties, but you may wish to review your node helper instances and ensure all nodes are always shown when appropriate (e.g. nodes the administrator cannot view on the front end are still available for selection in the AdminCP when appropriate, or that they are not available to select when they shouldn't be selectable).
    • Applications built in Invision Community 4.5 will automatically remove deleted language strings when your application is upgraded.
    • A new background task PruneLargeTable has been added which can aid in pruning potentially large database tables.
    • The \IPS\Db::i()->delete() method can now accept an array for $statementColumn and will join the inner table on instead of using a subselect.
    • Some (but not all) implementations of loadFromUrl() previously performed permission checks, however these have been removed and it is now up to user-land code to perform these permission checks when needed.
    • An exception is now thrown if an invalid file storage exception is called in \IPS\File::get() when in development mode.
    • Added a $rowClasses param as the last param when creating a form field, that can be used to pass additional CSS classes to the form row template.
    • Added a urlencode and rawurlencode option for language strings which will urlencode/rawurlencode the entire language string that is returned.
    • Added a $currency parameter to \IPS\nexus\Package::price() to override default customer's currency.
    • Simplification of the .ipsResponsive classes to allow them to be used in a larger variety of cases.
    • Removed image dependency from .ipsStepBar allowing its color scheme to be edited via css.
    • Removed icomoon dependency from css. The icons which were created using this font have been replaced with FontAwesome and pure css equivalents. The icomoon files are still present, so they can be imported using custom.css if necessary.
    • A data-role attribute has been added to list items in .cAuthorPane_info, allowing for more accurate CSS targeting of author stats.
    • The padding and margin values under the .cSearchExpanded class have been replaced with a pseudo element. If you have modified this class or #elSearch, some minor adjustments may be required to ensure the alignment of your search form is correct in your theme.
    • Headers (.ipsWidgettitle, .ipsTypesectionTitle, etc) will now respect the font-family of the body element if the "Headline Font" setting is set to Default.
    • Changed the default font-family from a Helvetica stack to a system-ui stack.
    • Centralised display name checks in a new method \IPS\Login::usernameIsAllowed().
    • Added a new method \IPS\Text\Parser::hasContent() that determines if any actual content was supplied from an editor. This can be used in templates (for example) to adapt the layout depending on whether a node has a description or not.
    • New CSS utility families have been added: ipsFlex, ipsPad (updated to include more variants) and ipsMargin. All support responsive prefixes (md: and sm:) to control how the classes behave at different device sizes. For example, ipsFlex-fd:row sm:ipsFlex-fd:column would make an element flex-row by default, but flex-column on small screens. Similarly, ipsMargin_top sm:ipsMargin_top:half would apply 15px margin-top by default, but only 7px on small screens. See the CSS framework for complete class availability.
    • All hex values inside theme .css files have been replaced with {theme="setting"} equivalents, allowing for a more consistent color scheme, especially with dark themes.
    • The HTML structure for the navigation bar on .ipsLayout_minimal pages is now identical to regular pages.
    • Changed \IPS\Member::generateLetterPhoto() to a public method and added an option to return the letter and color, vs the entire SVG data string.
    • Changed polls to use the poll $url rather than the general form action in the pollForm template.
    • Added new font scale theme settings to keep typography on a fixed scale where appropriate. To aid usage, a new {fontsize} plugin tag is included, which accepts either a font scale size key (e.g. small, medium) or a number in pixels. The new global font scale setting will automatically be honored when the {fontsize} tag is used.
    • Added \IPS\Helpers\Form\Enum which can be used to display a ChecboxSet or Multi-Select box depending on the amount of options present on the form. Useful when Checkboxes are ideal UI, however the amount of options can be dynamic, which can cause issues when many options are present.
    • Applications and Plugins can now create language strings using \IPS\Lang::saveCustom(). The first parameter will now accept either a string or an instance of \IPS\Application for an Application, or an integer or an instance of \IPS\Plugin for a plugin.
    • CodeMirror Form Helpers can now accept a tagLinks option. When used, links (similar to links built in the header of the AdminCP) can be added to the headers for that specific section to allow direct linking to another area. Note, however, that if you need to perform AJAX functions, you will need to include that manually in any JavaScript controllers you implement on the form.
    • CodeMirror Form Helpers can now accept a tagSource option. This should be an \IPS\Http\Url instance, which will then load any tags via AJAX.
    • \IPS\Data\Store::i()->failedMailCount has been replaced with a new method \IPS\Email::countFailedMail() for a real time count
    • Settings have been added to themes to set a maximum logo size at large, medium and small device sizes.
    • The getQueryWhereClausemethod in Bulk Mail Extensions should return only a simple array with the where clause instead of a DB where clause with the parameter binding.
    • Applications and Plugins now have the ability to include Pages templates when they are built. The templates will be imported when the plugin/application is installed.
    • \IPS\File::get() now has a third parameter to accept an integer of the filesize if it is already known. This is a performance improvement for when filesize() is used.
    • If file storage contents are declared 'private' (and use S3 storage) the REST API will now return a signed URL for these resources.
    • The \IPS\Content\Content::urlFromIndexData() method now accepts a third parameter definining the do action, similar to the existing url() method.
    • Fixed an issue where the subnode flag may be lost when mass moving or deleting content.

    Deprecations

    • Core: Apc, Memcache, Wincache and Xcache caching engines, we recommend using Redis instead.
    • Core: We will no longer address any issues specific to Internet Explorer 11 and below and will not ensure compatability with those versions.
    • Core: BBCode parsing support - upgrading users will be asked during upgrade if they wish to retain BBCode parsing support, while new installations will have the option off by default. BBCode parsing may be removed entirely in a future release.
    • Commerce: Authorize.net Payment Gateway.
    • Commerce: Web Hosting & Domain support.
    • Downloads: REST API 'files' response in REST API, see /downloads/files/{id}/download instead.

  8. IPS Community Suite 4.4.10

    Released 02/04/2020


    Key Changes

    This is a maintenance release to fix bugs.

    Additional Information

    Core

    • Added support for PHP 7.4
    • Added support for [Emoji 12.0](https://emojipedia.org/emoji-12.0/) and [Emoji 12.1](https://emojipedia.org/emoji-12.1/) emojis
    • Removed support for Gfycat embeds due to ongoing unaddressed security concerns on their end.
    • Adjusted advertisement CSS classes to use a dynamic class name.
    • Added a reset to the "upgrade in progress" flag when the upgrader is reached but there are no applications to upgrade.
    • Added caching to the "Who's Online" widget.
    • Improved progress indicator in "Complete My Profile".
    • Improved ElasticSearch error logging.
    • Added an empty alt attribute to reaction images in streams, which validators may flag as invalid HTML.
    • Upgraded CKEditor to 4.13.1.
    • Upgraded PHPUserAgent to 0.15.0, which resolves an issue with detection of the latest Opera browser releases.
    • Updated Firefox & Edge logos on device management pages.
    • Disabled database read/write separation for tasks.
    • Disabled tasks being triggered by AJAX requests.
    • Blew Lindy's mind.
    • Fixed clubs showing up in some places when users did not have permission to access the clubs module.
    • Fixed signature edit field showing for moderators when editing a user when signatures are disabled globally.
    • Fixed an issue with member history logs when a user logs in from a new device but has not completed 2FA (when required).
    • Fixed a javascript error triggered by browser notifications on Android devices.
    • Fixed an issue where users that do not have permission to view Clubs, can still visit content item URL's directly.
    • Fixed display issues with coub.com embeds.
    • Fixed an issue detecting the visitor's country in some cases when using address form inputs.
    • Fixed an issue with dates adjusting incorrectly when crossing over DST threshold in some areas.
    • Fixed an issue using arrows in the editor after an emoji is inserted in some cases.
    • Fixed an issue where some items could be missing from the leaderboard.
    • Fixed an issue where disabled apps could still attempt to process custom URLs.
    • Fixed an issue paginating in tables when certain special characters were included in the URL.
    • Fixed an issue where cookies set by javascript designed to "stick" would expire in Jan 2020.
    • Fixed AdminCP notification that a member is validating not disappearing if the member is flagged as a spammer rather than banned directly.
    • Fixed SendGrid failing to work when using a dedicated IP pool.
    • Fixed an issue where non-required profile completion steps may not be shown after required steps in some cases.
    • Fixed an issue where re-entering the profile completion process after completing it once, but taking an action that requires completion again, may not place you on the correct profile completion step.
    • Fixed javascript errors preventing most javascript from working in IE11.
    • Fixed moderators encountering an error when removing a reaction from a profile status update or status reply made by another user.
    • Fixed an issue where a required profile completion step to supply values for profile fields that do not display on the a user's profile may result in endless loop.
    • Fixed an issue where a user will see an option to skip required profile completion steps, which will just reload the step.
    • Fixed multi-moderation actions so that they redirect back to the page you are currently on.
    • Fixed an issue that can occur when searching by member and changing between result pages.
    • Fixed an issue that caused images to not show properly in poll options.
    • Fixed an issue where sitemaps may show a distant past last modified date for content that doesn't have a valid last modified date.
    • Fixed an issue where animated GIF images may not be properly identified as animated.
    • Fixed an issue where profile photos would not be saved during profile completion if file uploads was the only available option.
    • Fixed an issue rebuilding topic content for areas such as Downloads and Pages that cross post to the forums.
    • Fixed an issue displaying certain locale-specific characters (such as the thousands separator, and the currency symbol) on Windows.
    • Fixes a visual issue on dropdowns in webkit-based browsers.
    • Fixed favicon icon not applying to the AdminCP correctly.
    • Fixed potential broken images when the image filename contained parenthesis characters.
    • Fixed the Safari Mask Icon not working in some server environments.
    • Fixed an issue where using long URL's in an announcement can cause a MySQL error.
    • Fixed an issue using custom WHERE clauses with an external database login handler.
    • Fixed unapproved comments incorrectly being counted on forums where the item has been moved and a link to the item has been left in its place.
    • Fixed an issue embedding Flickr albums in posts.
    • Removed 'nofollow' tag from status updates when member has no other content.

    Commerce

    • Added clarification that a billing address is required for automatic renewals when deleting the primary billing address.
    • Added a currency selector to the subscriptions listing.
    • Adjusted the payment method deletion process to prompt the administrator for confirmation if there are active PayPal Billing Agreements, and to cancel those Billing Agreements prior to deletion.
    • Fixed error approving or voiding transactions which were held for approval which were from a PayPal Billing Agreement.
    • Fixed an issue where the AdminCP notification indicating your PayPal payment gateway is not set up correctly may erroneously trigger.
    • Fixed an issue where custom fields may incorrectly show up when checking out as a guest while quick registration is enabled.
    • Fixed a possible error when applying changes to subscription plans to existing purchases.
    • Fixed an issue where converting a product with a tax to a subscription failed.
    • Fixed invoice title not showing for transactions in Authorize.Net's control panel.
    • Fixed possible error taking Authorize.Net payments
    • Fixed an issue where images from upsold products in the add to cart dialog may not be styled or sized correctly.
    • Fixed transactions using the "Manual (check, bank wire, etc.)" payment method not showing in the list of transactions requiring attention.
    • Fixed an issue where testing settings would just output the card types when using Braintree.
    • Fixed an error during the upgrade when no default currency is set.
    • Fixed an error that occurs when creating or editing a coupon code and unchecking the "No end date" option but not providing an end date.
    • Fixed an issue where profile completion could be triggered during checkout in some circumstances.
    • Fixed possibility of setting up Stripe without a valid webhook.
    • Fixed subscriptions bypassing the payment confirmation screen.
    • Fixed a styling issue with the Member Subscriptions widget.
    • Fixed a styling issue with the "Best Sellers" and "Latest Products" widgets in some cases.
    • Fixed referrals not working when the site is not accessible to guests.
    • Fixed an issue where checking a Braintree webhook URL from the Braintree control panel would report a 500 server error incorrectly.

    Converters

    • Improved the conversion process when disabling a conversion step that another step required to run first.
    • Added conversion of article tags to vBCMS.
    • Added conversion of extra article categories in vBCMS, extra categories will be converted as tags.
    • Added conversion of meta tag keywords and descriptions when converting records from vBCMS.
    • Reordered some background tasks that run after a conversion is complete to prevent an SQL error during processing.
    • Improved vBulletin 4 conversion to retain user validating status where possible.
    • Improved vBulletin conversions to convert more PMs where they may not have previously been converted (due to parent messages being deleted).
    • Improved URL redirects for some vBulletin URLs including Social Groups, Social Group Discussions & Blog Entries.
    • Fixed an issue where some vBulletin Blog comments may be skipped during conversion.
    • Fixed an exception that can occur if Pages was selected as a conversion, but all options were disabled.
    • Fixed product filters displaying in the store using the "internal" name instead of the "public" name.
    • Fixed IP address information not converting with vBulletin Blog.
    • Fixed certain user preferences not converting with vBulletin 4.
    • Fixed some PHP notices that can occur in vBCMS converter with specific data.
    • Fixed an issue where Gift Card email links may not work correctly when email statistics are enabled.
    • Removed URL redirection for vBCMS records since required data is not available to support this.

    Forums

    • Fixed an issue where the moderation history link wasn't shown for deleted topics.
    • Fix Safari not scrolling to the reply box when clicking the "Reply to this topic" button at the top of a topic.

    Downloads

    • Fixed REST API documentation showing the wrong endpoints for categories.
    • Fixed sidebar not showing Club content correctly when the "Show Club Content Areas" setting is set to "Throughout the community"

    Gallery

    • Fixed an issue submitting images with capitalized file extensions when movies have maximum allowed filesizes.
    • Fixed multiple issues adding, editing and repositioning image notes.
    • Fixed an incorrect gap between the tabs and reviews/comments while viewing an image.

    Pages

    • Improved database permission configuration forms to better indicate if a group won't be able to access the database due to page-level permissions.
    • Fixed bullet points using the wrong style (unfilled circle rather than filled circle) in database records.
    • Fixed a (potential) issue moving database records files when adjusting the file storage configuration method for database records.

    REST / OAuth

    • Fixed an uncaught exception in the member notifications REST API endpoint when an orphaned piece of content is present.
    • Fixed certain `notificationData` entries returning `NULL` in the member notifications REST API endpoint.
    • Fixed an issue where address lines in REST API calls may be returned as an object instead of an array.

    Third-Party / Developer / Designer Mode

    • Fixed an issue using the node form helper when not using `$titleLangPrefix` in the node model, and using apostrophies in a node's title.
    • Advertisements no longer use the .ipsAdvertisement_* class names, and instead use dynamic classnames unique to each community. Themes that restyle advertisements should update their CSS to use `.ips{expression="mb_ucfirst(\IPS\SUITE_UNIQUE_KEY)"}` instead.
    • Adjusted the abstract class definition for `\IPS\Content\Search\Index::hashesWithPermission()` to match the docblock.
    • Fixed an issue where Database table helpers could allow a blank advanced search value in specific situations.
    • Fixed an error using reviews with content items but not containers when post before registering is enabled.
    • Removed an extra parameter being passed to `_comments()` in some cases which could interfer with third party plugins.
    • Removed some unused code in `\IPS\Output::error()`.

  9. This tutorial explains how to backup and restore MySQL or MariaDB databases from the command line using the mysqldump utility.

    The backup files created by the mysqldump utility are basically a set of SQL statements that can be used to recreate the original database. The mysqldump command can also generate files in CSV and XML format.

    You can also use the mysqldump utility to transfer your MySQL database to another MySQL server.

    If you don't backup your databases, a software bug or a hard-drive failure could be disastrous. To help save you lots of time and frustration, it is strongly recommended that you take the precaution of regularly backing up your MySQL databases.

    Mysqldump Command Syntax

    Before going into how to use the mysqldump command, let's start by reviewing the basic syntax.

     

    The mysqldump utility expressions take the following form:

    mysqldump [options] > file.sql
    
    Copy

    To use the mysqldump command the MySQL server must be accessible and running.

    Backup a Single MySQL Database

    The most common use case of the mysqldump tool is to backup a single database.

    For example, to create a backup of the database named database_name using the user root and save it to a file named database_name.sql you would run the following command:

    mysqldump -u root -p database_name > database_name.sql

    You will be prompted to enter the root password. After successful authentication, the dump process will start. Depending on the database size, the process can take some time.

    If you are logged in as the same user that you are using to perform the export and that user does not require a password, you can omit the -u and -p options:

    mysqldump database_name > database_name.sql

    Backup Multiple MySQL Databases

    To backup multiple MySQL databases with one command you need to use the --database option followed by the list of databases you want to backup. Each database name must be separated by space.

     

     

     

    mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

    The command above will create a dump file containing both databases.

    Backup All MySQL Databases

    Use the --all-databases option to back up all the MySQL databases:

    mysqldump -u root -p --all-databases > all_databases.sql

    Same as with the previous example the command above will create a single dump file containing all the databases.

    Backup all MySQL databases to separate files

    The mysqldump utility doesn't provide an option to backup all databases to separate files but we easily achieve that with a simple bash FOR loop:

     

    for DB in $(mysql -e 'show databases' -s --skip-column-names); do
        mysqldump $DB > "$DB.sql";
    done
    
    Copy

    The command above will create a separate dump file for each database using the database name as the filename.

     

    Create a Compressed MySQL Database Backup

    If the database size is very large it is a good idea to compress the output. To do that simply pipe the output to the gzip utility, and redirect it to a file as shown below:

    mysqldump database_name | gzip > database_name.sql.gz

    Create a Backup with Timestamp

    If you want to keep more than one backup in the same location, then you can add the current date to the backup filename:

    mysqldump  database_name > database_name-$(date +%Y%m%d).sql

    The command above will create a file with the following format database_name-20180617.sql

    Restoring a MySQL dump

    You can restore a MySQL dump using the mysql tool. The command general syntax is as follows:

    mysqld  database_name < file.sql

    In most cases you'll need to create a database to import into. If the database already exists, first you need to delete it.

     

     

    In the following example the first command will create a database named database_name and then it will import the dump database_name.sql into it:

    mysql -u root -p -e "create database database_name";mysql -u root -p database_name < database_name.sql

    Restore a Single MySQL Database from a Full MySQL Dump

    If you backed up all your databases using the -all-databases option and you want to restore a single database from a backup file which contains multiple databases use the --one-database option as shown below:

    mysql --one-database database_name < all_databases.sql

    Export and Import a MySQL Database in One Command

    Instead of creating a dump file from one database and then import the backup into another MySQL database you can use the following one-liner:

    mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

    The command above will pipe the output to a mysql client on the remote host and it will import it into a database named remote_database_name. Before running the command, make sure the database already exists on the remote server.

     

     

    Automate Backups with Cron

    Automating the process of backing up the databases is as simple as creating a cron job what will run the mysqldump command at specified time.

    To set up automated backups of a MySQL database using cronjob, follow the steps below:

    1. Create a file named .my.cnf in your user home directory:

      sudo nano ~/.my.cnf

      Copy and paste the following text into the .my.cnf file.

      [client]
      user = dbuser
      password = dbpasswd
      Copy

      Do not forget to replace dbuser and dbpasswdwith the database user and user's password.

    2. Restrict permissions of the credentials file so that only your user has access to it:

      chmod 600 ~/.my.cnf
    3. Create a directory to store the backups:

      mkdir ~/db_backups
    4. Open your user crontab file:

      crontab -e

      Add the following cron job that will create a backup of a database name mydb every day at 3am:

      0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql

      Do not forget to replace username with your actual user name.

    You can also create another cronjob to delete any backups older than 30 days:

    find /path/to/backups -type f -name "*.sql" -mtime +30 -delete
    
    Copy

    Of course, you need to adjust the command according to your backup location and file names. To learn more about the find command check our How to Find Files in Linux Using the Command Line guide.

    Conclusion

    This tutorial covers only the basics, but it should be a good starting for anyone who wants to learn how to create and restore MySQL databases from the command line using the mysqldump utility.

     

     

     

     


  10. IPS Community Suite 4.4.9.1

    Released 12/20/2019

    This is a security release and we recommend all clients upgrade as soon as possible.

    Key Changes

    This is a maintenance release to fix security reports since 4.4.9.

    Additional Information

    Security

    • Block binary/octal/hex/decimal based hostnames from being submitted in forms that could trigger an SSRF.
    • Gfycat OEmbed endpoint could create XSS. Also informed Gfycat of issue. - Thanks to René Kroka - https://renekroka.cz for reporting this issue.
    • Addition attachment permission checks when downloading attachments.

  11. IPS Community Suite 4.4.9

    Released 12/02/2019


    Key Changes

    Version 4.4.9 is a maintenance update to fix critical issues reported since 4.4.8.

    Additional Information

    Core

    • Added ability to search for members based on custom profile fields with type "Checkbox Set".
    • Improved the warning form to make it clearer when a preset action cannot be overridden.
    • Updated PhpUserAgent to 0.14.0 for 'Edgium' support.
    • Fixed an issue where duplicate quote/mention/embed notifications could be sent when editing content.
    • Fixed an issue where you could submit the form to update your profile information with no date set for your birthday, resulting in your form submission being ignored.
    • Fixed an unclear page title when searching for members.
    • Fixed a potential issue sending digests when cron is used to run tasks.
    • Fixed an issue with dates adjusting incorrectly when crossing over DST threshold in some areas.
    • Fixed an issue where some administrators may not be able to manage applications in the AdminCP in some permission configurations.
    • Fixed a MySQL 8.0.17 compatibility issue with the 4.0.0 Alpha 1 upgrade step.
    • Fixed an issue where attachment filename text could be edited in the editor.
    • Fixed an issue with status update pagination not appearing correctly in some cases.
    • Fixed profile photo uploads allowing you to upload more than one file without automatically removing the previously uploaded file.

    Blogs

    • Fixed an issue where draft entries submitted in private/closed clubs may not be visible by club owner or moderators.
    • Fixed an issue where club blog entries may not be visible to global moderators/administrators when they have permission to view all club content.

    Forums

    • Removed trendlines from charts in the AdminCP to reduce confusion.

    Commerce

    • Fixed a situation where duplicate display names were allowed when checking out as a guest and the user was not prompted for their display name.
    • Fixed Stripe webhooks potentially reporting an error.
    • Fixed an issue with generating renewal invoices via the task system.
    • Fixed an issue where custom fields may incorrectly show up when checking out as a guest while quick registration is enabled.
    • Fixed a possible error when applying changes to subscription plans to existing purchases.

    Gallery

    • Fixed a styling issue for widgets not set to show on all devices in some cases on pages.
    • Fixed an issue where the sitemap could be stopped being rebuilt.

    Pages

    • Changed categories in databases that do not allow direct record submissions to not output a "noindex" <meta> robots tag.
    • Changed database category sitemap files to include empty categories if they contain subcategories.
    • Like 1

  12. IPS Community Suite 4.4.8

    Released 11/12/2019


    Key Changes

    Version 4.4.7 is a maintenance update to fix critical issues reported since 4.4.7.

    Additional Information

    Core

    • Upgraded CodeMirror to 5.49.0.
    • Upgraded CKEditor to 4.13.
    • Increased the amount of text that can be stored within an announcement.
    • Fixed merging members creating duplicate follow records.
    • Fixed an issue where accounts banned as a result of the spam service may be deleted automatically if email validation is enabled, allowing the user to register again.
    • Fixed an issue embedding Twitch clips in some cases.
    • Fixed a performance issue with Elasticsearch and posting in large topics.
    • Fixed an issue where content items would stop showing in streams when deleting the last comment on that content item and using Elasticsearch.
    • Fixed a CSRF error paginating through clubs after changing your view preference.
    • Fixed floated images inside spoilers breaking out of the spoiler box.
    • Fixed an issue with club breadcrumbs on mobile devices when the "Overview" tab is not the default tab for the club.
    • Fixed an issue confirming guests have not reviewed an item when they have used the "post before registering" feature.
    • Fixed an issue where the submit button on the account validation screen could be clicked multiple times, resulting in more than one confirmation email being sent.
    • Fixed possible issue downloading the member list export on larger sites.
    • Fixed a styling issue viewing the list of members who were not initially included in a member export.
    • Fixed an issue where club nodes weren't shown in the node selector while creating custom streams in the ACP.
    • Fixed a possible error in the menu manager where editing a deleted menu item would throw an exception.
    • Fixed an issue where email addresses weren't saved for accounts created via non-default login methods when allowed domains were defined.
    • Fixed a bug where certain email notifications triggered by guests may show incorrect verbiage in the email content.
    • Fixed two issues where replying to Status Posts or hiding/unhiding them could fail when Elastic Search is being used.
    • Fixed an issue saving custom chart views in the AdminCP when a lot of nodes were stored.
    • Fixed an issue updating date ranges for custom chart views in the AdminCP in some cases.
    • Fixed a styling issue for widgets not set to show on all devices in some cases.
    • Fixed an issue where cancelling editing a post with a spoiler results in the spoiler no longer working.
    • Fixed an issue where spotify links wouldn't embed.
    • Fixed some missing friendly URLs.
    • Fixed a niche error where a wrong message can be displayed if there is a network failure whilst browsing status updates.
    • Fixed an issue where multiple New User Awaiting Validation notifications can be sent when using User then Admin Validation.

    Forums

    • Fixed an issue where multipage topics that have been read can be marked as unread when visiting a page other than the last.
    • Fixed a styling issue in QA forums when no rows are shown.
    • Fixed an issue where an incorrect meta description tag may persist when navigating through the forums.

    Gallery

    • Fixed an issue which made it impossible to move images into albums set to allow submissions from the public, specific members, specific groups, and club members.
    • Fixed promote button not showing on non-lightbox Gallery image view fallback page.

    Commerce

    • Fixed potential double charges if using Stripe.
    • Fixed customer name showing as random characters in Stripe when a guest purchases something and opts to save their card on file.
    • Fixed Hosting Error ACP Notifications causing an error when viewing the notifications page.
    • Fixed an issue when a guest makes a donation.
    • Fixed the missing overlay title while creating & editing an invoice note.
    • Fixed possible timeout error when generating invoices manually in the AdminCP.
    • Fixed an issue where purchases which wouldn't require a billing address couldn't be marked as paid.
    • Fixed an issue where club joining fees may be shown without tax.

    Pages

    • Fixed an issue previewing feed blocks in the AdminCP when restricting the feed by author.
    • Fixed an issue where "Records" would be shown in database notification emails if categories were not being used for the database.

    Calendar

    • Fixed manual iCalendar uploads requiring a venue to be specified if venues are enabled.
    • Fixed an error importing ics files in the AdminCP if a venue is specified.

    Converters

    • Added support for vBulletin 5.5.3+ conversions.
    • Added support for XenForo 2.1.x conversions.
    • Fixed issues with running conversions on MySQL 8.0.17 or newer.
    • Fixed an issue converting from MyBB where PMs would not reflect the correct conversation starter.
    • Fixed an issue where members may not be correctly assigned to groups that were added during the conversion.
    • Fixed a bad log reference when converting from Gallery if the image is invalid.
    • Fixed an issue where an error may be triggered when installing a new application and attempting to start a new conversion.
    • Fixed an issue converting WordPress post thumbnails to Pages record image.

    Third-Party / Developer / Designer Mode

    • Centralized the breadcrumb generation method for club nodes to reduce code duplication and ensure breadcrumb consistency.
    • Changed `\IPS\Http\Url::ips()` to be declared as `final`, so hooks cannot override it.
    • Fixed an issue using custom table helpers without quicksearch where the result and page counts may inadvertently get reset.
    • Fixed an issue where cached unapproved/hidden review counts when merging content items were not adjusted properly. **You may wish to rebuild these counts in an upgrade routine within third party applications that support reviews and merging of content items.**
    • Fixed an issue where the hidden status when creating a new review may not be set properly during creation when calling `\IPS\Content\Review::create()`.
    • Minor code clarification where curly braces were omitted (while unnecessary, some found the code confusing to read).
    • Like 1

  13.  

     

    f2c8da0f-a904-4569-b39d-1faea15be57c.jpg
     

    Πώς ένας Instagram λογαριασμός θα μπορούσε να παραβιαστεί σε λιγότερο από 10 λεπτά


    6a1411ad-032f-4ca2-9351-a84d7125732f.jpg



    Πρόσφατα απονεμήθηκαν 30.000 δολλάρια σε ένα ερευνητή ασφάλειας ο οποίος ανακάλυψε μια σοβαρή ευπάθεια η οποία θα μπορούσε ενδεχομένως να έχει θέσει σε κίνδυνο παραβίασης οποιονδήποτε Instagram λογαριασμό.

    Καθώς το Facebook και το Instagram προσφέρουν υψηλές αμοιβές σε όσους ανακαλύπτουν ευπάθειες στους λογαριασμούς τους, ένας Ινδός ερευνητής ασφαλείας, ο Laxman Muthiyah, επέλεξε να εξετάσει την πλατφόρμα του Instagram.

    O Muthiyah διερεύνησε το κατά πόσον μπορεί να υπάρχει μια ευπάθεια στην διαδικασία με την οποία το Instagram χειρίζεται τα αιτήματα επαναφοράς του κωδικού πρόσβασης για τους χρήστες που έχουν τον έχουν ξεχάσει.
    Ο ερευνητής διαπίστωσε ότι όταν οι χρήστες ζητούν επαναφορά του κωδικού πρόσβασης μέσω του link του Instagram, ο ιστότοπος στέλνει ένα email στον χρήστη.

    9b1352d1-e025-44c7-8108-357250a7fbcf.jpeg


    Μετά από δοκιμές, ο Mutiyah δεν μπόρεσε να βρει κανένα κενό ασφαλείας στη διαδικασία και έτσι έστρεψε την προσοχή του στο πώς οι χρήστες των smartphones ανακτούν την πρόσβαση στους Instagram λογαριασμούς τους.
    Αυτό που βρήκε ήταν ότι το Instagram δίνει την δυνατότητα  χρήστες που έχουν κλειδωθεί να ζητήσουν την αποστολή ενός εξαψήφιου μυστικού κωδικού ασφαλείας στο κινητό τους τηλέφωνο ή στο email τους. Εάν εισαχθεί αυτός ο κωδικός πρόσβασης, ο χρήστης θα μπορέσει να ανακτήσει την πρόσβαση στον Instagram λογαριασμό του.

    Θεωρητικά, εάν ένας χάκερ μπορούσε να αποκτήσει πρόσβαση στον εξαψήφιο κωδικό ασφαλείας, θα μπορούσε να σπάσει τον Instagram λογαριασμό (και να επαναφέρει τον κωδικό πρόσβασης κλειδώνοντας ταυτόχρονα τον νόμιμο κάτοχο).
    Αυτός ο κωδικός πρόσβασης θα μπορούσε ενδεχομένως να κλαπεί εάν ένας χάκερ κατάφερνε να αποκτήσει πρόσβαση στον email λογαριασμό του θύματος ή αν είχε πάρει τον έλεγχο του κινητού τηλεφώνου του θύματός του μέσω της μεθόδου SIM swap scam. Ωστόσο, ο Mutiyah αναρωτήθηκε αν θα μπορούσε να υπάρξει και  άλλος τρόπος να σπάσει κάποιος έναν λογαριασμό στην περίπτωση που καμία από τις επιλογές αυτές δεν είναι διαθέσιμη.

    Ο Mutiyah συνειδητοποίησε ότι το μόνο που αρκεί να κάνει  ο χάκερ είναι να δώσειι τον σωστό εξαψήφιο κωδικό - που είναι ένας οποιοσδήποτε συνδυασμός μεταξύ 000000 και 999999 – πριν εκπνεύσουν τα δέκα λεπτά που ο συγκεκριμένος κωδικός είναι αποδεκτός από το σύστημα.
    Για τον αριθμό των ψηφίων αυτών απαιτούνται περίπου ένα εκατομμύριο αριθμοί που πρέπει να εισαχθούν μέσα σε δέκα λεπτά, για να είναι εφικτή η αλλαγή του κωδικού ενός Instagram λογαριασμού.
    Μέσω των likes του  Instagram μπορεί να τρέξει ένας κώδικας με τον οποίο να δίνονται ταχύτατα διάφοροι συνδυασμοί του κωδικού μέχρι να βρεθεί ο σωστός.  Ως τρόπο άμυνας, η πλατφόρμα έχει την δυνατότητα να ανιχνεύσει την κίνηση αυτή και επιβραδύνει διαρκώς τις επόμενες προσπάθειες μέχρις ότου λήξει το χρονικό διάστημα των δέκα λεπτών.
    Στις δοκιμές του ο Mutiyah είδε ότι, από τις 1000 προσπάθειες που έστειλε για να μαντέψει τον κωδικό ασφαλείας ενός Instagram λογαριασμού, είχε άμεση απάντηση στις 250 ενώ στις επόμενες 750 η απάντηση καθυστερούσε.

    Ωστόσο, μετά από μερικές επιπλέον  ημέρες δοκιμής,  ο ερευνητής κατάφερε να ανακαλύψει ότι ο μηχανισμός καθυστέρησης της απάντησης του Instagram θα μπορούσε να παρακαμφθεί εάν άλλαζε η IP διεύθυνση του υπολογιστή που έστελνε το αίτημα (με άλλα λόγια, να μην χρησιμοποιεί τον ίδιο υπολογιστή για να προτείνει τον κώδικα ανάκτησης)

        «Η αποστολή ταυτόχρονων αιτημάτων χρησιμοποιώντας διαφορετικές IP  διευθύνσεις μου επέτρεψε να στείλω ένα μεγάλο αριθμό αιτήσεων χωρίς χρονικό περιορισμό στην απάντηση. Ο αριθμός των αιτημάτων που μπορούμε να στείλουμε εξαρτάται από τον αριθμό των ταυτόχρονων αιτήσεων και τον αριθμό των IP διευθύνσεων που χρησιμοποιούμε. Δεδομένου ότι ο κωδικός λήγει σε 10 λεπτά, αυτό κάνει την επίθεση ακόμη πιο δύσκολη. Τελικά χρειαστήκαμε γύρω στις 1.000 IPs για να ολοκληρώσουμε την επίθεση.»

    Ο Mutiyah λέει ότι χρησιμοποίησε 1.000 διαφορετικές μηχανές και IPs  για να πετύχει την επίθεση και στις δοκιμές του έστειλε περίπου 200.000 αιτήματα. Δημιούργησε  μάλιστα και ένα YouTube βίντεο για να αποδείξει την επίθεση του.
    dcff6beaaeaa54d7e331b064c50db183.png
     
     

    Φυσικά, ο αριθμός των 200.000 αιτημάτων απέχει πολύ από το 1 εκατομμύριο που είναι ο αριθμός των συνδυασμών που απαιτείται για να καλυφθούν όλα τα ψηφία του κωδικού.

    Η έρευνα του Mutiyah καταλήγει στο συμπέρασμα ότι σε μια πραγματική επίθεση θα χρειαστούν περίπου 5.000 IP διευθύνσεις για την επιτυχία της επίθεσης.  Αν και αυτό ακούγεται σαν ένας μεγάλος αριθμός, αυτό μπορεί πράγματι να επιτευχθεί εύκολα με χαμηλό σχετικά κόστος (ο Mutiyah λέει το κόστος μπορεί να είναι και γύρω στα 150 δολλάρια αν χρησιμοποιηθεί  εάν χρησιμοποιηθεί ένας cloud provider  όπως η Google ή η Amazon).

    Είναι εύκολο να φανταστεί κανείς ότι μια τέτοια τεχνική θα κινήσει το ενδιαφέρον σε πολλούς χάκερ που θα ήθελαν να αποκτήσουν πρόσβαση σε Instagram λογαριασμούς και θα ήταν διατεθειμένοι να πληρώσουν περισσότερα από τα 30.000 δολλάρια που έλαβε ο Muthiyah ως ανταμοιβή.

    Σας υπενθυμίζουμε ότι είναι απαραίτητο να ασφαλίζετε τους λογαριασμούς σας με ισχυρούς και κωδικούς πρόσβασης και για να ενεργοποιείτε όπου είναι δυνατό ττην μέθοδο της two-factor authentication.

  14. IPS Community Suite 4.4.6

    Released 08/19/2019

    This is a security release and we recommend all clients upgrade as soon as possible.

    Key Changes

    Version 4.4.6 is a maintenance update to fix issues reported since 4.4.5.

    Additional Information

    Security

    • Fixed an issue where a malicious user may be able to identify the full path to a file uploaded to a custom field.

    Core

    • Added support for MySQL 8.
    • Improved security headers on error pages.
    • Changed the "Who follows this" page to instruct bots not to index the page for SEO purposes.
    • Moved the Club Members Box to the sidebar when the club information are shown in the sidebar.
    • Fixed an error visiting the full notifications screen when the user has no notifications.
    • Fixed an issue where old messenger links may not redirect correctly.
    • Fixed an issue where new comment notifications can show an incorrect read status.
    • Fixed club sorting preference being lost when navigating to another page of clubs.
    • Fixed an issue where the "Bypass word and link filters" setting was not honored for links.
    • Fixed attachments not being properly claimed when added to a Staff Directory member entry.
    • Fixed an issue where reordering social profiles may not show the reordered list after saving without reloading the page.
    • Fixed a potential error when an invalid sort parameter is passed in to certain pages.
    • Fixed an issue where certain tables of data may show an incorrect number of pages when filtering the table.
    • Fixed the Leaderboard popular content inconsistency when using ElasticSearch.
    • Fixed an issue where Pages blocks wouldn't show in the configuration form when using the block manager.
    • Fixed an issue where creating a club feature could result in a DB exception.
    • Fixed broken ACP tables on Internet Explorer 11.
    • Fixed an issue where Status Posts couldn't be deleted.
    • Fixed an issue where 0B may be displayed in place of the real Redis maximum memory amount on the support overview page.
    • Fixed an issue where using REDIS as session storage would return the wrong members for the online list.
    • Fixed an issue with lazy-loading where images with a custom aspect ratio set did not honor the ratio after loading.

    REST & OAuth

    • Fixed OAuth Logins being broken because of a missing DB column.

    Blogs

    • Fixed blog entries from clubs showing on the Blog applications Grid View when the "Show Club Content Areas" setting is set to "Only Within Clubs".
    • Fixed an error that can occur with some configurations when attempting to add or move a blog entry.

    Pages

    • Fixed an issue where the wrong user may be notified of Pages database records being embedded in other content areas.
    • Fixed an issue where attachments in newly submitted database records would not be used when embedding records in other areas of the software.
    • Fixed an issue with Schema.org structured data tags in Pages when the site has a logo image applied to the theme.
    • Fixed an error searching databases in the AdminCP using the quicksearch input on the database listing page.
    • Fixed an issue in the Pageurl Output Extension which was catching a not existing exception.

    Gallery

    • Fixed media sound continuing to play after closing the lightbox.
    • Fixed an error that can occur when attempting to view disk space statistics when there are none.

    Calendar

    • Fixed an issue where all day ranged events reflect the wrong event end date in iCalendar exports.
    • Adjusted ical import process to ignore WKST values of 'MO' (which is the default) to reduce false-positive error reports.

    Converters

    • Fixed some issues converting MyBB content including profile fields, avatars & attachments.

    Commerce

    • Added ability for administrator to choose what to do after a dispute is won (previously would automatically re-approve the transaction).
    • Fixed an issue where the tax name in invoice emails could be missing.
    • Fixed potential uncaught exception if trying to view a product in the AdminCP that doesn't exist.
    • Fixed an issue where the description of new payment gateways wasn't saved successfully.

    Third-Party / Developer / Designer Mode

    • Fixed an issue using the node form helper when not using $titleLangPrefix in the node model, and using apostrophies in a node's title.
    • Fixed an issue where the wrong member's AdminCP notification dismissals were referenced in \IPS\core\AdminNotification::notificationIdsForMember().
    • Fixed an issue where Nodes that do not implement permissions may still try to check them, resulting in an error in some situations.

    Changes affecting third-party developers and designers

    • Added an ID to the mobile navigation sign in link elSigninButton_mobile.
    • All columns named member must now be escaped with backticks when querying the database in order to support MySQL 8.

  15. 83 useful Linux commands

     

    Enterprise administrators and managers who use this guide of essential Linux commands, utilities and tools will find ways to manage files, get process status updates and more.

     

    Linux administrators cannot live by the GUI alone. That's why we've compiled useful Linux commands into this convenient guide.

    By learning how to use a few simple tools, command-line cowards can become scripting commandos and get the most out of Linux by executing kernel and shell commands.

    1. alias
      The alias command is a way to run a command or a series of Unix commands using a shorter name than those that are usually associated with such commands.
    2. apt-get
      The apt-get tool automatically updates a Debian machine and installs Debian packages/programs.
    3. AWK, Gawk
      AWK is a programming language tool used to manipulate text. The AWK utility resembles the shell programming language in many areas, but AWK's syntax is very much its own. Gawk is the GNU Project's version of the AWK programming language.
    4. bzip2
      A portable, fast, open source program that compresses and decompresses files at a high rate, but that does not archive them.
    5. cat
      A Unix/Linux command that can read, modify or concatenate text files. The cat command also displays file contents.
    6. cd
      The cd command changes the current directory in Linux and can conveniently toggle between directories. The Linux cd command is similar to the CD and CHDIR commands in MS-DOS.
    7. chmod
      The chmod command changes the permissions of one or more files. Only the file owner or a privileged user can change the access mode.
    8. chown
      The chown prompt changes file or group ownership. It gives admins the option to change ownership of all the objects within a directory tree, as well as the ability to view information on the objects processed.
    9. cmp
      The cmp utility compares two files of any type and writes the results to the standard output. By default, cmp is silent if the files are the same. If they differ, cmp reports the byte and line number where the first difference occurred.
    10. comm
      Admins use comm to compare lines common to file1 and file2. The output is in three columns, from left to right: lines unique to file1, lines unique to file2 and lines common in both files.
    11. cp
      The cp command copies files and directories. Copies can be made simultaneously to another directory even if the copy is under a different name.
    12. cpio
      The cpio command copies files into or out of a cpio or tar archive. A tar archive is a file that contains other files, plus information about them, such as their file name, owner, timestamps and access permissions. The archive can be another file on the disk, a magnetic tape or a pipe. This Linux command also has three operating modes: copy-out, copy-in and copy-pass. It is also­ a more efficient alternative to tar.
    13. CRON
      CRON is a Linux system process that executes a program at a preset time. To use a CRON script, admins must prepare a text file that describes the program and when they want CRON to execute it. Then, the crontab program loads the text file and executes the program at the specified time.
    14. cURL
      Admins use cURL to transfer a URL. It is useful for determining if an application can reach another service and how healthy the service is.
    15. declare
      The declare command states variables, gives them attributes or modifies the properties of variables.
    16. df
      This command displays the amount of disk space available on the file system containing each file name argument. With no file name, the df command shows the available space on all the currently mounted file systems.
    17. echo
      Use echo to repeat a string variable to standard output.
    18. enable
      The enable command stops or starts printers and classes.
    19. env
      The env command runs a program in a modified environment or displays the current environment and its variables.
    20. eval
      The eval command analyzes several arguments, concatenates them into a single command and reports on that argument's status.
    21. exec
      This function replaces the parent process with any subsequently typed command. The exec command treats its arguments as the specification of one or more subprocesses to execute.
    22. exit
      The exit command terminates a script and returns a value to the parent script.
    23. expect
      The expect command talks to other interactive programs via a script and waits for a response, often from any string that matches a given pattern.
    24. export
      The export command converts a file into a different format than its current format. Once a file is exported, it can be accessed by any application that uses the new format.
    25. find
      The find command searches the directory tree to locate particular groups of files that meet specified conditions, including -name, -type, -exec, -size, -mtime and -user.
    26. forwhile
      The for and while commands execute or loop items repeatedly as long as certain conditions are met.
    27. free
      With the free command, admins can see the total amount of free and used physical memory and swap space in the system, as well as the buffers and cache used by the kernel.
    28. gawk
      See AWK entry.
    29. grep
      The grep command searches files for a given character string or pattern and can replace the string with another. This is one method of searching for files within Linux.
    30. gzip
      This is the GNU Project's open source program for file compression that compresses webpages on the server end for decompression in the browser. This is popular for streaming media compression and can simultaneously concatenate and compress several streams.
    31. history
      The history function shows all the commands used since the start of the current session.
    32. ifconfig
      The ifconfig command configures kernel-resident network interfaces at boot time. It is usually only needed when debugging or during system tuning.
    33. ifup
      With ifup, admins can configure a network interface and enable a network connection.
    34. ifdown
      The ifdown command shuts down a network interface and disables a network connection.
    35. iptables
      The iptables command allows or blocks traffic on a Linux host and can prevent certain applications from receiving or transmitting a request.
    36. kill
      With kill signals, admins can send a specific signal to a process. It is most often used to safely shut down processes or applications.
    37. less
      The less command lets an admin scroll through configuration and error log files, displaying text files one screen at a time with backward or forward navigation available.
    38. locate
      The locate command reads one or more databases and writes file names to match certain output patterns.
    39. lft
      The lft command determines connection routes and provides information to debug connections or find a box/system location. It also displays route packets and file types.
    40. ln
      The ln command creates a new name for a file using hard linking, which allows multiple users to share one file.
    41. ls
      The ls command lists files and directories within the current working directory, which allows admins to see when configuration files were last edited.
    42. lsof
      Admins use lsof to list all the open files. They can add -u to find the number of open files by username.
    43. lsmod
      The lsmod command displays a module's status within the kernel, which helps troubleshoot server function issues.
    44. man
      The man command allows admins to format and display the user manual that's built into Linux distributions, which documents commands and other system aspects.
    45. more
      Similar to less, more pages through text one screen at a time but has limitations on file navigation.
    46. mount
      This command mounts file systems on servers. It also lists the current file systems and their mount locations, which is useful to locate a defunct drive or install a new one.
    47. mkdir
      Linux mkdir generates a new directory with a name path.
    48. neat
      This is a Gnome GUI tool that allows admins to specify the information needed to set up a network card.
    49. netconfig/netcfg
      Admins can use netconfig to configure a network, enable network products and display a series of screens that ask for configuration information.
    50. netstat
      This command provides information and statistics about protocols in use and current TCP/IP network connections. It is a helpful forensic tool for figuring out which processes and programs are active on a computer and are involved in network communications.
    51. nslookup
      A user can enter a host name and find the corresponding IP address with nslookup. It can also help find the host name.
    52. od
      The od command dumps binary files in octal -- or hex/binary -- format to standard output.
    1. passwd
      Admins use passwd to update a user's current password.
    2. ping
      The ping command verifies that a particular IP address exists and can accept requests. It can test connectivity and determine response time, as well as ensure an operating user's host computer is working.
    3. ps
      Admins use ps to report the statuses of current processes in a system.
    4. pwd
      The print working directory (pwd) command displays the name of the current working directory.
    5. rcp
      Short for remote copy program, this prompt lets users copy files to or from a remote computer or between remote systems.
    1. read
      The read command interprets lines of text from standard input and assigns values of each field in the input line to shell variables for further processing.
    2. rsync
      This command syncs data from one disk or file to another across a network connection. It is similar to rcp but has more options.
    3. screen
      The GNU screen utility is a terminal multiplexor, where a user can use a single terminal window to run multiple terminal applications or windows.
    4. sdiff
      Admins use sdiff to compare two files and produce a side-by-side listing indicating lines that are dissimilar. The command then merges the files and outputs the results to the outfile.
    5. sed
      The sed utility is a stream editor that filters text in a pipeline, distinguishing it from other editors. It takes text input, performs operations on it and outputs the modified text. This command is typically used to extract part of a file using pattern matching or to substitute multiple occurrences of a string within a file.
    6. service
      This command is the quickest way to start or stop a service, such as networking.
    7. shutdown
      The shutdown command turns off the computer and can be combined with variables such as -h for halt after shutdown or -r for reboot after shutdown.
    8. slocate
      Like locate, slocate -- or secure locate -- provides a way to index and quickly search for files, but it can also securely store file permissions and ownership to hide information from unauthorized users.
    9. Snort
      Snort is an open source network intrusion detection system and packet sniffer that monitors network traffic. It looks at each packet to detect dangerous payloads or suspicious anomalies. Snort is based on libpcap.
    10. sort
      This command sorts lines of text alphabetically or numerically according to the fields. Users can input multiple sort keys.
    11. sudo
      The sudo command lets a system admin give certain users the ability to run some -- or all -- commands at the root level and logs all the commands and arguments.
    12. SSH
      Secure Socket Shell (SSH) is a command interface for secure remote computer access and is used by network admins to remotely control servers.
    1. tar
      The tar command lets users create archives from a number of specified files or to extract files from a specific archive.
    2. tail
      The tail command displays the last few lines of the file. This is particularly helpful for troubleshooting code because admins don't often need all the possible logs to determine code errors.
    1. TOP
      Technical Office Protocol (TOP) is a set of protocols for networks that performs distributed information processing and displays the tasks on the system that take up the most memory. TOP can sort tasks by CPU usage, memory usage and runtime.
    2. touch
      Admins can create a blank file within Linux with the touch command.
    3. tr
      This command translates or deletes characters from a text stream. It writes to a standard output, but it does not accept file names as arguments -- it only accepts input from standard input.
    4. traceroute
      The traceroute function determines and records a route through the internet between two computers and is useful for troubleshooting network/router issues. If the domain does not work or is not available, admins can use traceroute to track the IP.
    5. uname
      This function displays the current OS name and can print system information.
    6. uniq
      With uniq, admins can compare adjacent lines in a file and remove or identify any duplicate lines.
    7. vi
      The vi environment is a text editor that allows a user to control the system with just the keyboard instead of both mouse selections and keystrokes.
    8. vmstat
      The vmstat command snapshots everything in a system and reports information on such items as processes, memory, paging and CPU activity. This is a good method for admins to use to determine where issues/slowdowns may occur in a system.
    9. wget
      This is a network utility that retrieves web files that support HTTP, HTTPS and FTP protocols. The wget command works noninteractively in the background when a user is logged off. It can create local versions of remote websites and recreate original site directories.
    10. while
      See for entry.
    11. whoami
      The whoami command prints or writes the user login associated with the current user ID to the standard output.
    12. xargs
      Admins use xargs to read, build and execute arguments from standard input. Each input is separated by blanks.

    https://searchdatacenter.techtarget.com/tutorial/77-Linux-commands-and-utilities-youll-actually-use


  16. IPS Community Suite 4.4.5

    Released 07/29/2019


    Key Changes

    Version 4.4.5 is a maintenance update to fix issues reported since 4.4.4.

    Additional Information

    Core

    • Added an Admin CP dashboard widget to show total members.
    • Added back the ability to search personal messages by recipient and sender name, and removed the 365 day limit on results.
    • Added an option for feeds of content that support future publishing (such as Pages records and Blog entries) to control whether published, unpublished or any results are shown.
    • Added new options for content widget feeds to return hidden content (in addition to the existing pending approval option), as well as both hidden content and content pending approval.
    • Added support for more explicit browser autofill on form fields.
    • Added moderator log support for opening/closing polls.
    • Upgraded CKEditor to 4.12.1.
    • Improved the page speed for guests by not loading the editor or notification sound javascript libraries until they are needed.
    • Improved the error message when attempting to access the REST API in the Admin CP in the event the local server is inadvertently IP banned.
    • Improved performance when sending Digests.
    • Improved license key checking when the license server may not be available.
    • Improved reporting of Redis memory usage in support area.
    • Improved the error message when attempting to access the REST API in the Admin CP in the event the local server is inadvertently IP banned.
    • Improved performance when using the database for common data storage.
    • Improved the accuracy of the progress bar on the 'Deleting moved original files' background process.
    • Improved efficiency when generating sitemap files if certain content is configured not to be included.
    • Improved the user interface configuring Sitemaps to clarify content that will be include and excluded from the Sitemap.
    • Improved admincp upgrading when using SFTP.
    • Implemented logging to the moderator log, when a moderator removes all followers from a followable item. 
    • Changed notification read/unread status to behave as it did prior to 4.4.4.
    • Clarified the "Domains to instruct search engines to follow" setting description and improved the setting to strip http:// and https:// protocols from supplied values.
    • Fixed account failed logins not correctly locking future login attempts in some cases.
    • Fixed an issue where node deletions (such as forums and categories) were not always properly logged to the administrator logs.
    • Fixed an issue where blacklisted URLs used for embeds may not trigger post moderation when configured to do so.
    • Fixed an issue where the club tab on the members profile can result in a DB error when a page <1 was used.
    • Fixed an issue where the Automatically Prune Followers setting ignored reviews.
    • Fixed an issue where it may not be possible to permanently delete deleted content manually.
    • Fixed status updates not importing properly when an account is linked to multiple social logins.
    • Fixed some server error messages not showing.
    • Fixed certain notification and digest emails not sending properly via cron.
    • Fixed custom field custom formatting options being applied to fields in the AdminCP unexpectedly.
    • Fixed Custom Sorting on the Deleted Content page not working.
    • Improved upgrade process for Community in the Cloud.
    • Improved the error message when attempting to access the REST API in the Admin CP in the event the local server is inadvertently IP banned.
    • Fixed potential browser errors and warnings caused by notification sounds.
    • Fixed pagination not loading correctly when searching within messenger.
    • Fixed an issue where comment counts are decremented incorrectly when a Post Before Registering comment is cancelled.
    • Fixed an issue where the mobile keyboard would not be hidden after submitting the search form.
    • Fixed issues that can occur (such as the editor not loading) when browser local storage is unavailable.
    • Fixed an issue where auto-scheduled promotions may not correctly queue for upcoming slots.
    • Fixed maps generated by Mapbox potentially displaying larger than intended when lazy loading is enabled.
    • Fixed an issue where profile completion could cause a fatal error when using custom forum themes.
    • Fixed an issue where single status update links had the wrong canonical URL.
    • Fixed a possible error when mentioning someone or using a custom emoticon in a post.
    • Fixed an issue where installing plugins with a title containing more then 32 characters would fail.
    • Fixed an issue where Elastic Search may not update records correctly.
    • Fixed an issue where user profiles may be slow to load.
    • Fixed an issue where a template error could be generated by attempting to search members when the user does not have permission to view members.
    • Fixed some styling (spacing) issues with the right-hand column shown on the Clubs homepage.
    • Fixed an issue pasting certain code into editor code boxes.
    • Fixed some old URL patterns (from IP.Board 3.x) no longer redirecting to the new URL format as of 4.4.x.
    • Fixed an issue where the publish_to_groups permission was still required to promote to Facebook pages.
    • Fixed an issue where canceling an invoice with already canceled billing agreements would try to cancel the billing agreement again.
    • Fixed a niche issue that can occur when using lazyload, image proxy and external file storage.
    • Fixed an issue where one could fake member null votes on polls.
    • Fixed an issue where profile photo permissions may not apply correctly when a user belongs to more than one group.
    • Fixed a styling issue with profile completion on mobile.
    • Fixed a broken link in the report center.
    • Fixed an issue where invalid user groups can cause an error to show to users.
    • Fixed an issue where the poll form wouldn't add an empty first question.
    • Fixed an issue where sort buttons can overlap pagination.
    • Fixed an issue where personal conversations may show a 'promote' button to members with permission to promote content.
    • Fixed incorrect REST API documentation when editing items.
    • Fixed an issue where the 'support' link in the AdminCP would be viewable if the restricted administrator did not have access.
    • Fixed an issue where the spoiler header within a post can get doubled up when selecting text within the post in certain cases.
    • Fixed an issue where merging members incorrectly merged reputation.
    • Fixed an issue where the image aspect ratio setting was not set correctly when editing images.
    • Fixed an issue where search options may show for items that are not searchable.
    • Fixed AdminCP member quick-searches not searching within member names when the site can handle inline searches.
    • Adjusted instances of "recognise" in language strings to "recognize".
    • Fixed an error when full registration is enabled with no available profile fields.
    • Fixed an issue where the node controller wasn't showing the child nodes as possible target category while moving the content.
    • Fixed an issue where it was possible to be stuck in a position where a poll could not be re-opened. 

    Calendar

    • Removed the ability to create ranged recurring events that overlap (e.g. where the next occurence start time is before the first occurrence has finished).
    • Removed the timezone from event notification emails for all day events.
    • Fixed an issue where events that repeat for a set period will end one period before they should.
    • Fixed an issue where users are able to create events where the end time occurs before the start time.
    • Fixed an issue where ranged recurring events may show an incorrect date range for the event on the calendar "Day" view.
    • Fixed an issue where embedding a Calendar Event may fail in some circumstances.
    • Fixed an issue where ranged recurring events may not show as occurring on an end date when they span across months.
    • Fixed an issue where the calendar name would be exposed to members which don't have permissions to view the calendar via the members online location on the profile.

    Pages

    • Added the ability to specify whether the record canonical tag points to the current page, or the root page (page 1).
    • Added the ability to show just your own records via the Database Filters widget.
    • Added the ability to filter by Member field types via the Database Filters widget.
    • Added record tags to the database record listing template for newly created Listing template sets.
    • Improved the display of databases in the ACP menu.
    • Fixed an issue where excluding Pages pages from the sitemap may cause the sitemap task to get stuck and stop building new sitemap files.
    • Fixed an issue where a template group could be renamed to an existing template group, causing a conflict which results in an error.
    • Fixed an error attempting to submit records to a database where a Member type field that must be unique is configured.
    • Fixed an issue where the category title is missing from the page's HTML title tag.
    • Fixed an issue where deleting a database record with a linked topic may cause an error.

    Commerce

    • Added support for Strong Customer Authentication (SCA) in Stripe.
    • Fixed referral commission not being given for renewals.
    • Fixed an error that can occur when renewal invoices are generated if no billing address existed on the original invoice.
    • Fixed invoice notification emails showing a payment failed warning if one payment method failed even if another one succeeded.
    • Fixed social login buttons not working when checking out as a guest.
    • Fixed staff replies to support emails.
    • Fixed an issue where stock replies may have new lines stripped.
    • Fixed pending withdrawl AdminCP notification link to point to the pending withdrawl filter.
    • Fixed an issue where you may not be able to delete subcategories in the store.
    • Fixed a potential error when upgrading from a version older than 4.4.2.
    • Fixed an issue where switching to a "default" support stream (ex. Open, Assigned, or Tracked Requests) can result in a MySQL error.
    • Fixed an issue where deleting a customer note would not close the dialog.
    • Fixed member group being moved when upgrading or modifying an expired purchase.
    • Fixed an issue where purchase custom field labels may show as a random string or in the wrong language in the Transaction Approved email.
    • Edited the purchase email notification setting to clarify an email is sent for every item.

    Converters

    • Clarified the error message shown when invalid database details are supplied.
    • Fixed an issue where a conflict may prevent some data being converted if (for example) converting attachments for blog and forums in the same conversion.
    • Fixed an issue relating to converting mentions from other platforms.
    • Fixed an issue where converting from vBulletin 5 can cause duplicate topics.
    • Fixed an issue where items selected to skip were converted anyway.
    • Fixed an issue where it wasn't possible to convert only core.
    • Fixed a performance regression re-introduced in 4.4.
    • Fixed an issue preventing UBBThreads conversions working.
    • Stopped converting the "manually set time zone" preference for vBulletin conversions, as the timezone preference itself is not converted and the ability to adjust this preference is not available in our current interface.

    Forums

    • Improved the performance of the Unarchive task.
    • Fixed an issue upgrading from older versions of Invision Community where topics or posts queued for deletion were present.
    • Fixed an issue where posts from ignored members were visible if the author was in a highlighted group.
    • Fixed an issue where archive settings could be saved with no more than or less than selection.
    • Fixed an issue where hiding a topic without an existing first post would stop the queue to hide all the members content.

    Gallery

    • Fixed Follow and Promote buttons not showing for images on mobile devices.
    • Fixed an issue where inline renaming an image from the lightbox would either fail or rename the album.
    • Fixed instances where a member with a secondary group that doesn't allow albums to be created, but with a primary group that does but limits how many that can be created, will allow the member to create unlimited albums.

    Downloads

    • Implemented logging to the moderator log, when a moderator toggles the purchasable status of a file.
    • Removed the button to copy the Log Downloads category setting which does not apply.

    Blog

    • Improved the blog header display for blogs within clubs.
    • Fixed an issue where the club leader could not set a cover photo for a club blug.
    • Fixed an issue where draft entries may be included in digests.

    REST & OAuth

    • Added a “Use a different account” button on OAuth login screen

    Third-Party / Developer / Designer Mode

    • Cleaned up some legacy code checking for specific PHP versions.
    • Fixed some typos in the REST API documentation.
    • Fixed malformed HTML in the admin `tabs` HTML template which caused problems when hooks were created for this template.
    • The Application and Plugin directory are limited to 80 characters.
    • Set the alreadyReported flag in \IPS\Content after reporting content to ensure correct value is returned on future calls to report methods.
    • Fixed some minor issues with the lightbox comments support (currently unused by core Invision Community code).
    • Fixed an issue where email template parameters may not be captured properly to generate the email subject, resulting in an error.
    • Fixed a potential error that may be encountered while working with Calendar dates from command line (i.e. tasks being executed via cron).
    • Fixed an error that can occur with email statistics when different applications use the same email subject language string.
    • Fixed a few functions that needed to be called from the root namespace.

    Changes affecting third-party developers and designers

    • Added `\IPS\Node\Model::deleteLogPermissions()` method to allow applications to specify permissions for managing deletion logs.
    • js.php javascript loader no longer creates an external dispatcher instance.
    • `\IPS\Content::logDelete()` and `\IPS\core\DeletionLog::setContentAndMember()` now accept FALSE for the member parameter, which will store the deletion log as if no specific member deleted the content.
    • Added a new `digestWhere()` method to content items, this allows you to specify an additional where clause when processing digests. 

    * Items in red require extensive testing.


  17. Install-ImageMagick-300x200.jpg

     

    Install ImageMagick on cPanel with EasyApache 4

    This post will help you to install ImageMagick on cPanel with EasyApache 4. ImageMagick is mainly used to create, edit and convert bitmap images. It supports a variety of image formats. Please click here to get the supported image formats.

    The ImageMagick can be installed using a simple cPanel script (/scripts/installimagemagick) in the older version of cPanel, but in newer versions of cPanel with EasyApache 4 uses another method to install it. Please check it below:

     
    yum install ImageMagick-devel ImageMagick-c++-devel ImageMagick-perl
    
    

    Once the installation is over, run the following command to verify if it is working

     
    /usr/bin/convert --version
    
    

    Install ImageMagick PHP extension on cPanel with EasyApache 4

     
    /opt/cpanel/ea-php56/root/usr/bin/pecl install imagick
    
    

    Add ImageMagick extension into the PHP 5.6 configuration file to load the module.

     
    vim /opt/cpanel/ea-php56/root/etc/php.ini
    
    

    Add the following into it:

     
    extension=imagick.so
    
    

    Restart the web server

     
    service httpd restart
    
    

    Then verify the installation

     
    /opt/cpanel/ea-php56/root/usr/bin/php -m | grep imagick
    
    

    Note: If you would like to enable ImageMagick PHP module on PHP 7.0, you just need to update the correct binary paths on the above installation.
    ie.,

     
    /opt/cpanel/ea-php56/root/usr/bin/pecl to /opt/cpanel/ea-php70/root/usr/bin/pecl
    /opt/cpanel/ea-php56/root/etc/php.ini to /opt/cpanel/ea-php70/root/etc/php.ini
    /opt/cpanel/ea-php56/root/usr/bin/php to /opt/cpanel/ea-php70/root/usr/bin/php
    
    

    If you would like to enable the ImageMagick PHP module on the other PHP versions available on EasyApache 4, please do the same by changing the correct binary path.

    That’s it!

     

    https://grepitout.com/install-imagemagick-cpanel-easyapache4/

     


  18. cPanel-Price-Hike-Guide.png

     

    cPanel has shaken the web hosting community with its recent price rise announcement. They have changed its pricing model from a per server pricing to a per account model

    So if you’re a cPanel partner and were paying $11 per cPanel license for each server and running 1,000 websites, you’ll now have to pay $122. That’s approximately 1000% price rise!

    According to cPanel’s new pricing, here’s the breakup for 1000 websites :

    1. $32 for 100 accounts  
    2. $0.1 each for 900 accounts

    The “Not So Acceptable” New Pricing

    The pricing is different depending upon the number of accounts. The price for the end user is comparatively higher than the cPanel partners.

    General Pricing

    • For 5 accounts – $20/month
    • For 30 accounts – $30/month
    • For 100 accounts – $45/month + $0.20 for each additional account

    You can find more information about the latest pricing here.

    cPanel Partner Pricing

    • For 5 accounts – $12.50/month
    • For 30 accounts – $17.50/month
    • For 100 accounts – $32/month + $0.10 for each additional account
    cpanel price rise

    cPanel Pricing: New vs Old

    People are criticizing cPanel for rolling out the new pricing model. Let’s see the old and new pricing of cPanel:

    • cPanel Pricing Earlier

    Before it was simply VPS and dedicated pricing.

    cPanel-Pricing-old-1024x464.png
    • Latest cPanel Pricing

    The new pricing will not make a huge difference to people under 5 Accounts. However, as the accounts increase, cPanel will cost more than the server itself.

    cPanel-pricing-new-1024x518.png

    Major Impact on Web Hosting Community

    Over the years, people have relied on cPanel for managing their sites.

    cPanel’s popularity is because of its integration with Softaculous, LiteSpeed, PHP Selector, JetBackup, CageFS, CloudLinux, Imunify360, and much more. This has helped cPanel become faster, reliable, secure, and feature-rich.

    This price increase seems to be a nonstrategic roll out and cPanel has faced major backlash from the web-hosting community!

    Users on Twitter reacted with a lot of aggression and mostly negatively with most of them threatening to switch to alternative control panels.

    Screenshot-2019-06-28-at-7.28.50-PM-1024 Screenshot-2019-06-28-at-7.30.59-PM-1024 Screenshot-2019-06-28-at-7.28.58-PM-1024 Screenshot-2019-06-28-at-7.29.14-PM-1024 Screenshot-2019-06-28-at-7.30.38-PM-1024

    1. End-Users

    While servers with a single account can go for cPanel solo, and servers with under 5 accounts still get the same price, the overall price for end-user is comparatively higher for servers having more than 5 accounts.

    2. Shared Hosting Providers or Resellers

    The worst affected of the whole lot. Mostly, a shared hosting company will run around 1000 websites on a single VM with the $11/mo cPanel VM license. After the new changes come into effect, their cPanel license costs will rise to $122/mo! That’s a whopping 1000% increase and almost equivalent to their infrastructure or server costs 😉

    3. Unmanaged Server Providers

    Generally, unmanaged server providers don’t have the access to the server and therefore, didn’t know how many accounts are on running on a server which was fine because the license was per server.

    The new pricing model has added an extra layer of efforts for the providers. Now, they need to have a log of how many accounts are being created on a single server, or else they may end up footing the bill of thousands of dollars!

    Who is Going to Get The Hardest Hit?

    1. Shared/Reseller Hosting Providers
    2. License holders in price-sensitive countries like Latin America, India, and other South East Asian countries.


    Should You Remain With cPanel?

    Pros

    1. cPanel has innovated over years with a user-friendly UI and a number of integrations
    2. Less time to spend on customer support
    3. No need to migrate data and involve in the risk of data loss
    4. You will avoid downtime caused while migrating data.

    Cons

    1. With no annual billing, you will face the hassle of monthly invoices, lack of funds, etc.
    2. Substantially increased costs may either make business unviable for a few or the end clients will end up paying extra for these additional costs.

    Coping Up with the cPanel Price Rise

    If you’re choosing to stay with cPanel, the only solution is to re-evaluate your pricing structure. Only people with 100+ accounts will be hard it. You can transfer the extra 10/20 cents charges to customers.

    However, be sure to properly communicate the price changes to customers.


    cPanel Alternatives

    With this unexpected change, people have already started finding alternatives. Some of them are:

    1. DirectAdmin
    2. InterWorx
    3. Virtualmin/Webmin
    4. VestaCP

    What’s Next?

    cPanel, WHMCS, SolusVM, and Plesk are under the same umbrella – The Oakley Investment. Here’s the timeline:

    • Oakley acquired Plesk in May 2017 and there was an insane increase in prices between July 2017 to October 2017
    • WHMCS prices hiked in Aug 2017
    • Oakley Acquired cPanel in August 2018 and the price hiked in June 2019

    SolusVM, are you next? We hope not.

     

    https://magehost.com/blog/cpanel-price-rise-impact-solutions/

     

     


  19. IPS Community Suite 4.4.4

    Released 06/06/2019


    Key Changes

    Version 4.4.4 is a maintenance update to fix issues reported since 4.4.3.

    Additional Information

    Core

    • Added support for [Emoji 11](https://emojipedia.org/emoji-11.0/) emojis
    • Added logging for errors communicating with Spam Defense.
    • Added an admin log when existing member notification preferences are updated.
    • Added a pre-installed Giphy key that can be used for all Invision Community installations.
    • Improved usability and display of date-based member filters.
    • Improved account validation process to prevent accounts being inadvertently validated by scrapers and bots, and to improve the user experience when following a validation link that is no longer valid.
    • Improved the opcache comments check on the REST API Reference page.
    • Improved sending bulk emails via SendGrid.
    • Improved post before register permissions when allowing guests to create content, but not members.
    • Improved performance when viewing all IP addresses used by a member.
    • Clarified the registration completed email when no local password has been set.
    • Fixed an issue where members may not be marked as complete, and thus will not show within the community, in some circumstances.
    • Fixed the Posts Per Day group setting not applying consistently to all content.
    • Fixed an issue where click tracking may not be applied to all links in emails sent.
    • Fixed emails for AdminCP notifications "A new member has completed registration" and "A member is flagged as a spammer" not sending.
    • Fixed an issue that could occur if deleting a node (i.e. forum) if there was already a move task from another node in progress.
    • Fixed the email statistics charts in the AdminCP showing incorrect data when viewing weekly charts.
    • Fixed an issue where the inbox list may be stuck showing a spinner when canceling a search in the personal messenger.
    • Fixed an issue where folder counts may show NaN after deleting a folder in the personal messenger.
    • Fixed an issue that may occur when deleting/moving login handler related images.
    • Fixed searching by tags not honoring the "Convert all tags to lowercase" setting.
    • Fixed 'post before register' content submissions not incrementing the user's post count if pre-moderation is not required.
    • Fixed an issue related to 'post before register' where 'next unread' item links may show when there isn't any new content.
    • Fixed the callback URL used for Wordpress sign in.
    • Fixed the digest task looping on a follow attached to a deleted member.
    • Fixed the `PruneMembers` background task from endlessly looping in certain circumstances.
    • Fixed disabling password changes in the AdminCP settings not removing the link to change your password on the Account Settings overview page.
    • Fixed issue where lazy-loaded images in warn reasons would prevent warn reason from automatically updating when new reason was selected due to incorrect editor 'dirty' status.
    • Fixed a niche issue where promoting an item may show an auto scheduled time from the past.
    • Fixed an issue where the button to change a members profile photo would still show on their profile when they do not have permission to upload profile photos.
    • Fixed an issue where public clubs would show the member count in several locations.
    • Fixed an edge-case issue with redirecting old non-rewrite FURLs after enabling rewrites.
    • Fixed issue checking signature image dimensions when using 'insert existing attachment' when using Amazon S3.
    • Fixed an issue where the frontend upgrade notice wouldn't disappear once dismissed.
    • Fixed an issue where cover photos might disappear shortly after displaying.
    • Fixed an issue with lazy load placeholders when added to existing content.
    • Fixed a layout issue with the mobile pagination buttons.
    • Fixed an unnecessary redirect when viewing a club.
    • Fixed a potential timeout running the cleanup task.
    • Fixed Elasticsearch being able to be set up with version 7 (which is not yet supported). Trying to do that will now show an error message.
    • Fixed an issue where moved links may show in the topic widget.
    • Fixed an issue where a member registering with an auto-detected language would revert back to the default language after registration.
    • Fixed an issue where the latest activity tooltip would state "online now" when the member was offline.
    • Fixed broken login form.
    • Fixed status pagination loading a full page instead of comments only.
    • Fixed non-latin characters in the URL showing incorrectly when moving between pages.
    • Fixed an issue where the approval queue may show content in the wrong order.
    • Fixed an issue where the guest signup block title and text was reversed in vertical view.
    • Fixed an issue where custom friendly URLs would not use the newer `/page/2/` pagination format.
    • Fixed an issue where club pagination in user profiles was showing the wrong number of pages.
    • Fixed an issue where a Redis failure caused an uncaught exception.
    • Fixed an issue where the Clubs REST API would throw an error if commerce isn't installed.
    • Fixed an issue where online user lists may be empty following a Redis crash.
    • Fixed an issue where incomplete member registrations were not cleared correctly.
    • Fixed an issue where Post Before Register Followups were sent out immediately rather than delayed.
    • Fixed an exception that prevents storage handler changes from being saved properly.
    • Fixed an issue where the 'Failed Emails' AdminCP notification may not be removed properly.
    • Fixed an issue where the "Anonymous login" checkbox was incorrectly checked.
    • Fixed an issue where PBR content would be left in the database for uninstalled applications.
    • Fixed a rare issue where a template disk cache could corrupt and affect templates loading.
    • Fixed an issue where members created via the ACP weren't marked as completed.
    • Fixed an issue with Flickr video embeds showing as photos.
    • Fixed an issue with notifications not showing as unread.
    • Fixed an issue where the exact profile field search option had no affect.
    • Fixed an issue where the default country was not correctly set in address form inputs.
    • Fixed an issue where the guest teaser would not show on the comment form in some circumstances.
    • Disabled Grammarly from checking editor fields to prevent Grammarly from breaking HTML and causing broken posts.
    • Disabled preloading of notification sound to speed up initial page load.
    • Disabled concurrent comment merging in status replies.
    • Removed post content from Post Before Register reminder emails to prevent spam.
    • Removed ability to sort club menu tabs if only one tab is present.

    Forums

    • Fixed a niche issue where the 'Delete Legacy Posts/Topics' background task may not work when ran via CRON.
    • Fixed an error when moving topics in fluid view.
    • Fixed a database error that could occur when archiving old posts.

    Commerce

    • Fixed tax class being lost with renewal terms when editing a purchase.
    • Fixed tax class being lost when renewal invoices were generated for location-specific tax rates.
    • Fixed an issue where tickets from non-registered users may link to an empty ticket listing.
    • Fixed an issue where AdminCP notifications for pending withdrawals link to the wrong page.
    • Fixed Stripe webhooks unnecessarily reporting an error.
    • Fixed category filters not displaying on mobile.
    • Fixed an issue where creating a support request with a guest member and email address via REST API wouldn't store the email address.
    • Fixed an issue which would result in an empty product list on the registration form.
    • Fixed an issue searching last names in admin live search.
    • Fixed an issue where manually creating an invoice and adding renewals doesn’t prevent an auto-renewal invoice being added later.
    • Fixed an issue where the member subscriptions block was not editable.

    Pages

    • Fixed times displaying as timestamps for some Pages blocks.
    • Fixed records not sorting correctly by 'highest rated'.
    • Fixed the `updaterecords` task not running correctly if a database exists that is not assigned to a page.
    • Fixed an issue where 'follows' may not get removed when a category or database is deleted.
    • Fixed an issue where the create menu could get out of sync when the page name or the default page were changed.
    • Fixed an issue where adding records via the create menu may not show categories for default pages.
    • Fixed an issue that can occur when moving a record in a database that is not assigned to a page.
    • Fixed an issue where Our Picks can throw an error if a database is unassigned from a page.
    • Fixed an issue where, in certain circumstances, notifications could be sent for records that weren't viewable.
    • Removed record image dimensions from JSON-LD markup for database records to improve performance in some cases.

    Downloads

    • Fixed an SQL error that could occur when upgrading from older versions.
    • Fixed an issue where the purchase count for Files associated to purchases was shown in the widgets and downloads index page blocks.
    • Fixed an issue in the 'Download Reviews' widget, where links to reviews on page >1 were broken.

    Gallery

    • Fixed an issue where past reputation for image comments and reviews no longer displayed.
    • Fixed browser scrollbar disappearing while editing Gallery image details in some cases.
    • Fixed image carousel widgets not displaying correctly in certain circumstances.
    • Fixed an issue where uploading on small screens caused the status to overflow outside of its box.
    • Fixed an issue where images may show as unread incorrectly in streams.

    Calendar

    • Fixed an issue where recurring events may show on the wrong day in Calendar.
    • Fixed an issue where all day events specified an incorrect start and end time in search engine markup.

    Converters

    • Fixed an issue where reaction images may get converted into the wrong container.
    • Fixed an inaccurate progress bar on a background task that runs after completing a conversion.

    Changes affecting third-party developers and designers

    • Added a `$statementReverse` parameter to use `NOT IN` in the where clause when `\IPS\Db::select()` is passed to `\IPS\Db::delete()`.
    • Added a further check when trying to choose which storage configuration should be used for new storage extensions.
    • Added a new Language String Option `removeLazyLoad` which will remove the lazy load links while parsing the language string.
    • Fixed an incorrect class reference when passing `\IPS\Db::select()` to the `$where` parameter of `\IPS\Db::delete()`.
    • Fixed a search error that could occur with 3rd party applications.
    • Fixed an issue with the rest API where output was json encoded before language replacements.
    • Changed the default parameter in the `IPS\Content\Review::url` method.'
    • Removed unused code in the \IPS\core\modules\admin\promotion\advertisements::getHtml method.
    • Removed UI for immediately sending Bulk Mail, all Bulk Mail will now be sent via background queue.
×