VisioList 1.6

Basti

Administrator
Staff member
Before you begin
  • This is a rather big update, please do not rush through it and take your time. If you need assistance anywhere let us know.
  • Starting with VisioList 1.6, we offer gif to mp4 conversion for reduced file size if your system supports it. This is used for the member banners
    • See the requirements below. If you not want to use this, head straight to the upgrade instruction
  • We suggest a minimin php version of 7.2 for this VL version. Why? Because anything below reached its end of life for security updates, or shortly reaches that stage

ffmpeg Requirements
You can either install everything before running the update so the updater takes care of everything, or do it after the upgrade and visit admin -> tools -> convert member banners once done.

1) A Virtual or Dedicate server with root access. Very unlikely all stuff is supported on shared hosting.
2) It requires a library called ffmpeg -> https://ffmpeg.org
2.1) Type the following in your terminal to validate if ffmpeg is installed or not. It has to return a path to the ffmpeg binary. If nothing is returned or if its not within the shared binary path, you need to fix / install it.
Code:
type -P ffmpeg
2.2) ffmpeg installation
  • Manual compile if its not installed
    • Binary files need to be accessible system wide, there are several methods described in the wiki. Just make sure its accessible by every user, usually within within /usr/local/bin
    • given the CentOS documentation: https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
    • You will notice everything is done in /root
    • Now how to make it system wide instead so its accessible by other users? We need to adjust where the binary files are stored
    • Most commands have something like this: --bindir="$HOME/bin" and the last step has: PATH="$HOME/bin:$PATH"
    • Now we would simply replace $HOME with /usr/local wherever you see a reference like that
  • Installation via package manager
    • There are also packages available for various systems. While they work, they are often really outdated and miss many improvements ( due missing codec updates, bug fixes )
    • If your package manager has an up to date version, go for it, its a lot easier.
2.3) Type the following in your terminal to revalidate if ffmpeg is installed correctly. It has to return a path to the ffmpeg binary. If nothing is returned or if its not within the shared binary path, something went wrong
Code:
type -P ffmpeg
3) To run the ffmpeg commands from within your toplist, you also need to have the php function shell_exec enabled
3.1) shell_exec is usually defined in php.ini in the disable_functions section, remove it from there and restart apache
3.2) Servers running php-fpm might also need to modify the fpm configuration yaml file. Either global configuration or for a single domain only. We suggest domain only

Support for ffmpeg
  • If you have trouble to install / modify your server for this, we offer support at $35 / hour. Requires root login
  • If you have everything installed and notice some odd behavour and want to get normal banner display back, add the following to settings_sql.php
  • Code:
    $CONF['disable_mp4'] = 1;
  • To enable it again, set it to 0 or remove the line completely. For now, we keep this as an manual setting instead of admin setting



Upgrade Instructions - Basic
1) Take a backup of your files and database in case something goes wrong
2) Upload and replace all the files from the update bundle ( VL-Upgrade-1.6.zip ) via FTP
3) Run yoursite.com/install/update.php from your browser.
If gif to mp4 is supported ( see ffmpeg requirements at top of this page ) this will take a while depending on how many users you have

Upgrade Instructions - Manual edits
If you upgrade from a version older 1.5, please check previous version upgrade instructions http://visiolist.com/docs/upgrade-from-previous-vl-version

1) Copy the following files from parabola into your skin. This files are made for parabola, so adjust it to your liking if you use a different skin
  1. folder form_elements and its contents
  2. pagination.html, pagination_item.html, pagination_next.html, pagination_prev.html
  3. user_cp_login_2step_email.html - holds the message to click the 2step authentication email link after login
  4. user_cp_login_email.html - email contents for 2step email authentication
  5. user_cp_login_2step_google.html - holds the form to input the google app code after login
  6. edit_form_qr_code.html - holds the qr code + testing input for google app within edit form. This file includes jquery code to show and hide the info based on what you select. If you load jquery in your footer, you need to cut out this javascript and place it after jquery loaded.
  7. banner.html - now holds the member banner and is used instead hardcoded image in various files
  8. banner_mp4.html - holds the converted member banner code displayed as video mp4 for reduced filesize
