## Welcome!

“AIO Support Center (AIOSC)” Documentation v2.0 by Nikola Radojevic - diwave.coders@gmail.com

#### Thank you!

for purchasing this WordPress plugin! If you have any questions that are beyond the scope of this help file, please feel free to create a ticket via our Support Center (Do not forget to include your Purchase Code that you got from Envato when you purchased this plugin).
Thanks so much!

## Installation

Once you download .zip file from CodeCanyon, open it and find di-aiosc.zip inside.
Copy di-aiosc.zip somewhere on your hard drive and then follow steps below:
To add a WordPress Plugin using the built-in plugin installer:

1. Go to Plugins > Add New.
2. Under Upload tab, click on "Choose File" and choose di-aiosc.zip from your hard drive.
3. Click Install Now to install the AIO Support Center.
4. A popup window will ask you to confirm your wish to install the Plugin.
5. If this is the first time you've installed a WordPress Plugin, you may need to enter the FTP login credential information. If you've installed a Plugin before, it will still have the login information. This information is available through your web server host.
6. Click Proceed to continue with the installation. The resulting installation screen will list the installation as successful or note any problems during the install.
7. If successful, click Activate Plugin to activate it, or Return to Plugin Installer for further actions.

To add a WordPress Plugin using FTP:

1. Login to your hosting via your FTP client.
2. Navigate to your WordPress plugin directory (usually it's wp-content/plugins)
3. Extract di-aiosc.zip and copy di-aiosc folder to plugin directory on your host.
4. Login to your WordPress Admin dashboard and go to Plugins page.
5. You should now see AIO Support Center in the list of plugins. Click Activate Plugin to activate it.

#### Setup Note

In order to work, AIO Support Center must have at least:

- One Supervisor (staff member) - which is you, the one who installed plugin.
- One `ACTIVE` Department (with at least one staff member assigned to it)
- One `ACTIVE` Priority

You will find more info right below on how to set up these...

## Setup - Staff Members

Once you have installed AIOSC, your administrator account is granted with AIOSC Supervisor role.
If you have a team of people that will be responsible for answering tickets, you should go to Users » All Users in your WordPress dashboard and give AIOSC Operator to your team members like on the image below:

## Setup - Departments

Departments are sections assigned to each staff member who is responsible for answering certain topics. Departments may be assigned to more than one staff member, but if you don't assign any, department will be inactive for use until you assign at least one staff member to it.
When Customer is submitting ticket, he will be asked which department his ticket is addressing. If only one department is available, there will be no drop-down on client side, instead, his ticket will be assigned to that department automatically.
AIOSC will create one department on plugin installation called "General Questions" with your account assigned to it, so it is ready for use right after installation. However, you might want to change it, or create new departments so you should go to Support Center » Preferences » Departments tab and make changes there:

Once you hit "Edit" link, you will be transfered to new page where you can apply edits. Same screen is shown when adding new department:

## Setup - Priorities

Priorities are used to determine how urgent is user's request. You can assign Priority Level (highest = more important), Priority Color (to visualize how important it is. For example, if something is highly important, you would put red color, but of course, you can pick any color you want).
When Customer is submitting ticket, he will be asked what is the priority of his request. If only one priority is available, there will be no drop-down on client side, instead, that priority will be used automatically.
AIOSC will create one priority on plugin installation called "No Priority" (level: 0), so plugin is ready for use right after installation. However, you might want to change it, or create new priorities so you should go to Support Center » Preferences » Priorities tab and make changes there:

Once you hit "Edit" link, you will be transfered to new page where you can apply edits. Same screen is shown when adding new priority:

## Setup - Cron

This new feature came with AIO Support Center 2.0 and it allows you to run few scheduled tasks on your host such as auto-closing inactive tickets, or sending reminders to customers.
In order to use this feature, you will have to add new cron job in your hosting panel. Here are guides for various hosting panels:

- cPanel based web hosting (PDF) (downloaded from https://documentation.cpanel.net/display/ALD/Cron+Jobs)
- Plesk based web hosting (Video)

#### Cron Command

- Command: `wget http://YOUR_DOMAIN/wp-content/plugins/di-aiosc/cron.php?sk=19117L9o70uH7r_0L --tries=1 -q -O/dev/null >NULL`
- AIOSC CRON default security key: `19117L9o70uH7r_0L`
  (you can change this key by going to wp-content/plugins/di-aiosc/di-aiosc.php and edit AIOSC_CRON_SK value, but then you will have to change it in cron command as well.)

We recommend running cron not more than twice a day: `0 0,12 * * *`
If you experience run-timeouts, try increasing max_execution_time in php.ini to a higher value.

## Preferences - General

By going to Support Center » Preferences » General tab, you can customize general settings for AIOSC. We will explain what each field does:

Field | Default Value | Description
Field | Default Value | Description
Enable STAFF Ribbon | `ENABLED` | If enabled, staff members will have "STAFF" ribbon under their avatars whenever they post replies on user tickets.
Enable Public Tickets | `DISABLED` | If enabled, users will be able to choose whether they want their ticket to be publicly visible, or private. If ticket is public, it can be viewed by all AIOSC users (but only viewed).
#### User Roles
Default Role | `AIOSC Customer` | If you set anything but `- No Default Role -`, newly created users will be granted with selected AIOSC role upon registration. For security reasons, we limit which roles can be set automatically, so you don't accidentally set high-level role to be granted to every new user.
#### Attachments
Allow Upload | `ENABLED` | If enabled, customers will be able to upload attachments when they create tickets & post replies.
Allow Download | `ENABLED` | If enabled, customers will be able to download their attachments from tickets and replies. You may wonder why is there such option? For security reasons, of course! We have implemented secure file downloader so files can be downloaded only if user has the right permission on specific file, but if you are really paranoid that files may be hotlinked, you can disable this option but we do not recommend it generally and will probably be removed from future releases of AIOSC.
Maximum File Size (Kb) | `4096 Kilobytes (4 Mb)` | You can set maximum file size in Kilobytes that is allowed for upload. Please note that there are other factors that may limit file size if you set it too high such as `php.ini`, so unless you have decent knowledge of PHP, we recommend leaving this value as is (or use lower value).
Maximum files per ticket | `4` | You can set how many files per ticket can user attach. Please note that there are other factors that may limit this value such as `max_file_uploads` in your `php.ini`
Maximum files per reply | `4` | You can set how many files per reply can user attach. Please note that there are other factors that may limit this value such as `max_file_uploads` in your `php.ini`
Allowed Mime-types | `txt, doc, docx, rtf, pdf, jpg, png, bmp, gif, rtf, zip, rar, gz, 7z, mp3, sql` | Here you can set which file extensions are allowed when user uploads attachments. You can set more than one extension, just separate them with comma (,).
Forbid Mime-types | `DISABLED` | If you enable this option, instead of allowing, system will accept all other extensions but those you set in Allowed Mime-types above.

## Preferences - Tickets

By going to Support Center » Preferences » Tickets tab, you can customize ticket related settings for AIOSC. We will explain what each field does:

Field | Default Value | Description
Field | Default Value | Description
#### Ticket Creation
Minimum Subject Length | `10` | You can set how many characters ticket subject must contain. If set to 0, subject will not be required field when creating ticket and "Untitled Ticket" will be used instead.
Minimum Content Length | `20` | You can set how many characters ticket content must contain. Minimum value is 20.
Creation Delay | `60 seconds` | How many seconds must pass before user can create a new ticket? This is good for preventing users to spam tickets.
Allow Re-Opening | `false` | Check this option if you want to allow customers to re-open their tickets.
#### Replies
Minimum Content Length | `10` | You can set how many characters reply content must contain. Minimum value is 10.
Reply Delay | `20 seconds` | How many seconds must pass before user can post a new reply on the same ticket? This is good for preventing users to spam replies.

## Preferences - E-mail » Auto Responders

By going to Support Center » Preferences » E-Mail » Auto Responders tab, you can customize e-mail notification settings for AIOSC. We will explain what each field does:

Field | Default Value | Description
Field | Default Value | Description
#### Customers
Creation | `ENABLED` | If enabled, customer will receive confirmation email telling him that his ticket was created successfully.
New Reply | `ENABLED` | If enabled, customer will receive notification email every time his ticket gets new reply from staff members.
Closure | `ENABLED` | If enabled, customer will receive notification email every time staff member closes any of his tickets.
Re-Opening | `ENABLED` | If enabled, customer will receive email confirmation every time he re-opens any of his tickets.
#### Staff Members
Assignment | `ENABLED` | If enabled, staff member will receive notification email user creates new ticket and he gets assigned to it.
New Reply | `ENABLED` | If enabled, staff member will receive notification email whenever user replies to ticket he is assigned to.
Closure Request | `ENABLED` | If enabled, staff member will receive notification email whenever user requests closure on any of his tickets.
Re-Opening | `ENABLED` | If enabled, staff member will receive notification email whenever user re-opens any of his tickets.

#### Note

Make sure you check E-Mail Templates section for setting up nice e-mail templates for Auto Responders.

## Preferences - E-mail » E-Mail Piping

E-mail piping allows emails to be sent to specific address so AIO Support Center can handle received e-mails and create replies out of them. This is useful if you want to allow user to post replies on their tickets by directly replying to unique generated e-mail address, without even opening your website.
For security reasons, we are comparing `User ID`, `Ticket ID`, `Ticket Hash Code` and `User Email` to make sure only the right user can post replies to specific tickets (their own), which means that user cannot reply from other e-mail address than the one he used for registering on your website.

#### Requirements

1. Hosting plan that includes `cPanel` and `Catch-All E-mail Address` so you can modify `Default E-Mail Address` and allow piping to application.
2. Ability to create new `sub-domain` to which will all reply emails be directed.
3. Your hosting plan must include web mail.
4. You must set `770` (or higher) file permission to `wp-content/plugins/di-aiosc/piper.php` file.

#### Disclaimer

This feature is still `experimental` and we currently do not provide support related to email piping until we are 100% sure it will work on most of configurations.
We performed successful tests on several hosting providers, but if you find it not working on yours, please let us know and help us improve this feature. Thanks!
Warning:
If any of your plugins, themes or any other file that is used in your WordPress produce any error, warning or notice, users who reply to e-mail piper will receive bounce e-mail telling them their e-mail was not delivered (it actually is, but if there is any output in the process of receiving e-mails, system will consider it as a error and above warning will be sent to user).
So make sure you run bug-free plugins. You can also turn off `WP_DEBUG` and `PHP error reporting` if you are unsure if any of your plugins may output some kind of error or notice.

## Receiving tickets thorugh e-mail piping (click image to enlarge)

## Receiving ticket replies thorugh e-mail piping

Before setting up E-Mail Piping in AIO Support Center, you will have to prepare your e-mail address and sub-domain in `cPanel`.
Please watch the short video (make sure you enable Annotations while watching it) below to see how to set up e-mail piping in `cPanel`.

## Preferences - E-mail Templates

By going to Support Center » Preferences » E-Mail Templates tab, you can customize e-mail templates that are used by Auto Responders.

You can add dynamic content tags that will be replaced automatically once e-mail is sent:

#### Note

Inserting Content Tags works only when you are in `Visual` tab mode.
Add-Ons may add more content tags to list.

## Preferences - Pages

If you want to use AIO Support Center in front-end, like letting users to create new ticket directly from front-end, without need to go to WordPress dashboard, you will have to create three new separate pages that AIOSC will use:

By going to Support Center » Preferences » Pages tab, you set which front-end pages will contain specific AIOSC shortcodes. We will explain what each field does:

Field | Default Value | Description
Field | Default Value | Description
Use Front-End Pages | `DISABLED` | If enabled, all urls (ticket list, preview, form) will be returned as front-end links, but of course, you must set below 3 pages and add proper shortcodes to them. If you don't do so, clients will probably be getting wrong links.

Page | Shortcode | Description
Page | Shortcode | Description
New Ticket Form | `[aiosc_ticket_form]` | You need one page where users can create new tickets (from front-end). Once you create new page, add `[aiosc_ticket_form]` shortcode to it.
Ticket Preview (Single) | `[aiosc_ticket_preview]` | This is a single ticket preview page. Users will be directed to this page when they create new ticket (from front-end). Once you create this page, add `[aiosc_ticket_preview]` shortcode to it.
Ticket List (My Tickets) | `[aiosc_ticket_list]` | User can see all his tickets on this page, with simple search option and pagination. More features can be added by editing shortcode template file. Once you create this page, add `[aiosc_ticket_list]` shortcode to it.

#### Note

After you have created new pages and added shortcodes to them, go back to Support Center » Preferences » Pages and assign newly created pages.

#### Staff members should still use back-end pages:

Original front-end templates provided with AIO Support Center are more user-oriented than staff-oriented. Staff members should use back-end pages because there are more options available.

## Preferences - Add-Ons

This is the main reason why we have re-written original Support Center from scratch - To make it extendable!
It means that we can further extend AIO Support Center functionality to meet specific user requests.
All original AIOSC Add-Ons you install will create a new tab on this page where you can see and modify add-ons preferences, but each add-on will have it's own documentation as every other DiWave product.

#### Important to know

1. AIOSC Add-Ons are sold as separate products and are not included in AIO Support Center package.
2. We are not obliged to provide support for third-party developers regarding AIOSC Add-Ons.
3. We do not give any guarantee nor support for Add-Ons made by third-parties.
4. We will be providing support for all original AIOSC Add-Ons, created by DiWave Coders.

## Shortcodes - New Ticket Form

`[aiosc_ticket_form]`
This shortcode displays ticket creation form as below:

#### Template Files:

File `wp-content/plugins/di-aiosc/templates/...` | Description | Overriding Path `wp-content/themes/YOUR_THEME/di-aiosc/...`
`shortcodes/new-form/form.php` | This file displays ticket creation form to registered users that have any of AIOSC non-staff role (such as Customer or Exclusive Customer). | `shortcodes/new-form/form.php`
`shortcodes/new-form/error.php` | In case user has no permission to create new ticket, this template will be used to tell him that he is not logged in / does not have right permission. | `shortcodes/new-form/error.php`

#### Customization

To customize templates for this shortcode, create `di-aiosc/shortcodes` folder in your theme directory and then go to `plugins/di-aiosc/templates/shortcodes` directory and copy above template files to newly created folder in your theme directory.
Do not edit files directly from plugin folder because they will be overwritten with each plugin update.

## Shortcodes - Ticket List (My Tickets)

`[aiosc_ticket_list]`
This shortcode displays ticket list table with search function and pagination as below:

#### Template Files:

File `wp-content/plugins/di-aiosc/templates/...` | Description | Overriding Path `wp-content/themes/YOUR_THEME/di-aiosc/...`
`shortcodes/list/page.php` | This file displays ticket list table with filters, but does not display actual tickets. Tickets are loaded via AJAX using another template file below. | `shortcodes/list/page.php`
`shortcodes/list/error.php` | In case current user has no permission to view this list, this template will be shown. | `shortcodes/list/error.php`
`shortcodes/list/table.php` | This is template that shows table of tickets. It is loaded via AJAX from `list/page.php` file. | `shortcodes/list/table.php`

#### Customization

To customize templates for this shortcode, create `di-aiosc/shortcodes` folder in your theme directory and then go to `plugins/di-aiosc/templates/shortcodes` directory and copy above template files to newly created folder in your theme directory.
Do not edit files directly from plugin folder because they will be overwritten with each plugin update.

## Shortcodes - Ticket Preview (Single)

`[aiosc_ticket_preview]`
This shortcode displays ticket preview page as below:

#### Accepted Params

Param | Type | Description
Param | Type | Description
ticket_id | `integer` | If you want to display specific ticket (ignoring URL query), you can pass ticket_id param to shortcode. If ticket does not exist, or current user does not have permission to view that ticket, error template will be shown instead.

#### Template Files:

File `wp-content/plugins/di-aiosc/templates/...` | Description | Overriding Path `wp-content/themes/YOUR_THEME/di-aiosc/...`
`shortcodes/single/page.php` | This file displays ticket preview to registered users that have any of AIOSC role. | `shortcodes/single/page.php`
`shortcodes/single/error.php` | In case current user has no permission to create new ticket or queried ticket does not exist, this template will be used to tell him that he is not logged in / does not have right permission / ticket does not exist. | `shortcodes/single/error.php`
`shortcodes/single/sidebar.php` | This template displays sidebar with many information about queried ticket such as ticket id, status, department, priority, attachments other widgets. | `shortcodes/single/sidebar.php`
`shortcodes/single/reply/form.php` | This template displays new reply form, if current user has permission to post reply on queried ticket. | `shortcodes/single/reply/form.php`
`shortcodes/single/reply/single.php` | This template displays single reply content. It is used in `replies.php` loop. | `shortcodes/single/reply/single.php`
`shortcodes/single/reply/list.php` | This template displays all replies posted on queried ticket. It loops through all replies and display them using above template file (reply-single.php) | `shortcodes/single/reply/list.php`
`shortcodes/single/popup/close-ticket.php` | This is "Close Ticket" popup form which staff members can use to close queried ticket. | `shortcodes/single/popup/close-ticket.php`
`shortcodes/single/popup/request-closure.php` | This is "Request Closure" popup form which ticket owner can use to request closure on queried ticket. | `shortcodes/single/popup/request-closure.php`
`shortcodes/single/popup/reopen-ticket.php` | This is "Re-Open Ticket" popup that allows author or staff member to re-open queried ticket. | `shortcodes/single/popup/reopen-ticket.php`

#### Customization

To customize templates for this shortcode, create `di-aiosc/shortcodes` folder in your theme directory and then go to `plugins/di-aiosc/templates/shortcodes` directory and copy above template files to newly created folder in your theme directory.
Do not edit files directly from plugin folder because they will be overwritten with each plugin update.

## User Roles & Capabilities

#### Things to know:

1. AIO Support Center roles have nothing to do with WordPress roles. They are custom and changing Support Center role will not affect user's default role.
2. AIOSC roles have custom capabilities, related only to AIO Support Center, not the whole WordPress. This gives us ability to allow admin dashboard access even to Subscribers, but of course, all they will see there is "Support Center" tab and other WP role-specific pages.
3. Highest AIO Support Center role (Supervisor) can be granted to everyone, even WordPress "Subscribers". Same applies for other AIOSC roles. So, if you want an Operator to be able to answer tickets, you don't have to give him access to the whole backend.
4. Once you install AIOSC Support Center, it will grant Customer role to all currently registered users but you. You will be granted with "Supervisor" role.
5. An WordPress Administrator, who was granted with "Supervisor" role cannot remove it from his account by himself. He can only manipulate with other user accounts.

Here is the full list (from highest to lowest) of all AIOSC roles and capabilities they have:

Role | Slug | Capabilities
Role | Slug | Capabilities
Supervisor | `aiosc_admin` | Manage AIOSC preferences View any ticket Reply to any ticket Edit any ticket Close any ticket Delete any ticket Download attachments from any ticket / reply View Public tickets `staff member`
Moderator | `aiosc_editor` | View any ticket Reply to any ticket Edit any ticket Close any ticket Delete any ticket Download attachments from any ticket / reply View Public tickets `staff member`
Operator | `aiosc_support_op` | View ticket (only from related departments) Reply to ticket (only from related departments) Close ticket (only from related departments) Download attachments from ticket / reply (only from related departments) View Public tickets `staff member`
Exclusive Customer | `aiosc_exclusive_customer` | View ticket (only his tickets) Reply to ticket (only his tickets) Request ticket closure (only his tickets) View Public tickets Upload attachments (only his tickets) (if Allow Upload is enabled) Download attachments (only his tickets) (if Allow Download is enabled)
Customer | `aiosc_customer` | View ticket (only his tickets) Reply to ticket (only his tickets) Request ticket closure (only his tickets) View Public tickets

#### Managing User Roles

There are 3 ways of changing AIO Support Center roles:
A) Bulk editing directly from "Users" page in WordPress Dashboard:

1. Go to Users » All Users.
2. Select users you want and pick role from drop-down box that is found at the top of user table that says "Change AIOSC role to..."
3. Press Change button next to it and you are done.

B) Bulk editing from "Tools" found in Support Center tab (only for switching between Customer and Exclusive Customer roles, and you must be Supervisor to do that):

