I want to let everyone knows that now playSMS is licensed under version 3 of GNU General Public License.

Particularly after this commit: 35a3cc8f.

My intention has never changed. I want to make sure that the contribution back to the community. Every modification should be available to public so that original contributors and others may gain something positive from it.

I believe this is the right way to do. playSMS should be useful to anyone using it, and I do hope when you modify it you also thought of many contribution made by others to the software which make the software useful to you, thus contribute back.

For your information, IANAL. Please consult with them who understand licensing, especially open source licenses.

Anyway, this is actually not a big deal for some. But if you think it is, let me know, give some comments here. Would love to get some insight about licensing and stuffs around it.

Detail information about the license can be found in http://www.gnu.org/licenses/gpl-3.0.html. A brief information about the license can also be found here http://www.tldrlegal.com/l/GPL3.

Thanks for using playSMS.

Anton Raharja, founder.

There are in total 8 language translations available in current playSMS.

They are:

  • Catalan (Spain) ca_CA
  • Deutsch (Deutschland) de_DE
  • English (United States) en_US
  • Spanish (Venezuela) es_VE
  • French (France) fr_FR
  • Indonesian (Indonesia) id_ID
  • Portuguese (Brazil) pt_BR
  • Russian (Russia) ru_RU
  • Chinese (China) zh_CN

When user or admin activate one of them, sometime they saw changes on displayed text, but on some language no changes made. I’ve seen questions like this asked by playSMS users.


This version fix the CSRF exploit reported here:

Along with the fix there are also several bug fixes and enhancements.

Download playSMS version 1.0-beta1 here:

Here are the complete change log for 1.0-beta1:

  • MAJOR: add core_call_hook(), utilizing debug_backtrace() to replace the way functions call hooking plugin’s functions
  • MAJOR: user_incoming and all_incoming now only shows SMS with matched keyword, or handled SMS
  • MAJOR: fix #155 SECURITY HOLE, CSRF exploit
  • remove default timezone and language from database, tblUser
  • add an option to allow/disallow regular user access to sms_command
  • add dlr-storage=internal and mo-recode=true, and a few other changes in contrib/kannel/kannel.conf
  • add ta=SX webservices handler for retrieving sandbox messages
  • add DB DSN options
  • add new language Russian ru_RU (dvoryanchikov)
  • update catalan language ca_ES (aseques)
  • update inluded php-db to version 1.7.14
  • update to try to limit browser zoom, viewer should not be able to zoom/scale
  • use sendsms() and remove sendsms_bc() while sending SMS, the goal was to remove duplicated entries when user send to group and numbers that actually already included in group
  • fix #100 1 contact in multiple group, also major changes on the backend
  • fix #119 missing phonebook edit
  • fix #127 queuelog entries should be removable
  • fix #128 add webservices method ta=set_token to update webservices token
  • fix #129 remove smsc=default, kannel gateway, users might miss this when debugging
  • fix #137 add new admin menu, sandbox, since now all incoming sms and user incoming sms only shown handled SMS
  • fix #146 security fix: prevent use of special characters such as ; or / (dvoryanchikov)
  • fix #147 fixes in localization (dvoryanchikov)
  • fix #148 fix duplication of search results at send_sms page (dvoryanchikov)
  • fix #151 email field length in user_pref too short, and possibly in other places as well

Discuss this here.

Messages are not delivered, they are queued. Admin saw all messages in View SMS queue.

Usually, before, this is the case of daemon scripts issue, they are not running or running improperly such as wrong path configured in /etc/default/playsms.

But since I introduced SMS scheduler, a way to schedule delivery of submitted SMS through Send SMS page or webservices, one more issue unfortunately has emerged. It’s the timezone settings, PHP simply cannot determine exact timezone used in the script. The result is every SMS submitted NOW will end up being scheduled for next hour depend on the timezone that actually guessed by PHP.

A discussion in the group shows an example of user experiencing this issue.

So, if you experienced an issue like the first paragraph in this article, and you already make sure that all daemon scripts are running and well configured, then its time to check the timezone settings.


In it is relatively easy to modify playSMS look and feel. A template engine has been added and now using Twitter Bootstrap 3.

Welcome Page

Welcome Page on

Above screenshot is a welcome page displayed after successful login. Most users probably want to change that page.