2) As pagination is now in its own files and template tags for them have changed,
open wrapper.html and find ( may vary depending on your skin )
HTML:
<div class="pagination"><ul>{$multiple_pages_p}{$multiple_pages_links}{$multiple_pages_n}</ul></div>
And replace it with
HTML:
{$pagination}
3) Place {$form_2step} and {$2step_google_info} into your edit_form.html. Take note of point 1.6 above!
4) replace the member banner image with {$banner} in the following files
example code to replace with the tag above
HTML:
<img src="{$banner_url}" alt="{$title}">
  1. stats.html
  2. table_top_row.html
  3. table_row.html
  4. table_top_row_premium.html
  5. table_row_premium.html
  6. search_result.html ( in case you use it there )
  • This tag now handles member banners normal vs premium in all files listed above
  • In addition it also handles the display of the new feature to convert member gif normal / premium banners to mp4 for reduced file size
  • Also new, the width and height html attributes for images and videos via a template tag, which is required for video tags and suggested for images. Beside them being required for video tags to avoid page rendering jumps due a browser default width and height for video tags, its a good idea overall to speed up page rendering time ( although small )
5) To make your video responsive, you need to add max-width css attribute to it. We included a default class in html to show case this. Please add the below css to your skin css file if you use that feature
Code:
.video-fluid {
max-width: 100%;
}
6) Custom join elements and any element generated through form.php can now be freely placed by using the template tag {$form_acf_fieldID} (fieldID is the id you applied to it while creating it). Making it a lot easier to style your forms.
  • Please note that if you use this feature you should remove the previous tags used to include form elements, else you get form elements twice
    1. {$edit_website_extra} in edit_form.html
    2. {$join_user_extra} and {$join_website_extra} in join_form.html
    3. {$join_website_extra} in join_form_existing.html
  • In the long run those tags will be deprecated, while they are easy to add html parts to your forms without you editing html, they are less flexible and thus removed in the future
7) If you want to use the remember me login function, add the following to user_cp_login.html within the form. Adjust it to match your theme, but the name attribute must be the same
Code:
<label><input type="checkbox" name="keep_alive" id="keep_alive" /> {$lng->remember_me}</label>
8) Pagination now uses the page number in url, please adjust your htaccess if you use clean url's
  • These rules need to be updated. If you extended your ranking somehow, make sure you adjust your rules to replace the word "start" with "p" along with these 2
Code:
RewriteRule ^rank/(.*)/(.*)/category/(.*)/ index.php?start=$1&method=$2&cat=$3 [L]
RewriteRule ^rank/(.*)/(.*)/ index.php?start=$1&method=$2 [L]


Upgrade Instruction - Plugins
1) Delete the clean url plugin. VIA FTP, do NOT delete via admin.
  • This plugin moved into the core, if you do not delete the plugin folder and files, you can get issues in certain areas of the site