1. Go to Support Center » Preferences » User Roles (tab).
2. There you will find "Update Current Roles" drop-down box.
3. Here, you can choose if you would like to change current Customers to Exclusive Customers or vice versa.
4. Once you picked role from the list, click `Submit` button at the bottom and you are done.

`NOTE: This will not affect current staff members (Operators & Supervisors)`

C) Editing role from "User Profile" page for individual user:

1. Go to Users » All Users.
2. Find user from the list and click "Edit" link under his username.
3. Once user's profile page is loaded, you will see "AIO Support Center role" field near the bottom of the form.
4. Pick role from the list and click Update User button and you are done.

## Compatibility & Requirements

Support Center was made using PHP 5.3 and WordPress 3.9 , but since it uses common WordPress API and PHP functions, it should work on older versions as well, but there’s no guarantee.
Minimum System Requirements:

    PHP Version: 5.3+
    WordPress Version: 3.9+
    WordPress - access to admin-ajax.php from both front-end and back-end (some themes and plugins may block this)
    Browser Support: Google Chrome | Mozilla Firefox | Opera | Safari | Internet Explorer 8+

Recommended:

    PHP Version: 5.5+
    IMAP ENABLED (php extension)
    WordPress Version: 3.9.1+
    WordPress - access to admin-ajax.php from both front-end and back-end (some themes and plugins may block this)
    Browser Support: Google Chrome | Mozilla Firefox | Opera | Safari | Internet Explorer 9+