These are methods available to change that page:

  1. Edit common file plugin/themes/common/templates/page_welcome.html
  2. Add themes specific template file to override common file. For example if your active themes is flatly, then you can add your own page_welcome.html in plugin/themes/flatly/templates/
  3. Add another themes specific file. For example if your active themes is flatly, theme you can add page_welcome.php in plugin/themes/flatly/

Select the simplest. For me its method 3.


The latest version, after a long list of betas finally released as

Many changes and bug fixes in this release. Those changes are mostly major due to some fundamental features added, features useful for developers, such as a template engine and integrating Bootstrap 3 for making playSMS easier to customize or enhance.

So, what are new stuffs and other changes included in


This version released with a new default themes. Get it and test it :)


  • add new webservices type of action IX to get SMS on user’s inbox
  • add logger_print() at the begining and the end of webservices
  • add DBHOST and DBPORT on install script
  • add common place to put common js files, themes/common/jscss
  • add sendsms_host option in kannel gateway module (lucastx)
  • add option to load/parse .html and .md files on page_welcome
  • add hints with tooltip
  • add new option CSS URL to decorate sms_board
  • add new gateway Twilio twilio.com
  • add new language de_DE Deutsch (andre)
  • add lib/version.php contains version number
  • add automatically set Unicode if non-latin chars typed and vice versa (dvoryanchikov)
  • update kannel gateway related to account and dcs (dvoryanchikov)
  • update log level to 3 for clickatell getsmsstatus
  • update lang, more new translations on pt_BR (gschanuel)
  • upgrade themes default, re-design
  • upgrade all plugins to match new themes stuffs
  • upgrade action icons, use common icons for all themes but can be overriden
  • remove unused js and css files on themes default
  • remove dTree js and css files
  • remove themes ‘work2′
  • remove themes ‘km2′
  • remove column ‘status’ on inbox, incoming and outgoing tables
  • fix #90 webservices list all incoming SMS on ta=in regardless of uid
  • fix #89 forward sms_subscribe should check sms_sender (ibsoman)
  • fix #88 addslashes on sms_subscribe message (ibsoman)
  • fix #87 correcting mistake and addslashes before sms_autoreply reply (ibsoman)
  • fix search categories in user_mgmnt
  • fix plugin loader, wrongly use counter variable


Get the file from download page.


  • update sendsmsd daemon to enable parallel multi queue processing
  • update config.php to include options for sendsmsd queue number and queue length limit
  • update http method to POST in SMS custom (endymuhardin)
  • update uplink gateway to use webservices username and token
  • update deprecated commands eregi, ereg and ereg_replace with preg_match and preg_replace
  • update Send SMS page to split between send to numbers and to groups
  • update webservices to require username when validating requests
  • add $core_config['webservices_username'] option in config.php, default is TRUE
  • add core_get_timezone() and core_get_datetime()
  • add new webservices type of action get_contact to get contact lists
  • add new webservices ta=get_contact_group to search group contacts by name or code
  • add new webservices ta=get_contact to search contacts by name, mobile or email
  • add $phonebook_row_limit and set it to 20k entries per upload
  • add sms_count on create queue and push to queue
  • add a unique process ID for log
  • add bash script to send sms via the webservices interface (aseques)
  • add core_sanitize_sender() and fix sendsms_get_sender()
  • add core_sanitize_alphanumeric() core_sanitize_alpha() core_sanitize_numeric()
  • add automatically create directory “$sms_command_bin/$uid” for SMS command
  • add a language full backup script
  • add type of action IN (ta=in) to retrieves incoming SMS from playSMS webservices
  • add set_time_limit(600) in various places such as import contacts and send from file
  • replace mktime() as random generator for md5() on several lines with uniqid()
  • remove git conflict messages from ca_ES po files
  • remove link to http://www.unicode.org from send as unicode message option
  • remove unfinished plugin from this repo and move them to new repo playSMS-extra-plugin
  • fix sendsend flagging a queue too quick and partial
  • fix the method to import from CSV file
  • fix core_display_text() not to word-wrap text, instead the wrapping is done through CSS
  • fix #85 wrong sender ID priority
  • fix #84 SMS subscribe reply message not working due to missing addslashes()
  • fix #83 SMS quiz not working due to wrong $c_uid value
  • fix #81 a bug causing a queue partially processed
  • fix #77 execute SMS command script in correct directory
  • fix #75 new options to define unknown format and already member reply in SMS subscribe
  • fix #72 add option to check option to send message as unicode by default
  • fix #71 wrong formula to calculate max. length per SMS for unicode messages