2) Run a plugin update check and update all your plugins. Every plugin was checked to receive updates for php 7 compability and various other issues.
3) Custom plugins need to updated by yourself to make them php 7 compatible. Take the Ads plugin as an example, VisioList always defined plugin files which generate a new page ( source file ) like this
PHP:
class manage_banners extends base {
function manage_banners() {
That is not valid anymore in php 7 and need to updated like this
PHP:
class manage_banners extends base {
public function __construct() {
As you see, before we had the base function of the class with the same name as the class itself. That needs to be changed to a proper constructor.
4) If you have a plugin which extends the ranking pagination somehow, make sure you update the tags in the plugin file. All three following variables have to be change to $TMPL['pagination_link']
  • $TMPL['multiple_pages_p']
  • $TMPL['multiple_pages_links']
  • $TMPL['multiple_pages_n']


Important changes
  • Now compatible with php up to and including 7.2
    • not yet decided but next release might drop support for php below 5.6
    • maybe even 5.6 and 7.0 since they reached their end of life at the end of 2018 and do not receive any updates anymore http://php.net/supported-versions.php
  • Speed improvement
    • replacing the template tag generation function and thus improving memory usage and page rendering time
    • Use of proper database indexes for the ranking to speed up queries
  • 2step login authentication for user and admin panel
  • Auto convert member banner gif images to mp4 on upload or mass convert them via admin panel if you freshly installed the requirements.
    • Read more at the top of this page
    • Having mp4 instead of a gif can reduce file size up to 80%.
  • User banner/mp4 cache buster. With services like Cloudflare or local htaccess cache, visitors may not see the most recent uploaded user image right after uploaded. Banner upload now appends a timestamp to the filename to fix this.
  • Error fixes
    • Missing tag validation checks in various files, hogging up the error log file
    • Duplicate content fixes
    • Canonical php header for custom pages
    • Canonical php header for the login form
    • Adding search query into title while searching
  • http://visiolist.com/community/threads/link-code-issue.2184/
    • Auto detects what link code to use now
    • Default is the non friendly link
    • friendly link is only used if friendly link is set obviously plus
      • list itself uses https
      • or list and member site both have the same
  • http://visiolist.com/community/threads/non-numeric-value.2182/
    • removed, old legacy code to init stats values in details.php and user_cpl.php
    • reapplied number_format to stats values in various files
  • Plugin functionality added to sitemap.php, including hooks
  • Custom join elements and any element generated through form.php can now be freely placed by using the template tag {$form_acf_fieldID} (fieldID is the id you applied to it while creating it)
  • Pagination (ranking pages) changes
    • Instead of having the first member rank in the url, we now use page number
    • Say you list 15 sites per page, page 2 had in url "16", now its "2"
  • Clean Url's plugin moved into the core
  • User login remember me function
 

Attachments

Last edited:

cajkan

Active Member
Before you begin
  • This is a rather big update, please do not rush through it and take your time. If you need assistance anywhere let us know.
  • Starting with VisioList 1.6, we offer gif to mp4 conversion for reduced file size if your system supports it. This is used for the member banners
    • See the requirements below. If you not want to use this, head straight to the upgrade instruction

ffmpeg Requirements
You can either install everything before running the update so the updater takes care of everything, or do it after the upgrade and visit admin -> tools -> convert member banners once done.

1) A Virtual or Dedicate server with root access. Very unlikely all stuff is supported on shared hosting.
2) It requires a library called ffmpeg -> https://ffmpeg.org
2.1) Type the following in your terminal to validate if ffmpeg is installed or not. It has to return a path to the ffmpeg binary. If nothing is returned or if its not within the shared binary path, you need to fix / install it.
Code:
type -P ffmpeg
2.2) ffmpeg installation
  • Manual compile if its not installed
    • Binary files need to be accessible system wide, there are several methods described in the wiki. Just make sure its accessible by every user, usually within within /usr/local/bin
    • given the CentOS documentation: https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
    • You will notice everything is done in /root
    • Now how to make it system wide instead so its accessible by other users? We need to adjust where the binary files are stored
    • Most commands have something like this: --bindir="$HOME/bin" and the last step has: PATH="$HOME/bin:$PATH"
    • Now we would simply replace $HOME with /usr/local wherever you see a reference like that
  • Installation via package manager
    • There are also packages available for various systems. While they work, they are often really outdated and miss many improvements ( due missing codec updates, bug fixes )
    • If your package manager has an up to date version, go for it, its a lot easier.
