⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
id
/
dalily.dev-unit.com
/
documentation
/
View File Name :
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="keywords" content=""> <title>LaraClassifier - Documentation</title> <!-- Styles --> <link href="assets/css/theDocs.all.min.css" rel="stylesheet"> <link href="assets/css/custom.css" rel="stylesheet"> <link href="assets/css/skin-blue.css" rel="stylesheet"> <!-- Fonts --> <link href='https://fonts.googleapis.com/css?family=Raleway:100,300,400,500%7CLato:300,400' rel='stylesheet' type='text/css'> <!-- Favicons --> <link rel="icon" href="assets/img/favicon.png"> </head> <body data-spy="scroll" data-target=".sidebar" data-offset="200"> <!-- Sidebar --> <aside class="sidebar sidebar-boxed sidebar-dark" style="padding-top: 25px;"> <a class="sidebar-brand" href="index.html" style="margin-top: 0;"> <img src="assets/img/logo-sidebar.png" alt="Logo LaraClassifier" style="width: 240px;"> </a> <ul class="nav sidenav dropable"> <li> <a href="#system-requirements">System Requirements</a> <ul> <li><a href="#database-requirements">Database Requirements</a></li> <li><a href="#server-requirements">Server Requirements</a></li> <li><a href="#php-ini-requirements">PHP.ini Requirements</a></li> <li><a href="#files-permissions">File and Folder Permissions</a></li> <li><a href="#supported-web-servers">Supported Web Servers</a></li> </ul> </li> <li> <a href="#installation">Installation</a> <ul> <li><a href="#install-on-apache">Install on Apache</a></li> <li><a href="#install-on-nginx">Install on Nginx</a></li> <li><a href="#install-on-localhost">Install on Localhost</a></li> </ul> </li> <li> <a href="#error-403">Error 403</a> <ul> <li><a href="#error-403-on-apache">Error 403 on Apache</a></li> <li><a href="#error-403-on-nginx">Error 403 on Nginx</a></li> <li><a href="#error-403-on-litespeed">Error 403 on LiteSpeed</a></li> <li><a href="#error-403-related-to-firewalls">Error 403 related to Firewalls</a></li> </ul> </li> <li><a href="#upgrade">Upgrade</a></li> <li> <a href="#smtp">SMTP</a> <ul> <li><a href="#own-smtp-server">Own SMTP Server</a></li> <li><a href="#mailgun">Mailgun</a></li> <li><a href="#postmark">Postmark</a></li> <li><a href="#amazon-ses">Amazon SES</a></li> <li><a href="#sparkpost">Sparkpost</a></li> </ul> </li> <li> <a href="#payment-providers">Payment Providers</a> <ul> <li> <a href="#paypal">PayPal</a> </li> </ul> </li> <li> <a href="#sms-apis">SMS APIs</a> </li> <li> <a href="#social-login">Social Login</a> <ul> <li><a href="#facebook">Facebook</a></li> <li><a href="#linkedin">LinkedIn</a></li> <li><a href="#twitter-oauth-2">Twitter (OAuth 2.0)</a></li> <li><a href="#twitter">Twitter (OAuth 1.0)</a></li> <li><a href="#google">Google (deprecated)</a></li> </ul> </li> <li><a href="#google-maps">Google Maps</a></li> <li><a href="#captcha">Captcha</a></li> <li> <a href="#image-processing">Image Processing</a> <ul> <li><a href="#imagick">Imagick</a></li> </ul> </li> <li> <a href="#localization">Localization</a> </li> <li> <a href="#svg-maps">SVG Maps</a> </li> <li> <a href="#countries-data">Countries Data</a> </li> <li> <a href="#languages">Languages</a> </li> <li> <a href="#how-to">How To</a> </li> <li> <a href="#cron-job">Cron Job</a> </li> <li> <a href="#backup">Backup</a> </li> <li> <a href="#backup-storage">Backup Storage</a> <ul> <li><a href="#cloud-storage-ftp">FTP</a></li> <li><a href="#cloud-storage-sftp">SFTP</a></li> <li><a href="#cloud-storage-s3">Amazon S3</a></li> <li><a href="#cloud-storage-dropbox">Dropbox</a></li> <li><a href="#cloud-storage-digitalocean">DigitalOcean</a></li> </ul> </li> <li> <a href="#api">API</a> </li> <li> <a href="#credits">Credits</a> </li> <li> </li> <li> </li> <li> </li> </ul> </aside> <!-- END Sidebar --> <header class="site-header navbar-transparent"> <!-- Top navbar & branding --> <nav class="navbar navbar-default"> <div class="container-fluid"> <!-- Toggle buttons and brand --> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar" aria-expanded="true" aria-controls="navbar"> <span class="glyphicon glyphicon-option-vertical"></span> </button> <button type="button" class="navbar-toggle for-sidebar" data-toggle="offcanvas"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <!-- END Toggle buttons and brand --> <!-- Top navbar --> <div id="navbar" class="navbar-collapse collapse" aria-expanded="true" role="banner"> <ul class="nav navbar-nav navbar-right"> <li class="active"><a href="changelog.html">Changelog</a></li> <li><a href="https://support.laraclassifier.com/help-center">Help Center</a></li> <li class="hero"><a href="https://1.envato.market/30rEB">Purchase</a></li> </ul> </div> <!-- END Top navbar --> </div> </nav> <!-- END Top navbar & branding --> <!-- Banner --> <div class="banner auto-size bg-primary"> <div class="container-fluid text-white"> <h1><strong>LaraClassifier</strong> documentation</h1> <h5>For a quick and easy installation we created for you this technical support.</h5> </div> </div> <!-- END Banner --> </header> <main class="container-fluid"> <!-- Main content --> <article class="main-content" role="main"> <p class="lead">Please use the left navigation bar to browse through this support. Let’s go !</p> <section> <h2 id="system-requirements">System Requirements</h2> <h3 id="database-requirements"><strong>Database Requirements</strong></h3> <ul> <li>MySQL 5.7+ (or MariaDB 10.3+) is required.</li> <li>The DB user needs to have a full privilege to manage the database, including privilege to <code>FLUSH TABLES</code>, etc.</li> <li>To ensure proper support for certain language characters, the database collation should be set to one of the following options, in order of preference, with the respective charset: <code>utf8mb4_0900_ai_ci</code>, <code>utf8mb4_unicode_ci</code>, <code>utf8mb4_general_ci</code>, <code>utf8mb3_unicode_ci</code>, <code>utf8mb3_general_ci</code>, <code>utf8_unicode_ci</code>, or <code>utf8_general_ci</code>.</li> <li>For optimal database performance, set <code>max_user_connections</code> between <code>30</code>-<code>100</code> to control individual user load and <code>max_connections</code> between <code>150</code>-<code>200</code> to handle overall traffic.</li> </ul> <h3 id="server-requirements"><strong>Server Requirements</strong></h3> <p>Before installing, please make sure you have enabled on your server the below components:</p> <ul> <li>PHP 8.2 or greater (with all default PHP functions enabled, including <code>exec()</code>, <code>escapeshellarg()</code>, etc.)</li> <li>BCMath PHP Extension</li> <li>Ctype PHP Extension</li> <li>cURL PHP Extension (version 7.34.0 or greater)</li> <li>DOM PHP Extension</li> <li>Fileinfo PHP extension</li> <li>Filter PHP Extension</li> <li>Hash PHP Extension</li> <li>JSON PHP Extension</li> <li>Mbstring PHP Extension</li> <li>OpenSSL PHP Extension</li> <li>PCRE PHP Extension</li> <li>PDO PHP Extension</li> <li>Session PHP Extension</li> <li>Tokenizer PHP Extension</li> <li>XML PHP Extension</li> <li>GD PHP Extension (version 2.0 or greater) (or Imagick PHP Extension (version 6.5.7 or greater))</li> <li>PHP Zip Archive</li> <li>Rewrite Module Enabled</li> </ul> <h3 id="php-ini-requirements"><strong>PHP.ini Requirements</strong></h3> <ul><li><code>open_basedir</code> must be disabled</li></ul> <h3 id="files-permissions"><strong>File & Folder Permissions</strong></h3> <pre><code>/bootstrap 775 /storage 775 (recursively) </code></pre> <h3 id="supported-web-servers"><strong>Supported Web Servers</strong></h3> <p>One of the following server types can be used to host the app, taking into account the associated requirements:</p> <ul> <li>Apache. Note: Fully supported.</li> <li>Nginx. Note: Fully supported.</li> <li>LiteSpeed (or OpenLiteSpeed). Note: Permissions and firewall management need to be properly handled. LSCache is not supported.</li> <li>Varnish. Important: The server cache management need to be properly handled. Strong server configuration and programming knowledge are required.</li> </ul> </section> <section> <h2 id="installation">Installation</h2> <p>Before starting the installation you have to check out the <a href="#system-requirements">system requirements</a> first.</p> <h3 id="install-on-apache"><strong>Install on Apache</strong></h3> <ul> <li>Create a new MySQL (or MariaDB) database from your cPanel (or from similar hosting manager) using phpMyAdmin (or similar databases management tool). And add user to manage the database with full privileges/permissions.</li> <li> After creating the database, unzpip the file you have downloaded from CodeCanyon and upload the <strong>contents</strong> of <strong>LaraClassifier</strong> folder to your server root, usually <code>/path/to/www/</code> or <code>/path/to/html/</code> or <code>/path/to/httpdocs/</code> or <code>/path/to/public_html/</code>. <div class="alert alert-warning" role="alert" style="margin-top: 15px;"> <strong>Important:</strong> Always use a desktop application like <a href="https://filezilla-project.org/" target="_blank">FileZilla</a> to upload files to FTP as opposed to web based file managers to avoid issues with corrupted or not properly uploaded files. </div> <div class="alert alert-warning" role="alert"> <strong>Important:</strong> Make sure that <strong>.htaccess</strong> file got copied properly from the download to main LaraClassifier folder on your server. </div> This is what the files should look like on your server: <div class="file-tree"> <ul> <li class="is-folder">...</li> <li class="is-folder open"> public_html<i>Your server root folder. Could be named "www", "html", "httpdocs" or "public_html" or "domain.tld" depending on the hosting provider</i> <ul> <li class="is-folder">app</li> <li class="is-folder">bootstrap</li> <li class="is-folder">config</li> <li class="is-folder">database</li> <li class="is-folder">documentation</li> <li class="is-folder">extras</li> <li class="is-folder">lang</li> <li class="is-folder">packages</li> <li class="is-folder"> public<i>You may also configure your domain name to point directly to this folder from your DNS zone management area (Optional)</i> <ul> <li class="is-folder">assets</li> <li class="is-folder">dist</li> <li class="is-folder">images</li> <li class="is-folder">vendor</li> <li class="is-file">.htaccess<i>Make sure all hidden files are also present on your server, including the .htaccess files</i></li> <li class="is-file">index.php</li> <li class="is-file">...</li> </ul> </li> <li class="is-folder">resources</li> <li class="is-folder">routes</li> <li class="is-folder">storage</li> <li class="is-folder">tests</li> <li class="is-folder">vendor</li> <li class="is-file">...</li> <li class="is-file">.htaccess<i>Make sure all hidden files are also present on your server, including the .htaccess files</i></li> <li class="is-file">...</li> </ul> </li> <li class="is-folder">...</li> </ul> </div> </li> <li>Go to the script's installation URL (i.e. <code>http://mysite.com/install</code>).</li> <li>And follow the web installation wizard.</li> </ul> <p></p> <h3 id="install-on-nginx"><strong>Install on Nginx</strong></h3> <ul> <li>Create a new MySQL (or MariaDB) database from your cPanel (or from similar hosting manager) using phpMyAdmin (or similar databases management tool). And add user to manage the database with full privileges/permissions.</li> <li> Put all the LaraClassifier package files to your server root, usually <code>/path/to/www/</code> or <code>/path/to/html/</code> or <code>/path/to/httpdocs/</code> or <code>/path/to/public_html/</code> and set your server configuration like this: <pre style="margin-top: 10px;"><code>... root "<strong>/path/to/www/</strong>public"; ... location / { try_files $uri $uri/ /index.php?$query_string; } ... </code></pre> or <pre style="margin-top: 10px;"><code>... root "<strong>/path/to/public_html/</strong>public"; ... location / { try_files $uri $uri/ /index.php?$query_string; } ... </code></pre> Check out this link for more information about the <a href="https://support.laraclassifier.com/hc/articles/18/3/100/nginxs-server-configuration" target="_blank">Nginx's Server Configuration</a>.<br><br> </li> <li>Then restart Nginx.</li> <li>Go to the script's installation URL (i.e. <code>http://mysite.com/install</code>).</li> <li>And follow the web installation wizard.</li> </ul> <h3 id="install-on-localhost"><strong>Install on Localhost</strong></h3> <ul> <li>You have to create a local virtual host by using a domain name (eg. <code>http://mysite.localhost</code>) instead of localhost (<code>http://localhost/mysite</code>). <ul> <li>This can be easily done using <a href="https://herd.laravel.com/" target="_blank">Laravel Herd</a> (MacOS & Windows) or <a href="https://www.mamp.info/" target="_blank">MAMP PRO</a> (MacOS & Windows) or <a href="https://laragon.org/" target="_blank">Laragon</a> (Windows only).</li> <li>Or with <a href="https://www.apachefriends.org/" target="_blank">XAMPP</a> (Windows, MacOS & Linux) by following the steps in these articles: <ul> <li><a href="https://nil.pro.np/xampp-windows-localhost-domain/" target="_blank">How to Change localhost to a Custom Domain Name in XAMPP/WAMP (Windows)?</a></li> <li><a href="https://stackoverflow.com/a/23933253/9869030" target="_blank">How to change the URL from "localhost" to something else, on a local system using wampserver?</a></li> </ul> </li> </ul> </li> <li>Restart your server.</li> <li>Create a new MySQL (or MariaDB) database. And add user to manage the database with full privileges/permissions.</li> <li>Go to the script's installation URL (i.e. <code>http://mysite.localhost/install</code>).</li> <li>And follow the web installation wizard.</li> </ul> <h3 id="installation-notes"><strong>Notes</strong></h3> <div class="alert alert-info" role="alert"> <strong>Note:</strong> <ul> <li>The script doesn't have an "install" folder. The installation is handled by a Controller.</li> <li>The script's loading times during the installation and upgrade processes may seem long but it is not actually the case. Indeed, bearing in mind that server configurations may differ from one user to another, we have opted for some pause times of 1 to 2 seconds in the installation and upgrade codes to avoid any asynchronous request execution of the installation and/or upgrade processes.</li> </ul> </div> </section> <section> <h2 id="error-403">Error 403</h2> <h3 id="error-403-on-apache"><strong>Error 403 on Apache</strong></h3> <ul> <li>Make sure that the Apache's <code>mod_rewrite</code> is enabled on your server.</li> <li>Make sure that the <code>AllowOverride</code> Apache's directive is set to <code>All</code> in your server's <code>apache2.conf</code> file (or in the delegate file for apache configuration on your server).</li> <li>Make sure that the <code>/.htaccess</code> and the <code>/public/.htaccess</code> files are uploaded on your server</li> </ul> <h3 id="error-403-on-nginx"><strong>Error 403 on Nginx</strong></h3> <ul> <li>If you have a 403 error on your Nginx environment, please check out these articles to learn more about the Nginx configuration: <ul> <li><a href="https://support.laraclassifier.com/help-center/articles/18/3/100/nginxs-server-configuration" target="_blank">Nginx's Server Configuration</a></li> <li><a href="https://laravel.com/docs/master/deployment#nginx" target="_blank">Laravel's official documentation</a></li> </ul> </li> <li>If the error persists, please contact your hosting provider for more information and get a suitable help about that.</li> </ul> <h3 id="error-403-on-litespeed"><strong>Error 403 on LiteSpeed</strong></h3> <p> This error is related to <code>LiteSpeed</code> (<strong>LiteSpeed Web Server</strong>) or similar servers like <code>OpenLiteSpeed</code>.<br><br> <a href="assets/files/litespeed-403-error.png" target="_blank"><img src="assets/files/litespeed-403-error.png" alt="LiteSpeed 403 Error" style="border: 2px solid #444; width: 500px; height: auto;"></a> </p> <ul> <li> If you receive an error 403 like in the screenshot above, this means that the script's files contents are not yet called before the error occurs, and you have to fix this error on your server (by contacting your hosting provider to get a suitable help). <br>NOTE: Usually this error is caused by wrong files permissions related to your hosting provider rules. Please check out these links for more information about that: <ul> <li><a href="https://docs.litespeedtech.com/lsws/cp/cpanel/403-error/#file-restriction" target="_blank">File Restriction (Incorrect File Ownership)</a></li> <li><a href="https://bobcares.com/blog/litespeed-403-forbidden-error/" target="_blank">Litespeed 403 forbidden error</a></li> </ul> </li> <li> If the issue persists after fixing the files permissions, you must disable the <code>mode_security</code> on your server: <ul> <li><a href="https://support.laraclassifier.com/hc/articles/18/14/107/how-to-disable-mod_security" target="_blank">How to disable server's mod_security?</a></li> </ul> </li> <li>Otherwise, if restrictions cannot be properly configured, we strongly recommend to move to a classic web server.</li> </ul> <h3 id="error-403-related-to-firewalls"><strong>Error 403 related to Firewalls</strong></h3> <p> This error is related to services like: <code>Cloudflare</code>, <code>Imunify360</code>, etc.<br><br> <a href="assets/files/imunefy360-error-example.png" target="_blank"><img src="assets/files/imunefy360-error-example.png" alt="Imunify360 403 Error" style="border: 2px solid #444; width: 500px; height: auto; margin-right: 10px;"></a> <a href="assets/files/imunefy360-403-error.png" target="_blank"><img src="assets/files/imunefy360-403-error.png" alt="Imunify360 403 Error" style="border: 2px solid #444; width: 500px; height: auto;"></a> </p> <ul> <li>This kind of service is often more discreet and sometimes only blocks pages or static files (such as CSS, JS files, etc.). If you notice that the pages of your website are displayed without CSS styles and in a disordered way, it is very likely that the protection service of your server has not been configured to authorize requests coming from the files of your new website. You must therefore review this configuration on your server or contact your host for more suitable help.</li> <li> Also if you receive errors 403 after seeing a security page like the screenshot above, this means that the <strong>Cloudflare</strong> (or similar system like <strong>Imunify360</strong>, etc.) service is installed on your server and blocks some of the script's requests. You have to fix the issue on your server (by whitelisting all the script's requests or by contacting your hosting provider to get a suitable help). </li> <li>Otherwise, we strongly recommend to add all the script's files in the service's whitelist files, or we recommend to remove/disable the service on your server to avoid any request ban.</li> </ul> </section> <section> <h2 id="upgrade">Upgrade to new versions</h2> <p><strong>IMPORTANT:</strong> For both upgrade methods, make sure you have backup your website (files and database) before starting the upgrade.</p> <div class="alert alert-info" role="alert"> <strong>Note:</strong> The script's loading times during the installation and upgrade processes may seem long but it is not actually the case. Indeed, bearing in mind that server configurations may differ from one user to another, we have opted for some pause times of 1 to 2 seconds in the installation and upgrade codes to avoid any asynchronous request execution of the installation and/or upgrade processes. </div> <h3>1. SSH Upgrade Method</h3> <ol> <li>Put your website under maintenance from the Admin panel → System → Maintenance. And don't log out as admin user.</li> <li>Clear the website cache from the Admin panel → Clear Cache.</li> <li>Download the latest version from <a href="https://codecanyon.net/downloads" target="_blank">CodeCanyon</a>.</li> <li>Copy the <code>.zip</code> file you have downloaded to the root of your server (same place where files were uploaded during installation).</li> <li>Rename this zip file to <code>laraclassifier.zip</code> (on the server).</li> <li>Delete <code>vendor</code> directory from your server (So there are no old unused files left from previous versions).</li> <li>Use a terminal (console) to log in your website's root folder.</li> <li>Once in your website's root folder, run the command: <code>unzip -o laraclassifier.zip -x ".htaccess" -x "public/.htaccess" -x "public/dist/front/custom.css"</code></li> <li>Ensure to never delete or replace the <code>/.env</code> and the <code>/storage/installed</code> files.</li> <li>Wait for the execution of this command to complete.</li> <li>(If you have installed any plugins) Update them to their latest version.</li> <li>Visit the URL <code>https://domain.tld/upgrade</code> and click on the <code>Upgrade Now</code> button.</li> <li>Once update is completed your website will go to live automatically, and you will be redirected back to homepage.</li> </ol> <h3>2. Traditional Upgrade Method</h3> <div class="alert alert-warning" role="alert"> <strong>Caution:</strong><br> <ul> <li> If you have made any CSS customization, backup your <code>/public/dist/front/custom.css</code> file and overwrite its latest version after update.<br> (If you didn't make any CSS customization you can skip this step). </li> <li> If you have made any translations, backup your language files in the <code>/lang/</code> folder, and merge their content after update.<br> (If you didn't make any translations you can skip this step). </li> </ul> </div> <br> <ol> <li>Put your website under maintenance from the Admin panel → System → Maintenance. And don't log out as admin user.</li> <li>Clear the website cache from the Admin panel → Clear Cache.</li> <li>Download the latest version from <a href="https://codecanyon.net/downloads" target="_blank">CodeCanyon</a>.</li> <li>Copy the <code>.zip</code> file you have downloaded to the root of your server (same place where files were uploaded during installation).</li> <li>Delete <code>vendor</code> directory from your server (So there are no old unused files left from previous versions).</li> <li>Extract the <code>.zip</code> file (that you have uploaded) into the website's root folder by <strong>overwriting</strong> old files. Ensure to never delete or replace the <code>/.env</code> and the <code>/storage/installed</code> files.</li> <li>(If you have installed any plugins) Update them to their latest version.</li> <li>Visit the URL <code>https://domain.tld/upgrade</code> and click on the <code>Upgrade Now</code> button (Make sure you are logged in as admin).</li> <li>Once update is completed your website will go to live automatically, and you will be redirected back to homepage.</li> </ol> <h3>Upgrade Notes</h3> <div class="alert alert-success" role="alert"> No users, data, uploads or settings will be lost on your site when applying updates. </div> <div class="alert alert-warning" role="alert"> <strong>Important:</strong><br> If your server or hosting provider uses some kind of file caching (supercacher, opcache, cloudflare cache etc) you will need to clear that cache after updating, otherwise some changes from the update might not work properly. </div> <div class="alert alert-info" role="alert"> <strong>If you receive an error related to the Purchase Code, you have to:</strong> <ul> <li><a href="https://help.market.envato.com/hc/en-us/articles/202822600-Where-Is-My-Purchase-Code" target="_blank">Find Your Purchase Code</a></li> <li>Add a new entry for your purchase code in the <code>/.env</code> file, like this: <code>PURCHASE_CODE=yourpurchasecode</code> or Log in to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Application</strong> → <strong>Purchase Code</strong> and Edit the line to add your Purchase Code </li> </ul> </div> <div class="callout callout-danger" role="alert"> <p>- <span style="color: red;">Exception of v7.1.0:</span></p> <ul> <li>You have to upload/replace the <code>/storage/app/public/app/default/</code> folder on your server before or after running the upgrade URL.</li> </ul> <p>- <span style="color: red;">In the v5.1+ you have to activate all the purchased plugins (add-ons) using their purchase code from the Admin panel → Plugins.</span></p> <p>- <span style="color: red;">(Only) If your website is running on the v4.8 or lower, it's important to know that:</span></p> <ul> <li>Before starting the upgrade, you have to move all the contents of the <code>/public/uploads/</code> directory to the <code>/storage/app/public/</code> directory.</li> </ul> <p>- <span style="color: red;">(Only) If your website is running on the v4.3 or lower: By upgrading your website to the v4.4 it's important to know that:</span></p> <ul> <li>You will lose all your <code>Admin panel → Settings</code> entries, and you will need to setup your website again.</li> <li>You will lose all the current internal messages (that were also sent by email address to their receivers)</li> <li>If you want to re-activate the listings review (ads approbation) option, all the existing listings will be approved automatically.</li> <li>You will need to (uninstall and) re-install all the script's plugins after the upgrade.</li> <li>You will lose all the plugins data and settings (except the payment plugins transactions entries).</li> </ul> <p>- <span style="color: red;">(Only) If your website is running on the v3.4 or lower, before starting the upgrade you have to:</span></p> <ul> <li>add this entry: <code>APP_VERSION=X.X</code> in the <code>/.env</code> file (eg: <code>APP_VERSION=3.4</code> if your current version is 3.4 or <code>APP_VERSION=1.4</code> for 1.4). </li> <li>add a new entry for your purchase code in the <code>/.env</code> file, like this: <code>PURCHASE_CODE=yourpurchasecode</code>.</li> <li>(if exists) change <code>DB_PREFIX=</code> to <code>DB_TABLES_PREFIX=</code> in the <code>/.env</code> file.</li> <li>(if exist) remove the <code>SESSION_DRIVER=file</code> and <code>SESSION_DOMAIN=.mysite.com</code> entries from the <code>/.env</code> file.</li> </ul> </div> </section> <section> <h2 id="smtp">SMTP</h2> <strong>What is SMTP ?</strong><br> <p>Short for Simple Mail Transfer Protocol, a protocol for sending e-mail messages between servers. Most e-mail systems that send mail over the Internet use SMTP to send messages from one server to another; the messages can then be retrieved with an e-mail client using either POP or IMAP. In addition, SMTP is generally used to send messages from a mail client to a mail server. This is why you need to specify both the POP or IMAP server and the SMTP server when you configure your e-mail application.</p> <strong>In short it used to send emails to your site users..!!</strong> You can use any SMTP service provider. <ul> <li>Your own hosting SMTP server</li> <li>Mailgun</li> <li>Postmark</li> <li>Amazon SES</li> <li>Sparkpost</li> <li>Gmail, Yahoo or some other email provider</li> </ul> <strong>Please note that some hosting providers blocks port 25 or 465 in that case you have change your SMTP email server or contact your hosting provider</strong> <h3 id="own-smtp-server">Own SMTP Server</h3> <strong>Using your own or some SMTP server</strong> <strong>Admin panel setup</strong> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Mail</strong></li> <li>Set '<strong>Mail Mailer</strong>', '<strong>Mail Host</strong>', '<strong>Mail Port</strong>', '<strong>Mail Encryption</strong>', '<strong>Mail Username</strong>' and '<strong>Mail Password</strong>' </li> <li>And save your changes.</li> </ul> <strong>Or use <code>/.env</code> file setup</strong> <ul> <li>Login to your FTP account.</li> <li>Open and Edit <code>/.env</code> file.</li> <li>Copy and paste your server smtp details in the file.</li> </ul> It will look something like this. <pre><code>MAIL_MAILER=smtp MAIL_HOST=your-mail-host MAIL_PORT=your-mail-port MAIL_USERNAME=your-mail-username MAIL_PASSWORD=your-mail-password MAIL_ENCRYPTION=your-mail-encryption </code></pre> <ul> <li>Replace <code>your-mail-host</code>, <code>your-mail-port</code>, <code>your-mail-username</code>, <code>your-mail-password</code> and <code>your-mail-encryption</code>. </li> <li>Save and Upload the file</li> <li>You are done.</li> </ul> NOTE: The <code>/.env</code> file settings override those of the admin panel. <br><br> <div class="alert alert-info" role="alert"> <strong>Note:</strong> Don't forget to change your sender email address in your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Mail</strong> → <strong>Email Sender</strong> to match it with an allowed email address of your SMTP server. </div> <h3 id="mailgun">Mailgun</h3> <strong>Admin panel setup</strong> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Mail</strong></li> <li>Set '<strong>Mail Mailer</strong>', '<strong>Mailgun Domain</strong>', '<strong>Mailgun Secret</strong>', '<strong>Mail Host</strong>', '<strong>Mail Port</strong>', '<strong>Mail Encryption</strong>', '<strong>Mail Username</strong>' and '<strong>Mail Password</strong>' </li> <li>And save your changes.</li> </ul> <strong>Or use <code>/.env</code> file setup</strong> <ul> <li>Login to your FTP account.</li> <li>Open and edit <code>/.env</code> file.</li> <li>Remove all your current Mail configuration variables.</li> <li>Add the lines below:</li> </ul> <pre><code>MAIL_MAILER=mailgun MAILGUN_DOMAIN=your-mailgun-domain MAILGUN_SECRET=your-mailgun-secret MAILGUN_ENDPOINT=api.mailgun.net MAIL_HOST=your-mailgun-smtp-host MAIL_PORT=your-mailgun-smtp-port MAIL_USERNAME=your-mailgun-smtp-username MAIL_PASSWORD=your-mailgun-smtp-password MAIL_ENCRYPTION=your-mailgun-smtp-encryption </code></pre> <ul> <li>Replace <code>your-mailgun-domain</code>, <code>your-mailgun-secret</code>, <code>your-mailgun-smtp-host</code>, <code>your-mailgun-smtp-port</code>, <code>your-mailgun-smtp-username</code>, <code>your-mailgun-smtp-password</code> and <code>your-mailgun-smtp-encryption</code>. </li> <li>Save and upload the file.</li> <li>You are done.</li> </ul> NOTE: The <code>/.env</code> file settings override those of the admin panel. <br><br> <div class="alert alert-info" role="alert"> <strong>Note:</strong> Don't forget to change your sender email address in your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Mail</strong> → <strong>Email Sender</strong> to match it with an allowed email address of your SMTP server. </div> <h3 id="postmark">Postmark</h3> <strong>Admin panel setup</strong> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Mail</strong></li> <li>Set '<strong>Mail Mailer</strong>', '<strong>Postmark Token</strong>', '<strong>Mail Host</strong>', '<strong>Mail Port</strong>', '<strong>Mail Encryption</strong>', '<strong>Mail Username</strong>' and '<strong>Mail Password</strong>' </li> <li>And save your changes.</li> </ul> <strong>Or use <code>/.env</code> file setup</strong> <ul> <li>Login to your FTP account.</li> <li>Open and edit <code>/.env</code> file.</li> <li>Remove all your current Mail configuration variables.</li> <li>Add the lines below:</li> </ul> <pre><code>MAIL_MAILER=postmark POSTMARK_TOKEN=your-postmark-token MAIL_HOST=your-postmark-smtp-host MAIL_PORT=your-postmark-smtp-port MAIL_USERNAME=your-postmark-smtp-username MAIL_PASSWORD=your-postmark-smtp-password MAIL_ENCRYPTION=your-postmark-smtp-encryption </code></pre> <ul> <li>Replace <code>your-postmark-secret</code>, <code>your-postmark-smtp-host</code>, <code>your-postmark-smtp-port</code>, <code>your-postmark-smtp-username</code>, <code>your-postmark-smtp-password</code> and <code>your-postmark-smtp-encryption</code>. </li> <li>Save and upload the file.</li> <li>You are done.</li> </ul> NOTE: The <code>/.env</code> file settings override those of the admin panel. <br><br> <div class="alert alert-info" role="alert"> <strong>Note:</strong> Don't forget to change your sender email address in your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Mail</strong> → <strong>Email Sender</strong> to match it with an allowed email address of your SMTP server. </div> <h3 id="amazon-ses">Amazon SES</h3> <strong>Admin panel setup</strong> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Mail</strong></li> <li>Set '<strong>Mail Mailer</strong>', '<strong>SES Key</strong>', '<strong>SES Secret</strong>' and '<strong>SES Region</strong>'</li> <li>And save your changes.</li> </ul> <strong>Or use <code>/.env</code> file setup</strong> <ul> <li>Login to your FTP account.</li> <li>Open and edit <code>/.env</code> file.</li> <li>Remove all your current Mail configuration variables.</li> <li>Add the lines below:</li> </ul> <pre><code>MAIL_MAILER=ses SES_KEY=your-ses-key SES_SECRET=your-ses-secret SES_REGION=your-ses-region </code></pre> <ul> <li>Replace <code>your-ses-key</code>, <code>your-ses-secret</code> and <code>your-ses-region</code>.</li> <li>Save and upload the file.</li> <li>You are done.</li> </ul> NOTE: The <code>/.env</code> file settings override those of the admin panel. <br><br> <div class="alert alert-info" role="alert"> <strong>Note:</strong> Don't forget to change your sender email address in your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Mail</strong> → <strong>Email Sender</strong> to match it with an allowed email address of your SMTP server. </div> <h3 id="sparkpost">Sparkpost</h3> <strong>Admin panel setup</strong> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Mail</strong></li> <li>Set '<strong>Mail Mailer</strong>', '<strong>Sparkpost Secret</strong>', '<strong>Mail Host</strong>', '<strong>Mail Port</strong>', '<strong>Mail Encryption</strong>', '<strong>Mail Username</strong>' and '<strong>Mail Password</strong>' </li> <li>And save your changes.</li> </ul> <strong>Or use <code>/.env</code> file setup</strong> <ul> <li>Login to your FTP account.</li> <li>Open and edit <code>/.env</code> file.</li> <li>Remove all your current Mail configuration variables.</li> <li>Add the lines below:</li> </ul> <pre><code>MAIL_MAILER=sparkpost SPARKPOST_SECRET=your-sparkpost-secret MAIL_HOST=your-sparkpost-smtp-host MAIL_PORT=your-sparkpost-smtp-port MAIL_USERNAME=your-sparkpost-smtp-username MAIL_PASSWORD=your-sparkpost-smtp-password MAIL_ENCRYPTION=your-sparkpost-smtp-encryption </code></pre> <ul> <li>Replace <code>your-sparkpost-secret</code>, <code>your-sparkpost-smtp-host</code>, <code>your-sparkpost-smtp-port</code>, <code>your-sparkpost-smtp-username</code>, <code>your-sparkpost-smtp-password</code> and <code>your-sparkpost-smtp-encryption</code>. </li> <li>Save and upload the file.</li> <li>You are done.</li> </ul> NOTE: The <code>/.env</code> file settings override those of the admin panel. <br><br> <div class="alert alert-info" role="alert"> <strong>Note:</strong> Don't forget to change your sender email address in your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Mail</strong> → <strong>Email Sender</strong> to match it with an allowed email address of your SMTP server. </div> </section> <section> <h2 id="payment-providers">Payment Providers</h2> <p>The script support these payment providers:</p> <ul> <li>Paypal</li> </ul> <p>Paypal is one of the best payment gateway in the world, it support all credit cards and accepted in many countries.</p> <h3 id="paypal">Paypal</h3> <h5>Setting up credentials</h5> <p>Get client ID and client secret by going to: <a href="https://developer.paypal.com/developer/applications" target="_blank">https://developer .paypal.com/developer/applications</a> and generating a REST API app. Get Client ID and Secret from there. </p> <p><strong>Setup</strong></p> <ul> <li>Copy and paste the API client-id, and client-secret into the /.env file like this:</li> </ul> <pre>PAYPAL_MODE=sandbox PAYPAL_CLIENT_ID=your-paypal-client-id PAYPAL_CLIENT_SECRET=your-paypal-client-secret </pre> <ul> <li>You have to use <code>PAYPAL_MODE=live</code> in your live server.</li> <li>You are done.</li> </ul> <p>Now visit <strong>Admin Panel</strong> → <strong>Payment</strong> → <strong>Packages</strong> to set the packages and currencies.</p> </section> <section> <h2 id="sms-apis">SMS APIs</h2> <p>This functionality is only available in the version v3.1+ allowing to verify the mobile number of the users and offering the possibility to the sellers to be contacted by SMS.</p> <h3>How to set up?</h3> <ul> <li>Admin panel → Settings → General → Mail → 'SMS Driver' to set the default SMS API.</li> <li>You can use both VONAGE or TWILIO as your SMS provider API:</li> </ul> <h3 id="vonage">VONAGE</h3> <p><strong>VONAGE</strong> - <a href="https://www.vonage.com" target="_blank">https://www.vonage.com</a></p> <strong>Admin panel setup</strong> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>SMS</strong></li> <li>Set '<strong>Vonage Key</strong>', '<strong>Vonage Secret</strong>' and '<strong>Vonage From</strong>'</li> <li>And save your changes.</li> </ul> <strong>Or use <code>/.env</code> file setup</strong> <ul> <li>Login to your FTP account.</li> <li>Open and edit <code>/.env</code> file.</li> <li>Remove all your current Mail configuration variables.</li> <li>Add the lines below:</li> </ul> <pre>VONAGE_KEY=your-vonage-key VONAGE_SECRET=your-vonage-secret VONAGE_SMS_FROM=your-sender-number </pre> <h3 id="twilio">TWILIO</h3> <p><strong>TWILIO</strong> - <a href="https://www.twilio.com" target="_blank">https://www.twilio.com</a></p> <strong>Admin panel setup</strong> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>SMS</strong></li> <li>Set '<strong>Twilio Account SID</strong>', '<strong>Twilio Auth Token</strong>' and '<strong>Twilio From</strong>'</li> <li>And save your changes.</li> </ul> <strong>Or use <code>/.env</code> file setup</strong> <ul> <li>Login to your FTP account.</li> <li>Open and edit <code>/.env</code> file.</li> <li>Remove all your current Mail configuration variables.</li> <li>Add the lines below:</li> </ul> <pre>TWILIO_ACCOUNT_SID=your-twilio-account-sid TWILIO_AUTH_TOKEN=your-auth-token TWILIO_FROM=your-sender-number </pre> <h3 id="others-sms-configurations">Others SMS Configurations</h3> <p>Now, go to your Admin panel :</p> <ul> <li>Admin panel → Settings → General → SMS → 'Enable Phone Verification' to enabling/disabling the mobile Phone number verification.</li> <li>Admin panel → Settings → General → SMS → 'Enable SMS Message' to enabling/disabling the SMS sending between users.</li> </ul> <p>You are done.</p> </section> <section> <h2 id="social-login">Social Login</h2> <div class="alert alert-warning" role="alert"> <strong>Important:</strong> Make sure APP_URL in <code>/.env</code> file matches your site url. It should be set automatically, but you might need to do it manually in some rare cases. </div> <h3 id="facebook">Facebook</h3> <ol> <li>Register for regular Facebook account, if you don't already have one.</li> <li>Open <a href="https://developers.facebook.com/" target="_blank">this url</a>, and <strong>Create a New App.</strong></li> <li>Get the new app settings.</li> </ol> <p>Now, you have to setup your admin panel:</p> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Social Login</strong></li> <li>For Facebook: set '<strong>Facebook Client ID</strong>' and '<strong>Facebook Client Secret</strong>'</li> <li>And save your changes.</li> <li>You are done.</li> </ul> <p>Or place all the config values or API keys in the <code>/.env</code> file.</p> <p>Facebook example in <code>/.env</code> file</p> <pre>FACEBOOK_CLIENT_ID=your-facebook-client_id FACEBOOK_CLIENT_SECRET=your-facebook-client_secret </pre> <p>NOTE:</p> <ul> <li>The <code>/.env</code> file settings override those of the admin panel.</li> <li>The "<strong>OAuth redirect URI</strong>" is: <code>APP_URL</code><strong>/auth/connect/facebook/callback</strong></li> <li>Don't forget to replace <code>APP_URL</code> by its value (that can be found in the <code>/.env</code> file). <br>Example: <code>https://domain.tld</code>/auth/connect/facebook/callback</li> </ul> <h3 id="linkedin">LinkedIn</h3> <ol> <li>Register for regular LinkedIn account, if you don't already have one.</li> <li>Open <a href="https://www.linkedin.com/developer/apps" target="_blank">this url</a>, and <strong>Create a New App.</strong></li> <li>Get the new app settings.</li> </ol> <p>Now, you have to setup your admin panel:</p> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Social Login</strong></li> <li>For LinkedIn: set '<strong>LinkedIn Client ID</strong>' and '<strong>LinkedIn Client Secret</strong>'</li> <li>And save your changes.</li> <li>You are done.</li> </ul> <p>Or place all the config values or API keys in the <code>/.env</code> file.</p> <p>LinkedIn example in <code>/.env</code> file</p> <pre>LINKEDIN_CLIENT_ID=your-linkedin-client_id LINKEDIN_CLIENT_SECRET=your-linkedin-client_secret </pre> <p>NOTE:</p> <ul> <li>The <code>/.env</code> file settings override those of the admin panel.</li> <li>The "<strong>OAuth redirect URI</strong>" is: <code>APP_URL</code><strong>/auth/connect/linkedin/callback</strong></li> <li>Don't forget to replace <code>APP_URL</code> by its value (that can be found in the <code>/.env</code> file). <br>Example: <code>https://domain.tld</code>/auth/connect/linkedin/callback</li> </ul> <h3 id="twitter-oauth-2">Twitter (OAuth 2.0)</h3> <ol> <li>Register for regular Twitter account, if you don't already have one.</li> <li>Open <a href="https://apps.twitter.com/" target="_blank">this url</a>, and <strong>Create a New App.</strong></li> <li>Get the new app settings.</li> </ol> <p>Now, you have to setup your admin panel:</p> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Social Login</strong></li> <li>For Twitter: set '<strong>Twitter Client ID</strong>' and '<strong>Twitter Client Secret</strong>'</li> <li>And save your changes.</li> <li>You are done.</li> </ul> <p>Or place all the config values or API keys in the <code>/.env</code> file.</p> <p>Twitter example in <code>/.env</code> file</p> <pre>TWITTER_OAUTH_2_CLIENT_ID=your-twitter-oauth-2-client_id TWITTER_OAUTH_2_CLIENT_SECRET=your-twitter-oauth-2-client_secret </pre> <p>NOTE:</p> <ul> <li>The <code>/.env</code> file settings override those of the admin panel.</li> <li>The "<strong>OAuth redirect URI</strong>" is: <code>APP_URL</code><strong>/auth/connect/twitter-oauth-2/callback</strong></li> <li>And before configuring your Twitter app in the script, you have to change its Permissions (on developer.twitter.com) by enabling the "<strong>Request email address from users</strong>" option. </li> <li>Don't forget to replace <code>APP_URL</code> by its value (that can be found in the <code>/.env</code> file). <br>Example: <code>https://domain.tld</code>/auth/connect/twitter-oauth-2/callback</li> </ul> <h3 id="twitter">Twitter (OAuth 1.0)</h3> <ol> <li>Register for regular Twitter account, if you don't already have one.</li> <li>Open <a href="https://apps.twitter.com/" target="_blank">this url</a>, and <strong>Create a New App.</strong></li> <li>Get the new app settings.</li> </ol> <p>Now, you have to setup your admin panel:</p> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Social Login</strong></li> <li>For Twitter: set '<strong>Twitter Client ID</strong>' and '<strong>Twitter Client Secret</strong>'</li> <li>And save your changes.</li> <li>You are done.</li> </ul> <p>Or place all the config values or API keys in the <code>/.env</code> file.</p> <p>Twitter example in <code>/.env</code> file</p> <pre>TWITTER_CLIENT_ID=your-twitter-client_id TWITTER_CLIENT_SECRET=your-twitter-client_secret </pre> <p>NOTE:</p> <ul> <li>The <code>/.env</code> file settings override those of the admin panel.</li> <li>The "<strong>OAuth redirect URI</strong>" is: <code>APP_URL</code><strong>/auth/connect/twitter/callback</strong></li> <li>And before configuring your Twitter app in the script, you have to change its Permissions (on developer.twitter.com) by enabling the "<strong>Request email address from users</strong>" option. </li> <li>Don't forget to replace <code>APP_URL</code> by its value (that can be found in the <code>/.env</code> file). <br>Example: <code>https://domain.tld</code>/auth/connect/twitter/callback</li> </ul> <h3 id="google">Google (deprecated)</h3> <ol> <li>Register for regular Google account, if you don't already have one.</li> <li>Open <a href="https://console.developers.google.com/" target="_blank">this url</a>, and <strong>Create a New App.</strong></li> <li>Get the new app settings.</li> </ol> <p>Now, you have to setup your admin panel:</p> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Social Login</strong></li> <li>For Google: set '<strong>Google Client ID</strong>' and '<strong>Google Client Secret</strong>'</li> <li>And save your changes.</li> <li>You are done.</li> </ul> <p>Or place all the config values or API keys in the <code>/.env</code> file.</p> <p>Google example in <code>/.env</code> file</p> <pre>GOOGLE_CLIENT_ID=your-google-client_id GOOGLE_CLIENT_SECRET=your-google-client_secret </pre> <p>NOTE:</p> <ul> <li>The <code>/.env</code> file settings override those of the admin panel.</li> <li>The "<strong>OAuth redirect URI</strong>" is: <code>APP_URL</code><strong>/auth/connect/google/callback</strong></li> <li>Don't forget to replace <code>APP_URL</code> by its value (that can be found in the <code>/.env</code> file). <br>Example: <code>https://domain.tld</code>/auth/connect/google/callback</li> </ul> </section> <section> <h2 id="google-maps">Google Maps</h2> <p>You have to activate <a href="https://developers.google.com/maps/documentation/embed/guide" target="_blank">Google Maps Embed API</a> and <a href="https://developers.google.com/maps/documentation/javascript/get-api-key#get-an-api-key" target="_blank">Google Maps JavaScript API</a> in your Google Console.</p> <p><strong>Admin panel setup</strong></p> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Others</strong></li> <li>Set ‘<strong>Google Maps key</strong>‘</li> <li>And save your changes.</li> </ul> <p><strong>Or use /.env file setup</strong></p> <ul> <li>Login to your FTP account.</li> <li>Open and edit <code>.env</code> file.</li> <li>Add this code:</li> </ul> <pre>GOOGLE_MAPS_API_KEY=your-googlemaps-key </pre> <ul> <li>Replace <code>your-googlemaps-key</code>.</li> <li>Save and upload the file.</li> <li>You are done.</li> </ul> </section> <section> <h2 id="captcha">Captcha</h2> <h4 id="recaptcha-key">Recaptcha Key</h4> <h5 id="what-is-recaptcha">What is recaptcha</h5> <p>reCAPTCHA is a free CAPTCHA service that helps protect your site against spam, malicious registrations and other forms of attacks where computers try to disguise themselves as a human. reCAPTCHA comes in the form of a widget that you can easily add to your blog, forum, registration.</p> <strong>How to setup.</strong> <ul> <li>Visit <a href="https://www.google.com/recaptcha/admin" target="_blank">https://www.google.com/recaptcha/admin</a></li> <li>Follow the steps by select the reCAPTCHA version and get your <strong>site key</strong> and your <strong>secret key</strong>.</li> </ul> <p><strong>Admin panel setup</strong></p> <ul> <li>Go to the <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Security</strong></li> <li>Enable the feature from the '<strong>Enable reCAPTCHA</strong>' field</li> <li>Set '<strong>reCAPTCHA version</strong>', '<strong>reCAPTCHA site key</strong>' and '<strong>reCAPTCHA secret key</strong>'</li> <li>And save your changes.</li> </ul> <p><strong>Or use <code>/.env</code> file setup</strong></p> <ul> <li>Login to your FTP account</li> <li>Open <code>/.env</code> file.</li> <li>Provide the keys there.</li> </ul> <pre><code>RECAPTCHA_VERSION=your-recaptcha-keys-version RECAPTCHA_SITE_KEY=your-recaptcha-site_key RECAPTCHA_SECRET_KEY=your-recaptcha-secret_key </code></pre> <ul> <li> Replace <code>your-recaptcha-keys-version</code> (by <strong>v2</strong> or <strong>v3</strong>), replace <code>your-recaptcha-site_key</code> and <code>your-recaptcha-secret_key</code> by your keys. </li> <li>Save the file.</li> <li>You are done.</li> </ul> <p>NOTE: The <code>/.env</code> file settings override those of the admin panel.</p> </section> <section> <h2 id="image-processing">Image Processing</h2> <h4 id="image-setting">Image Setting</h4> <p>The script support for two image processor.</p> <ul> <li>GD</li> <li>Imagick</li> </ul> <p>GD is very basic image resizing driver for PHP and only to used on basic website. It has memory issues and doesn't perform well at all conditions.<br> If you want your site for pro-photography or better quality images we prefer you to use <strong>imagick</strong> instead for better quality results.<br> Please make sure that your server has <strong>imagick</strong> installed.</p> <h3 id="imagick">Imagick</h3> <p><strong>First make sure that you have imagick installed on your server, if not then contact your hosting provider.</strong></p> <ul> <li>Login to your FTP account.</li> <li>Open and edit <code>/.env</code> file.</li> </ul> <strong>Search</strong> <pre><code>IMAGE_DRIVER=gd </code></pre> <strong>Change it to</strong> <pre><code>IMAGE_DRIVER=imagick </code></pre> <ul> <li>You are done.</li> </ul> </section> <section> <h2 id="localization">Localization</h2> <h5>How can I enable Geolocation?</h5> <ul> <li>Visit the <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Localization</strong></li> <li>Check the '<strong>Enable Geolocation</strong>' field.</li> <li>Select a '<strong>GeoIP Driver</strong>' - NOTE: By selecting a GeoIP driver/service, its website link (and if required, API/license key/token fields) will be shown.</li> <li>(If available) Get the GeoIP service API key/token (or license key) and insert it in the geolocation settings form.</li> <li> By selecting '<strong>maxmind.com (Database)</strong>' as GeoIP service, you have to: <ol> <li>Go to: <a href="https://dev.maxmind.com/geoip/geoip2/geolite2/" target="_blank">https://dev.maxmind.com/geoip/geoip2/geolite2/</a> </li> <li>Download the latest binary version of the 'GeoLite2-City.mmdb' database.</li> <li>Extract it in the Maxmind database folder at <code>/storage/database/maxmind/</code> like this <code>/storage/database/maxmind/GeoLite2-City.mmdb</code> <br>You can replace the current file (if exists) to update the Maxmind database. </li> </ol> NOTE: It's important to note that the lite (free) versions of the Maxmind databases are not accurate. Please check out this link for more information: <a href="https://support.maxmind.com/geolite-faq/" target="_blank">https://support.maxmind.com/geolite-faq/</a>. </li> <li>If you want to redirect users to their country's website based on their IP address, you should leave blank the parameter "<strong>Default Country</strong>". <br>IMPORTANT: When you reset this option by setting a default country, you need clear all your browser's session and cookies (and other data like: hosted app\'s data and cache, etc.) to see the effect of the change. </li> <li>You are done.</li> </ul> </section> <section> <h2 id="svg-maps">SVG Maps</h2> <p>The script uses Simplemaps SVG maps (<a href="http://simplemaps.com/resources/svg-maps" target="_blank">http://simplemaps.com/resources/svg-maps</a>). And the map of some countries (Kosovo, some islands, etc.) are not available.</p> <p>For some countries you need to edit the SVG files to change some states or provinces name etc. You can find all the SVG maps files in the <code>/public/images/maps/</code> directory.</p> <p>There are a free (commercial use) license and a paid license. So you can buy a license for some missing SVG maps and hire a local developer to add them for your website (based on current code). You can also disable the SVG maps from your Admin panel.</p> </section> <section> <h2 id="countries-data">Countries Data</h2> <h5><strong>Geonames Database</strong></h5> <p>It is important to know that the script uses Geonames database (<a href="http://www.geonames.org" target="_blank">http://www.geonames.org</a>) (their most structured database) for data on cities and administrative divisions.</p> <p>But, sadly, this database is not complete for any country. And you need to update this database (from your Admin panel → Settings → International → Countries → "Admin. Division x" or "Cities") by adding new data (respecting the Geonames data format) or by modifying existing data or by deleting them.</p> <p>From v3.1+ you have to update the countries locations database from your Admin panel → Settings → International → Countries (see the screenshot below)</p> <p> <a href="https://laraclassifier.com/uploads/2017/02/country-locations-database.png"> <img class="text-center center-block" src="https://laraclassifier.com/uploads/2017/02/country-locations-database-1024x304.png" alt="" width="700" height="208" /> </a> </p> <p>The script does not support certain countries (Kosovo, some islands, etc.) automatically because the data in these countries are not reliable. And you will need to add the missing (or incorrect) data manually from your admin panel.</p> <h5><strong>Your own Database</strong></h5> <p>If you want use your own entered data instead of the Geonames data, you can delete all Geonames data by using your phpMyAdmin to flush the 'cities', 'subadmin1' and 'subadmin2' tables before adding new data from the Admin panel. <br>Note: The script doesn't have any data import tool.</p> </section> <section> <h2 id="languages">Languages</h2> <h5><strong>How can I add new languages?</strong></h5> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>Languages</strong></li> <li>Click on <strong>Add language</strong></li> <li>Go to the translation folder at <code>/lang</code></li> <li>The script will already have duplicate the folder <code>/lang/en/</code> to <code>/lang/<code>/</code></li> </ul> <p><strong>Notes:</strong></p> <ul> <li>Don't forget to translate the database translatable entries from the Admin panel (Listings → Categories, Settings → Packages, Settings → Report Type, etc.).</li> <li>If need, you have to duplicate (manually, in this same directory) or edit the date language's file in the: <code>/vendor/nesbot/carbon/src/Carbon/Lang/</code> directory.</li> </ul><br> <h5><strong>How can I change the default language?</strong></h5> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>Languages</strong></li> <li>Create a new language entry and check the "Default" field. Or click on Edit to edit an existing language and check "Default".</li> <li>Save all of changes</li> <li>You are done.</li> </ul> <p><strong>Note:</strong> To prevent the missing translations in the new default language, please open the file <code>/config/app.php</code> and change the <code>fallback_locale</code> value with your default language <code><code></code> value (e.g. <code>de</code>). Save your files on your server. </p><br> <h5><strong>How can I edit translations?</strong></h5> <ul> <li>Go to the translation folder at <code>/lang/</code>(each language has his language code as folder name).</li> <li>Go to the folder of the language you wish to translate and their files (e.g. <code>global.php</code> contains 90% of the site’s texts, mail.php for emails contents, etc.). </li> <li>To translate a file, you must change the values and not the keys of PHP array.</li> <li>Save your files on your server.</li> <li>Your are done.</li> </ul> <p><strong>Important:</strong> It's important to know that the Admin panel does not support the RTL direction.</p> <p><strong>Notes:</strong></p> <ul> <li>Don't forget to translate the database translatable entries from the Admin panel (Users → Titles/Genders, Listings → Listing Types, Listings → Categories, Settings → Packages, Settings → Report Type, etc.).</li> <li>If need, you have to duplicate (manually, in this same directory) or edit the date language's file in the: <code>/vendor/nesbot/carbon/src/Carbon/Lang/</code> directory.</li> </ul><br> <h5><strong>How can I disable languages?</strong></h5> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>Languages</strong></li> <li>Select a language and edit it.</li> <li>Uncheck "Active" checkbox and save.</li> </ul><br> <h5><strong>How can I delete languages?</strong></h5> <ul> <li>Go to your LaraClassifier <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>Languages</strong></li> <li>Select a language and delete it.</li> </ul> <p><strong>Important:</strong> By deleting the language, the language files folder <code>/lang/<code></code> will be also removed.</p> </section> <section> <h2 id="how-to">How To</h2> <h5><strong>How is user registration managed?</strong></h5> <p>When options like "Email Address Verification" (found under Admin panel → Settings → General → Mail) or "Enable Phone Verification" (under Admin panel → Settings → General → SMS) are enabled, users must verify their email address or mobile phone number accordingly. Users can not logged-in until users complete the verification process.</p> <ul> <li>If only the "Email Address Verification" option is enabled, the user will able to log-in on the website once the user verifies their email address.</li> <li>If only the "Enable Phone Verification" option is enabled, the user will able to log-in on the website once the user verifies their phone number via the SMS code.</li> <li>If both options are enabled, the user must verify both their email address and phone number for the user will able to log-in on the website.</li> <li>If none of both option are enabled, the user is automatically logged-in after its registration, and may log-in on the website without any verification.</li> </ul> <h5><strong>How are ads/listings published?</strong></h5> <ol> <li> <strong>Admin Approval Not Required</strong> <p>When options like "Email Address Verification" (found under Admin panel → Settings → General → Mail) or "Enable Phone Verification" (under Admin panel → Settings → General → SMS) are enabled, users must verify their email address or mobile phone number accordingly. Ads will appear in the "Pending Approval" section until users complete the verification process.</p> <ul> <li>If only the "Email Address Verification" option is enabled, the ad will be published on the website once the user verifies their email address.</li> <li>If only the "Enable Phone Verification" option is enabled, the ad will be published on the website once the user verifies their phone number via the SMS code.</li> <li>If both options are enabled, the user must verify both their email address and phone number for the ad to go public on the website.</li> <li>If none of both option are enabled, the ad to public on the website after its publication without any verification.</li> </ul> </li> <li> <strong>Admin Approval Required</strong> <p>When the "Allow listings to be reviewed by Admins" option (under Admin panel → Settings → General → Listing Form) is enabled, ads will remain in the "Pending Approval" section even after users verify their email address and/or phone number. These ads require admin approval to be published on the website. Once approved by the admin, the ad will go live.</p> <p><strong>IMPORTANT:</strong> When a user selected a promotion package to publish an ad, its publication will bypass the admin approval after payment (i.e. The ads will go public on the website after promotion package payment). More information about packages payments <a href="https://support.laraclassifier.com/help-center/articles/18/8/35/configuring-the-packages" target="_blank">here</a>.</p> </li> </ol> <h5><strong>How can I set the default country?</strong></h5> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Localization</strong> and set '<strong>Default Country</strong>' with your country code (only ISO alpha-2 codes are accepted). From v2.x or above the script set the default country during installation. </li> <li>Your are done.</li> </ul> <h5><strong>How can I set the default currency?</strong></h5> <ul> <li>The default currency will be that of the current country, except the Packages's currency that you can set from <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>Packages</strong>. </li> </ul> <h5><strong>How can I setup the packages/plans?</strong></h5> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>Packages</strong></li> <li>Select a package and edit it</li> <li>NOTE: You can add new packages or delete current packages in the actual version.</li> <li>More information: <a href="https://support.laraclassifier.com/help-center/articles/18/8/35/configuring-the-packages" target="_blank">Configuring the Packages/Plans</a></li> </ul> <h5><strong>How can I setup the advertising code (e.g. Adsense)?</strong></h5> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>Advertisings</strong></li> <li>Edit '<strong>top</strong>' and '<strong>bottom</strong>' code.</li> <li>The code will be displayed on the search results pages and the listings page.</li> <li>Your are done.</li> </ul> <h5><strong>How can I setup Recaptcha?</strong></h5> <ul> <li>Go to your <strong>Admin panel</strong> → <strong>Settings</strong> → <strong>General</strong> → <strong>Security</strong></li> <li>Turn ON or OFF '<strong>Enable reCAPTCHA</strong>'</li> <li>Set '<strong>reCAPTCHA public key</strong>' and '<strong>reCAPTCHA private key</strong>'</li> <li>And save your changes.</li> </ul> Please see more features by visiting your <strong>Admin panel</strong> → <strong>Settings</strong>... </section> <section> <h2 id="cron-job">Cron Job</h2> <h4><strong>How can I start the Scheduler?</strong></h4> The Scheduler will execute: <ul> <li>The Listings Clear command (that auto archives and deletes listings after expiration) every hour.</li> <li>The Cache and Views Clear commands, the latest day of every week at 6:00.</li> </ul> <p>When using the scheduler, you only need to add the following Cron entry to your server.</p> <pre>* * * * * {PHP_BIN_PATH} /path/to/public_html/artisan schedule:run >> /dev/null 2>&1</pre> <p>This Cron will call the Laravel command scheduler every minute. When the <code>schedule:run</code> command is executed, Laravel will evaluate your scheduled tasks and runs the tasks that are due.</p> <p style="text-decoration: underline;">NOTE</p> <ul> <li><code>{PHP_BIN_PATH}</code> => Ex: <code>/usr/bin/php7.1.3</code>, <code>/usr/bin/php</code>, <code>/usr/lib/php</code></li> <li><code>/path/to/public_html/</code> => You have to replace this path by your real path.</li> <li>Don't hesitate to ask more information about it from your hosting provider.</li> <li>You can disable the Auto Cache and Views Clear command by adding this variable: <code>DISABLE_CACHE_AUTO_CLEAR=1</code> in the <code>/.env</code> file.</li> </ul> <hr> <h4><strong>More information about Cron Job:</strong></h4> <ul> <li><a href="https://crontab.guru/every-1-hour" target="_blank">https://crontab.guru/every-1-hour</a></li> <li><a href="https://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800" target="_blank">https://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800</a> </li> <li><a href="http://askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job" target="_blank">http://askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job</a> </li> </ul> <hr> <h4><strong>How does the Listings Clear command work?</strong></h4> <p>After setting it up to run every hour (for example), you can consider 2 cases:</p> <p> </p> <h5><strong>1. Regular Listings</strong></h5> <p>You have to set up the options below from the <strong>Admin panel → Settings → General → Cron</strong>:</p> <ul> <li><strong>Unactivated Listings Expiration:</strong> After this time (in days) the unactivated listings will be deleted</li> <li><strong>Activated Listings Expiration:</strong> After this time (in days) the activated listings will be archived</li> <li><strong>Archived Listings Expiration:</strong> After this time (in days) the archived listings will be removed</li> </ul> <p> </p> <h5><strong>2. Premium/Paid Listings</strong></h5> <ul> <li>After the Packages duration time (in days) that you have set up from the <strong>Admin panel → Settings → Packages → [EDIT] → Duration</strong>, the Premium Listings become Regular Listings.<br> <strong>NOTE:</strong> <ul> <li>The expiration duration of free packages (ie packages with <code>0</code> as price) will not be taken to account. The Regular Listings rules will be take to account instead.</li> <li>For site owners that have installed our Offline Payment plugin, pushed listings as premium (ie manual promotions of listings from the admin panel) will never expire. You will need to un-feature them (ie remove the promotion manually) first.</li> </ul> </li> <li>And then, the Regular Listings rules (seen in #1) are applied to clear the website database.</li> </ul> </section> <section> <h2 id="backup">Backup</h2> <p>Before using this feature, you have to set your MySQL dump binary path with the variable <code>DB_DUMP_BINARY_PATH</code> in the <code>/.env</code> file.<br> Example with MAMP on Mac OS: <code>DB_DUMP_BINARY_PATH=/Applications/MAMP/Library/bin/</code>. Note: You have to set only the path, so without <code>mysqldump</code>.</p> <p>If local disk is used, you can get the backups on your server in the <code>/storage/backups/</code> directory.</p> <div class="alert alert-warning" role="alert"> <p> <strong>Important:</strong> The <code>/storage/backups/</code> directory is NOT the MySQL dump binary (<code>mysqldump</code>) path. So if you don't know your server's <code>mysqldump</code> path, you have to contact your host to get more information about that. </p> </div> <p> </p> <h5 id="backup_manual"><strong>Manual Backup</strong></h5> <p>Go to the <strong>Admin panel → Backups</strong> to make the backups manually.</p> <p> </p> <h5 id="backup_automatic"><strong>Automatic Backup</strong></h5> <p>Go to the <strong>Admin panel → Settings → General → Backup</strong> to schedule backups and their clearing up.</p> </section> <section> <h2 id="backup-storage">Backup Storage</h2> <p>Go the <strong>Admin panel → Settings → General → Backup</strong> to select a storage type for the backups.</p> <p>For local storage, select the <code>Local Only</code> option and save the form. For cloud storage, select the <code>Cloud Only</code> or <code>Local and Cloud</code> options and save the form.</p> <ul> <li><code>Local Only</code>: The backup will be save on the website server only.</li> <li><code>Cloud Only</code>: The backup will be save on the cloud storage only.</li> <li><code>Local and Cloud</code>: The backup will be save both on the website server and on the cloud storage.</li> </ul> <h3 id="cloud-storage"><strong>Cloud Storage</strong></h3> <h5 id="cloud-storage-ftp"><strong>FTP</strong></h5> <p>You have to add the config below in your <code>/.env</code> file and you have to set the <code>FILESYSTEM_CLOUD=</code> variable to <code>ftp</code> like below and replace the FTP parameters.</p> <pre><code>FILESYSTEM_CLOUD=ftp FTP_HOST=your-ftp-host FTP_USERNAME=your-ftp-username FTP_PASSWORD=your-ftp-password FTP_PORT=21 FTP_ROOT=/path/to/storage/root/ FTP_PASSIVE=true FTP_SSL=true FTP_TIMEOUT=30</code></pre> <h5 id="cloud-storage-sftp"><strong>SFTP</strong></h5> <p>You have to add the config below in your <code>/.env</code> file and you have to set the <code>FILESYSTEM_CLOUD=</code> variable to <code>sftp</code> like below and replace the SFTP parameters.</p> <pre><code>FILESYSTEM_CLOUD=sftp SFTP_HOST=your-sftp-host SFTP_USERNAME=your-sftp-username SFTP_PASSWORD=your-sftp-password SFTP_SSH_PRIVATE_KEY= SFTP_HOST_FINGERPRINT= SFTP_MAX_TRIES= SFTP_PASSPHRASE= SFTP_PORT=22 SFTP_ROOT=/path/to/storage/root/ SFTP_TIMEOUT=30</code></pre> <h5 id="cloud-storage-s3"><strong>Amazon S3</strong></h5> <p>You have to add the config below in your <code>/.env</code> file and you have to set the <code>FILESYSTEM_CLOUD=</code> variable to <code>s3</code> like below and replace the Amazon S3 parameters.</p> <pre><code>FILESYSTEM_CLOUD=s3 AWS_ACCESS_KEY_ID=your-s3-access-key AWS_SECRET_ACCESS_KEY=your-s3-secret-key AWS_DEFAULT_REGION=your-s3-region-code AWS_BUCKET=your-s3-bucket AWS_URL= AWS_ENDPOINT= AWS_USE_PATH_STYLE_ENDPOINT=</code></pre> <h5 id="cloud-storage-dropbox"><strong>Dropbox</strong></h5> <p>You have to add the config below in your <code>/.env</code> file and you have to set the <code>FILESYSTEM_CLOUD=</code> variable to <code>dropbox</code> like below and replace the Dropbox parameters.</p> <pre><code>FILESYSTEM_CLOUD=dropbox DROPBOX_ROOT=path/to/storage/root DROPBOX_AUTHORIZATION_TOKEN=your-dropbox-authorization-token</code></pre> <h5 id="cloud-storage-digitalocean"><strong>DigitalOcean</strong></h5> <p>You have to add the config below in your <code>/.env</code> file and you have to set the <code>FILESYSTEM_CLOUD=</code> variable to <code>digitalocean</code> like below and replace the DigitalOcean parameters.</p> <pre><code>FILESYSTEM_CLOUD=digitalocean DIGITALOCEAN_KEY=your-s3-access-key DIGITALOCEAN_SECRET=your-s3-secret-key DIGITALOCEAN_REGION=your-s3-region-code DIGITALOCEAN_BUCKET=your-s3-bucket DIGITALOCEAN_URL= DIGITALOCEAN_ENDPOINT= DIGITALOCEAN_USE_PATH_STYLE_ENDPOINT= DIGITALOCEAN_FOLDER= DIGITALOCEAN_CDN_ENDPOINT=</code></pre> </section> <section> <h2 id="api">API</h2> <div class="alert alert-success" role="alert"> <p> The API endpoints documentation is available from the "Admin panel → API Docs" (for super-admin users). </p> </div> <p>By default the API uses an access token set in the <code>/.env</code> file with the variable <code>APP_API_TOKEN=</code>, whose its value need to be added in the header of all the API requests with <code>X-AppApiToken</code> as key.</p> <p> The front end of the script consumes the API via <a href="https://curl.se/" target="_blank">cURL</a> (via <a href="https://laravel.com/docs/master/http-client" target="_blank">Laravel HTTP-Client</a>/<a href="https://docs.guzzlephp.org/en/stable/" target="_blank">Guzzle</a>) calls, while the admin panel communicates directly with the database. </p> <ul> <li>You have to set a configuration that authorizes all requests that have <code>https://yourdomain.tld/api/</code> as URL base.</li> <li>If a proxy is needed to communicate with your server you have to set it with its port separated by <code>:</code> in the <code>/.env</code> file with the variable <code>APP_API_PROXY=</code> like this: <ul> <li><code>APP_API_PROXY=proxy-host:proxy-port</code></li> <li>or <code>APP_API_PROXY=proxy-ip-address:proxy-port</code></li> <li>or <code>APP_API_PROXY=http://username:password@proxy-ip-address:proxy-port</code></li> </ul> </li> </ul> <div class="alert alert-warning" role="alert"> NOTES: <ul> <li>Only our <a href="https://codecanyon.net/item/offline-payment-plugin-for-laraclassified-and-jobclass/20765766" target="_blank">OfflinePayment</a> and <a href="https://codecanyon.net/item/watermark-plugin-for-laraclassified/19700729" target="_blank">Watermark</a> plugins are stateless, so can be used with the API.</li> <li>All the other plugins cannot be used with the API, even they continue to work with the web client.</li> </ul> </div> </section> <section> <h2 id="credits">Credits</h2> <ul> <li>Laravel – <a href="https://laravel.com" target="_blank">https://laravel.com</a></li> <li>Maxmind – <a href="https://www.maxmind.com" target="_blank">https://www.maxmind.com</a></li> <li>Geonames – <a href="https://www.geonames.org" target="_blank">https://www.geonames.org</a></li> <li>Simplemaps – <a href="https://simplemaps.com" target="_blank">https://simplemaps.com</a></li> <li>and more...</li> </ul> </section> </article> <!-- END Main content --> </main> <!-- Footer --> <footer class="site-footer"> <div class="container-fluid"> <a id="scroll-up" href="#"><i class="fa fa-angle-up"></i></a> <div class="row"> <div class="col-md-6 col-sm-6"> <p>Copyright © <script>document.write(new Date().getFullYear())</script> . All right reserved </p> </div> <div class="col-md-6 col-sm-6"> <ul class="footer-menu"> <li><a href="changelog.html">Changelog</a></li> </ul> </div> </div> </div> </footer> <!-- END Footer --> <!-- Scripts --> <script src="assets/js/theDocs.all.min.js"></script> </body> </html>