Need improvements for 4 Drupal modules that integrate [url removed, login to view] applications: 2 Way Video Chat, Video Consultation, Live Streaming, Video Conference (will be provided).
[url removed, login to view]
[url removed, login to view]
Also need 2 new modules created to extend functionality for these applications: Rooms & Credits.
* Existing chat modules improvements:
+ Room picture: Room owner can upload a 320x240 picture that will show next to room description (will be resized if different size and also a 160x120 thumb will be generated and saved to a static location).
Room owner can also select what thumb will show for the room if live snapshots are available for that module (Live Streaming, 2 Way Video Chat).
Room Thumb: Room Picture / Live Snapshot
+ Access list: Owner can define a list of comma separated user names and/or emails that will have access to the room. If left empty everybody can access (public access).
+ Moderators list: Room owner can define for each room, a comma separated user names and/or emails list.
Also can configure all Permissions settings (ie. Buzz button for 2 way video chat) as Yes/No/Moderator.
On access ([url removed, login to view]), videowhisper application scripts will check if username or his email is in moderators list to get special permissions.
+ Some new/tweak settings, permissions (will be specified ie. for extra panels parameters in Video Consultation).
+ Relocate the application folder in the module folder (to allow deployment with the Drupal module in same [url removed, login to view]).
* Drupal VideoWhisper room list module
Drupal Name: "VideoWhisper Rooms" vwrooms
+ Need a menu entry Rooms to a page with list of rooms from all modules (accessible to public).
- This will show a table with the rooms with multiple colums:
Room Type (Video Conference, Video Consultation, Video Chat, Live Channel) (each shows if that module is installed)
Room Description (short: first 250 chars)
Owner Online (Yes/No)
Cost (cost for user if VideoWhisper Credits is installed)
- Default sorting is with this order: owner online DESC, online users DESC, cost ASC. Clicking table headers toggles criteria. Would be nice to include some arrows showing current sorting.
- Rooms show based on criteria (filters). Clicking an item (a room type or tag) will configure that filter (and show rooms based on that filter). In example clicking Room Type: Video Conference will show list of video conferences.
Room Type:  Video Conference  Video Consultation  Video Chat  Live Channel (each shows if that module is installed)
Users Online: Yes/No/All
Owner Online: Yes/Only/No/All
Access: Public/Private (private rooms are those where access list is defined)
When tags is empty all rooms show.
All settings show all rooms (both Yes and No).
- Filter settings save as cookie.
+ Need a block that will list some rooms (based on default sorting) and a View All link to the rooms page . Will list room names and online users ie. Classroom1 (5). If possible will also give more details as tooltip on mouse over (ie. room type, description)
Admin Module Settings:
+ Enable/disable columns (each column can be enabled/disable)
+ Filters (default values for filters); also apply to block
+ Enable/disable filters (for each filter)
+ Configure how many rooms are listed by block.
* Drupal VideoWhisper Credits Module
Drupal name: "VideoWhisper Credits" vwcredits
This component will manage a credits system for using [url removed, login to view] modules. It will be used to charge site users for their usage time.
The [url removed, login to view] modules will be tweaked to detect presence of this module, settings and include required functionality.
It will record for each user:
- balance [user_id, credits] how many credits each user has
- all transfers
credits - negative/positive value modifier
applied - if value modifier was applied
context - (string ie. room name, admin name, account to withdraw where applies)
type - (internal known logic for processing/listing: ie index representing 1 = added by admin, 2 = payment, 3 = withdrawal, 4 = video consultation room usage, 5 = video conference room usage or other ...)
transfer start time - when transaction, ie. chat session started
transfer modified time - when transaction was last updated (ie last [url removed, login to view] call)
transfer applied time - when transfer was applied to balance
Applied field will be used in transitive situations, in example when credits are used in a room. + When status script is called for a chat session and a transfer must occur (billing), a transfer entry is created for that session if non existent. As usage (credits) adds up for a room, transfer is not applied yet - just adds up there, like credits=(modified-start time) * cost.
This logic will show nice in usage reports (a transfer for whole session instead of transfer for each minute or similar).
+ Credits are applied from time to time (ie. by cron or calls from certain pages ie. balance details) if transfer was not modified recently ie. during last 5 minutes - because usage stopped, probably closed.
+ If transfer is over available credits value user is disconnected with certain message (available credits over).
Credits Module Settings:
+ Starting user balance. IE admin could give 200 credits to each user that registers.
Extra settings for all chat modules (editable by admin):
+ Module mode: Free/Paid/As configured by room owner. New permission: Configure room type (free/paid).
+ Paid mode alternative rtmp address to use (a better server can be used for streaming of paid sessions).
+ Free & Paid mode streaming defaults and maximum limitations (for each mode):
- bandwidht per stream (ie. 65536)
- resolution (ie. 640x480)
- microphone rate (ie 44)
Room owners can not configure their rooms to use more than limitations.
+ There will be 4 rates for each room type defining transfers occuring for usage of an user in a room owned by a owner (credits/minute(60s) of usage):
- user's cost (applies to user balance)
- room owner's cost (applies to room owner balance)
- room owner's cost when using own room (applies to his balance)
- room owner's percent gain (applies to room owner balance as percent of user's cost)
Also, there will be a new permission for first setting (User cost), so admin can allow owners to define a different user cost per room or not.
These costs allow webmasters to run video conferencing site on multiple scenarios (for eLearning, consultations, shows, tutoring): charge room owners for use, charge both owners and users for use, charge only users, allow owners to gain from users.
+ Default grace time for applying each of the costs above (for each cost). Grace time is a free period for user session (IE 30s) before usage starts being deducted from balance (as configured)
+ Minimum and maximum session grace time for user. New permission: Allow owner to define user grace time.
+ Minimum and maximum user cost per room (to use when owner defines own cost).
+ Withdrawal info (html text). Withdrawal minimum (value).
New room settings (editable by owner for each room):
+ Cost for user.
+ Session grace time before usage starts being deducted from balance (as configured).
Defaults, limits for these are configurable by module settings.
Chat modules frontend:
+ When paid mode is enabled, room access page will also display rate for user in that room, grace time, current user balance.
Credits module frontent:
+ A menu entry Balance to a page showing current balance, transactions and buy credits.
+ Transactions (recent first) show paginated. Keyword search will be available to user to search for specific transaction based on comment, context.
+ Buy credits show packages available to order.
+ New permission: Withdraw credits. If user's role has this permission, user has an request withdrawal link/button on balance page. This leads to a withdraw form [amount value, account text, details text] where user can request to withdraw credits (more than minimum withdrawal setting, and equal or less of total balance).
Also this page shows withdrawal info as defined by webmaster.
(ie: Fill your paypal address in account box to request a minimum withdrawal of 50 credits. Credits will be converted to usd at rate 1:1.).
When requesting withdrawal credits are removed from balance (to prevent spending) and a transfer is created to be processed by webmaster.
Credits module backend (for administrators):
+ List/search/filter (by user name) user balances (sort by value)
+ List/search/filter (by user, type, applied) user transfers (sort by start time / user / type / value)
+ Place a transfer (add/remove credits) with comment; icon to transfer next to username in previous listings.
+ Withdrawal processing (direct link to pay that account via paypal, link to mark withdrawal as processed: applied).
+ Define credit packages:
- order link
Must include Paypal and Plimus automated IPN processing (links to documentation can be provided).
Basically when transactions occur these sites will call a local script (as defined) ie. [url removed, login to view] with some variables (contract name, account email, price, transaction type: charge/recurring/cancellation/chargeback/refund). All IPNs will be saved, possibly as transfers (even subscription cancellations with 0 value) for webmaster to review details saved as comments.
Users can be identified by email (a notification will show when buying credits to use same email).
Package will be indentified by label (if same with contract name or product name) to transfer amount of credits required.
Transfers can be positive (charge/recurring) or reversals (chargeback/refund).
Code must respect Drupal coding requirements for all modules ( [url removed, login to view] ).
Most communication will be done via PMB. Only sensible data like hosting accounts will probably be delivered by other ways like email.
Scripts in full source code and installation instructions.
Working installation on provided account.
Full amount can be escrow before work start.
Payment is released only when everything is up, running and fully functional as in project description and implemented with honest intentions.