2.3) Type the following in your terminal to revalidate if ffmpeg is installed correctly. It has to return a path to the ffmpeg binary. If nothing is returned or if its not within the shared binary path, something went wrong
Code:
type -P ffmpeg
3) To run the ffmpeg commands from within your toplist, you also need to have the php function shell_exec enabled
3.1) shell_exec is usually defined in php.ini in the disable_functions section, remove it from there and restart apache
3.2) Servers running php-fpm might also need to modify the fpm configuration yaml file. Either global configuration or for a single domain only. We suggest domain only

Support for ffmpeg
  • If you have trouble to install / modify your server for this, we offer support at $35 / hour. Requires root login
  • If you have everything installed and notice some odd behavour and want to get normal banner display back, add the following to settings_sql.php
  • Code:
    $CONF['disable_mp4'] = 1;
  • To enable it again, set it to 0 or remove the line completely. For now, we keep this as an manual setting instead of admin setting



Upgrade Instructions - Basic
1) Take a backup of your files and database in case something goes wrong
2) Upload and replace all the files from the update bundle ( VL-Upgrade-1.6.zip ) via FTP
3) Run yoursite.com/install/update.php from your browser.
If gif to mp4 is supported ( see ffmpeg requirements at top of this page ) this will take a while depending on how many users you have

Upgrade Instructions - Manual edits
If you upgrade from a version older 1.5, please check previous version upgrade instructions http://visiolist.com/docs/upgrade-from-previous-vl-version

1) Copy the following files from parabola into your skin. This files are made for parabola, so adjust it to your liking if you use a different skin
  1. folder form_elements and its contents
  2. pagination.html, pagination_item.html, pagination_next.html, pagination_prev.html
  3. user_cp_login_2step_email.html - holds the message to click the 2step authentication email link after login
  4. user_cp_login_email.html - email contents for 2step email authentication
  5. user_cp_login_2step_google.html - holds the form to input the google app code after login
  6. edit_form_qr_code.html - holds the qr code + testing input for google app within edit form. This file includes jquery code to show and hide the info based on what you select. If you load jquery in your footer, you need to cut out this javascript and place it after jquery loaded.
  7. banner.html - now holds the member banner and is used instead hardcoded image in various files
  8. banner_mp4.html - holds the converted member banner code displayed as video mp4 for reduced filesize
2) As pagination is now in its own files and template tags for them have changed,
open wrapper.html and find ( may vary depending on your skin )
HTML:
<div class="pagination"><ul>{$multiple_pages_p}{$multiple_pages_links}{$multiple_pages_n}</ul></div>
And replace it with
HTML:
{$pagination}
3) Place {$form_2step} and {$2step_google_info} into your edit_form.html. Take note of point 1.6 above!
4) replace the member banner image with {$banner} in the following files
example code to replace with the tag above
HTML:
<img src="{$banner_url}" alt="{$title}">
  1. stats.html
  2. table_top_row.html
  3. table_row.html
  4. table_top_row_premium.html
  5. table_row_premium.html
  6. search_result.html ( in case you use it there )
  • This tag now handles member banners normal vs premium in all files listed above
  • In addition it also handles the display of the new feature to convert member gif normal / premium banners to mp4 for reduced file size
  • Also new, the width and height html attributes for images and videos via a template tag, which is required for video tags and suggested for images. Beside them being required for video tags to avoid page rendering jumps due a browser default width and height for video tags, its a good idea overall to speed up page rendering time ( although small )
5) To make your video responsive, you need to add max-width css attribute to it. We included a default class in html to show case this. Please add the below css to your skin css file if you use that feature
Code:
.video-fluid {
max-width: 100%;
}
6) Custom join elements and any element generated through form.php can now be freely placed by using the template tag {$form_acf_fieldID} (fieldID is the id you applied to it while creating it). Making it a lot easier to style your forms.
  • Please note that if you use this feature you should remove the previous tags used to include form elements, else you get form elements twice
    1. {$edit_website_extra} in edit_form.html
    2. {$join_user_extra} and {$join_website_extra} in join_form.html
    3. {$join_website_extra} in join_form_existing.html
  • In the long run those tags will be deprecated, while they are easy to add html parts to your forms without you editing html, they are less flexible and thus removed in the future
