Effect.class.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. /*
  3. @nom: Effect
  4. @auteur: Idleman (idleman@idleman.fr)
  5. @description: Représente un effet de scénario (une conséquence produite par une ou plusieurs causes)
  6. */
  7. class Effect extends SQLiteEntity{
  8. public $id,$story,$sort,$type,$values,$operator,$union;
  9. protected $TABLE_NAME = 'plugin_story_effect';
  10. protected $CLASS_NAME = 'Effect';
  11. protected $object_fields =
  12. array(
  13. 'id'=>'key',
  14. 'story'=>'int',
  15. 'sort'=>'int',
  16. 'type'=>'string',
  17. 'union'=>'string',
  18. 'values'=>'longstring'
  19. );
  20. function __construct(){
  21. parent::__construct();
  22. }
  23. public static function types(){
  24. $types = array(
  25. 'command' => array(
  26. 'icon' => 'fa-terminal',
  27. 'label' => 'Commande',
  28. 'template' => '<select data-value="{target}" data-field="target"><option value="server">Serveur</option><option value="client">Client</option></select> = <input data-field="value" style="max-width:50%;width:50%;" type="text" placeholder="valeur" value="{value}">',
  29. 'description' => 'Execute une commande système sur yana-server ou sur le(s) client(s)'
  30. ),
  31. 'gpio' => array(
  32. 'icon' => 'fa-dot-circle-o',
  33. 'label' => 'GPIO',
  34. 'template' => 'numéro <input type="text" data-field="gpio" placeholder="1,2,3,4..." value="{gpio}"> en état <select data-value="{value}" data-field="value"><option value="1">Actif</option><option value="0">Inactif</option></select>',
  35. 'description' => 'Change l\'état du GPIO sélectionné en état actif (1) ou inactif(0)'
  36. ),
  37. 'talk' => array(
  38. 'icon' => 'fa-volume-up',
  39. 'label' => 'Phrase',
  40. 'template' => '= <input type="text" style="max-width:50%;width:50%;" data-field="value" placeholder="Ma phrase.." value="{value}">',
  41. 'description' => 'Prononce une phrase sur le(s) client(s)'
  42. ),
  43. 'var' => array(
  44. 'icon' => 'fa-dollar',
  45. 'label' => 'Variable',
  46. 'template' => '<input type="text" data-field="var" placeholder="Ma variable" value="{var}"> <span data-field="operator" class="operator">=</span> <input data-field="value" type="text" placeholder="Ma valeur" value="{value}">',
  47. 'description' => 'Créé/Modifie une variable de configuration avec la valeur spécifiée (nb: vous pouvez utiliser la valeur d\'une variable dans les autres effet avec la syntaxe {nomvariable}'
  48. ),
  49. 'sleep' => array(
  50. 'icon' => 'fa-coffee',
  51. 'label' => 'Pause',
  52. 'template' => '= <input type="text" placeholder="durée(secondes)" data-field="value" value="{value}"> seconde(s)',
  53. 'description' => 'Fait une pause du nombre de secondes spécifiées'
  54. ),
  55. 'story' => array(
  56. 'icon' => 'fa-caret-square-o-right',
  57. 'label' => 'Scénario',
  58. 'template' => '',
  59. 'description' => 'Déclenche le scénario spécifié'
  60. ),
  61. 'url' => array(
  62. 'icon' => 'fa-globe',
  63. 'label' => 'Url',
  64. 'template' => '<input style="max-width:50%;width:50%;" data-field="value" value="{value}" type="text">',
  65. 'description' => 'Execute l\'adresse spécifiée à partir du serveur'
  66. ),
  67. 'emotion' => array(
  68. 'icon' => 'fa-smile-o',
  69. 'label' => 'Emotion',
  70. 'template' => '',
  71. 'description' => 'Active une émotion sur le(s) client(s) visuel (face)'
  72. ),
  73. 'sound' => array(
  74. 'icon' => 'fa-music',
  75. 'label' => 'Son',
  76. 'template' => '= <input type="text" style="max-width:50%;width:50%;" data-field="value" placeholder="c:\my.sound.mp3" value="{value}">',
  77. 'description' => 'Active un son sur le(s) client(s) a partir du chemin du fichier en local sur le client'
  78. ),
  79. 'image' => array(
  80. 'icon' => 'fa-file-image-o',
  81. 'label' => 'Image',
  82. 'template' => '= <input type="text" style="max-width:50%;width:50%;" data-field="value" placeholder="http://my/img.png" value="{value}">',
  83. 'description' => 'Affiche une image sur le(s) client(s) visuel (face) a partir d\'une url'
  84. ),
  85. );
  86. $types['emotion']['template'] ='= <select data-value="{value}" data-field="value">';
  87. //@TODO placer les emotions dans Personnality class
  88. foreach(array('angry','happy','worry','shy') as $emotion):
  89. $types['emotion']['template'] .='<option value="'.$emotion.'">'.$emotion.'</option>';
  90. endforeach;
  91. $types['emotion']['template'] .='= </select>';
  92. $types['story']['template'] = '<select data-value="{value}" data-field="value" class="story">';
  93. require_once('Story.class.php');
  94. $stories = new Story();
  95. $stories = $stories->populate();
  96. foreach($stories as $story):
  97. $types['story']['template'] .= '<option value="'.$story->id.'">'.$story->label.'</option>';
  98. endforeach;
  99. $types['story']['template'] .= '</select>';
  100. return $types;
  101. }
  102. function setValues($values){
  103. foreach($values as $key=>$value){
  104. $values[$key] = htmlspecialchars_decode(stripslashes($value));
  105. }
  106. $this->values = json_encode($values);
  107. }
  108. function getValues(){
  109. return json_decode(stripslashes($this->values));
  110. }
  111. }
  112. ?>