## Frequently Asked Questions (FAQ)

#### User has Customer / Exclusive Customer role but he cannot create new ticket for some reason?

Please make sure you have at least one `ACTIVE` Department and Priority.
Also, if you are allowing users to upload files, make sure you have the right permission on wp-content/plugins/di-aiosc/uploads directory (permission should be `777`).

#### I tried to reply via e-mail, but I received error mail bounce in return?

You have to make sure none of your plugins or themes are outputting run-time errors, notices or warnings. In the bounce e-mail, you will find exact output of script that caused email to bounce so you can debug.
Rough solution is to turn off PHP `error_reporting` and `display_errors`, but we do not recommend this. It is always better to fix the issue than to ignore it.

#### Shortcode problem - I see [aiosc_ticket_form] instead actual form. What's the deal?

Please make sure you don't have any formatting on [shortcode] (in case you copied shortcode from here, make sure it is pasted as plain text). Sometimes, if you paste it directly into `Visual` editor, it is pasted with all formatting such as <code>[aiosc_ticket_form]<code/> which is not a valid shortcode.

#### [Old Users] How do I transfer users from old Support Center to AIO Support Center?

Please login to your dashboard as AIOSC Supervisor and go to "Support Center" » "Tools". There, you will find "Remove old SC roles" option which you can use to remove old Support Center roles from users.
After you have removed those, you can use "Update Current Roles" option to give users new AIO Support Center roles.

#### [Old Users] How do I transfer tickets from old Support Center to AIOSC?

We will release add-on for AIOSC that will help you transfer your tickets to AIO Support Center. Add-On will be free of charge.

#### [Old Users] So, should I remove old Support Center?

If you have nothing to import from old Support Center to AIO Support Center, then yes, feel free to remove it.
Otherwise, just deactivate it from Plugins page and wait until we release add-on (free of charge) for migrating tickets from old Support Center.

#### I have an issue with this plugin. Where should I ask for help?

If you are having issues with AIO Support Center, do not hesitate to contact us using support page.

## Sources & Credits

- FamFamFam - We have used Silk icons made by Mark James in our product