7) If you want to use the remember me login function, add the following to user_cp_login.html within the form. Adjust it to match your theme, but the name attribute must be the same
Code:
<label><input type="checkbox" name="keep_alive" id="keep_alive" /> {$lng->remember_me}</label>
8) Pagination now uses the page number in url, please adjust your htaccess if you use clean url's
  • These rules need to be updated. If you extended your ranking somehow, make sure you adjust your rules to replace the word "start" with "p" along with these 2
Code:
RewriteRule ^rank/(.*)/(.*)/category/(.*)/ index.php?start=$1&method=$2&cat=$3 [L]
RewriteRule ^rank/(.*)/(.*)/ index.php?start=$1&method=$2 [L]


Upgrade Instruction - Plugins
1) Delete the clean url plugin. VIA FTP, do NOT delete via admin.
  • This plugin moved into the core, if you do not delete the plugin folder and files, you can get issues in certain areas of the site
2) Run a plugin update check and update all your plugins. Every plugin was checked to receive updates for php 7 compability and various other issues.
3) Custom plugins need to updated by yourself to make them php 7 compatible. Take the Ads plugin as an example, VisioList always defined plugin files which generate a new page ( source file ) like this
PHP:
class manage_banners extends base {
function manage_banners() {
That is not valid anymore in php 7 and need to updated like this
PHP:
class manage_banners extends base {
public function __construct() {
As you see, before we had the base function of the class with the same name as the class itself. That needs to be changed to a proper constructor.
4) If you have a plugin which extends the ranking pagination somehow, make sure you update the tags in the plugin file. All three following variables have to be change to $TMPL['pagination_link']
  • $TMPL['multiple_pages_p']
  • $TMPL['multiple_pages_links']
  • $TMPL['multiple_pages_n']


Important changes
  • Now compatible with php up to and including 7.2
    • not yet decided but next release might drop support for php below 5.6
    • maybe even 5.6 and 7.0 since they reached their end of life at the end of 2018 and do not receive any updates anymore http://php.net/supported-versions.php
  • Speed improvement
    • replacing the template tag generation function and thus improving memory usage and page rendering time
    • Use of proper database indexes for the ranking to speed up queries
  • 2step login authentication for user and admin panel
  • Auto convert member banner gif images to mp4 on upload or mass convert them via admin panel if you freshly installed the requirements.
    • Read more at the top of this page
    • Having mp4 instead of a gif can reduce file size up to 80%.
  • User banner/mp4 cache buster. With services like Cloudflare or local htaccess cache, visitors may not see the most recent uploaded user image right after uploaded. Banner upload now appends a timestamp to the filename to fix this.
  • Error fixes
    • Missing tag validation checks in various files, hogging up the error log file
    • Duplicate content fixes
    • Canonical php header for custom pages
    • Canonical php header for the login form
    • Adding search query into title while searching
  • http://visiolist.com/community/threads/link-code-issue.2184/
    • Auto detects what link code to use now
    • Default is the non friendly link
    • friendly link is only used if friendly link is set obviously plus
      • list itself uses https
      • or list and member site both have the same
  • http://visiolist.com/community/threads/non-numeric-value.2182/
    • removed, old legacy code to init stats values in details.php and user_cpl.php
    • reapplied number_format to stats values in various files
  • Plugin functionality added to sitemap.php, including hooks
  • Custom join elements and any element generated through form.php can now be freely placed by using the template tag {$form_acf_fieldID} (fieldID is the id you applied to it while creating it)
  • Pagination (ranking pages) changes
    • Instead of having the first member rank in the url, we now use page number
    • Say you list 15 sites per page, page 2 had in url "16", now its "2"
  • Clean Url's plugin moved into the core
  • User login remember me function
Thank you Basti and @Mark
 
Top