Développement Plugin

Développement de plugin pour playSMS

Ce document est une extension du document visible à l'url :

https://github.com/antonraharja/playSMS/blob/master/web/docs/PLUGINS

écrit par le fondateur de playSMS Anton Raharja

cette version est adaptée pour playSMS 0.9.71, je n'ai pas fait de vérifications pour les versions

antérieures

Scénario

Vous désirez une fonctionnalité spécifique que vous ne trouver pas dans playSMS. Alors vous

devez la créer vous même si vous avec les compétences nécessaires ou bien prendre contact avec

des développeurs pour le faire. Cet article est destiné aux développeurs.

Les compétences nécessaires pour étendre playSMS sont entre autres :

  • la programmation en PHP orienté objet
  • l'interaction entre PHP et MySQL
  • les bases de données (MySQL, Posgress, …)
  • une connaissance des systèmes Linux/Unix,

Note :Pour développer un nouveau plugin, il est fortement conseillé de s'inspirer des modules existants et

de leur piquer quelques fonctions (Attention: vérifiez leur licence avant).

Les types de plugins

Les composants (plugins) de playSMS se distinguent en 5 catégories toutes contenues dans le

répertoire ../web/plugins . On a notamment :

    • les outils (tools) : ce sont les utilitaires qu'on retrouve dans Menu principale → outils.
    • Il s'agit d'un ensemble d'outils qui sont le plus souvent utilisés par d'autres plugins
    • les services (features) : ce sont pour moi les plugins les plus intéressants de playSMS,
    • qui vous permettent d'automatiser des actions : quiz, inscription, sondage ...
    • les passerelles (gateways) : se sont des plugins permettant de communiquer avec les SMSC
    • qui vont acheminés les SMS de la plate-forme, ils sont développé suivant les spécifications des
    • logicielles passerelles fournis pour les opérateurs SMS
    • les thèmes (themes) : les plugins thémes permettent de changer le Look&Feel de la plate-forme
    • les langues (language) : utiles pour la traduction de playSMS en plusieurs langues

Anatomie des plugins

Tous les plugins de playSMS, sauf les langues, doivent avoir au minimum cette structure :

<racine_web_playsms>/plugin/<categorie>/<nom_plugin>/
├── config.php
├── fn.php
├── index.html
├── nom_plugin.php
├── docs
│   ├── CHANGELOG
│   ├── README
│   └── VERSION
└── language
├── en_US
│       ├── index.html
│       └── LC_MESSAGES
│              ├── index.html
│              ├── messages.mo
│              └── messages.po
├── …

config.php : fichier php qui se charge de l'insertion du plugin dans le menu Principal et dans sa

catégorie correspondante. Il comporte aussi le code qui lit la configuration du plugin (s'il en a une)

à chaque clique sur l'onglet du plugins dans le menu principal.

fn.php : comporte la définition des fonctions spécifiques au plugins

index.html : c'est un fichier html vide qui permet de capturer toutes les requêtes http dans

l'arborescence non autorisé du plugin. (Vous pouvez y mettre un message personnalisé, qui

redirigera l'internaute vers la page d'accueil avec aussi un pop-up javascript lui indiquant que

cette zone n'est pas accessible)

nom_plugin.php : il est impératif qu'il ait le même nom que le dossier du plugin suivit de

l'extension .php . Ce fichier s'occupe de l'affichage du module dans le navigateur web, des

interactions avec les utilisateurs et de l'enregistrement des configurations faites.

doc : ce dossier contient les informations utiles sur le plugin insérées dans les fichiers README

CHANGELOG et VERSION qui s'expliquent tout seul par leur nom.

language : ce dossier contient les textes du plugin dans différente langues, la langue sélectionnée

est celle que vous aurez choisi pour la plate-forme. En premier pour votre plugin assurez-vous d’avoir

au-moins la langue par défaut en_US.

Quelques fonctions utiles dans playSMS

Dans les plugins déjà disponible dans playSMS vous avez un ensemble de fonctions (core functions)

que vous pouvez adapter ou utiliser suivant la catégorie du module que vous développez on a :

Outils (tool)

- playsmsd()
- billing_post($smslog_id,$rate,$credit)
- billing_rollback($smslog_id)
- billing_finalize($smslog_id)
- billing_getdata($smslog_id)
- phonebook_groupid2code($gpid)
- phonebook_groupcode2id($uid,$gp_code)
- phonebook_number2name($p_num)
- phonebook_getmembercountbyid($gpid)
- phonebook_getdatabyid($gpid, $orderby="")
- phonebook_getdatabyuid($uid, $orderby="")
- phonebook_getsharedgroup($uid)
- phonebook_getgroupbyuid($uid, $orderby="")
- rate_setusercredit($uid, $remaining=0)
- rate_getusercredit($username)
- rate_cansend($username, $sms_to)
- rate_deduct($smslog_id)
- rate_refund($smslog_id)
- sendmail($mail_from,$mail_to,$mail_subject="",$mail_body="")
- setsmsdeliverystatus($smslog_id,$uid,$p_status)
- interceptincomingsms($sms_datetime,$sms_sender,$message,$sms_receiver)
- interceptsmstoinbox($sms_datetime,$sms_sender,$target_user,$message)
- interceptsendsms($sms_sender,$sms_footer,$sms_to,$sms_msg,$uid,$gpid=0,$sms_type='text',$unicode=0)
- call($_REQUEST)

Services (Features)

Dans les services installés vous trouverez certaines fonctions spécifiques pour SMS desquelles vous

pouvez vous inspirer :

- playsmsd()
- checkavailablekeyword($keyword)
- setsmsdeliverystatus($smslog_id,$uid,$p_status)
- setsmsincomingaction($sms_datetime,$sms_sender,$target_keyword,$message,$sms_receiver,$raw_message)
- interceptincomingsms($sms_datetime,$sms_sender,$message,$sms_receiver)
- interceptsmstoinbox($sms_datetime,$sms_sender,$target_user,$message)
- interceptsendsms($sms_sender,$sms_footer,$sms_to,$sms_msg,$uid,$gpid=0,$sms_type='text',$unicode=0)
- call($_REQUEST)

Passerelles (Gateways)

- playsmsd()
- getsmsinbox()
- getsmsstatus($gpid=0,$uid="",$smslog_id="",$p_datetime="",$p_update="")
- sendsms($sms_sender,$sms_footer,$sms_to,$sms_msg,$uid='',$gpid=0,$smslog_id=0,$sms_type='text',$unicode=0)
- setsmsdeliverystatus($smslog_id,$uid,$p_status)
- call($_REQUEST)

Thèmes (Themes)

- call($_REQUEST)

Langage (Language)

Il y a une base de donné par les langue installé basé sur gettext uniquement pour les fichier core/main.

Chaque plugins doit avoir ses fichiers de langue. Pour plus d'informations sur gettext, pouvez lire :

http://php.net/manual/en/book.gettext.php

http://www.gnu.org/software/gettext/

http://www.gnu.org/software/gettext/manual/gettext.html

J'espère que cet article vous a été d'une quelconque utilité, n'hésitez pas à me le faire savoir un petit

merci c'est agréable de temps en temps ou à me dire si vous y trouver des erreurs.